版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口技术课程设计报告专 业: 班 级: 姓 名: 学 号: 指导教师评语:成绩: 签名: 年 月 日小键盘按键识别一 课题任务与要求实验箱上有一个24键小键盘,出厂时按键接点已经按图所示连接。小键盘有8根横向引出线。实验前将8根横向引出线与PA0PA7相连,3根纵向引出线与PB0PB2相连,再从“I/O口地址译码器”选择一个译码器输出连接到8255的片选端,做好上述连接之后,就构成了以8255为核心的键盘输入电路要求:在实际的自动控制系统中,键盘输入电路的作用是输入数据(09,AF)或者输入控制信号(G,M,P,R,W,X,Y,S)。实现上述功能的核心程序是“按键识别”。本实验要求设
2、计按键识别程序,当按下小键盘上某一个键的时候,主机屏幕显示闭合键的键名,按下小键盘“R”键之后停止演示。二完成任务的方法或方案简介本程序显示数字0到9,刚刚开始提出两中解决方案一是用跳转法直接显示数值,二是用查找法间接显示数值,本程序是用第一种方案,虽然程序多了些,但直观容易理解,故采纳第一种方案。DISPLAY函数用来将BUFFER中的键值显示在数码管上。设定A口方式0输出,B口方式0输入。GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是R,则AL赋值为FFH;如果输入非法字符,则AL赋值为0AH。设定如果是R则退出程序.CHANGE函数用来改变BUFFER中
3、保存的键值,将BUFFER中的键值移位,最后一位加入AL中的新键值。CLOSEALL此函数用在退出程序时将数码管关闭.以上是主题函数,在设计过程中还碰到了一些细节问题,例数码管的显示才用延迟20MS的办法解决,具体方案在DISPLAY函数中。三实现系统1、程序框图:预置:A口为方式0输出 B口为方式0输入0 PA7-PA0PB2-PB0 AHAH=7?延时20ms预置:B口为方式0输出A口为方式0输入列值 PB2-PB0PA7-PA0 AL根据AX内容,查找键值表,显示相应的键值。是R?结束演示2、实验电路图:3、8255方式选择控制字 1 D6 D5 D4 D3 D2 D1 D0C下半口 I
4、O:1=输入0输出 A组方式:00方式001方式11X方式2方式选择控制字标志B口IO:1输入0输出B组方式:0方式01方式1C上半口IO:1输入0输出A口 IO1输入0输出4、源程序:TITLE LITTLEKEYBOARDSSEG SEGMENT PARA STACK 'STACK' DB 256 DUP (0)SSEG ENDSDSEG SEGMENT A_8255 EQU 210HB_8255 EQU 211HCON_8255 EQU 213HBUFFER DB 6 DUP(0)HANG DB ?LIE DB ?NEWHANG DB ?NEWLIE DB ? TABLE
5、 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG, DS:DSEG,SS:SSEG START PROC NEAR MOV AX,DSEG MOV DS,AXCALL CLOSEALL(关掉数码管,防止因为最初数码管有显示而使程序执行不正常。)CMPAGAIN: CALL DISPLAY(DISPLAY函数用来将BUFFER中的键值显示在数码管上。)MOV DX,CON_8255MOV AL,10000010BOUT DX,AL (设定A口方式0输出,B口方式0输入)AGAIN: C
6、ALL DISPLAY MOV DX,A_8255 MOV AL,0 OUT DX,AL (0>PA7-PA0) MOV DX,B_8255 IN AL,DXAND AL,00000111B (取出PB0PB2CMP AL,00000111B JE AGAIN MOV LIE,AL(将列值保存) CALL DELAY1(延时20ms) MOV DX,CON_8255MOV AL,10010000BOUT DX,AL(预置A口方式0输入,B口方式0输入) MOV DX,A_8255 IN AL,DX MOV HANG,AL(将行值保存)CALL GETINPUT(GETINPUT函数通过行
7、值和列值查出输入的键值,并将它保存在AL中,如果输入是R,则AL赋值为FFH;如果输入非法字符,则AL赋值为0AH。) CMP AL,0AHJE CMPAGAIN(如果是非法字符则跳回) CMP AL,0FFHJNE CONTINUE(如果是R则退出程序.) CALL CLOSEALL MOV AH,4CH INT 21HCONTINUE:CALL CHANGE(CHANGE函数用来改变BUFFER中保存的键值) MOV DX,CON_8255MOV AL,10000010BOUT DX,AL (设定A口方式0输出,B口方式0输入)LLL:CALL DISPLAYMOV DX,B_8255IN
8、 AL,DXAND AL,00000111B (取出PB0PB2)CMP AL,00000111BJNE LLLJMP CMPAGAIN(不断扫描,如果不松开按键,那么就循环等待;直到按键松开就跳回。) RETSTART ENDP;*(此函数用以延时20MS)DELAY1 PROC NEAR PUSH AX PUSH CX PUSH DX MOV AH,86H MOV CX,0 MOV DX,20000 INT 15H POP DX POP CX POP AXRETDELAY1 ENDP;*(GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是R,则AL赋值为FFH
9、;如果输入非法字符,则AL赋值为0AH。)GETINPUT PROC NEAR CMP LIE,00000110B JE LIE0 CMP LIE,00000101B JE LIE1 CMP LIE,00000011B JE LIE2 MOV AL,0AH RETLIE2:CMP HANG,00010000B JE NEXT MOV AL,0AH RETNEXT:MOV AL,0FFH RETLIE0:CMP HANG,01111111B JE KEY8 CMP HANG,10111111B JE KEY9 MOV AL,0AH RETKEY8:MOV AL,8 RETKEY9:MOV AL,
10、9 RETLIE1:CMP HANG,01111111B JE KEY0 CMP HANG,10111111B JE KEY1 CMP HANG,11011111B JE KEY2 CMP HANG,11101111B JE KEY3 CMP HANG,11110111B JE KEY4 CMP HANG,11111011B JE KEY5CMP HANG,11111101B JE KEY6 CMP HANG,11111110B JE KEY7 MOV AL,0AH RETKEY0:MOV AL,0 RETKEY1:MOV AL,1 RETKEY2:MOV AL,2 RETKEY3:MOV A
11、L,3 RETKEY4:MOV AL,4 RETKEY5:MOV AL,5 RETKEY6:MOV AL,6 RETKEY7:MOV AL,7 RETGETINPUT ENDP;*(CHANGE函数用来改变BUFFER中保存的键值,将BUFFER中的键值移位,最后一位加入AL中的新键值。)CHANGE PROC NEAR PUSH AX PUSH SI MOV SI,OFFSET BUFFER MOV AH,SI+1 MOV SI,AH MOV AH,SI+2 MOV SI+1,AH MOV AH,SI+3 MOV SI+2,AH MOV AH,SI+4 MOV SI+3,AH MOV AH,
12、SI+5 MOV SI+4,AH MOV SI+5,AL POP SI POP AXRETCHANGE ENDP;*(DISPLAY函数用来将BUFFER中的键值显示在数码管上。)DISPLAY PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV BX,OFFSET TABLE MOV SI,OFFSET BUFFER MOV CL,1XUNHUAN: MOV AL,SI XLAT MOV DX,201H OUT DX,AL MOV DX,200H MOV AL,CL OUT DX,AL MOV DX,200H MOV AL,0 OUT
13、DX,AL INC SI SHL CL,1 CMP CL,40H JNE XUNHUAN POP SI POP DX POP CX POP BX POP AX RETDISPLAY ENDP;*(此函数用在退出程序时将数码管关闭.)CLOSEALL PROC NEAR PUSH AX PUSH CX PUSH DX MOV CL,1XUNHUAN1: MOV DX,200H MOV AL,CL OUT DX,AL MOV AL,0 OUT DX,AL SHL CL,1 CMP CL,20H JNE XUNHUAN1 POP DX POP CX POP AX RETCLOSEALL ENDPCSEG END END START四、程序运行结果分析: 六实验总结: 1实验电路板上8255的端口地址位210H213H,这与书上给的不一样,开始时在这方面花费了较多时间。2通过此次程序设计,我对计算机读取键盘值的过程有了一定的认识。最开始编程序时并没有想到如果始终按同一个键不放,数码管上就会一下子出来很多字符。调试时发现了这个问题,想到的解决方法有两种,一种是每一次按键后检测键是否松开,直到松开后再继续执行下一次判断;另一种是按键后延缓一个固定的时间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GA 482-2026中华人民共和国机动车驾驶证件
- 高级统计师资格考试(高级统计实务与案例分析)模拟测试卷及答案(黑龙江省2026年)
- 2026执业药师继续教育考试题题库及参考答案(完整版)
- 2026年全国成人高等学校招生考试(历史地理-高起本)练习题及答案
- 2026年小学生百科知识竞赛试题附答案
- 2026年同等学力工商管理真题及参考答案
- 2026年辽宁本溪国家级检验检测机构资质认定评审员考试试题及答案
- 2026年计算机多媒体技术计算机应用基础统考试题库及答案
- 现场检测试题及答案
- 2026年烟草客户关系管理能力测试题及答案
- 2025年嘉峪关市公安辅警招聘知识考试题库及答案
- 高中数学学科校本教研案例
- 国家开放大学电大本科《合同法》论述题题库及答案
- 地质灾害治理工程监理安全管理制度
- DB42∕T 1955-2023 电动自行车停放充(换)电场所消防安全管理规范
- GB/T 7991.6-2025搪玻璃层试验方法第6部分:高电压试验
- 污水处理培训资料课件
- DB65T 3611-2023 农业用水定额
- 2025年卫生高级职称面审答辩(呼吸内科)(副高面审)经典试题及答案
- 经济学原理马歇尔课件
- 采购内控制度培训课件
评论
0/150
提交评论