微机原理与接口技术-键盘LED 显示【课程设计报告】重庆大学课程设计报告课程名称:微机原理与接口技术设计题目:键盘LED显示院系:电气信息学院班级:2007级设计时间:2009年12月第一章概述 (2)1.1学习目的 (2)1.2 计算机的应用 (3)1.3学习计算机的意义 (3)1.4课程设计目的 (4)第二章总体方案设计 (4)2.1 设计注意问题 (4)2.2 总体思路 (5)第三章硬件设计 (5)3.1 8255工作原理 (5)3.2 键盘工作原理 (7)3.3 键特征值的形成 (8)3.4段值的形成 (9)3.5 8255接线图 (11)第四章软件设计 (12)4.1 8255初始化 (12)4.2 键盘扫描的处理方法 (12)4.2.1. 判断是否有键被按下的方法 (12)4.2.2. 判断是否有键被按下的源程序 (13)4.2.3 防抖动 (13)4.2.4.防抖动的延时子程序 (14)4.3 程序核心部分 (14)4.3.1 逐行扫描 (14)4.3.2逐行扫描的源程序 (15)第五章源程序代码 (15)5.1 根据整体思路以及软件设计得到的代码. 155.2 以上代码存在问题分析 (19)第六章难点分析 (20)第七章体会感慨建议 (25)第八章参考文献 (26)第一章概述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.1 8255工作原理并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255 A可编程外围接口芯片是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.1 8255的内部结构及引脚F E 7d C b A 9 8 7 6 5 4 3 2 1 0 列0 列1 列2 列3 +5图 3.2 8255工作方式控制字和C 口按位置位/复位控制字3.2 键盘工作原理唐都实验箱提供的是4*4的小键盘,如下图所示, 列为高电平。
并且位选口与行控口共用端口。
键盘原理图 3.2:图3.2键盘原理图键盘工作原理阐述:①每一个键跨接在行、列线之间;②在无按键时,列线固定为高电平;列控制口用于读入列线状态,即列值。
③行线电平受控于“行控制口”,行控口输出的信号称为行值④某键未按下,该键关联的行、列线不通;按下,则把行线的电平引入列线。
设置行线为低电平,则把行线的低电平引入列线。
3.3 键特征值的形成根据键盘的工作原理可以得到如下键特征值表 3.4:3.3键特征值表3.4段值的形成LED显示段值见表 3.5表3.4 段码表3.5 8255接线图图3.5 8255接线图3.6 寄存器地址选取根据唐都实验仪器提供的手册,选取IOY1作为8255芯片的片选端口,A1 A0为片内译码。
即:PA口地址:0640HPB口地址:0642HPC口地址:0644PD(控制口) 地址:0646H.第四章软件设计4.1 8255初始化以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. 判断是否有键被按下的源程序MOV DX,0640HMOV AL,00HOUT DX,ALJXSR: MOV DX,0644HIN AL,DXAND AL,0FHCMP AL,0FHJE JXSR对源程序的解释:程序中只需要C口低四位,所以用“AND AL,0FH”对低4位保存4.2.3 防抖动防抖动措施对按键来说是必需的,可以让微机准确输入,在课程设计中,利用延时子程序来实现防抖动。
4.2.4.防抖动的延时子程序DELAY PROC NEAR ;延时子程序MOV CX,0F000HDLP: LOOP DLPRETDELAY ENDP4.3 程序核心部分4.3.1 逐行扫描问题:怎么判断按键说在行的位置?查阅资料,判断按键所在行的位置用逐行扫描的方法。
逐行扫描:使行线输出逐一为低电平,从列控口读入列状态(列值)。
此时如果列值读入为全1,则按键不在本行;非全1,在本行。
判断是否有键被按下的流程:1.使第0行为0(扫描0行);2.读入列值;3.判断列值是否全为04.若列值全为0,则说明按键不在本行;5.列值移位,再次读入列值,进行判断。
4.3.2逐行扫描的源程序LOP1:MOV DX,0640HOUT DX,ALMOV DX,0644HIN AL,DXAND AL,0FHCMP AL,0FHJNE ZJSCROL AH,1MOV AL,AHJMP LOP1逐行扫描的源程序的解释:’ROL AH,1’,行值移位后继续扫描。
第五章源程序代码5.1 根据整体思路以及软件设计得到的代码DATA SEGMENTDZTABLE DB 3FH,06H,5BH,4FH,66DB6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,71HJZTABLE DB 7EH,7DH,7BH,77HDB0BEH,0BDH,0BBH,0B7HDB0DEH,0DDH,0DBH,0D7HDB0EEH,0EDH,0EBH,0E7HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,0646HMOV AL,89HOUT DX,AL ;初始化T1: MOV DX,0640H ;行开放MOV AL,00HOUT DX,ALJXSR: MOV DX,0644HIN AL,DXAND AL,0FHCMP AL,0FHJE JXSRCALL DELAY ;防抖动MOV BL,AL ;保存列值MOV AL,0FEH ;逐行扫描MOV AH,ALLOP1:MOV DX,0640HOUT DX,ALMOV DX,0644HIN AL,DXAND AL,0FHCMP AL,0FHJNE ZJSCROL AH,1MOV AL,AHJMP LOP1ZJSC:SHL BL,4AND AH,0FHOR BL,AH ;形成键特征值LEA SI,JZTABLEMOV CL,0LOP3:CMP BL,[SI]JE LOP2INC CLINC SIJMP LOP3LOP2:MOV DX,0640HMOV AL,00HOUT DX,ALLOP4: MOV DX,0644HIN AL,DXAND AL,0FHCMP AL,0FHJNE LOP4CALL DELAYLEA DI,DZTABLEMOV BX,DIMOV AL,CLXLATMOV DX,0642HOUT DX,ALMOV DX,0640HMOV AL,00HOUT DX,ALMOV AH,4CHINT 21HDELAY PROC NEAR ;延时子程序MOV CX,0F000HDLP: LOOP DLPRETDELAY ENDPCODE ENDS5.2 以上代码存在问题分析以上源代码在理论上已经准确了,但是任然不能调试成功,经过细心检查,发现源程序中的延时子程序出现问题。