4×4矩阵键盘在单片机中的应用(Proteus).docx

4×4矩阵键盘在单片机中的应用(Proteus).docx

ID:48973879

大小:182.38 KB

页数:8页

时间:2020-02-26

4×4矩阵键盘在单片机中的应用(Proteus).docx_第1页
4×4矩阵键盘在单片机中的应用(Proteus).docx_第2页
4×4矩阵键盘在单片机中的应用(Proteus).docx_第3页
4×4矩阵键盘在单片机中的应用(Proteus).docx_第4页
4×4矩阵键盘在单片机中的应用(Proteus).docx_第5页
资源描述:

《4×4矩阵键盘在单片机中的应用(Proteus).docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、4×4矩阵键盘原理及其在单片机中的简单应用基于Proteus仿真1、4×4矩阵键盘的工作原理如下图所示,4×4矩阵键盘由4条行线和4条列线组成,行线接P3.0-P3.3,列线接P3.4-P3.7,按键位于每条行线和列线的交叉点上。8/8按键的识别可采用行扫描法和线反转法,这里采用简单的线反转法,只需三步。第一步,执行程序使X0~X3均为低电平,此时读取各列线Y0~Y3的状态即可知道是否有键按下。当无键按下时,各行线与各列线相互断开,各列线仍保持为高电平;当有键按下时,则相应的行线与列线通过该按键相连,该列线就变为低电平,此时读取Y0Y1Y2Y3的状态,得到列码

2、。第二步,执行程序使Y0~Y3均为低电平,当有键按下时,X0~X3中有一条行线为低电平,其余行线为高电平,读取X0X1X2X3的状态,得到行码。第三步,将第一步得到的列码和第二步得到的行码拼合成被按键的位置码,即Y0Y1Y2Y3X0X1X2X3(因为行线和列线各有一条为低电平,其余为高电平,所以位置码低四位和高四位分别只有一位低电平,其余为高电平)。当0键按下时,行线X0和列线Y0为低电平,其余行列线为高电平,于是可以得到0键的位置码Y0Y1Y2Y3X0X1X2X3为01110111,即0X77。当5键按下时,行线X1和列线Y1为低电平,其余行列线为高电平,于

3、是可得到5键的位置码Y0Y1Y2Y3X0X1X2X3为10111011,即0XBB。全部矩阵键盘的位置码如下:2、4×4矩阵键盘在单片机的简单应用举例(一)如下图所示,运行程序时,按下任一按键,数码管会显示它在矩阵键盘上的序号0~F,并且蜂鸣器发出声音,模拟按键的声音。此处采用线反转法识别按键。8/8C程序如下:#include#defineucharunsignedchar#defineuintunsignedintsbitbuzzer=P1^0;ucharcodedis[]=//0~9,A~F的共阳显示代码{0xc0,0xf9,0xa4,

4、0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E};ucharcodetab[]=//矩阵键盘按键位置码{0x77,0xb7,0xd7,0xe7,0x7b,0xbb,0xdb,0xeb,0x7d,0xbd,0xdd,0xed,0x7e,0xbe,0xde,0xee8/8};voiddelay(uintx)//延时函数{uchari;while(x--)for(i=0;i<120;i++);}ucharscan()//矩阵键盘扫描函数,得到按键号,采用线反转法{uchara,b,c,

5、i;P3=0XF0;//P3口输出11110000a=P3;//读取列码delay(10);//防抖延时10msP3=0X0F;//P3口输出00001111b=P3;//读取行码c=a+b;//得到位置码for(i=0;i<16;i++)if(c==tab[i])returni;//查表得到按键序号并返回return-1;//无按键,则返回-1}voidbeep()//蜂鸣器发出声音,模拟按键的声音{uchari;for(i=0;i<100;i++){buzzer=~buzzer;delay(1);}buzzer=0;8/8}voidmain(){uchar

6、key;buzzer=0;//关闭蜂鸣器while(1){key=scan();//得到按键号if(key!=-1)//有按键则显示,并且蜂鸣器发出声音{P0=dis[key];beep();delay(100);}}}Proteus仿真运行结果如下:8/83、4×4矩阵键盘在单片机的简单应用举例(二)如下图所示,运行程序时,按下的按键键值越大,点亮的LED灯越多,例如,按下1号键时,点亮一只LED灯,按下2号键时,点亮两只LED灯,按下16号键时,点亮全部LED灯。这里仍然采用线反转法识别按键。C程序如下:#include#defineuc

7、harunsignedchar#defineuintunsignedintucharcodetab[]=//矩阵键盘按键位置码{0x77,0xb7,0xd7,0xe7,0x7b,0xbb,0xdb,0xeb,0x7d,0xbd,0xdd,0xed,0x7e,0xbe,0xde,0xee};voiddelay(uintx)//延时函数{uchari;while(x--)8/8for(i=0;i<120;i++);}ucharscan()//矩阵键盘扫描函数,得到按键号,采用线反转法{uchara,b,c,i;P1=0XF0;a=P1;delay(10);P1=0

8、X0F;b=P1;c=a+b;for(

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

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

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