单片机矩阵按键控制数码管.doc

单片机矩阵按键控制数码管.doc

ID:52684067

大小:27.00 KB

页数:2页

时间:2020-03-29

单片机矩阵按键控制数码管.doc_第1页
单片机矩阵按键控制数码管.doc_第2页
资源描述:

《单片机矩阵按键控制数码管.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数码管显示4X4矩阵键盘按键号/*名称:数码管显示4X4矩阵键盘按键号说明:按下任意键时,数码管都会显示其键的序号,扫描程序首先判断按键发生在哪一列,然后根据所发生的行附加不同的值,从而得到按键的序号。*/#include#defineucharunsignedchar#defineuintunsignedint//段码ucharcodeDSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1

2、,0x86,0x8e,0x00};sbitBEEP=P3^7;//上次按键和当前按键的序号,该矩阵中序号范围0~15,16表示无按键ucharPre_KeyNo=16,KeyNo=16;//延时voidDelayMS(uintx){uchari;while(x--)for(i=0;i<120;i++);}//矩阵键盘扫描voidKeys_Scan(){ucharTmp;P1=0x0f;//高4位置0,放入4行DelayMS(1);Tmp=P1^0x0f;//按键后0f变成0000XXXX,X中一个为0,3个仍为1,

3、通过异或把3个1变为0,唯一的0变为1switch(Tmp)//判断按键发生于0~3列的哪一列{case1:KeyNo=0;break;case2:KeyNo=1;break;case4:KeyNo=2;break;case8:KeyNo=3;break;default:KeyNo=16;//无键按下}P1=0xf0;//低4位置0,放入4列DelayMS(1);Tmp=P1>>4^0x0f;//按键后f0变成XXXX0000,X中有1个为0,三个仍为1;高4位转移到低4位并异或得到改变的值switch(Tmp)/

4、/对0~3行分别附加起始值0,4,8,12{case1:KeyNo+=0;break;case2:KeyNo+=4;break;case4:KeyNo+=8;break;case8:KeyNo+=12;}}//蜂鸣器voidBeep(){uchari;for(i=0;i<100;i++){DelayMS(1);BEEP=~BEEP;}BEEP=0;}//主程序voidmain(){P0=0x00;BEEP=0;while(1){P1=0xf0;if(P1!=0xf0)Keys_Scan();//获取键序号if(Pr

5、e_KeyNo!=KeyNo){P0=~DSY_CODE[KeyNo];Beep();Pre_KeyNo=KeyNo;}DelayMS(100);}}

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

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

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