收藏 分销(赏)

单片机与usb鼠标通信代码(c语音).doc

上传人:仙人****88 文档编号:11739543 上传时间:2025-08-11 格式:DOC 页数:12 大小:67.54KB 下载积分:10 金币
下载 相关 举报
单片机与usb鼠标通信代码(c语音).doc_第1页
第1页 / 共12页
单片机与usb鼠标通信代码(c语音).doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
#include<stc12c5a.h> #define uchar unsigned char #define uint unsigned int sbit c=P1^0; sbit d=P1^1; sbit RS=P2^5; sbit RW=P2^6; sbit E=P2^7; void delay(int z) { int x,y; for(x=0;x<z;x++) for(y=0;y<10;y++); } void ledxierushuju(char shuju) { RS=1; RW=0; P0=shuju; delay(1); E=1; delay(1); E=0; } void ledxiezhiling(uchar zhiling) { RS=0; RW=0; P0=zhiling; delay(1); E=1; delay(1); E=0; } void ledchushihua() { E=0; ledxiezhiling(0x38); ledxiezhiling(0x0c); ledxiezhiling(0x06); ledxiezhiling(0x01); } void xiezhiling(uchar zhiling)//鼠标写指令函数 { uchar x; int i; int a; x=zhiling; while(c==0||d==0); d=0; while(c==1); for(i=1;i<12;i++) { a=x%2; d=a; while(c==0); while(c==1); x=x/2; } c=1; d=1; delay(1); } uchar dushuju()//鼠标读数据函数 { uchar x=0; int i; int a; int m=0; while(d==0); // 时钟是由键盘给的,不需要单片机提供 //P0=0xfe; for(i=0;i<11;i++) { //P0=0xaa; if(i==1) m=1; else m=m*2; while(c!=0); //P0=0xaa; while(c!=1); //P0=0xaa; if(i<9) { a=d; x=x+a*m; } } c=1; d=1; delay(1); return x; } void shujuxianshi(uchar shuju,uint x,uint y,uint i) { if(x>0) x--; if(i==1) return; switch(y) { case 0: switch(shuju) { case 0x70:ledxiezhiling(0x80+x);//0 ledxierushuju(0x30); break; case 0x69:ledxiezhiling(0x80+x);//1 ledxierushuju(0x31); break; case 0x72:ledxiezhiling(0x80+x);//2 ledxierushuju(0x32); break; case 0x7a:ledxiezhiling(0x80+x);//3 ledxierushuju(0x33); break; case 0x6b:ledxiezhiling(0x80+x);//4 ledxierushuju(0x34); break; case 0x73:ledxiezhiling(0x80+x);//5 ledxierushuju(0x35); break; case 0x74:ledxiezhiling(0x80+x);//6 ledxierushuju(0x36); break; case 0x6c:ledxiezhiling(0x80+x);//7 ledxierushuju(0x37); break; case 0x75:ledxiezhiling(0x80+x);//8 ledxierushuju(0x38); break; case 0x7d:ledxiezhiling(0x80+x);//9 ledxierushuju(0x39); break; case 0x77:ledxiezhiling(0x80+x);//numlock ledxierushuju(0xff); break; //case 0x7f:ledxiezhiling(0x80);// / //ledxierushuju(0x2f); //break; case 0x7c:ledxiezhiling(0x80+x);//* ledxierushuju(0xff); break; case 0x7b:ledxiezhiling(0x80+x);//- ledxierushuju(0x2d); break; case 0x79:ledxiezhiling(0x80+x);//+ ledxierushuju(0x2b); break; case 0x15:ledxiezhiling(0x80+x);//Q ledxierushuju(0x51); break; case 0x1d:ledxiezhiling(0x80+x);//W ledxierushuju(0x57); break; case 0x24:ledxiezhiling(0x80+x);//E ledxierushuju(0x45); break; case 0x2d:ledxiezhiling(0x80+x);//R ledxierushuju(0x52); break; case 0x2c:ledxiezhiling(0x80+x);//T ledxierushuju(0x54); break; case 0x35:ledxiezhiling(0x80+x);//Y ledxierushuju(0x59); break; case 0x3c:ledxiezhiling(0x80+x);//U ledxierushuju(0x55); break; case 0x43:ledxiezhiling(0x80+x);//I ledxierushuju(0x49); break; case 0x44:ledxiezhiling(0x80+x);//O ledxierushuju(0x4f); break; case 0x4d:ledxiezhiling(0x80+x);//P ledxierushuju(0x50); break; case 0x54:ledxiezhiling(0x80+x);//[ ledxierushuju(0x5b); break; case 0x5b:ledxiezhiling(0x80+x);// ] ledxierushuju(0x5d); break; //case 0x5a:ledxiezhiling(0x80+x);// enter //ledxierushuju(0xff); //break; case 0x52:ledxiezhiling(0x80+x);// ' ledxierushuju(0x27); break; case 0x4c:ledxiezhiling(0x80+x);//; ledxierushuju(0x3b); break; case 0x4b:ledxiezhiling(0x80+x);//L ledxierushuju(0x4c); break; case 0x42:ledxiezhiling(0x80+x);//K ledxierushuju(0x4b); break; case 0x3b:ledxiezhiling(0x80+x);//J ledxierushuju(0x4a); break; case 0x33:ledxiezhiling(0x80+x);//H ledxierushuju(0x48); break; case 0x34:ledxiezhiling(0x80+x);//G ledxierushuju(0x47); break; case 0x2b:ledxiezhiling(0x80+x);//F ledxierushuju(0x46); break; case 0x23:ledxiezhiling(0x80+x);//D ledxierushuju(0x44); break; case 0x1b:ledxiezhiling(0x80+x);//S ledxierushuju(0x53); break; case 0x1c:ledxiezhiling(0x80+x);//A ledxierushuju(0x41); break; case 0x1a:ledxiezhiling(0x80+x);//Z ledxierushuju(0x5a); break; case 0x22:ledxiezhiling(0x80+x);//X ledxierushuju(0x58); break; case 0x21:ledxiezhiling(0x80+x);// C ledxierushuju(0x43); break; case 0x2a:ledxiezhiling(0x80+x);//V ledxierushuju(0x56); break; case 0x32:ledxiezhiling(0x80+x);//B ledxierushuju(0x42); break; case 0x31:ledxiezhiling(0x80+x);//N ledxierushuju(0x4e); break; case 0x3a:ledxiezhiling(0x80+x);//M ledxierushuju(0x4d); break; case 0x41:ledxiezhiling(0x80+x);//, ledxierushuju(0x2c); break; case 0x49:ledxiezhiling(0x80+x);//. ledxierushuju(0x2e); break; case 0x4a:ledxiezhiling(0x80+x);// / ledxierushuju(0x2f); break; //case 0x59:ledxiezhiling(0x80+x);//SHIFT //ledxierushuju(0x34); //break; default:ledxiezhiling(0x80+x); ledxierushuju(0xff); break; } break; case 1: switch(shuju) { case 0x70:ledxiezhiling(0xc0+x);//0 ledxierushuju(0x30); break; case 0x69:ledxiezhiling(0xc0+x);//1 ledxierushuju(0x31); break; case 0x72:ledxiezhiling(0xc0+x);//2 ledxierushuju(0x32); break; case 0x7a:ledxiezhiling(0xc0+x);//3 ledxierushuju(0x33); break; case 0x6b:ledxiezhiling(0xc0+x);//4 ledxierushuju(0x34); break; case 0x73:ledxiezhiling(0xc0+x);//5 ledxierushuju(0x35); break; case 0x74:ledxiezhiling(0xc0+x);//6 ledxierushuju(0x36); break; case 0x6c:ledxiezhiling(0xc0+x);//7 ledxierushuju(0x37); break; case 0x75:ledxiezhiling(0xc0+x);//8 ledxierushuju(0x38); break; case 0x7d:ledxiezhiling(0xc0+x);//9 ledxierushuju(0x39); break; case 0x77:ledxiezhiling(0xc0+x);//numlock ledxierushuju(0xff); break; //case 0x7f:ledxiezhiling(0xc0);// / //ledxierushuju(0x2f); //break; case 0x7c:ledxiezhiling(0xc0+x);//* ledxierushuju(0xff); break; case 0x7b:ledxiezhiling(0xc0+x);//- ledxierushuju(0x2d); break; case 0x79:ledxiezhiling(0xc0+x);//+ ledxierushuju(0x2b); break; case 0x15:ledxiezhiling(0xc0+x);//Q ledxierushuju(0x51); break; case 0x1d:ledxiezhiling(0xc0+x);//W ledxierushuju(0x57); break; case 0x24:ledxiezhiling(0xc0+x);//E ledxierushuju(0x45); break; case 0x2d:ledxiezhiling(0xc0+x);//R ledxierushuju(0x52); break; case 0x2c:ledxiezhiling(0xc0+x);//T ledxierushuju(0x54); break; case 0x35:ledxiezhiling(0xc0+x);//Y ledxierushuju(0x59); break; case 0x3c:ledxiezhiling(0xc0+x);//U ledxierushuju(0x55); break; case 0x43:ledxiezhiling(0xc0+x);//I ledxierushuju(0x49); break; case 0x44:ledxiezhiling(0xc0+x);//O ledxierushuju(0x4f); break; case 0x4d:ledxiezhiling(0xc0+x);//P ledxierushuju(0x50); break; case 0x54:ledxiezhiling(0xc0+x);//[ ledxierushuju(0x5b); break; case 0x5b:ledxiezhiling(0xc0+x);// ] ledxierushuju(0x5d); break; //case 0x5a:ledxiezhiling(0xc0+x);// enter //ledxierushuju(0xff); //break; case 0x52:ledxiezhiling(0xc0+x);// ' ledxierushuju(0x27); break; case 0x4c:ledxiezhiling(0xc0+x);//; ledxierushuju(0x3b); break; case 0x4b:ledxiezhiling(0xc0+x);//L ledxierushuju(0x4c); break; case 0x42:ledxiezhiling(0xc0+x);//K ledxierushuju(0x4b); break; case 0x3b:ledxiezhiling(0xc0+x);//J ledxierushuju(0x4a); break; case 0x33:ledxiezhiling(0xc0+x);//H ledxierushuju(0x48); break; case 0x34:ledxiezhiling(0xc0+x);//G ledxierushuju(0x47); break; case 0x2b:ledxiezhiling(0xc0+x);//F ledxierushuju(0x46); break; case 0x23:ledxiezhiling(0xc0+x);//D ledxierushuju(0x44); break; case 0x1b:ledxiezhiling(0xc0+x);//S ledxierushuju(0x53); break; case 0x1c:ledxiezhiling(0xc0+x);//A ledxierushuju(0x41); break; case 0x1a:ledxiezhiling(0xc0+x);//Z ledxierushuju(0x5a); break; case 0x22:ledxiezhiling(0xc0+x);//X ledxierushuju(0x58); break; case 0x21:ledxiezhiling(0xc0+x);// C ledxierushuju(0x43); break; case 0x2a:ledxiezhiling(0xc0+x);//V ledxierushuju(0x56); break; case 0x32:ledxiezhiling(0xc0+x);//B ledxierushuju(0x42); break; case 0x31:ledxiezhiling(0xc0+x);//N ledxierushuju(0x4e); break; case 0x3a:ledxiezhiling(0xc0+x);//M ledxierushuju(0xcd); break; case 0x41:ledxiezhiling(0xc0+x);//, ledxierushuju(0x2c); break; case 0x49:ledxiezhiling(0xc0+x);//. ledxierushuju(0x2e); break; case 0x4a:ledxiezhiling(0xc0+x);// / ledxierushuju(0x2f); break; //case 0x59:ledxiezhiling(0xc0+x);//SHIFT //ledxierushuju(0x34); //break; default:ledxiezhiling(0xc0+x); ledxierushuju(0xff); break; } break; } } void clare(uint x,uint y)//led清除函数(不知道什么原因不能直接使用清屏指令) { if(y==0) { ledxiezhiling(0x80+x); ledxierushuju(0x20); ledxiezhiling(0x80+x+1); ledxierushuju(0x20); } else { ledxiezhiling(0xc0+x); ledxierushuju(0x20); ledxiezhiling(0xc0+x+1); ledxierushuju(0x20); } } void main() { uchar sj1,sj2; uint x,y,i; ledchushihua(); i=0; x=0; y=0; P0=0x00; delay(100); P0=0xff; xiezhiling(0xf4); sj1=dushuju(); if(sj1==0xf8) { P0=0xfe; delay(100); P0=0xff; } //ledxiezhiling(0x83); //ledxierushuju(0x52); while(1) { if(sj1==0x66&&x>0) { x--; clare(x,y); } else x++; sj1=dushuju(); if(sj1==0xf0) sj1=dushuju(); sj2=dushuju(); if(sj2!=0xf0) if(i==1) { ledxiezhiling(0x01); i=0; } if(sj1==0x5a) { y=1; x=0; } if(x>=16&&y==1) { x=0; i=1; y=0; } if(x>16) { x=0; y=1; } shujuxianshi(sj1,x,y,i); delay(10000); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服