微机设计报告LED数码管倒计时系统Word格式文档下载.docx
《微机设计报告LED数码管倒计时系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机设计报告LED数码管倒计时系统Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
2)给出系统设计方案,画出硬件连线图,并说明工作原理;
3)画出程序框图并编写程序。
2总体设计方案与说明
2.1系统总体设计方案
本设计是基于Windows环境下的Proteus7.8软件,在其中进行硬件电路的的设计,汇编语言源程序的编写以及以上两部分工作完成后的软件系统的调试。
本设计的处理控制系统由Intel
8086微处理器在最小模式下组成的单处理器系统构成,用来进行对外围硬件电路进行信息采集、数据处理和控制。
2.2系统结构框图如图2-2结构图
2-2结构图
3系统硬件部分设计
3.1Intel
8086
微处理器的简介
Intel
8086是Intel公司于1978年推出的16位微处理器。
它采用HMOS工艺制造,片内有2.9万个晶体管,单一电源+5V供电,时钟频率4.77-10MHz,片内数据总线、寄存器和外部数据总线都为16位,最大可寻址的物理地址为1M。
要掌握一个CPU的工作性能及使用方法,首先应该了解它的编程结构。
在8086CPU的编程结构上,从功能上,分为两部分,即总线接口部件(BIU)和执行部件(EU)。
8086的逻辑地址为20位,物理地址为16位,,对于编程员来说,只需要考虑逻辑地址即可。
8086为40只引脚双列直插式封装。
Intel
可以工作在最大和最小两种模式下,最小模式和最大模式的确定是通过一条MN/MN所接的逻辑电平是“1”还是“0”来完成。
在最小方式下,微处理器被用来构成一个小规模的单处理机系统,微处理器本身必须提供全部的的控制信号给外围电路。
微处理器被用来构成一个较大规模的多机系统。
在最小模式下的信号如下:
(1)AD15~AD0(address
data
bus)地址/数据复用引脚(双向工作)
分时复用的地址/数据线。
(2)A19/S6~A16/S3(Address/Status)输出,是分时复用的地址/状态线。
用作地址线时,A19~A16与A15~A0一起构成访问存储器的20位物理地址。
(3)BHE/
S7
(Bus
High
Enabale/Status)总线高字节有效信号。
三态输出,低电平有效,用来表示当前高8
位数据线上的数据有效。
(4)NMI(Non
Maskable
Interrupt
Request)不可屏蔽中断请求信号。
由外部输入,上升沿触发,不受中断允许标志的限制。
(5)INTR(Interrupt
Request)可屏蔽中断请求信号。
由外部输入,电平触发,高电平有效。
(6)RD(Read)读信号。
三态输出,低电平有效,表示当前CPU正在读存储器或IO端口。
(7)
CLK(Clock)主时钟引脚(输入)。
由8284时钟发生器输入。
8286CPU可使用的最高时钟频率随芯片型号不同而异,8086为5MHz,8086-1为10MHz,8086-2
为8MHz。
(8)
RESET(reset)复位信号。
由外部输入,高电平有效。
(9)
READY(ready)准备就绪信号。
由外部输入,高电平有效,表示CPU
访问的存储器或IO端口已准备好传送数据。
(10)
TEST
测试信号。
由外部输入,低电平有效。
CPU
执行WAIT
指令时,每隔5
个时钟周期对TEST
进行一次测试,若测试TEST
无效,则CPU
处于踏步等待状态,直到TEST有效,CPU才继续执行下一条指令。
(11)
MN/MX
工作模式选择信号。
由外部输入,MN/MX
为高电平时,CPU
工作在最小模式;
MN/MX为低电平时,CPU工作在最大模式。
(12)
GND/VCC电源地和电源。
8086CPU只需要单一的+5V电源,由VCC引脚输入。
(13)
INTA
中断响应信号。
向外部输出,低电平有效。
在中断响应周期,该信号表示CPU响应外部发来的INTR信号,用作读中断类型码的选通信号。
(14)
ALE
地址锁存允许信号。
向外部输出,高电平有效。
在最小模式系统中用作地址锁存器的片选信号。
(15)
DEN数据允许信号,三态输出,低电平有效。
(16)
DT/R
数据发送/接收控制信号。
(17)
M/IO
存储器/IO
端口访问信号。
(18)
WR写信号。
三态输出,低电平有效,表示当前CPU正在写存储器或IO端口。
(19)
HOLD总线请求信号。
由外部输入、高电平有效。
表示有其他共享总线的处理器/控制器向CPU请求使用总线。
(20)
HLDA
总线请求响应信号。
一旦测试到有HOLD
请求,就在当前总线周期结束后,使HLDA有效,表示响应这一总线请求,并立即让出总线使用权。
在不要求使用总线的情况下,CPU中指令执行部件可继续工作。
HOLD变为无效后,CPU也将HLDA置成无效,并收回对总线的使用权,继续操作。
3.2
8255A芯片的工作原理
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。
具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。
其各口功能可由软件选择,使用灵活,通用性强。
8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。
同时必须具有与外设连接的接口A、B、C口。
由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:
与CPU连接部分、与外设连接部分、控制部分。
1)与CPU连接部分
根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。
由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0~A1。
此外CPU要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。
各信号的引脚编号如下:
(1)数据总线DB:
编号为D0~D7,用于8255与CPU传送8位数据。
(2)地址总线AB:
编号为A0~A1,用于选择A、B、C口与控制寄存器。
(3)控制总线CB:
片选信号、复位信号RST、写信号、读信号。
当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。
2)与外设接口部分
根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控制24路开关。
各通道的引脚编号如下:
(1)A口:
编号为PA0~PA7,用于8255向外设输入输出8位并行数据。
(2)B口:
编号为PB0~PB7,用于8255向外设输入输出8位并行数据。
(3)C口:
编号为PC0~PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。
3)控制器部分
8255将3个通道分为两组,即PA0~PA7与PC4~PC7组成A组,PB0~PB7与PC0~PC3组成B组。
如图7.5所示,相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下:
(1)A组控制器:
控制A口与上C口的输入与输出。
(2)B组控制器:
控制B口与下C口的输入与输出。
引脚功能:
RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;
/CS=1时,8255无法与CPU做数据传输.
RD:
读信号线,当这个输入引脚为低跳变沿时,即/RD产生一个低脉冲且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低跳变沿时,即/WR产生一个低脉冲且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。
方式0————基本输入输出方式;
方式1————选通输入/出方式;
方式2————双向选通输入/输出方式;
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
工作于三种方式中的任何一种;
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
不能工作于方式二;
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
'
不能工作于方式一或二。
A1,A0:
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。
当A1=0,A0=0时,PA口被选择;
当A1=0,A0=1时,PB口被选择;
当A1=1,A0=0时,PC口被选择;
当A1=1,A0=1时,控制寄存器被选择。
3.3多位数码管的工作原理
led数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。
数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。
这些段分别由字母a,b,c,d,e,f,g,dp来表示。
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。
如:
显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。
LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。
小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。
发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。
常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。
静态显示
静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×
8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示
LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"
a,b,c,d,e,f,g,dp"
的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
3.4
74LS273芯片简介
74LS273是8位数据锁存器。
主要用于数码管、按键等等的控制,其真值表如下:
表174LS273真值表
DN
LE
OE
ON
H
L
×
Q0
Z
芯片管脚图如下:
图174LS273引脚图
U2的功能是实现AD[0..7]的锁存,由于8086
CPU的总线是地址/数据复用总线,因此需要在传送地址信号的时候,将数据信号锁存起来,即将数据信号锁存在74273触发器中,待地址传送完毕后再按需要将数据信号输出。
3.5系统电路图设计
系统总电路图如下图所示:
图2系统总电路图
8086最小系统原理图如下所示:
图38086最小系统原理图
8086最小系统由Intel
8086微处理器、74273
TTL带公共时钟复位八D触发器、以及74154
TTL4线—16线译码器等组成。
8086有20位地址线,其中高4位A19-A16与状态线S6-S3分时复用,低16位AD15-AD0与数据线分时复用。
在总线周期的T1时将地址送出后,就必须用锁存器将它们锁存起来,以便在T2及以后搞死位地址线改为状态输出,低16位地址线该做数据线使用。
另外,表明八位数据线是否起作用的数据总线允许信号是与状态线S7分时复用的,故也需要锁存。
21条线需采用3片8位地址锁存器,这里采用74273。
与外围硬件电路的连接的I/O部分由4线-16线译码器74154组成,用来分配I/O硬件地址。
4系统软件部分设计
4.1定义8255的工作方式
MOVDX,KZ_8255
MOVAL,10001011B
OUTDX,AL
4.2定义8253的工作方式以及时间分频
MOVDX,KZ_8253
MOVAL,00110111B
MOVDX,DSQ0_8253
MOVAL,00H
MOVAL,10H
4.3中断服务程序
DECMIAO
CMPMIAO,-01D
JZTINGZHI
JZHONGDUAN:
JMPDISPLAY
5系统仿真过程与结果
5.1
系统调试
将编写好的汇编语言源程序在Tangdu软件中进行汇编、连接生成可执行文件,并将其载入到8086芯片进行仿真。
倒计时数码管显示8如图5-1倒计时8
图5-1倒计时8
倒计时数码管显示4如图5-2倒计时4
图5-2倒计时4
倒计时结束,数码管显示0,如图5-3倒计时0
图5-3倒计时0
通过以上的调试过程和仿真调试结果可知,所设计的电路和所编写的程序满足实验要求。
6结论
本次课程设计是要设计一个LED数码管倒计时系统,主要功能如上已有细述。
在本次对LED数码管倒计时系统的设计过程中以此来加深对微机接口技术的理解,提高了自己的动手能力。
首先着手对硬件电路的设计,本次课程设计主要采用了8255A接口电路。
由于对各个芯片不熟悉,通过课本了解到了它们的引脚及功能、工作方式、内部结构和控制字。
然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流程,先画出了流程图,然后对代码进行编写,在编写过程中遇到了很多问题,对芯片的不了解也导致编程的很多的问题。
最后经过一段时间的研究,查阅了很多资料并和同学讨论后终于一一解决。
经过为期一个星期的课程设计,我获益颇多。
将微机接口技术中的理论与实践相结合起来,对芯片的功能也有了进一步认识理解。
最后希望通过以后的学习,不断提升自身各方面的能力,如对专业知识的掌握程度,动手实践能力等。
经过此次的课程设计,我们学会了合作。
我们要形成自己的设计思想,以便在今后的专业课形成自己的风格。
同时在多多锻炼自己的动手能力,以便在以后的工作能独立完成一些设计项目。
附件:
源程序及其说明
AK_8255EQU11100000B;
定义A口和控制字端口,高四位决定片选CS0
KZ_8255EQU11100110B
KZ_8253EQU11110110B;
定义定时器8253控制字端口,定时器0初值
DSQ0_8253EQU11110000B
DSEGSEGMENT;
自定义数据段
PIANYIDW0000H
JIZHIDW0000H
MIAODB09D
TABLEDUDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG;
定义各段分别用哪个寄存器寻址
START:
MOVAX,DSEG;
初始化
MOVDS,AX
CLI;
关中断
;
设置1'
时间
MOVDX,KZ_8255;
8255写控制字
MOVAL,10001011B
OUTDX,AL;
8255,A口为方式0输出,B、C口暂时不使用为输入
MOVDX,KZ_8253
MOVAL,00110111B;
定时器0,16位读写,方式3,十进制
OUTDX,AL
MOVDX,DSQ0_8253;
分频1000倍
MOVAL,00H
MOVAL,10H
MOVPIANYI,OFFSETZHONGDUAN
MOVJIZHI,SEGZHONGDUAN
MOVAX,00H;
初始化中断服务函数
MOVES,AX
MOVBX,08H;
中断号02H*4送到BX,NMI非可屏蔽中断号02
MOVAX,PIANYI;
中断服务偏移值给AX
MOVES:
[BX],AX;
装入偏移地址
MOVAX,JIZHI
[BX+2],AX;
装入段基址
MOVDX,AK_8255;
数码管显示初始化
LEABX,TABLEDU
应将TABLE先送至BX寄存器中,然后将待查字节与其在表格中距表首地址位移量送AL,执行XLAT将使待查内容送到累加器
DISPLAY:
MOVAL,MIAO;
把待查表格的一个字节内容送到AL累加器中
XLAT
MOVCX,30D;
经过测试,此处调用函数,无法正常显示,所以直接延时
W10MS:
LOOPW10MS;
数码管每次赋值的延时
JMPDISPLAY;
程序在此进行死循环
TINGZHI:
MOVMIAO,00D
JMPJZHONGDUAN;
返回中断函数
ZHONGDUANPROC;
中断服务函数,经过测试,内部使用堆栈进行现场保护和还原现场,会出现无法正常使用的问题
DECMIAO
CMPMIAO,-01D
JZTINGZHI
JZHONGDUAN:
JMPDISPLAY;
中断返回,经过测试使用IRET会出现无法返回的问题,用跳转指令JMP代替,可正常使用,虽然不规范
ZHONGDUANENDP
CSEGENDS
ENDSTART