欢迎来到天天文库
浏览记录
ID:48445268
大小:32.50 KB
页数:3页
时间:2020-01-30
《44矩阵键盘扫描C程序(C51).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#defineucharunsignedchar#defineuintunsignedintuchardis_buf;//显示缓存uchartemp;ucharkey;//键顺序吗voiddelay0(ucharx);//x*0.14MS#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};//此表为LED的字模0123456789abcdefunsignedcharcodeLED7Code[]={0x3F,0x06,0x5
2、B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};/*************************************************************//**//*延时子程序*//**//*************************************************************/voiddelay(ucharx){ucharj;while((x--)!=0){for(j=0;j<125;j++){;}}}/
3、*************************************************************//**//*键扫描子程序(4*4的矩阵)P2.4P2.5P2.6P2.7为行*//*P2.0P2.1P2.2P2.3为列*//**//*************************************************************/voidkeyscan(void){temp=0;P2=0xF0;//高四位输入行为高电平列为低电平delay(1);temp=P2;//读P2口temp=temp&0x
4、F0;//屏蔽低四位temp=~((temp>>4)
5、0xF0);if(temp==1)//p2.4被拉低key=0;elseif(temp==2)//p2.5被拉低key=1;elseif(temp==4)//p2.6被拉低key=2;elseif(temp==8)//p2.7被拉低key=3;elsekey=16;P2=0x0F;//低四位输入列为高电平行为低电平delay(1);temp=P2;//读P2口temp=temp&0x0F;temp=~(temp
6、0xF0);if(temp==1)//p2.0被拉低key=key+0;elsei
7、f(temp==2)//p2.1被拉低key=key+4;elseif(temp==4)//p2.2被拉低key=key+8;elseif(temp==8)//p2.3被拉低key=key+12;elsekey=16;dis_buf=key;//键值入显示缓存//dis_buf=dis_buf&0x0f;}/*************************************************************//**//*判断键是否按下*//**//***************************************
8、**********************/voidkeydown(void){P2=0xF0;if(P2!=0xF0)//判断按键是否按下如果按钮按下会拉低P2其中的一个端口{keyscan();//调用按键扫描程序}}/*************************************************************//**//*主程序*//**//*************************************************************/main(){P0=0xFF;//关段码P1=
9、0x10;//开位码delay(10);//延时while(1){keydown();//调用按键判断检测程序P0=LED7Code[dis_buf];//显示按键的数值}}/************************************************************/
此文档下载收益归作者所有