《交通灯微机课程设计.doc》由会员分享,可在线阅读,更多相关《交通灯微机课程设计.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、成绩 课程设计报告题 目 交通灯的设计 课 程 名 称 微机原理及应用 院 部 名 称 机电工程学院 专 业 电气工程及其自动化 班 级 XXXXXXXXXXX 学 生 姓 名 XXXXX 学 号 XXXXXXXXXX 课程设计地点 工科楼 C304 课程设计学时 20 指 导 教 师 XXXXXXXXX 金陵科技学院教务处制摘 要运用了8086 CPU芯片以及8255A芯片、8253芯片和数码管等辅助硬件电路,进行了数码管倒计时的设计。进行了软件设计并编写了源程序。交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,
2、对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用8086为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展强。本设计就是采用8086最小方式下在Protues7.8SP2软件下模拟十字路口交通灯的各种状态显示以及倒计时显示时间。本设计系统由8255AI/O口扩展系统、交通灯状态显示系统、LED数码显示系统等几大部分组成。系统除基本的交通灯功能外,还具有倒计时、紧急情况处理等功能,较好的模拟实现了十字路口可能出现的状况。本系统采用8086汇编语言编写,主要编写了主程序,LED数码管显示程序等。总体上完成了软件的编写。 关键词:带倒计时功能的交通灯;8255A;808
3、6微机系统目 录一、概述1.1 课程设计的目的31.2课程设计的要求3二、总体设计方案及说明 2.1 系统总体设计方案4 2.2系统工作框图4三、系统硬件电路设计3.1 Intel 8086 微处理器的简介53.2 8255A芯片的工作原理 73.3多位数码管的工作原理83.4 74LS273芯片简介 103.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
4、.课程设计应达到的目的通过本课程设计,使学生掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法。使学生进一步掌握微型计算机应用系统的硬、软件开发方法,输入/输出(I/O)接口技术,应用程序设计技术,并能结合专业设计简单实用的微型计算机应用系统。针对课堂重点讲授内容使学生加深对微型计算机硬件原理的理解及提高汇编语言程序设计的能力,为以后的毕业设计搭建了微机系统应用平台,提高学生的开发创新能力。2.课题训练内容设计一个基于8086/8088微型计算机的一个交通信号灯控制系统,要求能完成基本的交通灯控制,如红、绿、黄三种灯的定时交替点亮与熄灭;要求学生了解8086/8088微型计算机控制系统
5、的基本设计方法与思路,能独立查阅资料并汇总,具备一定的控制系统设计能力,掌握绘制电路原理图的能力,能编写一定难度的汇编程序并调试。3.设计一个模拟交通信号灯控制系统,要求:1)系统功能:十字路口信号灯东西向南北向各2组,每组用红黄绿3只LED模拟交通信号灯。开始:南北红灯、东西绿灯亮,之后南北红灯、东西黄灯亮,然后南北绿灯、东西红灯亮,然后南北黄灯、东西红灯亮,返回开始。2)给出系统设计方案,画出硬件连线图,并说明工作原理;3)画出程序框图并编写程序。二、总体设计方案与说明2.1 系统总体设计方案本设计是基于Windows环境下的Proteus7.8软件,在其中进行硬件电路的的设计,汇编语言源
6、程序的编写以及以上两部分工作完成后的软件系统的调试。本设计的处理控制系统由Intel 8086微处理器在最小模式下组成的单处理器系统构成,用来进行对外围硬件电路进行信息采集、数据处理和控制。2.2系统工作框图本课程设计使用8086CPU控制8255A和74273锁存器分别控制LED数码管和LED交通灯。第一片8255A被选择后,从数据总线上写入数据到输出端,把LED数码管的待显示的字符对应是16进制数,即要7段数码管的对应位的LED置高电平(选择的是共阴极数码管)就可以显示对应的段码。第二片8255A被选择后,从数据总线上写入的数据是指定哪一位数码管显示字符,低电平有效。同时74273锁存器也
7、要按程序设定点亮LED交通灯。三、系统硬件部分设计3.1 Intel 8086 微处理器的简介Intel 8086是Intel公司于1978年推出的16位微处理器。它采用HMOS工艺制造,片内有2.9万个晶体管,单一电源+5V供电,时钟频率4.77-10MHz,片内数据总线、寄存器和外部数据总线都为16位,最大可寻址的物理地址为1M。要掌握一个CPU的工作性能及使用方法,首先应该了解它的编程结构。在8086CPU的编程结构上,从功能上,分为两部分,即总线接口部件(BIU)和执行部件(EU)。8086的逻辑地址为20位,物理地址为16位,对于编程员来说,只需要考虑逻辑地址即可。8086为40只引
8、脚双列直插式封装。Intel 8086 可以工作在最大和最小两种模式下,最小模式和最大模式的确定是通过一条MN/MN所接的逻辑电平是“1”还是“0”来完成。在最小方式下,微处理器被用来构成一个小规模的单处理机系统,微处理器本身必须提供全部的的控制信号给外围电路。微处理器被用来构成一个较大规模的多机系统。在最小模式下的信号如下:(1)AD15AD0(address data bus)地址/数据复用引脚(双向工作) 分时复用的地址/数据线。(2)A19/S6A16/S3(Address/Status)输出,是分时复用的地址/状态线。用作地址线时,A19A16与A15A0一起构成访问存储器的20位物
9、理地址。(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可使用的
10、最高时钟频率随芯片型号不同而异,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
11、工作在最小模式;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写信号。三态输出,低电平有效,表示当前C
12、PU正在写存储器或IO端口。(19) HOLD总线请求信号。由外部输入、高电平有效。表示有其他共享总线的处理器/控制器向CPU请求使用总线。(20) HLDA 总线请求响应信号。向外部输出,高电平有效。CPU 一旦测试到有HOLD 请求,就在当前总线周期结束后,使HLDA有效,表示响应这一总线请求,并立即让出总线使用权。在不要求使用总线的情况下,CPU中指令执行部件可继续工作。HOLD变为无效后,CPU也将HLDA置成无效,并收回对总线的使用权,继续操作。3.2 8255A芯片的工作原理8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可
13、编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。1)与CPU连接部分根据定义,8255能并行传送8位数据,所以其数据线为8根D0D7。由于8255具有3个通道A、B、C,所以只要两根地址线就能寻址A、B、C口及控制寄存器,故地址线为两根A0A1。此外CPU
14、要对8255进行读、写与片选操作,所以控制线为片选、复位、读、写信号。各信号的引脚编号如下:(1)数据总线DB:编号为D0D7,用于8255与CPU传送8位数据。(2)地址总线AB:编号为A0A1,用于选择A、B、C口与控制寄存器。(3)控制总线CB:片选信号、复位信号RST、写信号、读信号。当CPU要对8255进行读、写操作时,必须先向8255发片选信号选中8255芯片,然后发读信号或写信号对8255进行读或写数据的操作。2)与外设接口部分根据定义,8255有3个通道A、B、C与外设连接,每个通道又有8根线与外设连接,所以8255可以用24根线与外设连接,若进行开关量控制,则8255可同时控
15、制24路开关。各通道的引脚编号如下:(1)A口:编号为PA0PA7,用于8255向外设输入输出8位并行数据。(2)B口:编号为PB0PB7,用于8255向外设输入输出8位并行数据。(3)C口:编号为PC0PC7,用于8255向外设输入输出8位并行数据,当8255工作于应答I/O方式时,C口用于应答信号的通信。3)控制器部分8255将3个通道分为两组,即PA0PA7与PC4PC7组成A组,PB0PB7与PC0PC3组成B组。如图7.5所示,相应的控制器也分为A组控制器与B组控制器,各组控制器的作用如下:(1)A组控制器:控制A口与上C口的输入与输出。(2)B组控制器:控制B口与下C口的输入与输出
16、。引脚功能: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。D0D7:三态双向数据总
17、线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。8255具有3个相互独立的输入/输出通道端口,用+5V单电源供电,能在以下三种方式下工作。方式0基本输入输出方式;方式1选通输入/出方式;方式2双向选通输入/输出方式;PA0PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器, 一个8位的数据输入锁存器。 工作于三种方式中的任何一种;PB0PB7:端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器。 不能工作于方式二;PC0PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器, 一
18、个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数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的
19、各个笔划,公共电极。数码管实际上是由七个发光管组成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。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接
20、到一起连接到电源负极的称为共阴数码管。常用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个数码管静态显示则需要58=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口
21、才32个,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。动态显示LED数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人
22、的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。3.4 74LS273芯片简介74LS273是8位数据锁存器。主要用于数码管、按键等等的控制 其真值表如下: 表2 74LS273真值表DNLEOEONHHLHLHLLLLQ0HZ 芯片管脚图如下:图6 74LS273引脚图U2的功能是实现AD0.7的锁存,由于8086 CPU的总线是地址/数据复用总线,因此需要在传送地址信号的时候,将数据信号锁存起来,即将数据信号锁存在7427
23、3触发器中,待地址传送完毕后再按需要将数据信号输出。 3.5系统电路图设计3.5.1系统总电路图如下图所示:3.5.2.8086最小系统原理图如下所示:8086最小系统由Intel 8086微处理器、74273 TTL带公共时钟复位八D触发器、以及74154 TTL 4线16线译码器等组成。8086有20位地址线,其中高4位A19-A16与状态线S6-S3分时复用,低16位AD15-AD0与数据线分时复用。在总线周期的T1时将地址送出后,就必须用锁存器将它们锁存起来,以便在T2及以后搞死位地址线改为状态输出,低16位地址线该做数据线使用。另外,表明八位数据线是否起作用的数据总线允许信号是与状态
24、线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
25、公司的微处理器配套的接口芯片,8255A为可编程芯片,可用程序设定改变其工作状态,CPU通过它直接与外设相连接。8255A各端口的正常工作需要事先写入控制寄存器的方式控制字即8255A的初始化编程。本课程设计的8255A的工作方式如下:初始化编程:8255的工作方式如下A方式0、输出,B方式1、输出,控制字为80H即1000 0000B,初始化程序:MOV AL,80HOUT PART,AL其中,PART为8255A方式控制寄存器的地址。上图中CS()选端接端口IO2()、IO3()用于选择该8255A,A0、A1是端口寻址线,用于指示,控制寄存器。四、系统软件部分设计.MODEL SMALL
26、.8086.STACK.CODE.STARTUPSTART:MOV DX,0406HMOV AL,80HOUT DX,ALMOV DX,0606HMOV AL,80HOUT DX,ALMOV AX,ALL_LIGHT;数据的地址0MOV DX,0200HMOV DX,AXAGAIN: MOV SI,OFFSET SITUATION;取得定义数据段的偏移地址EAMOV DX,0200H;273地址NEXT: MOV AX,SIOUT DX,AX;数据输出到交通LED灯上PUSH SILEA SI,LEDLEA DI,TABLEONE;DUAN0:MOV AX,32;赋初值32MOV CX,AXP
27、USH CXAB: CALL DISPLAYPOP CXDEC CXPUSH CXMOV AX,CX CMP AX,2 JGE ABPOP CXPOP SIADD SI,2;下一状态1MOV DX,0200HMOV AX,SIOUT DX,AXPUSH SILEA SI,LEDLEA DI,TABLETWO;DUAN1:MOV AX,2MOV CX,AXPUSH CXAC:CALL DISPLAYPOP CXDEC CXPUSH CXMOV AX,CXCMP AX,0JGE ACPOP CXPOP SIADD SI,2;下一状态2MOV DX,0200HMOV AX,SIOUT DX,AXPU
28、SH SILEA SI,LEDLEA DI,TABLETHREE;DUAN2:MOV AX,30MOV CX,AXPUSH CXAD:CALL DISPLAYPOP CXDEC CXPUSH CXMOV AX,CXCMP AX,0JGE ADPOP CXPOP SIADD SI,2;下一状态2MOV DX,0200HMOV AX,SIOUT DX,AXPUSH SILEA SI,LEDLEA DI,TABLEFOUR;DUAN3: MOV AX,2MOV CX,AXPUSH CXAE:CALL DISPLAYPOP CXDEC CXPUSH CXMOV AX,CXCMP AX,0JGE AEP
29、OP CXPOP SIJMP AGAIN;完成了一次大循环,返回程序入口地址,再次执行程序1;数码管分解显示子程序DISPLAYDISPLAY PROC NEARMOV DX,10DIV DL;32/10=3,把十位给分解出来显示0,此时AL=3,AH=2MOV CL,ALMOV CH,AHXOR BX,BXMOV BL,CLMOV AL,SI+BXMOV DX,0400HOUT DX,ALXOR BX,BXMOV BL,CHMOV AL,SI+BXMOV DX,0600HOUT DX,ALCALL XUNMOV DX,10DIV DLMOV CL,ALMOV CH,AHXOR BX,BXMO
30、V BL,CLMOV AX,SI+BXMOV DX,0402HOUT DX,ALXOR BX,BXMOV BL,CHMOV AL,SI+BXMOV DX,0602HOUT DX,ALCALL DELAYRET DISPLAY ENDPXUN PROC NEARMOV AH,0MOV AL,DIINC DIRETXUN ENDPDELAY PROC NEAR;延时子程序2,延时时间为500*(执行469次循环语句的时间)MOV BX,500LP1:MOV CX,469LP2:LOOP LP2DEC BXJNZ LP1RETDELAY ENDP.DATATABLEONE DB 30,29,28,2
31、7,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0TABLETWO DB 2,1,0TABLETHREE DB 32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3TABLEFOUR DB 2,1,0LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管待显示的字符数组0SITUATION DW 00001B;南北向红灯,东西向绿灯,MSBled
32、15,LSBled0S1 DW 10001B;南北向红灯,东西向黄灯,低电平0无效,高电平1有效S2 DW 01100B;南北向绿灯,东西向红灯,led15显然没有,那数据的最高四位一定是1111S3 DW 01010B;南北向黄灯,东西向红灯4SIT_END = $ALL_LIGHTEQU10110BEND五、系统仿真过程与结果5.1 系统调试将编写好的汇编语言源程序在MASM32软件中进行汇编、连接生成可执行文件,并将其载入到8086芯片进行仿真。通过以上的调试过程和仿真调试结果可知,所设计的电路和所编写的程序满足实验要求。六、总结本次课程设计是要设计一个交通灯系统,主要功能如上已有细述。
33、在本次对交通灯的设计过程中以此来加深对微机接口技术的理解,提高了自己的动手能力。首先着手对硬件电路的设计,本次课程设计主要采用了8255A接口电路。由于对各个芯片不熟悉,通过课本了解到了它们的引脚及功能、工作方式、内部结构和控制字。然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流程,先画出了流程图,然后对代码进行编写,在编写过程中遇到了很多问题,对芯片的不了解也导致编程的很多的问题,要么灯都不显示,要么灯显示不全,再要么红灯,绿灯时间分配不合理。最后经过一段时间的研究,查阅了很多资料并和同学讨论后终于一一解决。 经过为期一个星期的课程设计,我获益颇多。将微机接口技术中的理论与实践相结合起来,对芯片的功能也有了进一步认识理解。最后希望通过以后的学习,不断提升自身各方面的能力,如对专业知识的掌握程度,动手实践能力等。经过此次的课程设计,我们学会了合作。我们要形成自己的设计思想,以便在今后的专业课形成自己的风格。同时在多多锻炼自己的动手能力,以便在以后的工作能独立完成一些设计项目。七、参考文献(1)许立梓.微型计算机原理及应用M.北京:机械工业出版社,2011.(2)杨季文.80X86汇编语言程序设计教程M.北京:清华大学出版社,2009.(3)许立梓.习题解答、实验指导及课程设计M.北京:机械工业出版社,2004.附录一