收藏 分销(赏)

微机原理与接口技术-8086CPU小键盘课程设计.doc

上传人:天**** 文档编号:4315337 上传时间:2024-09-05 格式:DOC 页数:14 大小:330KB 下载积分:8 金币
下载 相关 举报
微机原理与接口技术-8086CPU小键盘课程设计.doc_第1页
第1页 / 共14页
微机原理与接口技术-8086CPU小键盘课程设计.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
宜春学院 物理科学与工程技术学院 课 程 设 计 报 告 课程名称: 微机原理与接口技术 设计题目:基于8086CPU的小键盘设计 设计时间: 2014年6月 班 级: 姓 名: 学 号: 一.课程设计要求:使用行扫描法或者线反转法识别4*4的非编码小键盘,并将键入的键值(0-9,A-F)显示在数码管上。 二.课程设计目的 1.掌握 8255的使用和编程方法。 2.通过8255设计键盘扫描及它们的输入输出方式和它们的控制字。综合运用本学期所学的关于汇编的知识,在实验中进一步熟悉本学期所学的课程并结合实际生活,掌握汇编的应用。 3.注重键盘扫描的方法设计以及解决问题的思路。 4.了解任何微机应用开发工作都离不开接口的技术、选用及连接。微机应用系统需要设计的硬件是一些接口电路,所要编写的软件是控制这些接口电路按要求工作的驱动程序。重点讲述可编程并行接口芯片8255A、内部结构、工作方式、初始化编程及其应用实例。 总体方案设计 设计注意问题 在唐都实验箱上实现键盘扫描并显示在LED上,比如当按下‘6’时,LED会显示6的字样。总体设计方案如下: 1.实现键盘的扫描(键号与键值的对应)。 2.防抖动措施。 3.防重键的措施。 总体思路 本次试验报告的整体思路如下: 1. 行开放,找到列值并保存; 2. 逐行扫描,找到行值并保存; 3. 行值和列值组合成键特征值; 4. 根据键特征值找到键号; 5. 根据键号查表得段码; 6. 送出相应位码。 键盘扫描逻辑性很强,步步相扣。思路显得尤其重要。 硬件设计 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的内部结构及引脚 图3.2 8255工作方式控制字和C口按位置位/复位控制字 键盘工作原理 唐都实验箱提供的是4*4的小键盘,如下图所示, 列为高电平。并且位选口与行控口共用端口。 键盘原理图3.2: F E 7d C b A 9 8 7 6 5 4 3 2 1 0 列0 列1 列2 列3 0 0 +5 图3.2 键盘原理图 键盘工作原理阐述: ① 每一个键跨接在行、列线之间; ② 在无按键时,列线固定为高电平; 列控制口用于读入列线状态,即列值。 ③ 行线电平受控于“行控制口”,行控口输出的信号称为行值 ④ 某键未按下,该键关联的行、列线不通;按下,则把行线的电平引入列线。设置行线为低电平,则把行线的低电平引入列线。 键特征值的形成 根据键盘的工作原理可以得到如下键特征值表3.3: 键值 列值 行值 键特征值 键值 列值 行值 键特征值 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键特征值表 段值的形成 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.4 表3.4 段码表 8255接线图 PB PA0 PA1 PA2 PA3 PC3 PC2 PC1 PC0 LED6 LED5 LED4 LED3 LED2 LED1 列 控 位控 行控 +5V 图3.5 8255接线图 寄存器地址选取 根据唐都实验仪器提供的手册,选取IOY1作为8255芯片的片选端口,A1 A0为片内译码。即: PA口地址: 0640H PB口地址: 0642H PC口地址: 0644PD(控制口) 地址: 0646H. 软件设计 8255初始化 以PC为列控口; 以PA低4位为行控口; 列口为输入,行口输出; 显示以PB为段选口; PB口输出; PA低6位为位选。 根据3.1与3.2 得出8255芯片的控制字为:10001001B,即:89H。 键盘扫描的处理方法 判断是否有键被按下的方法 行开放:使所有行线输出低电平,从列控口读入列状态(列值)即: 通过行控口,输出全0 。4条行线均为低电平。 如果没有键按下,则行线低电平不会引入到列线,从列控口读入的必为全1; 只要有一个键按下,如‘F’键,则行1的低电平引入列3,从列控口读入的列值为1110,非全1,由此得出判断是否有键按下的条件: 读入的列值为全1,无按键;非全1,必有按键! 判断是否有键被按下的流程: 1. 让行线输出全为0; 2. 读列的值; 3. 判断列值是否全为0; 4. 若不全为0,则说明有按键按下; 5. 全为0,则说明没有按键按下,继续等待输入。 判断是否有键被按下的源程序 MOV DX,0640H MOV AL,00H OUT DX,AL JXSR: MOV DX,0644H IN AL,DX AND AL,0FH CMP AL,0FH JE JXSR 对源程序的解释:程序中只需要C口低四位,所以用“AND AL,0FH” 对低4位保存 防抖动 防抖动措施对按键来说是必需的,可以让微机准确输入,在课程设计中,利用延时子程序来实现防抖动。 防抖动的延时子程序 DELAY PROC NEAR ;延时子程序 MOV CX,0F000H DLP: LOOP DLP RET DELAY ENDP 程序核心部分 逐行扫描 问题:怎么判断按键说在行的位置? 查阅资料,判断按键所在行的位置用逐行扫描的方法。 逐行扫描:使行线输出逐一为低电平,从列控口读入列状态(列值)。 此时如果列值读入为全1,则按键不在本行;非全1,在本行。 判断是否有键被按下的流程: 1. 使第0行为0(扫描0行); 2. 读入列值; 3. 判断列值是否全为0 4. 若列值全为0,则说明按键不在本行; 5. 列值移位,再次读入列值,进行判断。 逐行扫描的源程序 LOP1:MOV DX,0640H OUT DX,AL MOV DX,0644H IN AL,DX AND AL,0FH CMP AL,0FH JNE ZJSC ROL AH,1 MOV AL,AH JMP LOP1 逐行扫描的源程序的解释:’ROL AH,1’,行值移位后继续扫描。 源程序代码 根据整体思路以及软件设计得到的代码 DATA SEGMENT DZTABLE DB 3FH,06H,5BH,4FH,66DB 6DH,7DH,07H,7FH,6FH DB 77H,7CH,39H,5EH,79H,71H JZTABLE DB 7EH,7DH,7BH,77H DB 0BEH,0BDH,0BBH,0B7H DB 0DEH,0DDH,0DBH,0D7H DB 0EEH,0EDH,0EBH,0E7H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,0646H MOV AL,89H OUT DX,AL ;初始化 T1: MOV DX,0640H ;行开放 MOV AL,00H OUT DX,AL JXSR: MOV DX,0644H IN AL,DX AND AL,0FH CMP AL,0FH JE JXSR CALL DELAY ;防抖动 MOV BL,AL ;保存列值 MOV AL,0FEH ;逐行扫描 MOV AH,AL LOP1:MOV DX,0640H OUT DX,AL MOV DX,0644H IN AL,DX AND AL,0FH CMP AL,0FH JNE ZJSC ROL AH,1 MOV AL,AH JMP LOP1 ZJSC:SHL BL,4 AND AH,0FH OR BL,AH ;形成键特征值 JNP AAA ;防重键 LEA SI,JZTABLE MOV CL,0 LOP3:CMP BL,[SI] JE LOP2 INC CL INC SI JMP LOP3 LOP2:MOV DX,0640H MOV AL,00H OUT DX,AL LOP4: MOV DX,0644H IN AL,DX AND AL,0FH CMP AL,0FH JNE LOP4 CALL DELAY LEA DI,DZTABLE MOV BX,DI MOV AL,CL XLAT MOV DX,0642H OUT DX,AL MOV DX,0640H MOV AL,00H OUT DX,AL AAA JMP T1 MOV DX,0640H MOV AL,00H OUT DX,AL MOV AH,4CH INT 21H DELAY PROC NEAR ;延时子程序 MOV CX,0F000H DLP: LOOP DLP RET DELAY ENDP CODE ENDS 参考文献 1.80*86微机原理指导书 2.微机原理实验和课程设计指导书 3.姚燕南 薛钧义 主编 《微机原理与接口技术》 高等教育出版社 13
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服