基于8255键盘的设计.docx
《基于8255键盘的设计.docx》由会员分享,可在线阅读,更多相关《基于8255键盘的设计.docx(10页珍藏版)》请在冰豆网上搜索。
基于8255键盘的设计
论文题目
基于8255键盘的设计
指导教师
刘伟、林泽坤
学生班级
07自动化
(2)班
学生姓名
李欢、胡振、李博
设计内容分析论证(可加附页)
详见附页
设计条件要求
PC机一台,EL教学试验箱一台及汇编程序
设计进程安排
第一周设计任务:
(1)明确课题对程序功能,运算精度等方面的要求及硬件条件
(2)把复杂的问题分解为若干模块,确定各模块处理方法,画出流程图
(3)存储器资源分配
第二周设计任务:
(4)编制程序,根据流程图选择合适的指令和寻址方式来编制源程序
(5)对程序进行汇编,调试和修改,知道程序运行结果正确为止
文献资料准备
《微型计算机原理与接口技术》中国科技大学出版社吴秀清周荷琴编著
《16-32位微型计算机技术及应用》清华大学出版社戴梅萼史嘉权编著
《汇编语言程序设计》南京大学出版社姚君遗编著
《汇编语言程序设计教程》清华大学出版社杨基文编著
《微型计算机原理及接口技术》实验指导书
开题批注
【摘要】:
本设计以8086作为主控芯片,将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。
【关键词】:
8255A键盘扫描
一、总体概括3
二、方案的论证与比较4
1、主要电路硬件方案的选择4
2、显示设备的选择4
三、电路设计5
1、电路原理框图5
2、电路原理图5
四、软件设计6
1、程序流程图6
2、程序清单7
五、调试结果7
六、总结与体会7
一、总体概括
具体的系统方框图如下所示:
图1系统方框图
二、方案的论证与比较
1、主要电路硬件方案的选择
我们只想到了一个方案:
用译码器提供端口地址,8255A的PA0~PA3作输出端口,PB0~PB7作输入端口。
2、显示设备的选择
方案一:
采用传统数码管作为显示设备。
传统数码管具有低能耗、低损耗、低压、长寿命、耐老化、防晒、防潮、防火、防高(低)温的特点;对外界环境要求低,易于维护;同时其精度比较高,精确可靠,操作简单,程序编写容易,资源占用少。
方案二:
采用液晶显示屏(LCD)显示数字量。
液晶显示器具有功耗低、无辐射危险、平面直角显示以及影像稳定等,可视面积大,画面效果好,也可以显示汉字,分辨率高,抗干扰能力强,显示内容多等特点。
综合考虑我们选择方案二。
三、电路设计
1、电路原理框图
图2电路原理框图
2、电路原理图
图3电路原理框图
四、软件设计
1、程序流程图
图4主程序流程图
图5显示子程序流程图
2、程序清单
见附录1
五、调试结果
经过多次在星研上调试,最终我们得到了正确的显示结果。
六、总结与体会
经过我们三人的分工协作和不懈努力,终于完成了本设计题目中的基本要求。
本作品以8086作为主控芯片,将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。
在调试过程中,我们对星研的编程环境有了更深地了解。
在这次课程设计中,我们充分发挥团队协作精神,积极工作并最终完成了作品。
通关过这次实践使我们加深了对课本知识的理解,并从中受益匪浅。
参考文献
《微型计算机原理及接口技术》中国科技大学出版社吴秀清周荷琴编著
《16-32位微型计算机技术及应用》清华大学出版社戴梅萼史嘉权编著
《汇编语言程序设计》南京大学出版社姚君遗编著
《汇编语言程序设计教程》清华大学出版社杨记文编著
《微型计算机原理及接口技术》实验指导书
附录1:
;端口地址
PORT_AEQU00F0H;8255A口地址
PORT_BEQU00F1H;8255B口地址
PORT_CTLEQU00F2H;8255控制口地址
;数据段
DATASEGMENT
DB100DUP(0)
DATAENDS
;堆栈段
STACK1SEGMENTSTACK'STACK'
DW50DUP(0)
TOP_STACKLABELWORD
STACK1ENDS
;代码段
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,STACK1
MOVSS,AX
LEASP,TOP_STACK
MOVAX,DATA
MOVDS,AX
;初始化8255A,方式0,A口作输出,B口和C口为输入
MOVDX,PORT_CTL;指向控制口
MOVAL,10000010B;控制字
OUTDX,AL;写入控制字
;向所有行送0
MOVDX,PORT_A;A口
MOVAL,00H
OUTDX,AL;向A口各位输出0
;读列,查看所有键是否均松开
MOVDX,PORT_B
WAIT_OPEN:
INAL,DX;键盘状态读入B口
ANDAL,0FFH;查8位列值
CMPAL,0FFH;是否都为1(各键均松开)
JNEWAIT_OPEN
;各键均已松开,再查列是否有0,即是否有键压下
WAIT_PRES:
INAL,DX;读B口
ANDAL,0FFH;查8位列值
CMPAL,0FFH;是否有键压下
JEWAIT_PRES;无,等待
;有键压下,延时20ms,消抖动
MOVCX,16EAH;延时20ms
DELAY:
LOOPDELAY
;再查列,看键是否仍被压着
INAL,DX
ANDAL,0FFH
CMPAL,0FFH
JEWAIT_PRES;已松开,转出等待键
;判断哪一个键按下
START1:
MOVBL,4;行数送BL
MOVBH,8;列数送BH
MOVAL,0FEH;D0=0,准备扫描0行
MOVCL,0FFH;键盘屏蔽码送CL
MOVCH,0FFH;CH中存放起始键号
LOP1:
OUT80H,AL;A口输出,扫描一行
ROLAL,1;修改扫描码,准备扫描下一行
MOVAH,AL;暂时保存
INAL,81H;读B口,以便确定所按键的列值
ANDAL,CL
CMPAL,CL
JNZLOP2;有列线为0,转LOP2,找列值
ADDCH,BH;无键按下,修改键号,以方便下一行找键号
MOVAL,AH;恢复扫描码
DECBL;行数减1
JNZLOP1;行未扫描完转LOP1
JMPSTART;重新扫描
LOP2:
INCCH;键号加1
RORAL,1;右移一位
JCLOP2;无键按下,查下一列线
MOVAL,CH;已找到,键号送AL,AL作入口参数
CALLNEARPTRSHOW;调用显示子程序
SHOWPROCNEAR
PUSHAX
CREQU0DH
LFEQU0AH
MESDB'你按下的键号为:
AL',CR,LF,'$'
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES;DS:
DX指向字符串MES
MOVAH,9;9号功能调用
INT21H
SHOWENDP
CODEENDS
ENDSTART1