欢迎来到天天文库
浏览记录
ID:38069227
大小:23.50 KB
页数:3页
时间:2019-05-25
《按键输入和LED数码管扫描显示实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、按键输入和LED数码管扫描显示实验设计内容:给8个按键键盘的每个键定义一个功能,从左到右按键一次按下时,分别显示数字1-8,当有两个及以上的按键按下时,显示数字9。LCD初始显示个人学号,当有按键按下时,最后一位显示对应的数字。实验程序:#includesbitkey=P0^6;//键盘公共线,见原理图sbitls1=P0^2;//千位公共极sbitls2=P0^3;//百位公共极sbitls3=P0^4;//十位公共极sbitls4=P0^5;//个位公共极unsignedcharkeyval;//读取的键值#defineDatP1//数据
2、输出端chara;charb[4]={0,3,3,0};//初始值为学号后四位unsignedchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//延时----------------------------Delay(unsignedintt){while(t--);}//显示----------------------------voidDisplay(unsignedcharmun){unsignedcharj;for(j=0;j<50;j++){Dat=a;Dat=tab[b[0
3、]];//把得到7段显示码数据送P1端口ls1=0;//点亮千位Delay(100);//显示一会ls1=1;//关闭,显示下一位Dat=tab[b[1]];ls2=0;//点亮百位Delay(100);ls2=1;Dat=tab[b[2]];ls3=0;//点亮十位Delay(100);ls3=1;//个位Dat=tab[b[3]];ls4=0;Delay(100);ls4=1;}}Dat=0xff;//P1恢复为0xff}//--键盘扫描程序--------------------------------------Scankey(){unsignedch
4、ari;key=0;//拉低键盘公共线if(Dat!=0xff)//有键按下{Delay(1000);//消抖动if(Dat!=0xff)//有键按下{i=~Dat;a=Dat;//读取键盘状态,switch(i){case0x01:keyval=0x01;break;//K1case0x02:keyval=0x02;break;//K2case0x04:keyval=0x03;break;//K3case0x08:keyval=0x04;break;//K4case0x10:keyval=0x05;break;//K5case0x20:keyval=0x06
5、;break;//K6case0x40:keyval=0x07;break;//K7case0x80:keyval=0x08;break;//K8default:keyval=0x09;break;}//其它双键按下不处理,均为9b[3]=b[2];b[2]=b[1];b[1]=b[0];b[0]=keyval;while(Dat!=0xff){key=1;//暂时关闭键盘,不干扰显示Display(keyval);//等待按键抬起key=0;//开启键盘检测}}}key=1;//释放键盘公共线}//--主程序-------------------------
6、--------------------------------main(){while(1){Display(keyval);//显示Scankey();//键盘扫描}}
此文档下载收益归作者所有