- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验5小键盘按键识别实验
实验5 小键盘按键识别实验
实验目的:
掌握用软件方法识别行列式键盘的原理和方法
实验要求:
将小键盘的键号(S1-S16)用十六进制数0-F在7段数码管上显示
分析实验设计思想;
我们如何确定小键盘上哪个键被按下了?
可以利用8255并行接口来进行确定,如果我们将8255的一个端口A作为小键盘行值的输出端口,将8255的另一端口B作为列值的输入端口。就可以完成对键盘按键的位置的确定了。原理如下:
键盘采用简单的线性结构,没有键闭合时,各位均处于高电平,当有一个键按下时,就使对应位接地而成为低电平,其他位仍为高电平。
程序清单及相关注释:
.model small
.386
data segment
rowport dw 200h;以A口作为行扫描线,应为输出
colport dw 201h;以B口作为列检测线,应为输入
controlport dw 203h ;控制字写入端口地址
led_cs dw 210h ;led灯片选地址
char db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,67h,77h,7ch,39h,5eh,79h,71h;显示0-F16个数字的数码管编码
table dw 0fefeh ;
dw 0fefdh
dw 0fefbh
dw 0fef7h
dw 0fdfeh
dw 0fdfdh
dw 0fdfbh
dw 0fdf7h
dw 0fbfeh
dw 0fbfdh
dw 0fbfbh
dw 0fbf7h
dw 0f7feh
dw 0f7fdh
dw 0f7fbh
dw 0f7f7h
data ends
code segment
assume cs:code,ds:data
beg: mov ax,data
mov ds,ax
mov dx,controlport ;8255 命令口
mov al ;设置8255控制字:0方式A口输出,B口输入
out dx,al ;输出8255控制字
L1 : call key1 ;判断行线、列线状态
mov bh,ah ;AH=行线状态
mov bl,al ;AL=列线状态
call delay ;延时20-30ms
call key1 ;再次判断行线、列线状态是否与第一次相同
cmp bl,al ;比较al和bl的值
jnz beg ;不相等说明此时又有新的按键按下则跳至beg
cmp bh,ah ;比较bh,ah的值
jnz beg ;不相等则跳至beg
mov ax,bx ;将当前的按键行列值状态赋给ax
call disp ;调用程序查表得到按下去键的数码管编码
call delay ;延时20-30ms
jmp L1 ;循环进行将小键盘输出到数码管显示
key1 proc
mov ah,0feh ;从第0行开始
key2: mov al,ah
mov dx,rowport ;8255
文档评论(0)