资源描述:
《小键盘按键识别(微机原理课程设计)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.微机原理与接口技术课程设计报告专业:班级:姓名:学号:指导教师评语:成绩:签名:年月日...小键盘按键识别一.课题任务与要求实验箱上有一个24键小键盘,出厂时按键接点已经按图所示连接。小键盘有8根横向引出线。实验前将8根横向引出线与PA0~PA7相连,3根纵向引出线与PB0~PB2相连,再从“I/O口地址译码器”选择一个译码器输出连接到8255的片选端,做好上述连接之后,就构成了以8255为核心的键盘输入电路要求:在实际的自动控制系统中,键盘输入电路的作用是输入数据(0~9,A~F)或者输入控制信号(G,
2、M,P,R,W,X,Y,S)。实现上述功能的核心程序是“按键识别”。本实验要求设计按键识别程序,当按下小键盘上某一个键的时候,主机屏幕显示闭合键的键名,按下小键盘“R”键之后停止演示。二.完成任务的方法或方案简介本程序显示数字0到9,刚刚开始提出两中解决方案一是用跳转法直接显示数值,二是用查找法间接显示数值,本程序是用第一种方案,虽然程序多了些,但直观容易理解,故采纳第一种方案。DISPLAY函数用来将BUFFER中的键值显示在数码管上。设定A口方式0输出,B口方式0输入。GETINPUT函数通过行值和列值
3、查出输入的键值,并将它保存在AL中,如果输入是R,则AL赋值为FFH;如果输入非法字符,则AL赋值为0AH。设定如果是R则退出程序.CHANGE函数用来改变BUFFER中保存的键值,将BUFFER中的键值移位,最后一位加入AL中的新键值。CLOSEALL此函数用在退出程序时将数码管关闭.以上是主题函数,在设计过程中还碰到了一些细节问题,例数码管的显示才用延迟20MS的办法解决,具体方案在DISPLAY函数中。...三.实现系统1、程序框图:预置:A口为方式0输出B口为方式0输入0PA7-------PA0P
4、B2----PB0AHAH=7?延时20ms预置:B口为方式0输出A口为方式0输入列值PB2-PB0PA7-PA0AL根据AX内容,查找键值表,显示相应的键值。是R?结束演示2、实验电路图:...3、8255方式选择控制字1D6D5D4D3D2D1D0C下半口IO:1=输入0=输出A组方式:00=方式001=方式11X=方式2方式选择控制字标志B口IO:1=输入0=输出B组方式:0=方式01=方式1C上半口IO:1=输入0=输出A口IO1=输入0=输出4、源程序:TITLELITTLEKEYBOARDSSE
5、GSEGMENTPARASTACK'STACK'...DB256DUP(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:SSEGSTARTPROCNEARMOV
6、AX,DSEGMOVDS,AXCALLCLOSEALL(关掉数码管,防止因为最初数码管有显示而使程序执行不正常。)CMPAGAIN:CALLDISPLAY(DISPLAY函数用来将BUFFER中的键值显示在数码管上。)MOVDX,CON_8255MOVAL,10000010BOUTDX,AL(设定A口方式0输出,B口方式0输入)AGAIN:CALLDISPLAYMOVDX,A_8255...MOVAL,0OUTDX,AL(0->PA7---PA0)MOVDX,B_8255INAL,DXANDAL,00000
7、111B(取出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,0AH
8、JECMPAGAIN(如果是非法字符则跳回)CMPAL,0FFHJNECONTINUE(如果是R则退出程序.)CALLCLOSEALLMOVAH,4CHINT21HCONTINUE:CALLCHANGE...(CHANGE函数用来改变BUFFER中保存的键值)MOVDX,CON_8255MOVAL,10000010BOUTDX,AL(设定A口方式0输出,B口方式0输入)LLL:CALLDISPLAYMOVDX,B