1 / 3
文档名称:

4x4矩阵键盘.doc

格式:doc   大小:25KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

4x4矩阵键盘.doc

上传人:bjy0415 2019/3/16 文件大小:25 KB

下载得到文件列表

4x4矩阵键盘.doc

文档介绍

文档介绍:发表日期:2008-6-5在单片机应用系统中,键盘是人机对话不可缺少的组件之一。在按键比较少时,我们可以一个单片机I/O口接一个按键,但当按键需要很多,I/O资源又比较紧张时,使用矩阵式键盘无疑是最好的选择。4x4矩阵键盘是运用得最多的键盘形式,也是单片机入门必需掌握的一种键盘识别技术,下面我们就以实例来说明一下4x4矩阵键盘的识别方法。如下图所示,我们把按键接成矩阵的形式,这样用8个I/O口就可以对16个按键进行识别了,节省了I/O口资源。我们的识别思路是这样的,初使化时我们先让P1口的低四位输出低电平,高四位输出高电平,即让P1口输出0xF0。扫描键盘的时候,我们读P1口,看P1是否还为0xF0,如果仍为0xF0,则表示没有按键按下;如果不0xF0,我们先等待10ms左右,再读P1口,再次确认是否为0xF0,这是为了防止是抖动干扰造成错误识别,如果不是那就说明是真的有按键按下了,我们就可以读键码来识别到底是哪一个键按下了。识别的过程是这样的,初使化时我们让P1口的低四位输出低电平,高四位输出高电平,确认了真的有按键按下时,我们首先读P1口的高四位,然后P1口输出0x0F,即让P1口的低四位输出高电平,高四位输出低电平,然后读P1口的低四位,最后我们把高四位读到的值与低四位读到的值做或运算就得到了该按键的键码。就可以知道是哪个键按下了。以0键为例,初使化时P1输出0xF0,当0键按下时,我们读高四位的状态应为1110,即P1为0xE0,然后让P1输出0x0F,读低四位产状态应为0111,即P1为0x07,让两次读数相与得0xE7。现在我们在P0口和P2口分别接一个共阳极的数码管,用来显示我们按下去的键的键值,P0口接的是个位,P2口接的是十位。如0键按下显示00,1键按下显示01,15键按下显示15……,实现的程序如下:#include<>unsignedcharnum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极LED段码0~9unsignedchark;/*************延时Xms*****************/voidDelay_nms(unsignedintn)//延时程序{unsignedinti,j;for(i=n;i>0;i--)for(j=112;j>0;j--);}voidGetKey()//键盘扫描函数,用于识别哪一个键按下,并读取键值{unsignedcharX,Y,Z;P1=0x0f;//先对P3置数行扫描if(P1!=0x0f)//判断是否有键按下{Delay_nms(10);//延时,软件去干扰if(P1!=0x0f)//确认按键按下X=P3;{X=P1&0x0f;//保存行扫描时有键按下时状态P1=0xf0;//列扫描Y=P1&0xf0;//保存列扫描时有