小键盘按键识别(微机原理课程设计)解析_第1页
小键盘按键识别(微机原理课程设计)解析_第2页
小键盘按键识别(微机原理课程设计)解析_第3页
小键盘按键识别(微机原理课程设计)解析_第4页
小键盘按键识别(微机原理课程设计)解析_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术课程设计报告专业:班级:姓名:学号:指导教师考语:成绩:署名:年月日1小键盘按键鉴识一.课题任务与要求实验箱上有一个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函数中。2三.实现系统1、程序框图:预置:A口为方式0输出0PA7-------PA0PB2----PB0AHAH=7?延时20ms预置:B口为方式0输出A口为方式0输入列值PB2-PB0PA7-PA0AL依据AX内容,查找键值表,显示相应的键值。是R?结束演示2、实验电路图:33、8255方式选择控制字1D6D5D4D3D2D1D0方式A组方式:C下半口选择00=方式0A口IOC上半B组方式:B口IO:控制01=方式11=输入口IO:0=方式0IO:1=输入字标1X=方式20=输出1=输入1=方式11=输入0=输出4、源程序:0=输出0=输出志TITLELITTLEKEYBOARDSSEGSEGMENTPARASTACK'STACK'4DB256DUP(0)SSEGENDSDSEGSEGMENTA_8255EQU210HB_8255EQU211HCON_8255EQU213HBUFFERDB6DUP(0)HANGDB?LIEDB?NEWHANGDB?NEWLIEDB?TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTARTPROCNEARMOVAX,DSEGMOVDS,AXCALLCLOSEALL(关掉数码管,防备因为最先数码管有显示而使程序履行不正常。)CMPAGAIN:CALLDISPLAY(DISPLAY函数用来将BUFFER中的键值显示在数码管上。)MOVDX,CON_8255MOVAL,10000010BOUTDX,AL(设定A口方式0输出,B口方式0输入)AGAIN:CALLDISPLAYMOVDX,A_82555MOVAL,0OUTDX,AL(0->PA7---PA0)MOVDX,B_8255INAL,DXANDAL,00000111B(拿出PB0-PB2CMPAL,00000111BJEAGAINMOVLIE,AL(将列值保留)CALLDELAY1(延时20ms)MOVDX,CON_8255MOVAL,10010000BOUTDX,AL(预置A口方式0输入,B口方式0输入)MOVDX,A_8255INAL,DXMOVHANG,AL(将行值保留)CALLGETINPUT(GETINPUT函数经过行值和列值查出输入的键值,并将它保留在AL中,假如输入是R,则AL赋值为FFH;假如输入非法字符,则AL赋值为0AH。)CMPAL,0AHJECMPAGAIN(假如是非法字符则跳回)CMPAL,0FFHJNECONTINUE(假如是R则退出程序.)CALLCLOSEALLMOVAH,4CHINT21HCONTINUE:CALLCHANGE6(CHANGE函数用来改变BUFFER中保留的键值)MOVDX,CON_8255MOVAL,10000010BOUTDX,AL(设定A口方式0输出,B口方式0输入)LLL:CALLDISPLAYMOVDX,B_8255INAL,DXANDAL,00000111B(拿出PB0-PB2)CMPAL,00000111BJNELLLJMPCMPAGAIN(不停扫描,假如不松开按键,那么就循环等候;直到按键松开就跳回。)RETSTARTENDP;*(此函数用以延时20MS)DELAY1PROCNEARPUSHAXPUSHCXPUSHDXMOVAH,86HMOVCX,0MOVDX,20000INT15HPOPDXPOPCXPOPAX7RETDELAY1ENDP;(GETINPUT函数经过行值和列值查出输入的键值,并将它保留在AL中,假如输入是R,则AL赋值为FFH;假如输入非法字符,则AL赋值为0AH。)GETINPUTPROCNEARCMPLIE,00000110BJELIE0CMPLIE,00000101BJELIE1CMPLIE,00000011BJELIE2MOVAL,0AHRETLIE2:CMPHANG,00010000BJENEXTMOVAL,0AHRETNEXT:MOVAL,0FFHRETLIE0:CMPHANG,01111111BJEKEY8CMPHANG,10111111BJEKEY9MOVAL,0AHRETKEY8:MOVAL,8RETKEY9:MOVAL,9RET8LIE1:CMPHANG,01111111BJEKEY0CMPHANG,10111111BJEKEY1CMPHANG,11011111BJEKEY2CMPHANG,11101111BJEKEY3CMPHANG,11110111BJEKEY4CMPHANG,11111011BJEKEY5CMPHANG,11111101BJEKEY6CMPHANG,11111110BJEKEY7MOVAL,0AHRETKEY0:MOVAL,0RETKEY1:MOVAL,1RETKEY2:MOVAL,2RETKEY3:MOVAL,3RETKEY4:MOVAL,4RETKEY5:MOVAL,5RET9KEY6:MOVAL,6RETKEY7:MOVAL,7RETGETINPUTENDP;(CHANGE函数用来改变BUFFER中保留的键值,将BUFFER中的键值移位,最后一位加入AL中的新键值。)CHANGEPROCNEARPUSHAXPUSHSIMOVSI,OFFSETBUFFERMOVAH,[SI+1]MOV[SI],AHMOVAH,[SI+2]MOV[SI+1],AHMOVAH,[SI+3]MOV[SI+2],AHMOVAH,[SI+4]MOV[SI+3],AHMOVAH,[SI+5]MOV[SI+4],AHMOV[SI+5],ALPOPSIPOPAXRETCHANGEENDP;(DISPLAY函数用来将BUFFER中的键值显示在数码管上。)DISPLAYPROCNEAR10PUSHAXPUSHBXPUSHCXPUSHDXPUSHSIMOVBX,OFFSETTABLEMOVSI,OFFSETBUFFERMOVCL,1XUNHUAN:MOVAL,[SI]XLATMOVDX,201HOUTDX,ALMOVDX,200HMOVAL,CLOUTDX,ALMOVDX,200HMOVAL,0OUTDX,ALINCSISHLCL,1CMPCL,40HJNEXUNHUANPOPSIPOPDXPOPCXPOPBXPOPAXRETDISPLAYENDP11;*(此函数用在退出程序时将数码管封闭.)CLOSEALLPROCNEARPUSHAXPUSHCXPUSHDXMOVCL,1XUNHUAN1:MOVDX,200HMOVAL,CLOUTDX,ALMOVAL,0OUTDX,ALSHLCL,1CMPCL,20HJNEXUNHUAN1POPDXPOPCXPOPAXRETCLOSEALLENDPCSEGENDENDSTART四、程序运转结果分析:六.实验总结:1.实验电路板上8255的端口地点位210H-213H,这与书上给的不同样样,开始时在这方面开支了好多时间。2.经过此次程序设计,我对计算机读取键盘值的过程有了必定的认识。最开始编程序时并无想到假如素来按同一个键不放,数码管上就会一下子出来好多字符。调试时发现了12这个问题,想到的解决方法有两种,一种是每一次按键后检测键能否松开,直到松开后再继续履行下一次判断;另一种是按键后延缓一个固定的时间(大概0.2秒)再判断(计算机的键

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论