1、基于8255键盘的设计论文题目基于8255键盘的设计指导教师刘伟、林泽坤学生班级07自动化(2)班学生姓名李欢、胡振、李博设计内容分析论证(可加附页)详见附页设计条件要求PC机一台,EL教学试验箱一台及汇编程序设计进程安排第一周设计任务:(1)明确课题对程序功能,运算精度等方面的要求及硬件条件(2)把复杂的问题分解为若干模块,确定各模块处理方法,画出流程图(3)存储器资源分配第二周设计任务:(4)编制程序,根据流程图选择合适的指令和寻址方式来编制源程序(5)对程序进行汇编,调试和修改,知道程序运行结果正确为止文献资料准备微型计算机原理与接口技术 中国科技大学出版社 吴秀清 周荷琴编著16-32
2、位微型计算机技术及应用 清华大学出版社 戴梅萼 史嘉权编著汇编语言程序设计 南京大学出版社 姚君遗编著汇编语言程序设计教程 清华大学出版社 杨基文编著微型计算机原理及接口技术实验指导书开题批注【摘 要】: 本设计以8086作为主控芯片,将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。【关键词】: 8255A 键盘 扫描一、总体概括 3二、方案的论证与比较 41、主要电路硬件方案的选择 42、显示设备的选择 4三、电路设计 51、电路原理框图 52、电路原理图 5四、软件设计 61、程序流程图 62、程序清单 7五、调试结果 7六、总结与体会 7一
3、、总体概括具体的系统方框图如下所示:图1系统方框图二、方案的论证与比较1、主要电路硬件方案的选择我们只想到了一个方案:用译码器提供端口地址,8255A的PA0PA3作输出端口,PB0PB7作输入端口。2、显示设备的选择方案一:采用传统数码管作为显示设备。传统数码管具有低能耗、低损耗、低压、长寿命、耐老化、防晒、防潮、防火、防高(低)温的特点;对外界环境要求低,易于维护;同时其精度比较高,精确可靠,操作简单,程序编写容易,资源占用少。方案二:采用液晶显示屏(LCD)显示数字量。液晶显示器具有功耗低、无辐射危险、平面直角显示以及影像稳定等,可视面积大,画面效果好,也可以显示汉字,分辨率高,抗干扰能
4、力强,显示内容多等特点。综合考虑我们选择方案二。三、电路设计1、电路原理框图图2电路原理框图2、电路原理图图3电路原理框图四、软件设计1、程序流程图图4主程序流程图图5显示子程序流程图2、程序清单见附录1五、调试结果经过多次在星研上调试,最终我们得到了正确的显示结果。六、总结与体会经过我们三人的分工协作和不懈努力,终于完成了本设计题目中的基本要求。本作品以8086作为主控芯片,将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。在调试过程中,我们对星研的编程环境有了更深地了解。在这次课程设计中,我们充分发挥团队协作精神,积极工作并最终完成了作品。通关
5、过这次实践使我们加深了对课本知识的理解,并从中受益匪浅。参考文献微型计算机原理及接口技术中国科技大学出版社 吴秀清 周荷琴编著16-32位微型计算机技术及应用清华大学出版社 戴梅萼 史嘉权编著汇编语言程序设计南京大学出版社 姚君遗编著汇编语言程序设计教程清华大学出版社 杨记文编著微型计算机原理及接口技术实验指导书附录1:;端口地址PORT_A EQU 00F0H ;8255A口地址PORT_B EQU 00F1H ;8255B口地址PORT_CTL EQU 00F2H ;8255控制口地址;数据段DATA SEGMENT DB 100 DUP(0) DATA ENDS ;堆栈段STACK1 S
6、EGMENT STACK STACK DW 50 DUP(0)TOP_STACK LABEL WORDSTACK1 ENDS;代码段CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX, STACK1 MOV SS, AX LEA SP, TOP_STACK MOV AX, DATA MOV DS, AX;初始化8255A,方式0,A口作输出,B口和C口为输入 MOV DX, PORT_CTL ;指向控制口 MOV AL, 10000010B ;控制字 OUT DX, AL ;写入控制字;向所有行送0 MOV DX, PORT_A
7、 ;A口 MOV AL, 00H OUT DX, AL ;向A口各位输出0;读列,查看所有键是否均松开 MOV DX, PORT_BWAIT_OPEN: IN AL, DX ;键盘状态读入B口 AND AL, 0FFH ;查8位列值 CMP AL, 0FFH ;是否都为1(各键均松开) JNE WAIT_OPEN ;各键均已松开,再查列是否有0,即是否有键压下WAIT_PRES: IN AL, DX ;读B口 AND AL, 0FFH ;查8位列值 CMP AL, 0FFH ;是否有键压下 JE WAIT_PRES ;无,等待;有键压下,延时20ms,消抖动 MOV CX, 16EAH ;延时
8、20msDELAY: LOOP DELAY ;再查列,看键是否仍被压着 IN AL, DX AND AL, 0FFH CMP AL, 0FFH JE WAIT_PRES ;已松开,转出等待键;判断哪一个键按下START1: MOV BL, 4 ;行数送BL MOV BH, 8 ;列数送BH MOV AL, 0FEH ;D0=0,准备扫描0行 MOV CL, 0FFH ;键盘屏蔽码送CL MOV CH, 0FFH ;CH中存放起始键号 LOP1: OUT 80H,AL ;A口输出,扫描一行 ROL AL, 1 ;修改扫描码,准备扫描下一行 MOV AH, AL ;暂时保存 IN AL, 81H
9、;读B口,以便确定所按键的列值 AND AL, CL CMP AL, CL JNZ LOP2 ;有列线为0,转LOP2,找列值 ADD CH, BH ;无键按下,修改键号,以方便下一行找键号 MOV AL, AH ;恢复扫描码 DEC BL ;行数减1 JNZ LOP1 ;行未扫描完转LOP1 JMP START ;重新扫描 LOP2: INC CH ;键号加1 ROR AL, 1 ;右移一位 JC LOP2 ;无键按下,查下一列线 MOV AL, CH ;已找到,键号送AL,AL作入口参数 CALL NEAR PTR SHOW ;调用显示子程序 SHOW PROC NEAR PUSH AX CR EQU 0DH LF EQU 0AH MES DB 你按下的键号为:AL,CR,LF,$ MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES ;DS:DX指向字符串MES MOV AH,9 ;9号功能调用 INT 21HSHOW ENDPCODE ENDS END START1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1