电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

完整word版-51单片机矩阵键盘按键C语言程序

完整word版-51单片机矩阵键盘按键C语言程序_第1页
1/2
完整word版-51单片机矩阵键盘按键C语言程序_第2页
2/2
#include#define uchar unsigned char#define uint unsigned intuchar smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71} ;uchar smg_we[]={0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78} ;//有一篇 74HC573 必须为高电平 //*************************8//12M 频率下大约 50US 延时//**************************void delay_50us(uint t){ uchar j; for(;t>0;t--) for(j=19;j>0;j--) ;}void delay_50ms(uint t){ uchar j; for(;t>0;t--) for(j=6245;j>0;j--);}/*这个程序可以不用松手检测,因为我们程序首选推断键是否按下然后发现按下后我们延时 5MS,然后再检测。确实是按下啦。我们再执行在第二个循环假如我们继续检测,那么消耗时间 10MS 这个短时间中我们的按键已经松手啦。不会在执行后面的。*/void main(){ uchar key_l,key_h; uchar key; while(1) { P3=0xf0;//首先给 P3 口赋值 key_l=P3; //从 p3 口读一个数据到 key_l key_l=key_l&0xf0; if(key_l!=0xf0) //假如不等于的话,说明有按键按下去 { delay_50us(100);//略微延时一下 if(key_l!=0xf0) { key_l=P3&0xf0;// 11100000 再读一次 P3 的值然后和 0xf0 相与 key_l=key_l|0x0f; // 11101111 P3=key_l; //在把 key_l 的值送给 P3 口//此时 P3 口的值为 11101111,而正在此时我们把键按下啦因此按下的键为 11101110 与11101111// 相与还是 11101110;key_h=P3; //再读一次 P3 口,键还是按下,可以得到行的值。 key_h=key_h&0x0f; //00001110key_l=key_l&0xf0; //11100000key=key_l+key_h; //11101110 } } switch(key) { case 0xee:P1=smg_du[0];break;case 0xde:P1=smg_du[1];break;case 0xbe:P1=smg_du[2];break;case 0x7e:P1=smg_du[3];break;case 0xed:P1=smg_du[4];break;case 0xdd:P1=smg_du[5];break;case 0xbd:P1=smg_du[6];break;case 0x7d:P1=smg_du[7];break;case 0xeb:P1=smg_du[8];break;case 0xdb:P1=smg_du[9];break;case 0xbb:P1=smg_du[10];break;case 0x7b:P1=smg_du[11];break;case 0xe7:P1=smg_du[12];break;case 0xd7:P1=smg_du[13];break;case 0xb7:P1=smg_du[14];break;case 0x77:P1=smg_du[15];break; } }}

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

完整word版-51单片机矩阵键盘按键C语言程序

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部