- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
小键盘按键识别(微机原理课程设计)
微机原理与接口技术
课程设计报告
专 业:
班 级:
姓 名:
学 号:
指导教师评语:
成绩: 签名:
年 月 日
小键盘按键识别
课题任务与要求
实验箱上有一个24键小键盘,出厂时按键接点已经按图所示连接。小键盘有8根横向引出线。实验前将8根横向引出线与PA0~PA7相连,3根纵向引出线与PB0~PB2相连,再从“I/O口地址译码器”选择一个译码器输出连接到8255的片选端,做好上述连接之后,就构成了以8255为核心的键盘输入电路要求:
在实际的自动控制系统中,键盘输入电路的作用是输入数据(0~9,A~F)或者输入控制信号(G,M,P,R,W,X,Y,S)。实现上述功能的核心程序是“按键识别”。
本实验要求设计按键识别程序,当按下小键盘上某一个键的时候,主机屏幕显示闭合键的键名,按下小键盘“R”键之后停止演示。
二.完成任务的方法或方案简介
本程序显示数字0到9,刚刚开始提出两中解决方案一是用跳转法直接显示数值,二是用查找法间接显示数值,本程序是用第一种方案,虽然程序多了些,但直观容易理解,故采纳第一种方案。
DISPLAY函数用来将BUFFER中的键值显示在数码管上。
设定A口方式0输出,B口方式0输入。
GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是R,则AL赋值为FFH;如果输入非法字符,则AL赋值为0AH。
设定如果是R则退出程序.
CHANGE函数用来改变BUFFER中保存的键值,将BUFFER中的键值移位,最后一位加入AL中的新键值。
CLOSEALL此函数用在退出程序时将数码管关闭.
以上是主题函数,在设计过程中还碰到了一些细节问题,例数码管的显示才用延迟20MS的办法解决,具体方案在DISPLAY函数中。
三.实现系统
1、程序框图:
2、实验电路图:
3、8255方式选择控制字
1 D6 D5 D4 D3 D2 D1 D0
4、源程序:
TITLE LITTLEKEYBOARD
SSEG SEGMENT PARA STACK STACK
DB 256 DUP (0)
SSEG ENDS
DSEG SEGMENT
A_8255 EQU 210H
B_8255 EQU 211H
CON_8255 EQU 213H
BUFFER DB 6 DUP(0)
HANG DB ?
LIE DB ?
NEWHANG DB ?
NEWLIE DB ?
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG,SS:SSEG
START PROC NEAR
MOV AX,DSEG
MOV DS,AX
CALL CLOSEALL
(关掉数码管,防止因为最初数码管有显示而使程序执行不正常。)
CMPAGAIN:
CALL DISPLAY
(DISPLAY函数用来将BUFFER中的键值显示在数码管上。)
MOV DX,CON_8255
MOV AL
OUT DX,AL
(设定A口方式0输出,B口方式0输入)
AGAIN:
CALL DISPLAY
MOV DX,A_8255
MOV AL,0
OUT DX,AL (0-PA7---PA0)
MOV DX,B_8255
IN AL,DX
AND AL (取出PB0-PB2
CMP AL
JE AGAIN
MOV LIE,AL(将列值保存)
CALL DELAY1(延时20ms)
MOV DX,CON_8255
MOV AL
OUT DX,AL
(预置A口方式0输入,B口方式0输入)
MOV DX,A_8255
IN AL,DX
MOV HANG,AL(将行值保存)
CALL GETINPUT
(GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是R,则AL赋值为FFH;如果输入非法字符
文档评论(0)