最新51单片机矩阵扫描键盘程序实例.doc

最新51单片机矩阵扫描键盘程序实例.doc

ID:62980772

大小:957.50 KB

页数:6页

时间:2021-07-23

最新51单片机矩阵扫描键盘程序实例.doc_第1页
最新51单片机矩阵扫描键盘程序实例.doc_第2页
最新51单片机矩阵扫描键盘程序实例.doc_第3页
最新51单片机矩阵扫描键盘程序实例.doc_第4页
最新51单片机矩阵扫描键盘程序实例.doc_第5页
资源描述:

《最新51单片机矩阵扫描键盘程序实例.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、精品资料51单片机矩阵扫描键盘程序实例........................................精品资料51单片机矩阵扫描键盘程序#include#include#defineucharunsignedchar#defineuintunsignedintucharidatax,y;ucharcodedisp_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,//0-9012345678

2、90x88,0x83,0xc6,0xa1,0x86,0x8e,//10-15abcdef0x7F,0xBF,0x9C,0xFF//16-19.-。null};//数码管显示值列表voiddelay(ucharc)//延时函数{chara,b;for(a=c;a>0;a--)for(b=110;b>0;b--);}ucharkey_scan()//键盘扫描函数{uchark;ucharz;x=0x00;y=0x00;P3=0xf0;//先给P3赋一个初值if(P3!=0xf0)//判断P3不等于所赋初值,说明有健

3、按下{delay(10);//消除键盘抖动延时10msif(P3!=0xf0){x=P3;P3=0x0f;y=P3;........................................精品资料z=x

4、y;switch(z){case0xee:k=0;break;case0xed:k=1;break;case0xeb:k=2;break;case0xe7:k=3;break;case0xde:k=4;break;case0xdd:k=5;break;case0xdb:k=6;break;case0xd

5、7:k=7;break;case0xbe:k=8;break;case0xbd:k=9;break;case0xbb:k=10;break;case0xb7:k=11;break;case0x7e:k=12;break;case0x7d:k=13;break;case0x7b:k=14;break;case0x77:k=15;break;}}}return(k);}voidmain(){uchardat;while(1){P3=0xf0;while(P3!=0xf0){dat=key_scan();P1=0;P

6、0=disp_code[dat];}}}2:#include#include#defineucharunsignedchar#defineuintunsignedintucharidatax,y;........................................精品资料ucharcodedisp_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,//0-901234567890x88,0x83

7、,0xc6,0xa1,0x86,0x8e,//10-15abcdef0x7F,0xBF,0x9C,0xFF//16-19.-。null};//数码管显示值列表voiddelay(ucharc)//延时函数{chara,b;for(a=c;a>0;a--)for(b=110;b>0;b--);}ucharkey_scan()//键盘扫描函数{uchark;ucharz;x=0x00;y=0x00;P3=0xf0;//先给P3赋一个初值if(P3!=0xf0)//判断P3不等于所赋初值,说明有健按下{delay(1

8、0);//消除键盘抖动延时10msif(P3!=0xf0){x=P3;/*这里稍作解释:起初我们已经给P3赋了一个0xf0的值,如果有键按下,P3便一定不再是0xf0,........................................精品资料如果我们这时查看P3的值我们就能知道是哪一列的键按下了(说明一下,我的开发板上P3.0-P3.3接的是列)但这时我们先不看P3的值,这时我们先把P3的值赋给x,再给P3赋一个0x0f的值,由于这两条语句执行的速度是很快的,是us级的,而我们按一个按键怎么也得几

9、十到上百ms,尽管我们在前面已经做过一个10ms的延时,但是在我们给P3重新赋值后,按键一定还是闭合的,所以P3被赋0xof后由于有按键闭合,故P3的值又变了,这时候我们查看P3的值就可以判断出来是是哪一行的按键按下了.然后我们把这时的P3值赋给y,再用x或上y,把他们的值赋给z然后判断z的值就可以知道是具体哪一个键被按下了!(行和列都确定了,具体是哪一个键自然就确定了)*/P3=0x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。