微机原理与接口技术键盘LED显示课程设计报告.docx
- 文档编号:25359543
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:20
- 大小:169.25KB
微机原理与接口技术键盘LED显示课程设计报告.docx
《微机原理与接口技术键盘LED显示课程设计报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术键盘LED显示课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术键盘LED显示课程设计报告
微机原理与接口技术-键盘LED显示【课程设计报告】
重庆大学
课程设计报告
课程名称:
微机原理与接口技术
设计题目:
键盘LED显示
院系:
电气信息学院
班级:
2007级
设计时间:
2009年12月
第一章概述
1.1学习目的
“微机原理与接口技术”是电气工程及其自动化专业的一门重要的专业基础课程。
我们通过该门课的学习,知道了微机的工作原理,微型计算机的基本结构,接口技术及汇编语言程序设计,为后续的课程的学习和今后的工作打下坚实的基础。
通过实验可以培养学生利用计算机技术和编程手段分析,解决专业领域的各种问题的能力和意识,并进一步感受微机发展的微机发展的新技术和新方法。
1.2计算机的应用
目前计算机的应用已经遍布各个行业,如科学计算、数据处理、过程控制、人工智能、网络应用等。
科学和工程计算:
科学和工程计算的特点是计算量大,而逻辑关系相对简单,它是计算机重要应用领域之一。
数据和信息处理:
数据处理是指对数据的收集、存储、加工、分析和传送的全过程。
这些数据处理应用的特点是数据量很大,但计算相对简单。
多媒体技术的发展,为数据处理增加了新鲜内容,都涉及更广泛的数据类型,这些数据处理过程不仅数据量大,而且还会带来大量的运算和复杂的运算过程。
过程控制:
过程控制是生产自动化的重要技术内容和手段,它是由计算机对所采集到的数据按一定方法经过计算,然后输出到指定执行机构去控制生产的过程。
人工智能:
人们把计算机模拟人脑力劳动的过程成为人工智能。
人工智能是利用计算机来模拟人的思维过程,并利用计算机程序来实现这些过程。
1.3学习计算机的意义
电子计算机是一种能自动高速地进行大量运算的电子机器。
电子计算机的出现和发展,是科学技术和生产力的卓越成就之一,反过来,它也极大地促进了科学技术和生产力的发展。
微型计算机的发展前景是不可估量的。
微型计算机功能强,体积小,使用方便,可靠性高,价格低廉,因而应用范围非常广泛,航天工业,交通运输,医药卫生甚至家庭生活及教学仪器等方面都广泛地使用了微型计算机。
毫无疑问,今后微型计算机在人类社会和日常生活中的影响将会越来越大。
感受接口的重要作用,学会微机与接口的综合应用。
掌握接口的编程技术。
1.4课程设计目的
1.掌握8255的使用和编程方法。
2.通过8255设计键盘扫描及它们的输入输出方式和它们的控制字。
综合运用本学期所学的关于汇编的知识,在实验中进一步熟悉本学期所学的课程并结合实际生活,掌握汇编的应用。
3.注重键盘扫描的方法设计以及解决问题的思路。
4.了解任何微机应用开发工作都离不开接口的技术、选用及连接。
微机应用系统需要设计的硬件是一些接口电路,所要编写的软件是控制这些接口电路按要求工作的驱动程序。
重点讲述可编程并行接口芯片8255A、内部结构、工作方式、初始化编程及其应用实例。
]
第二章总体方案设计
2.1设计注意问题
在唐都实验箱上实现键盘扫描并显示在LED上,比如当按下‘6’时,LED会显示6的字样。
总体设计方案如下:
1.实现键盘的扫描(键号与键值的对应)。
2.防抖动措施。
3.防重键的措施。
2.2总体思路
本次试验报告的整体思路如下:
1.行开放,找到列值并保存;
2.逐行扫描,找到行值并保存;
3.行值和列值组合成键特征值;
4.根据键特征值找到键号;
5.根据键号查表得段码;
6.送出相应位码。
键盘扫描逻辑性很强,步步相扣。
思路显得尤其重要。
第三章硬件设计
3.18255工作原理
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255A可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能以下三种方式下工作:
方式0:
基输入/输出方式
方式1:
选通输入/输出方式
方式2:
双向选通工作方式
8255A的内部结构及引脚如图3.1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图3.2所示。
双向选通工作方式。
8255的内部结构及引脚如图3.1所示,
8255工作方式控制字和C口按位置位/复位控制字如图3.3所示
图3.18255的内部结构及引脚
图3.28255工作方式控制字和C口按位置位/复位控制字
3.2键盘工作原理
唐都实验箱提供的是4*4的小键盘,如下图所示,列为高电平。
并且位选口与行控口共用端口。
键盘原理图3.2:
F
E
7d
C
b
A
9
8
7
6
5
4
3
2
1
0
列0
列1
列2
列3
00
+5
图3.2键盘原理图
键盘工作原理阐述:
①每一个键跨接在行、列线之间;
②在无按键时,列线固定为高电平;
列控制口用于读入列线状态,即列值。
③行线电平受控于“行控制口”,行控口输出的信号称为行值
④某键未按下,该键关联的行、列线不通;按下,则把行线的电平引入列线。
设置行线为低电平,则把行线的低电平引入列线。
3.3键特征值的形成
根据键盘的工作原理可以得到如下键特征值表3.4:
键值
列值
行值
键特征值
键值
列值
行值
键特征值
0
0111B
1110B
7EH
1
0111B
1101B
7DH
2
0111B
1011B
7BH
3
0111B
0111B
77H
4
1011B
1110B
BEH
5
1011B
1101B
BDH
6
1011B
1011B
BBH
7
1011B
0111B
B7H
8
1101B
1110B
DEH
9
1101B
1101B
DDH
A
1101B
1011B
DBH
b
1101B
0111B
D7H
C
1110B
1110B
EEH
d
1110B
1101B
EDH
E
1110B
1011B
EBH
F
1110B
0111B
E7H
3.3键特征值表
3.4段值的形成
Dp
g
f
e
d
c
b
a
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
1
1
1
1
1
1
3FH
1
0
0
0
0
0
1
1
0
06H
2
0
1
0
1
1
0
1
1
5BH
3
0
1
0
0
1
1
1
1
4FH
4
0
1
1
0
0
1
1
0
66H
5
0
1
1
0
1
1
0
1
6DH
6
0
1
1
1
1
1
0
1
7DH
7
0
0
0
0
0
1
1
1
07H
8
0
1
1
1
1
1
1
1
7FH
9
0
1
1
0
1
1
1
1
6FH
A
0
1
1
1
0
1
1
1
77H
b
0
1
1
1
1
1
0
0
7CH
C
0
0
1
1
1
0
0
1
39H
d
0
1
0
1
1
1
1
0
5EH
E
0
1
1
1
1
0
0
1
79H
F
0
1
1
1
0
0
0
1
71H
LED显示段值见表3.5
表3.4段码表
3.58255接线图
PB
PA0
PA1
PA2
PA3
PC3
PC2
PC1
PC0
LED6LED5LED4LED3LED2LED1
列
控
位控
行控
+5V
图3.58255接线图
3.6寄存器地址选取
根据唐都实验仪器提供的手册,选取IOY1作为8255芯片的片选端口,A1A0为片内译码。
即:
PA口地址:
0640H
PB口地址:
0642H
PC口地址:
0644PD(控制口)地址:
0646H.
第四章软件设计
4.18255初始化
以PC为列控口;
以PA低4位为行控口;
列口为输入,行口输出;
显示以PB为段选口;
PB口输出;
PA低6位为位选。
根据3.1与3.2得出8255芯片的控制字为:
10001001B,即:
89H。
4.2键盘扫描的处理方法
4.2.1.判断是否有键被按下的方法
行开放:
使所有行线输出低电平,从列控口读入列状态(列值)即:
通过行控口,输出全0。
4条行线均为低电平。
如果没有键按下,则行线低电平不会引入到列线,从列控口读入的必为全1;
只要有一个键按下,如‘F’键,则行1的低电平引入列3,从列控口读入的列值为1110,非全1,由此得出判断是否有键按下的条件:
读入的列值为全1,无按键;非全1,必有按键!
判断是否有键被按下的流程:
1.让行线输出全为0;
2.读列的值;
3.判断列值是否全为0;
4.若不全为0,则说明有按键按下;
5.全为0,则说明没有按键按下,继续等待输入。
4.2.2.判断是否有键被按下的源程序
MOVDX,0640H
MOVAL,00H
OUTDX,AL
JXSR:
MOVDX,0644H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JEJXSR
对源程序的解释:
程序中只需要C口低四位,所以用“ANDAL,0FH”
对低4位保存
4.2.3防抖动
防抖动措施对按键来说是必需的,可以让微机准确输入,在课程设计中,利用延时子程序来实现防抖动。
4.2.4.防抖动的延时子程序
DELAYPROCNEAR;延时子程序
MOVCX,0F000H
DLP:
LOOPDLP
RET
DELAYENDP
4.3程序核心部分
4.3.1逐行扫描
问题:
怎么判断按键说在行的位置?
查阅资料,判断按键所在行的位置用逐行扫描的方法。
逐行扫描:
使行线输出逐一为低电平,从列控口读入列状态(列值)。
此时如果列值读入为全1,则按键不在本行;非全1,在本行。
判断是否有键被按下的流程:
1.使第0行为0(扫描0行);
2.读入列值;
3.判断列值是否全为0
4.若列值全为0,则说明按键不在本行;
5.列值移位,再次读入列值,进行判断。
4.3.2逐行扫描的源程序
LOP1:
MOVDX,0640H
OUTDX,AL
MOVDX,0644H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JNEZJSC
ROLAH,1
MOVAL,AH
JMPLOP1
逐行扫描的源程序的解释:
’ROLAH,1’,行值移位后继续扫描。
第五章源程序代码
5.1根据整体思路以及软件设计得到的代码
DATASEGMENT
DZTABLEDB3FH,06H,5BH,4FH,66DB6DH,7DH,07H,7FH,6FH
DB77H,7CH,39H,5EH,79H,71H
JZTABLEDB7EH,7DH,7BH,77H
DB0BEH,0BDH,0BBH,0B7H
DB0DEH,0DDH,0DBH,0D7H
DB0EEH,0EDH,0EBH,0E7H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0646H
MOVAL,89H
OUTDX,AL;初始化
T1:
MOVDX,0640H;行开放
MOVAL,00H
OUTDX,AL
JXSR:
MOVDX,0644H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JEJXSR
CALLDELAY;防抖动
MOVBL,AL;保存列值
MOVAL,0FEH;逐行扫描
MOVAH,AL
LOP1:
MOVDX,0640H
OUTDX,AL
MOVDX,0644H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JNEZJSC
ROLAH,1
MOVAL,AH
JMPLOP1
ZJSC:
SHLBL,4
ANDAH,0FH
ORBL,AH;形成键特征值
LEASI,JZTABLE
MOVCL,0
LOP3:
CMPBL,[SI]
JELOP2
INCCL
INCSI
JMPLOP3
LOP2:
MOVDX,0640H
MOVAL,00H
OUTDX,AL
LOP4:
MOVDX,0644H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JNELOP4
CALLDELAY
LEADI,DZTABLE
MOVBX,DI
MOVAL,CL
XLAT
MOVDX,0642H
OUTDX,AL
MOVDX,0640H
MOVAL,00H
OUTDX,AL
MOVAH,4CH
INT21H
DELAYPROCNEAR;延时子程序
MOVCX,0F000H
DLP:
LOOPDLP
RET
DELAYENDP
CODEENDS
5.2以上代码存在问题分析
以上源代码在理论上已经准确了,但是任然不能调试成功,经过细心检查,发现源程序中的延时子程序出现问题。
DELAYPROCNEAR;延时子程序
MOVCX,0F000H
DLP:
LOOPDLP
RET
DELAYENDP
CODEENDS
在延时子程序中用了寄存器CX,但是后面程序中还要用CX,没有保存现场。
应该改为:
DELAYPROCNEAR
PUSHCX
MOVCX,0F000H
DLP:
LOOPDLP
POPCX
RET
DELAYENDP
CODEENDS
第六章难点分析
本课程设计的难点之一是行扫描的实现。
以上工作做完后,已经能显示了,键盘扫描问题就基本解决了。
但是本课程设计的又一难点——怎么实现防重键?
我想的方法是根据键特征值去判断:
观察键特征值,发现键特征值0的个数均是偶数。
就利用此条件去判断,若出现奇数则是重键,具体操做见一下程序
DATASEGMENT
DZTABLEDB3FH,06H,5BH,4FH,66DB6DH,7DH,07H,7FH,6FH
DB77H,7CH,39H,5EH,79H,71H
JZTABLEDB7EH,7DH,7BH,77H
DB0BEH,0BDH,0BBH,0B7H
DB0DEH,0DDH,0DBH,0D7H
DB0EEH,0EDH,0EBH,0E7H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,0646H
MOVAL,89H
OUTDX,AL;初始化
T1:
MOVDX,0640H;行开放
MOVAL,00H
OUTDX,AL
JXSR:
MOVDX,0644H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JEJXSR
CALLDELAY;防抖动
MOVBL,AL;保存列值
MOVAL,0FEH;逐行扫描
MOVAH,AL
LOP1:
MOVDX,0640H
OUTDX,AL
MOVDX,0644H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JNEZJSC
ROLAH,1
MOVAL,AH
JMPLOP1
ZJSC:
SHLBL,4
ANDAH,0FH
ORBL,AH;形成键特征值
JNPAAA;防重键
LEASI,JZTABLE
MOVCL,0
LOP3:
CMPBL,[SI]
JELOP2
INCCL
INCSI
JMPLOP3
LOP2:
MOVDX,0640H
MOVAL,00H
OUTDX,AL
LOP4:
MOVDX,0644H
INAL,DX
ANDAL,0FH
CMPAL,0FH
JNELOP4
CALLDELAY
LEADI,DZTABLE
MOVBX,DI
MOVAL,CL
XLAT
MOVDX,0642H
OUTDX,AL
MOVDX,0640H
MOVAL,00H
OUTDX,AL
AAAJMPT1
MOVDX,0640H
MOVAL,00H
OUTDX,AL
MOVAH,4CH
INT21H
DELAYPROCNEAR;延时子程序
MOVCX,0F000H
DLP:
LOOPDLP
RET
DELAYENDP
CODEENDS
这才是本次课程设计的最终可执行程序。
第七章体会感慨建议
1、通过这次课程设计,加强了我们动手、思考和解决问题的能力。
在整个设计过程中,我们通过这个方案包括设计了键盘扫描LED显示。
这个方案使用了8255可编程接口芯片。
2、在设计过程中,经常会遇到这样那样的情况,就是心里想老着这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。
3.通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
4.此次课程设计,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。
5.此次课程设计使我真正的掌握了小健盘的扫描方法,让我知道了解决设计问题的方法。
从整个设计流程我知道问题是一步步地解决的。
不能惧怕问题,问题的提出就是自我进步,自我升华的关键。
6.此次课程设计很好地培养了自己对知识的综合应用能力。
7.短短的两周转瞬即逝,现在还回味无穷,对课程设计总有意犹未尽的感觉,保留这份感觉继续激励自己前进吧!
5在此,感谢蔡华老师的细心指导,也同样谢谢其他各组同学的无私帮助!
第八章参考文献
1.80*86微机原理学生指导书
2.80*86微机原理教师指导书
3.马春燕主编《微机原理与接口技术》电子工业出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 键盘 LED 显示 课程设计 报告