实验一矩阵键盘检测Word格式.docx
- 文档编号:15164059
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:22
- 大小:23.44KB
实验一矩阵键盘检测Word格式.docx
《实验一矩阵键盘检测Word格式.docx》由会员分享,可在线阅读,更多相关《实验一矩阵键盘检测Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。
也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。
此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。
当所设置的功能键或数字键按下时,计算机应
用系统应完成该按键所设定的功能。
因此,键信息输入是与软件构造密切相关的过程。
对于一组键或一个键盘,通过接口电路与单片机相连。
单片机可以采用查询或中断式了解有无按键输入并检查是哪一个按键按下,假设有键按下则跳至相应的键盘处理程序处去执行,假设无键按下则继续执行其他程序。
3、按键的特点与去抖
机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。
其抖动过程如图1〔a〕所示,抖动时间的长短与开关的机械特性有关,一般为5-10ms。
从图中可以看出,在触点抖动期间检测按键的通与断状态,可能导致判断出错。
即按键一次按下或释放被错误地认为是屡次操作,这种情况是不允出现的。
为了抑制按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两面予以考虑。
一般来说,在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。
〔本学习板采用软件去抖式〕。
按键抖动状态图
硬件电容去抖
按键去抖流程图
从按键的去抖流程图我们可以知道,检测到有键按下时,应延时等待一段时间〔可调用一个5ms~10ms的延迟子程序〕,然后再次判断按键是否被按下,假设此时判断按键仍被按下,则认为按键有效,假设此时判断按键没有被按下,说明为按键抖动或干扰,应返回重新判断。
键盘真正被按下才可进展相应的处理程序,此时根本就算实现了按键输入,进一步的话可以判断按键是否释放。
四、实验步骤
上面的图的意思是P3.1~P3.3跟P3.4~P3.7不一样的,他们是相互连接〔当按下键时〕,组成4*4=16个键的。
如果给P3一个扫描初值的话:
如0*0F,则没有键按下时为:
P3.1~P3.3为1P3.4~P3.7为0如果有键按下,则情况发生变化:
高电平接入低电平:
如P3.3与P3.7连接的键按下,则P3.3与P3.7为0,即接地了。
则P3此时为:
00000111,这时如果用P3&
0*0F,则高四位为0低四位保存,可以得到低四位的容了。
通过去抖操作,即一个delay,可以得到低四位容。
这里设为:
h=P3&
0*0F;
如果再得到高四位容,则可以组成一个数,来定位哪个键了。
程序框图:
P3=FFH,P3.0=0
有键按下吗.
延时10ms
真得有键按下吗.
根据当前状态识别按键
P3=FFH,P3.1=0
P3=FFH,P3.2=0
P3=FFH,P3.3=0
C语言源程序:
*include<
reg51.h>
sbitbeep=P2^3;
sbitdula=P2^6;
sbitwela=P2^7;
unsignedchari=100;
unsignedcharj,k,temp,key;
voiddelay(unsignedchari)
{
for(j=i;
j>
0;
j--)
for(k=125;
k>
k--);
}
Unsignedcharcodetable[]={0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,
0*07,0*7f,0*6f,0*77,0*7c,0*39,0*5e,0*79,0*71};
display(unsignedcharnum)
P0=table[num];
dula=1;
dula=0;
P0=0*c0;
wela=1;
wela=0;
voidmain()
while
(1)
{
P3=0*fe;
temp=P3;
temp=temp&
0*f0;
if(temp!
=0*f0)
delay(10);
switch(temp)
case0*ee:
key=0;
break;
case0*de:
key=1;
case0*be:
key=2;
case0*7e:
key=3;
}
while(temp!
beep=0;
beep=1;
display(key);
P1=0*fe;
P3=0*fd;
case0*ed:
key=4;
case0*dd:
key=5;
case0*bd:
key=6;
case0*7d:
key=7;
P3=0*fb;
case0*eb:
key=8;
case0*db:
key=9;
case0*bb:
key=10;
case0*7b:
key=11;
P3=0*f7;
case0*e7:
key=12;
case0*d7:
key=13;
case0*b7:
key=14;
case0*77:
key=15;
汇编程序:
dulabitP2.0;
welabitP2.1;
KEYBUFEQU30H
ORG00H
START:
MOVKEYBUF,*2
WAIT:
MOVP3,*0FFH
CLRP3.4
MOVA,P3
ANLA,*0FH
*RLA,*0FH
JZNOKEY1
LCALLDELY10MS
CJNEA,*0EH,NK1
MOVKEYBUF,*0
movp1,*11111110b
LJMPDK1
NK1:
CJNEA,*0DH,NK2
MOVKEYBUF,*4
movp1,*11111100b
NK2:
CJNEA,*0BH,NK3
MOVKEYBUF,*8
movp1,*11111000b
NK3:
CJNEA,*07H,NK4
MOVKEYBUF,*12
movp1,*11110000b
NK4:
NOP
DK1:
calldisplay
DK1A:
MOVA,P3;
等待释放
JNZDK1A
NOKEY1:
CLRP3.5
JZNOKEY2
CJNEA,*0EH,NK5
MOVKEYBUF,*1
LJMPDK2
NK5:
CJNEA,*0DH,NK6
MOVKEYBUF,*5
NK6:
CJNEA,*0BH,NK7
MOVKEYBUF,*9
NK7:
CJNEA,*07H,NK8
MOVKEYBUF,*13
NK8:
DK2:
DK2A:
释放
JNZDK2A
NOKEY2:
CLRP3.6
*RLA,*0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 矩阵 键盘 检测