小键盘按键识别数码管移位显示.doc
微 机 原 理 与 接 口 技 术 课 程 设 计 实 验 报 告
《微机原理与接口技术》课程
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
评分
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
1、对课程设计的目的和意义的表述和理解 5分
1
2、总体
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
设计 5分 3、硬件电路设计:
(1)按给定的要求正确的设计出8086最小模式电路图 5分 (2)按给定的要求正确的设计出各所需的译码电路图 5分 (3)按给定的要求正确的设计出各所需的接口电路图 5分 (4)按给定的要求正确的设计出系统硬件电路图 5分 4、软件设计:
(1)按所设计系统的要求给出正确的程序流程图 5分(2)按给定的要求正确的编写出各接口的初始化程序 5分 (3)按给定的要求正确的编写出主程序 10分 (4)对所编写的程序有注释说明 5分 5、设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
的书写:
(1)阐明了硬件设计的基本原理和设计要求与方法 5分(2)阐明了软件设计的基本原理和方法 5分 6、按时完成设计任务 10分 7、考勤 5分 8、答辩 20分
答辩表
问题一
答辩一
2
问题二 答辩二 问题三 答辩三 问题四 答辩四 问题五 答辩五
评
语
小键盘按键识别数码管移位显示 设计内容:
用系统小键盘输入控制数码管的移位显示。
设计目的:
掌握“行扫描”按键识别的原理,掌握行扫描按键识别的编程技术
设计要求:
3
用行扫描技术识别小键盘(将小键盘键入的任意长度的由0—9组成的数字串,采用左移位显示的方法显示任数码管上(仿照移动电话显示屏的显示效果),当小键盘按下F键时,程序结束。
一、课程设计的目的和意义:
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼,它具有动手、动脑,理论联系实际的特点,是培养我们工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。通过这次设计实践能够进一步加深我们对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、总体设计方案:
(1) 在数据段设置两张表,一张是0—9的键值表,一张是0—9的字形编码表。对应关系见表。
键值表与字形编码表
(2)在数据段设置一个显示缓冲区,即BUF—BUF+6单元,其中,BUF—BUF+5单元的初值为数码管熄灭的字形码。程序应将当前的闭合键字形码存人BuF,6单元,随后将BuF,1—BuF,6单元的内容上移到BUF—BUF+5单元,再扫描显示BuF—BuF+5单元的内容,从而使数码管显示左移一位。
(3) 按键的识别方法如下:
键盘一般都是矩阵排列,行和列分别按微机的输出、输入端口,每个键都跨接在某行和某列上,当键按下时,该行与该列短路。输入的端口线一般都通过电阻上拉至高电平。识别链盘上的闭合键的常用方法有行扫描法.
行扫描法是使键盘的某一行输出为低电乎,其余行为高电平,然后读取列值,如果列值中有某位为低电平,则表明行列交点处的键被按下;若为全高则再扫描下一行,直至扫完全部的行线为止。这样便可知有否键按下,若有键按下还可以知道是哪一行哪一列交点的键按下。
(4)LED显示电路:
LED显示电路的核心是6个共阴极数码管,6个数码管的同名阳极段已经复接。6位数码LED的结构参见图。该电路有两个端口:位选N为偶地址,段选口为奇地址,片选信号CS取自“I,O口地址译码电路”的任一输出端,如果将口地址译码输出的“200—207”连接到数码管电路的CS(则片选地址为20DH—207H,此时有以下两种情况:
a.针对奇地址端口执行OUT指令、CS,0;IOW,0(A,l,数据线D0—D7上的字形0
编码存入段选锁存器,其输出端通过8位同相驱动器分别驱动6个数码管的a—h阳极段。
4
b.对偶地址端口执行OUT指令(CS,0,IOW,0,A,0、数据线D0—D7上的位选0
代码码存入位选锁存器,其输出端通过6位反相驱动器分别驱动第1至第6位数码管的共阴极。因为数据线D0—D7依次对应6个数码管的a—h段,因此可以列出适用于该电路的数码管字形编码表。1—6位数码管的共阴极依次和数据线D0—D7位一一对应,因此1—6位数码管的位选代码依次为01H、02H、04H、08H、30H及20H。
由于6个数码管的同名阳极段己经复接,当1个字形编码写入段选锁存器之后,6个数码管都有可能显示相同的字形。很显然,若要6个数码管显示不同的字形,必须采用“扫描显示”的方法。扫描显示是用多位数码管显示电路最基本的编程技巧,它借助LED的余辉效应和人眼的视觉暂留功能达到静态显示的效果。扫描显示的方法是:从第1位至第6位(或者从第6位至第1位),每位显示一个数字后,延时1ms。
(5) 将小锻盘的8根横向引出线,3根纵向引出线与8255连接。8根横向引出线与PA0—PA7相连,3极纵向引出线与PB0—PB7相连,从“I,O口地址译码器”选择一个译码输出连接到8255A的片选端,选择另一个译码输出连接到数码管电路的片选端。
(6) 要用8255做小键盘的处理由路、首先要将8255铵要求初始化。具体要求是:A口方式0输出,B口方式0输入。采用“行扫描”技术识别闭合键。在实现LED显示时,注意在显示后面的字符时,要保存前面输入的字符并左移显示。LED字符的显示用查表的方式。
三、硬件电路设计与过程说明:
5
(1)、8086最小模式电路图
VVCCCC
MN/MX8284RD时钟CLKWR发生器READYM/IORES
RESETBHEBHE/S774 LS地址总线地址373A,A1916ALEG
地址/数据OE,AD150AD
DEN存储器I/O外设DT/R8086DATADATACPU
74 LS数据总线
245DIR
G
6
AD[0..15]ADR[0..19]U6AD0A0A932D0Q0AD1A1A1045D1Q1AD2A2A1176D2Q2AD3A3A1289D3Q3AD4A41312D4Q4AD5A51415D5Q5AD6A61716D6Q6AD7A71819D7Q7
11CLK1MRU1A132174273RESETAD[0..15]A1422U8READYA[16..19]AD[16..19]U7A1524INTA/QS1AD8A8321825D0Q0INTRALE/QS0AD9A9453134D1Q1HOLD/GT1BHEAD10A10763027D2Q2HLDA/GT0DT/R/S1NOTAD11A11892326D3Q3TESTDEN/S2AD12A1213121732RDD4Q4NMINMIRDAD13A1314153329WRD5Q5MN/MXWR/LOCKAD14A1417161928D6Q6CLKM/IO/S0M/IOAD15A151819D7Q78086LOAD_SEG=0x080011CLK1MR
74273
U10AD[16..19]AD16A1632D0Q0AD17A1745D1Q1AD18A1876D2Q2AD19A1989D3Q31312D4Q4BHE1415D5Q51716D6Q61819D7Q7
11CLK1MR
74273
7
8086芯片介绍:
AD15,AD0(I/O,三态):地址/数据复用引脚。
A19/S6 , A16/S3(O,三态):地址/状态复用引脚。
BHE/S7 (O,三态):高字节允许/状态复用引脚。
NMI(In):非屏蔽中断请求线,上升边触发。
INTR (In) :可屏蔽中断请求线,高电平有效。
RD (O,三态) :读选通信号,低电平有效。
CLK (In) : 时钟信号,处理器基本定时脉冲。
RESET (In):复位信号,高电平有效。
WR (O,三态):写选通信号,低电平有效。
READY (IN):准备好信号,高电平有效。处理器与存储器及I/O接口速度同步的控制信号。当被访问的部件无法在8086 CPU
规定
关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定
的时间内完成数据传送时,应由该部件向8086 CPU发出READY=0(低电平),使8086 CPU处于等待状态,插入一个或几个等待周期T,当被访问的部件完成数据传输时,被访问的部件将使READY=1(高电平),8086 CPU继续运行。
8
TEST (IN):等待测试控制信号(输入)。在WAIT(等待)指令期间,8086 CPU每隔5个时钟周期对TEST引脚采样。若TEST为高电平,8086 CPU循环在等待状态,若TEST为低电平,则8086 CPU脱离等待状态,继续执行后续指令。
MN/MX (IN):最大/最小工作模式选择信号。硬件设计者用来决定8086工作模式,MN/MX =1, 8086为最小模式。 MN/MX =0, 8086为最大模式。
Vcc (IN): 处理器的电源引脚,接 +5V电源。
GND :处理器的地线引脚,接系统地线。
(O)为输出信号;(IN)为输入信号
74LS245芯片介绍:
9
74LS373芯片介绍:
最小模式介绍:
有关控制信号:INTA (O) :最小模式下的中断响应信号。
ALE (O) :地址锁存允许信号ALE引脚高有效时,AD7 ~ AD0和A19 ~ A16
正在传送地址信息,由于地址信息在这些复用引脚上出现的时间很短暂,
所以系统需利用ALE引脚将地址锁存起来。
DEN (O,三态) :数据总线缓冲器允许信号。数据允许,输出、三态、低
电平有效,有效时,表示当前数据总线上正在传送数据,可利用他来控制
对数据总线的驱动
DT/R (O,三态) :数据总线缓冲器方向控制信号。数据发送/接收,输出、
三态。该信号表明当前总线上数据的流向:
– 高电平时数据自CPU输出(发送)
– 低电平时数据输入CPU(接收)
M/IO (O,三态) :存储器或I/O接口选择信号。为低电平时,表示CPU将
访问I/O端口,这时地址总线A15 ~ A0提供16位I/O口地址。该引线输
出高电平时,表示CPU将访问存储器,这时地址总线A19 ~ A0提供20
10
位存储器地址。(注:书中错)
WR (O,三态) :写控制。输出、三态、低电平有效,有效时,表示CPU
正在写出数据给存储器或I/O端口
RD (O,三态):读控制,输出、三态、低电平有效,有效时,表示CPU正
在从存储器或I/O端口读入数据
HOLD (IN) : 总线请求信号。(用于DMA)
HLDA (O) :总线请求响应信号。 (用于DMA)
最小模式硬件上的特点:(1)MN/ MX引脚接+5V,决定了8086工作在最小模式。
(2)有一片8234A,作为时钟发生器。
(3)有三片8282或74LS373,用来作为地址锁存器。
(4)当系统中所连接的存储器和外设比较多时,需要增加系统数
据总线的驱动能力,这时,可选用两片8286或74LS245作为总线
收发器。
(2)译码电路图
11
(3)接口电路图
12
CS接Y0
CS接Y1
说明:
13
列2 列3 列0 列1
+5 V
8255A
# # # #
0 1 2 3 0 PA 行0
1 PA 行1
2 PA 行2 # # # # 13 14 12 3 15 PA 行3 CPU 0 PB
总1 PB
2 PB 线
3 PB
与键盘相连接的8255
14
(4)系统硬件电路图
与LED
相连的
8255
与键盘
相连的
8255
15
四、软件设计:
(1)参考程序流程图
(2)初始化程序
MOV AL, 80H ; 初始化与LED相连的8255A ,A口方式零输出,B口方式零输出
OUT 83H,AL ; 将工作方式控制字送控制寄存器
MOV AL,82H ;初始化与键盘相连的8255A,A口方式0输出,B口方
式0输入
16
OUT 87H,AL ;将工作方式控制字送控制寄存器
(3)编程如下:
DATA SEGMENT ;定义数据段 TABLE1 :DW FE0E ;0键
1键 DW 0FD0EH ;
DW 0FB0EH ;2键
DW 0F70EH ;3键
DW 0FE0DH ;4键
DW 0FD0DH ;5键
DW 0FB0DH ;6键
DW 0F70DH ;7键
DW 0FE0BH ;8键
DW 0FD0BH ;9键
DW 0FB0BH ;A键
DW 0F70BH ;B键
DW 0FE07H ;C键
DW 0FD07H ;D键
DW 0FB07H ;E键
DW 0F707H ;F键 ,0~F的键值表
TABLE2 DB 3FH ;0
DB 06H ;1
DB 5BH ;2
DB 4FH ;3
DB 66H ;4
DB 6DH ;5
DB 7DH ;6
DB 07H ;7,
DB 7FH ;8
DB 6FH ;9
DB 77H ;A
17
DB 7CH ;B
DB 39H ;C
DB 5EH ;D
DB 79H ;E
DB 71H ; ;F 0~F的字形编码表 BUF DB 7 DUP 0 , 0 , 0 , 0 , 0 , 0 , 0 ;显示缓冲区,BUF~BUF+5单元的初
值为数码管熄灭的字形码
DATA ENDS
STACK1 SEGMENT PARA STACK’STACK’ ;定义堆栈段 STA DB 1000 DUP (?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS : CODE , DS : DATA , SS : STACK1 ; 段说明
MOV AX, SEG DATA ;段初始化
MOV DS, AX
MOV AX, SEG STACK1
MOV SS, AX
MOV AL, 80H ;初始化与LED相连的8255A ,A口方式零输出,B口方式零输出
OUT 83H,AL ; 将工作方式控制字送控制寄存器
MOV AL,82H ;初始化与键盘相连的8255A,A口方式0输出,B口方
OUT 87H,AL ;式0输入,将工作方式控制字送控制寄存器 BEGAIN : MOV DI,OFFSET BUF ;指向缓冲区的首地址
MOV CL, 01H ;指向左端LED显示器
MOV AL, 00H ;将00送位码寄存器,关显示
OUT 81H, AL
DISP: MOV AL, [DI] ;取要显示的字符
LEA BX, TABLE2;段码表首地址送BX
XLAT :将要现实的字符转换成对应的段码存入AL
OUT 80H, AL ;将段码送至端口A
MOV AL, CL ;将位码送至端口B
OUT 81H, AL
PUSH CX ;保存位码至堆栈
MOV CX, 30H;延迟一段时间
DELAY: LOOP DELAY
POP CX :从堆栈段移出位码
ROL CL, 1
CMP CL,40H :显示到最左端了吗,
JZ LOOA ;是,转去扫描键盘
INC DI ;否,指向下一个要显示的字符
JMP DISP
LOOA: MOV AL,00H
OUT 84H,AL ;使PA3=PA2=PA1=PA0=0
18
IN AL,85H ;读B口,判断PB3~0是否有一位为低电平 AND AL,0FH ;只考虑低四位的值
CMP AL,0FH ;有键闭合吗,
JZ LOOA ;无键被按下,转LOOA等待
CALL LD20ms;有键被按下,PB3~PB0有一位为低,调延
;时20 ms子程序,消除抖动引起的误动作。 IN AL,85H ;再次读入B口值。
AND AL,0FH ;有键按下,在检查是否真的按下。 CMP AL,0FH ;如果延时后PB3~PB0中低电平不再存在, JZ LOOA ;说明是由干扰或抖动引起的,则转LOOA继续扫
;描,延时后仍有某位为0,说明有键被按下,查键值。
START:MOV BL,4 ;行数送BL(共四行)
MOV BH,4 ;列数送BH(共四列)
MOV AL,0FEH ;准备扫描0行,使D0位=0。 MOV CL,0FH ;键盘屏蔽码送CL(只要低四位) MOV CH,00H ;CH中存放起始键号
LOP1: OUT 84H,AL ;A口输出,扫描一行(D0=0) ROL AL,1 ;行值左移一位,修改扫描码,准
;备扫描下一行。
MOV AH,AL ;暂时保存行线值
IN AL,85H ;读B口,以便确定所按键的列值 AND AL,CL ;比较是低四位,只保留低四位 CMP AL,CL ;检查该列线是否为0,
JNZ LOP2 ;有列线为0,转LOP2,找列值 ADD CH,BH ;无键按下,修改键号,检查下一行 MOV AL,AH ;恢复扫描码
DEC BL ;行数减1
JNZ LOP1 ;行未扫描完转LOP1,扫描下一行 MOV CX,16 ;16个键,要找最多16次
LEA BX,TABLE1 ;取键码表值
MOV DI,0
LOP2 : CMP AX,[DI][BX] ;查找该键值
JZ LOP3 ;找到该值,到键处理子程序 INC DI
INC DI
LOOP LOP2
LOP3:MOV AX,DI ;AL中的内容就为该键值
MOV BL, 2 ;查表找键值对应的字形显示码 DIV BL
LEA BX,TABLE2
MOV AL, AL[BX]
MOV BUF+6, AL
19
MOV DL, BUF+1 ;将BuF,1~BuF,6单元的内容上移到BUF~BUF+5
MOV BUF,DL ;单元
MOV DL, BUF+2
MOV BUF+1,DL
MOV DL, BUF+3
MOV BUF+2,DL
MOV DL, BUF+4
DL MOV BUF+3,
MOV DL, BUF+5
MOV BUF+4,DL
MOV DL, BUF+6
MOV BUF+5,DL
CMP BUF+5,71H
JE END ; 若为‘F’,则返回DOS界面 CMP BEGAIN ; 若不为‘F’,则显示在数码管上,并扫描下一个键
END: MOV AX, 4C00H ;,并识别该键值,判断并显示 INT 21H
CSDE ENDS ;结束程序
END LOP3
20