欢迎来到天天文库
浏览记录
ID:50934930
大小:37.03 KB
页数:7页
时间:2020-03-16
《单片机的矩阵键盘程序.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#include#defineuintunsignedint#defineucharunsignedcharucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};//数码管段选sbitshu1=P3^0;//数码管位选sbitshu2=P3^1;//数码管位选ucharnum;voiddelay(uintz)//延时函数{uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}ucharkeyscan();//键盘扫描函数voidmain
2、(){num=17;while(1){keyscan();//键盘扫描if(num==17)//如果没有键按下{P2=table[10];//数码管什么也不显示}else//有键按下{shu1=1;//打开数码管P2=table[(num-1)/10];//显示十位delay(7);//延时显示shu1=0;//关闭数码管shu2=1;//打开数码管P2=table[(num-1)%10];//显示个位delay(7);//延时显示shu2=0;//关闭数码管}}}ucharkeyscan()//键盘扫描{P1=0xfe;while(P1!=0xfe)//第一行有键按下{dela
3、y(5);//延时消抖while(P1!=0xfe)//确实有键按下{switch(P1)//检测是哪个键按下{case0xee:num=1;break;case0xde:num=2;break;case0xbe:num=3;break;case0x7e:num=4;break;}while(P1!=0xfe);//松手检测}}P1=0xfd;while(P1!=0xfd)//第二行有键按下{delay(5);//延时消抖while(P1!=0xfd)//确实有键按下{switch(P1)//检测是哪个键按下{case0xed:num=5;break;case0xdd:num=6
4、;break;case0xbd:num=7;break;case0x7d:num=8;break;}while(P1!=0xfd);//松手检测}}P1=0xfb;while(P1!=0xfb)//第三行有键按下{delay(5);//延时消抖while(P1!=0xfb)//确实有键按下{switch(P1)//检测是哪个键按下{case0xeb:num=9;break;case0xdb:num=10;break;case0xbb:num=11;break;case0x7b:num=12;break;}while(P1!=0xfb);//松手检测}}P1=0xf7;while(
5、P1!=0xf7)//第四行有键按下{delay(5);//延时消抖while(P1!=0xf7)//确实有键按下{switch(P1)//检测是哪个键按下{case0xe7:num=13;break;case0xd7:num=14;break;case0xb7:num=15;break;case0x77:num=16;break;}while(P1!=0xf7);//松手检测}}returnnum;}
此文档下载收益归作者所有