实验5小键盘按键识别实验

实验5小键盘按键识别实验

ID:28059652

大小:118.03 KB

页数:5页

时间:2018-12-07

实验5小键盘按键识别实验_第1页
实验5小键盘按键识别实验_第2页
实验5小键盘按键识别实验_第3页
实验5小键盘按键识别实验_第4页
实验5小键盘按键识别实验_第5页
资源描述:

《实验5小键盘按键识别实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实验5小键盘按键识别实验实验目的:掌握用软件方法识别行列式键盘的原理和方法实验要求:将小键盘的键兮(S1-S16)用十六进制数0-F在7段数码管上显示分析实验设计思想;我们如何确定小键盘上哪个键被按K了?可以利川8255并行接口来进行确定,如果我们将8255的一个端UA作为小键盘行值的输出端U,将8255的;W—端UlB作为列值的输入端口。就可以完成对键盘按键的位置的确定了。原理如下:键盘采用简单的线性结构,没有键闭合时,各位均处于高电平,当有一个键按下吋,就使对成位接地而成为低电平,其他位仍为高电平。i$A«8u状举例:如厶图所示,如果幵关0足闭合的,且第一列的电平为0

2、,那么检测到第一行的端口状态就为低电平。如果4足闭合的,访一列的电平为0,那么第二行的端口状态就为0。就是采川此种方法来判定有那个按键被按下了。扫描方法:先使第()行接低电平,-K余行为高电平,然后看第0行是否冇键闭合。这是通过检查列线电位来实现的。即在扔0行接低电〒吋,看该列线是否为低电〒。然P依次给第1行,第2行,第3行赋低电平。分别检测该列线是否为低电平。程序清单及相关注释:.modelsmall.386datasegmentrowportdw200h;以AU作为行扣描线,应为输出colportdw201h;以B口作为列检测线,应为输入controlportdw20

3、3h;控制字写入端U地址ledcsdw210h;led灯片选地址tabledwOfefeh;dwOfefdhdwOfefbhdwOfcf7hdwOfdfehdwOfdfdhdwOfdfbhdw0fdf7hdwOfhfchdwOfbfdhdwOfbfbhdwOfbf7hdw0f7fehdw0f7fdhdw0f7fbhdwOf7f7hdataends0-F16个数字的数码管编码codesegment查询是哪行哪列的按键被按下了,Ofe表示笫0行,Ofd表示笫2行,Ofb表示第3行,0f7表示第4行同理也是具体哪一列的表示,4种组合成16个按键的具体位置L1:assumecs:

4、codc,d$:datamovax,datamovds,axmovdx,controlport;8255命令Umoval,1000001Oh;设置8255控制字:0方式AU输出,BU输入outdx,al;输出8255控制字callkey!;判断行线、列线状态movbh,ah:八14=行线状态movbl,al;八1=列线状态calldelay;延时20-30mscallkeyl;再次判断行线、列线状态是否与第一•次相同empbl,al;比较al和bl的值jnzbeg;不相等说明此时乂奋新的按键按卜'则跳至begempbh,ah;比较bh,ah的值jnzbeg;不相等则跳至b

5、egmovax,bx:将当前的按键行列值状态赋给axcalldisp;调用程序查表得到按不去键的数码管编码calldelay;延时20-30msjmpLI;循环进行将小键盘输出到数码管显示keylprocmovah,Ofeh:从第0行开始key2:moval,ahmovdxjowport;8255A口作为扫描线outdx,almovdx,colportinal,dxoral,()f()hcmpal,Offhjnenumlrolah,1jmpkey2numl:retkey1cndp:输出一行线为低电平;8255B口检测线:输入列线状态四位置1,低四位为列线状态;与8行不同只

6、柯四行所以高4行就置位1:检查是否有按键按下;冇键按下就会冇一位为低电平,退出:没奋键按卜*则检查下一行;再来一遍循环检杏,S至杏到右一个键按下为止delayproc;延时去除抖动,去除抖动后pushexmovcx,8000hdelay1:loopdelay1popexretdelayendpdispprocpushbxpushdxkey3:movsi,offsettable;位置表的首地址movdi,offsetchar;数码管显示编码丧的首地址movcx,16;16个按键,因而要比较16次key4:cmpax,[si];将此吋按键的行列状态值与位置表相比较jzkey5

7、;本次査到/对应键的编码值,进行下一步处理incsi;木次没有杏到对应的码值,位置表的位置移动到下一位incsi;由于是字,加2incdi;数码管的编码表的值对应加一loopkey4;循环16次,16个按键都要依次的比较kcy5:moval,[di];将数码管的W.示编码值赋给寄存器almovdx,led_cs;数码管显示段叫地址outdx,al;要显示的段码值从该地址输入moval,01h/没置数码管的位选值,是右边第一个incdx从位码地址读入数据;outdx,alpopdxpopbxdispendpcodeendsend

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

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

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