欢迎来到天天文库
浏览记录
ID:38977397
大小:96.07 KB
页数:5页
时间:2019-06-22
《51单片机4×4矩阵按键扫描方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/*****4×4按键扫描******//***编程要点1.首先检测是否有按键按下2.若有按键按下,即进行行检测,列检测3.行检测:高4位设为0,低4位为1,进行检测0x0f4.列检测:低4位设为0,高4位为1,进行检测0xf05.检测按键是否松开6.送至LED显示,前四个代表第几行后四个代表第几列P0为led灯口P2为按键接口****///#include#defineucharunsignedchar#definekeyP2//P2口定义,便于调用#defineledP0//P0口定义,便于调用unsignedcharline_num,row_num;//行列定义le
2、d_arry[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//数组定义,便于显示//******检测是否有按键按下*****//ucharCheck_Button(){key=0x0f;//高四位为0if(key==0x0f)//若无变化,证明无按键按下return0;//返回0else//否则return1;//返回1}//********行检测********//ucharLine[]={0x0e,0x0d,0x0b,0x07};//那个按键按下,检测出的状态则对应数组中的第几个数voidCheck_Line(){uchari;key=0x0
3、f;//高四位为0for(i=0;i<4;i++){if(key==Line[i]){line_num=i;//取出检测值break;//结束行检测}}}//********列检测*********//ucharRow[]={0xe0,0xd0,0xb0,0x70};//那个按键按下,检测出的状态则对应数组中的第几个数voidCheck_Row(){ucharj;key=0xf0;//低4位置0for(j=0;j<4;j++){if(key==Row[j]){row_num=j;//取出检测值break;//结束行检测}}}/*******按键松开检测*********/ucharChec
4、k_Release(){key=0xf0;//低四位为0if(key==0xf0)//若无变化,证明按键松开return0;//返回0else//否则,按键未松开return1;//返回1}//*********主函数*********//intmain(){key=0xff;//按键初始化led=0xff;//关闭LED灯while(1){while(!Check_Button());//若无按键按下,则等待,若有继续下一步Check_Line();//行检测Check_Row();//列检测while(Check_Release());//检测按键是否松开led=led_arry[li
5、ne_num]&led_arry[row_num+4];//送至led显示/*eg:如果是第三行第二列按键按下则第3个、第6(2列+4)个LED灯亮如下图所示(Proteus仿真电路图)*/}}
此文档下载收益归作者所有