8086交通灯微机课程设计.docx
- 文档编号:7140581
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:20
- 大小:468.62KB
8086交通灯微机课程设计.docx
《8086交通灯微机课程设计.docx》由会员分享,可在线阅读,更多相关《8086交通灯微机课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
8086交通灯微机课程设计
成绩
课程设计报告
题目交通灯的设计
课程名称微机原理及应用
院部名称机电工程学院
专业电气工程及其自动化
班级XXXXXXXXXXX
学生姓名XXXXX
学号XXXXXXXXXX
课程设计地点工科楼C304
课程设计学时20
指导教师XXXXXXXXX
金陵科技学院教务处制
摘要
运用了8086CPU芯片以及8255A芯片、8253芯片和数码管等辅助硬件电路,进行了数码管倒计时的设计。
进行了软件设计并编写了源程序。
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
本系统采用8086为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展强。
本设计就是采用8086最小方式下在Protues7.8SP2软件下模拟十字路口交通灯的各种状态显示以及倒计时显示时间。
本设计系统由8255AI/O口扩展系统、交通灯状态显示系统、LED数码显示系统等几大部分组成。
系统除基本的交通灯功能外,还具有倒计时、紧急情况处理等功能,较好的模拟实现了十字路口可能出现的状况。
本系统采用8086汇编语言编写,主要编写了主程序,LED数码管显示程序等。
总体上完成了软件的编写。
关键词:
带倒计时功能的交通灯;8255A;8086微机系统
一、概述
1.1课程设计的目的··············································3
1.2课程设计的要求············································3
二、总体设计方案及说明
2.1系统总体设计方案··········································4
2.2系统工作框图··············································4
三、系统硬件电路设计
3.1Intel8086微处理器的简介···································5
3.28255A芯片的工作原理··············································7
3.3多位数码管的工作原理··················································8
3.474LS273芯片简介··········································10
3.5系统电路图设计········································11
3.5.1.系统总电路图设计································11
3.5.2.8086最小系统原理图设计····································12
四、系统软件部分设计
4.1系统流程图················································14
4.2系统软件源程序············································15
4.2.3汇编源程序及说明········································16
五、总结
5.1系统调试·······································18
5.2心得与体会·················································20
六、参考文献······················································22
一、概述
1.课程设计应达到的目的
通过本课程设计,使学生掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法。
使学生进一步掌握微型计算机应用系统的硬、软件开发方法,输入/输出(I/O)接口技术,应用程序设计技术,并能结合专业设计简单实用的微型计算机应用系统。
针对课堂重点讲授内容使学生加深对微型计算机硬件原理的理解及提高汇编语言程序设计的能力,为以后的毕业设计搭建了微机系统应用平台,提高学生的开发创新能力。
2.课题训练内容
设计一个基于8086/8088微型计算机的一个交通信号灯控制系统,要求能完成基本的交通灯控制,如红、绿、黄三种灯的定时交替点亮与熄灭;要求学生了解8086/8088微型计算机控制系统的基本设计方法与思路,能独立查阅资料并汇总,具备一定的控制系统设计能力,掌握绘制电路原理图的能力,能编写一定难度的汇编程序并调试。
3.设计一个模拟交通信号灯控制系统,要求:
1)系统功能:
十字路口信号灯东西向南北向各2组,每组用红黄绿3只LED模拟交通信号灯。
开始:
南北红灯、东西绿灯亮,之后南北红灯、东西黄灯亮,然后南北绿灯、东西红灯亮,然后南北黄灯、东西红灯亮,返回开始。
2)给出系统设计方案,画出硬件连线图,并说明工作原理;
3)画出程序框图并编写程序。
二、总体设计方案与说明
2.1系统总体设计方案
本设计是基于Windows环境下的Proteus7.8软件,在其中进行硬件电路的的设计,汇编语言源程序的编写以及以上两部分工作完成后的软件系统的调试。
本设计的处理控制系统由Intel8086微处理器在最小模式下组成的单处理器系统构成,用来进行对外围硬件电路进行信息采集、数据处理和控制。
2.2系统工作框图
本课程设计使用8086CPU控制8255A和74273锁存器分别控制LED数码管和LED交通灯。
第一片8255A被选择后,从数据总线上写入数据到输出端,把LED数码管的待显示的字符对应是16进制数,即要7段数码管的对应位的LED置高电平(选择的是共阴极数码管)就可以显示对应的段码。
第二片8255A被选择后,从数据总线上写入的数据是指定哪一位数码管显示字符,低电平有效。
同时74273锁存器也要按程序设定点亮LED交通灯。
三、系统硬件部分设计
3.1Intel8086微处理器的简介
Intel8086是Intel公司于1978年推出的16位微处理器。
它采用HMOS工艺制造,片内有2.9万个晶体管,单一电源+5V供电,时钟频率4.77-10MHz,片内数据总线、寄存器和外部数据总线都为16位,最大可寻址的物理地址为1M。
要掌握一个CPU的工作性能及使用方法,首先应该了解它的编程结构。
在8086CPU的编程结构上,从功能上,分为两部分,即总线接口部件(BIU)和执行部件(EU)。
8086的逻辑地址为20位,物理地址为16位,,对于编程员来说,只需要考虑逻辑地址即可。
8086为40只引脚双列直插式封装。
Intel8086可以工作在最大和最小两种模式下,最小模式和最大模式的确定是通过一条MN/MN所接的逻辑电平是“1”还是“0”来完成。
在最小方式下,微处理器被用来构成一个小规模的单处理机系统,微处理器本身必须提供全部的的控制信号给外围电路。
微处理器被用来构成一个较大规模的多机系统。
在最小模式下的信号如下:
(1)AD15~AD0(addressdatabus)地址/数据复用引脚(双向工作)分时复用的地址/数据线。
(2)A19/S6~A16/S3(Address/Status)输出,是分时复用的地址/状态线。
用作地址线时,A19~A16与A15~A0一起构成访问存储器的20位物理地址。
(3)BHE/S7(BusHighEnabale/Status)总线高字节有效信号。
三态输出,低电平有效,用来表示当前高8位数据线上的数据有效。
(4)NMI(NonMaskableInterruptRequest)不可屏蔽中断请求信号。
由外部输入,上升沿触发,不受中断允许标志的限制。
(5)INTR(InterruptRequest)可屏蔽中断请求信号。
由外部输入,电平触发,高电平有效。
(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总线请求响应信号。
向外部输出,高电平有效。
CPU一旦测试到有HOLD请求,就在当前总线周期结束后,使HLDA有效,表示响应这一总线请求,并立即让出总线使用权。
在不要求使用总线的情况下,CPU中指令执行部件可继续工作。
HOLD变为无效后,CPU也将HLDA置成无效,并收回对总线的使用权,继续操作。
3.28255A芯片的工作原理
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数码管(LEDSegmentDisplays)由多个发光二极管封装在一起组成“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.474LS273芯片简介
74LS273是8位数据锁存器。
主要用于数码管、按键等等的控制
其真值表如下:
表274LS273真值表
DN
LE
OE
ON
H
H
L
H
L
H
L
L
×
L
L
Q0
×
×
H
Z
芯片管脚图如下:
图674LS273引脚图
U2的功能是实现AD[0..7]的锁存,由于8086CPU的总线是地址/数据复用总线,因此需要在传送地址信号的时候,将数据信号锁存起来,即将数据信号锁存在74273触发器中,待地址传送完毕后再按需要将数据信号输出。
3.5系统电路图设计
3.5.1系统总电路图如下图所示:
3.5.2.8086最小系统原理图如下所示:
8086最小系统由Intel8086微处理器、74273TTL带公共时钟复位八D触发器、以及74154TTL4线—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硬件地址。
3.5.2控制交通灯LED的外围电路:
如上图,12个LED灯分别接到两个锁存器74273的输出端,其中锁存引脚接一个三态门电路,对其进行选择和写入数据到输出端点亮LED。
对于本电路的交通灯,高电平可以点亮LED灯,写入不同的数据就可以控制不同颜色的LED发光,达到控制目的。
_3.5.3控制数码管显示的外围电路:
对于倒计时的数码管显示的外围电路,采用两片8255A来驱动LED数码管显示时间。
8255A是专为INTEL公司的微处理器配套的接口芯片,8255A为可编程芯片,可用程序设定改变其工作状态,CPU通过它直接与外设相连接。
8255A各端口的正常工作需要事先写入控制寄存器的方式控制字即8255A的初始化编程。
本课程设计的8255A的工作方式如下:
初始化编程:
8255的工作方式如下
A方式0、输出,B方式1、输出,
控制字为80H即10000000B,初始化程序:
MOVAL,80H
OUTPART,AL
其中,PART为8255A方式控制寄存器的地址。
上图中—CS选端接端口—IO2、—IO3用于选择该8255A,A0、A1是端口寻址线,用于指示A,B,C,控制寄存器。
四、系统软件部分设计
.MODELSMALL
.8086
.STACK
.CODE
.STARTUP
START:
MOVDX,0406H
MOVAL,80H
OUTDX,AL
MOVDX,0606H
MOVAL,80H
OUTDX,AL
MOVAX,ALL_LIGHT;数据的地址0
MOVDX,0200H
MOVDX,AX
AGAIN:
MOVSI,OFFSETSITUATION;取得定义数据段的偏移地址EA
MOVDX,0200H;273地址
NEXT:
MOVAX,[SI]
OUTDX,AX;数据输出到交通LED灯上
PUSHSI
LEASI,LED
LEADI,TABLEONE
;DUAN0:
MOVAX,32;赋初值32
MOVCX,AX
PUSHCX
AB:
CALLDISPLAY
POPCX
DECCX
PUSHCX
MOVAX,CX
CMPAX,2
JGEAB
POPCX
POPSI
ADDSI,2;下一状态1
MOVDX,0200H
MOVAX,[SI]
OUTDX,AX
PUSHSI
LEASI,LED
LEADI,TABLETWO
;DUAN1:
MOVAX,2
MOVCX,AX
PUSHCX
AC:
CALLDISPLAY
POPCX
DECCX
PUSHCX
MOVAX,CX
CMPAX,0
JGEAC
POPCX
POPSI
ADDSI,2;下一状态2
MOVDX,0200H
MOVAX,[SI]
OUTDX,AX
PUSHSI
LEASI,LED
LEADI,TABLETHREE
;DUAN2:
MOVAX,30
MOVCX,AX
PUSHCX
AD:
CALLDISPLAY
POPCX
DECCX
PUSHCX
MOVAX,CX
CMPAX,0
JGEAD
POPCX
POPSI
ADDSI,2;下一状态2
MOVDX,0200H
MOVAX,[SI]
OUTDX,AX
PUSHSI
LEASI,LED
LEADI,TABLEFOUR
;DUAN3:
MOVAX,2
MOVCX,AX
PUSHCX
AE:
CALLDISPLAY
POPCX
DECCX
PUSHCX
MOVAX,CX
CMPAX,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 交通灯 微机 课程设计