基于8255键盘的设计.docx

上传人:b****2 文档编号:2463091 上传时间:2022-10-29 格式:DOCX 页数:10 大小:83.59KB
下载 相关 举报
基于8255键盘的设计.docx_第1页
第1页 / 共10页
基于8255键盘的设计.docx_第2页
第2页 / 共10页
基于8255键盘的设计.docx_第3页
第3页 / 共10页
基于8255键盘的设计.docx_第4页
第4页 / 共10页
基于8255键盘的设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于8255键盘的设计.docx

《基于8255键盘的设计.docx》由会员分享,可在线阅读,更多相关《基于8255键盘的设计.docx(10页珍藏版)》请在冰豆网上搜索。

基于8255键盘的设计.docx

基于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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1