1、武汉纺织大学 2012届微机原理课程设计 武汉纺织大学 课程设计任务书 课题名称: 基于8086/8088的交通信号灯设计 完成期限: 2011年12月12日 至 2011年12月22日 院系名称 外经贸学院 指导教师 周国鹏 专业班级 机设0824 指导教师职称 学生姓名 王理想 院系课程设计(论文)工作领导小组组长签字 一、设计目的 电子课程设计是电子技术学习中重要的一课,它将理论知识和实践能力相结合,真
2、正锻炼了学生的实际动手能力和综合理解能力,为以后的学习和生活打下了良好的基础。交通灯保证了保证了正常的交通秩序,让车辆有序行驶,同时也保证了行人过马路时的安全,受到人们的普遍欢迎,在很多场合得到了广泛的应用。 交通灯是利用计算机通过编写汇编语言程序控制的,实现“红灯停,绿灯行”的交通规则。虽然汇编语言较为古老,但它是计算机中很多芯片必须具备的程序,同时也使得很多特殊外设得以正常运行。随着计算机技术的成熟与广泛应用,交通灯的功能也随之多样化。诸如闪烁警示、鸣笛警示,时间程序自动控制、倒计时显示等。还可以根据主、次干道的交通状况的不同任意设置各自的不同的通行时间,或者给红绿色盲者以声音警示的人性
3、化设计。现在的交通灯系统很多都增加了智能控制环节,比如对闯红灯的车辆进行拍照。当某方向红灯亮时,此时相应的传感器开始工作,当有车辆通过时,照相机就把车辆拍下。总之,交通灯的数字化给人们生产生活带来了极大的方便。 要将交通灯系统产品化,应该根据客户不同的需求进行不同的设计,应该在程序中增加一些可以人为改变的参数,以便客户根据不同的需要随时调节交通灯。因此,研究交通灯的原理及扩大其应用,有着非常深远而现实的意义。 二、设计内容及要求 设计一个基于8086/8088微型计算机的一个交通信号灯控制系统,要求能完成基本的交通灯控制,如红、绿、黄三种灯的定时交替点亮与熄灭;能提供行人通过时的临时信号
4、修改;能提供当时当地的温度、湿度信息;提供基本的键盘输入。 1. 设计一个基于8086/8088微型计算机的一个交通信号灯控制系,要求使用如下器件: 8086、8259、8253、8255、ADC0809、 温度传感器(可自选)和湿度传感器(可自选),其计数时间均为6s、健盘; 2. 交通灯的亮、灭情况如下: 东、西两个相对路口红灯亮12s,南、北两个路口绿灯亮6s,后转为黄灯亮6s; 南、北两个相对路口红灯亮12s,东、西两个路口绿灯亮6s,后转为黄灯亮6s; 3. 每个路口设一个紧急按键,可以中断当前的交通灯状态,使当前路口为绿灯,经12s后恢复原来的工作状态; 4. 使用
5、8253提供时间定时; 三、设计方案 3.1 交通灯控制系统的组成 交通灯控制系统的原理框图如图1所示。它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。秒脉冲发生器是该 系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。 秒脉冲 发生器 控制器 译码器 东西向信号灯 南北向信号灯 定时器 TL TY ST 图1 交通灯控制系统的原理框图 3.2 设计内容分析 通过分析设计要求得出灯亮的规律如下: 1.东西南北两个方向起始状态全为红,延续3秒
6、 2.东西方向红灯亮,南北方向绿灯亮;延续6秒。 3.东西方向红灯亮,南北方向转为黄灯亮;延续3秒。 4.东西方向红灯亮,延续3秒;南北方向黄灯亮,以频率1HZ闪烁3秒。 5.东西方向绿灯亮,南北方向红灯亮,延续6秒。 6.东西方向黄灯亮,南北方向红灯亮;延续3秒。 7.东西方向黄灯亮,以频率1HZ闪烁3秒;南北方向红灯亮,延续3秒。 8.东西方向红灯亮,南北方向绿灯亮,重复以上步骤 。 9.每一个路口有一个紧急按键,可以中断当前的交通状态,使当前的路口为绿灯,经过12秒后恢复。 通行分析灯的亮灭情况,总结出下表(1标示灯亮,0标示灯灭): 状态 时间 东西
7、 红灯 东西黄灯 东西绿灯 南北红灯 南北黄灯 南北绿灯 无效 1 无效 2 a 0-6 1 0 0 0 0 1 0 0 b 6-12 1 0 0 0 1 0 0 0 c 12-18 0 0 1 1 0 0 0 0 d 21-24 0 1 0 1 0 0 0 0 转换成控制码: 状态 状态 时间段 十六进制 二进制 状态a 0-6 84H 10000100B 状态b 6-12 88H 10001000B 状态c 12-18 30H 00110000B 状态d
8、 18-24 50H 01010000B 东西、南北分别在0-6,、6-12 、12-18 、18-24时间段的亮灯情况比较: 西 东 北 南 状态a 西 东 北 南 状态b 西 东 北 南 状态c 西 东 北 南 状态d 四、电路设计思路 通过并行接口芯片8255A和8086芯片的硬件连接,以及通过8253定时的方法,来实现十字路口交通灯的模拟控制。 4.1 延时功能实现逻辑: 8253芯片中数据总线缓冲存储器是由8为双向三态缓冲存储器构成,是CPU与8253之间交换信息的通道。读写/控制电路可
9、以接收CPU送入的读/写控制信号,若计数器0设为1s定时中断,周期为0-24秒,可通过编程控制各个路灯的状态的转换,以及使得黄灯按时闪烁。8053内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD)计数,因此8253既是一个定时器也是一个计数器。 读/写控制器接受CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。可接受的控制信号: (1) A1A0—端口选择信号,由CPU输入。8253内部有3个独立的通道,和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作
10、对控制字寄存器进行写操作。 (2) CS—片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。 (3) RD、WR—读/写控制命令,由CPU输入,低电平有效。RD有效时,CPU读取由A1A0所选定的通道内计数的内容。WR有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。 当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中,被计数的事件以脉冲方式从CLKi端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”,OUTi端将有输出,表示计数次数到。 当某通道用作定时器时,由CLKi端输入一定频率的时钟脉冲。根据要
11、求定时的时间长短确定所需的计数值,并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”,OUT i端将有输出,表示定时时间到。 控制字寄存器用来存放由CPU写入8253的方式选择控制字,由它来定义8253中各通道的工作方式。 SC1、SC0位用来选择通道,RL1、RL0位用来定义对所选通道中的计数器的操作,BCD位用来定义是采用二进制计数还是十进制计数,M2M1M0位用来定义所选通道的6种工作方式。 D15~D8 A1 A2 A0
12、 A3 A15 M/ INTR D7~D0 CLK2 GATE2 OUT2 A0 CLK3 A1 GATE3 OUT3 CLK1 GATE1 OUT1 8086 CPU 8253 74HC138 译码器 RESET READY CLK PLCK 2.5MHZ 1KHZ IR0
13、 IR2 IR7 8259 外部事件源 8253延时及38译码电路接线图 接收器 4.2 译码电路设计: 74HC138是用CMOS门电路组成的3线-8线译码器,它有3个附加的控制端S1、S2’和S3’,这三个控制端也成为“片选”输入端,利用片选的作用可以将多片连接起来以扩展译码器的功能。只有当S1=1、S2’+S3’=0时译码器处于工作状态。 8259的地址为20H、21H,8253的地址为40H、41H、42H、43H,8255的端口地址为0F0H、0F1H、0F2H、0F3H。故芯片的地址只与8
14、086的地址的低8位有联系,不妨设高十二为全为1将它们相与后作为38译码器的始能信号E3。再分析发现8259、8253、8255各端口地址的低八位其中D2、D3均为0,将8086的地址总线的D2、D3作为38译码器的始能信号E1、E2。将8086的地址总线的D0、D1分别与8253和8255的A0、A1连接,利用D4、D5、D6、D7构成译码电路。将8086的地址总线的D0与8259的A0连接,利用D2、D4、D5、D6、D7通过38译码器构成译码电路。 4.3 控制电路设计: 由于8255A与8086CPU是以低八位数据线相连接的,所以应该是8255A的A1、A0线分别与8086CPU的
15、A2、A1相连,而将8086的A0线作为选通信号。如果是按8255A内部地址来看,则在图中它的地址是PA口地址即(CS+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),命令控制口地址为(CS+003H),其中,CS为8255片选信号的首地址;若是按8086CPU地址来看,则8255A的地址是PA口地址即(CS+000H),PB口地址为(CS+002H),PC口地址为(CS+004H),命令控制口地址为(CS+006H)。当CS=0288H,则PA口地址为0288H,PB口地址为028AH,PC口地址为028CH,命令控制口地址为028EH。 1)对8255A芯片的
16、说明: 8255A是一种可编程的芯片,内部有3个8位的I/0端口:A口、B口和C口。这三个端口也可以分为各有12位的两组:A组和B组。A组包含A口8位和C口的高四位,B组包含B口8位和C口的低四位;A组控制和B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内部寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和8086系统数据总线相连。8255A可为可为86系统微处理机提供3个独立的并行输入/输出端口。利用输出端口与数模转换器相连,可控制输出模拟量的大小,比如电压的高低、电流的大小、书读的快慢、温度的升降等,利用模数
17、转换器又可将他们转换为数字量,通过并行输入端口送回微机系统中。本例检测空气温度和湿度,并及时给予反馈显示,就要运用此芯片的该模拟量转换功能。8255A与8086接线原理图如下: D7~D0 A1 A2 A0 A3 . . A15 M/ INTR CPU 8086 D7~D0 A0 A1
18、 PB7~PB0 PC7 PC0 PC2 D7~D0 IN7 START IN4 ALE . EOC IN0 8259A ADC0809 38译码器 8255A 2)对8259A芯片的说明: 8259A为可编程中断控制器,它有8大部分组成。其中数据总线缓冲器是一个双向8位3态缓冲器,由它构成8259A与CPU之间的数据总线接口。读写控制用来接收来自CPU的读/写控制命令和片选控制信息。由于一片8259A只占两个I/O端口地址,可用末位地址码A0来选端口,端口其他的高位地址作
19、为片选信号输入。一片8259A只能接收八级中断从IR7-IR0输入,当引入的中断超过8级时,可用多片8259A级联使用。 3)对温度传感器介绍: 湿度传感器是把相对湿度的变化转换成电信号的器件。 感湿特点:在基片涂覆材料形成感湿膜。空气中的水蒸气吸附于感湿材料后,原件的阻抗、介电常数发生很大的变化,从而制成湿敏原件。 工作原理:水分子具有很强的电子亲和力,易于在多孔性半导体陶瓷表面附着,并俘获电子,在半导体陶瓷表面形成空穴积累,导致半导体陶瓷的电阻率降低。晶胞间界水分子的电离。芯片内部结构如下: 五、电路原理图 六、程序流程图 初始化8255,8253 红灯全亮 绿灯
20、黄灯全灭 东西红灯亮 南北绿灯亮 等待8253延时6s时间是否到? Y N 南北绿灯灭 东西红灯不变 南北黄灯闪烁 等待黄灯闪烁3次? Y N 南北红灯亮 东西绿灯亮 8253延时6s 东西绿灯灭 黄灯闪烁3次 紧急按钮 中断当前交通状态,是当前路口为路灯,延时12秒 七、程序代码 十字路口交通控制器 DATA SEGMENT SETTIME DB 3 ;用户设置的通行时间 NOWTIME DB 3 ;当前计时时间 TIME1 EQU 10 TIMEOT1 DB TIME1 ;0.5秒定时单元 T
21、IME2 EQU 2 TIMEOT2 DB TIME2 ;1秒定时单元 FLAG DB 1 ;闪烁标志 ONOFF DB 1 ;亮灭标志 LEFT DB 1 ;南北向和东西向标志 TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0~9的显示码 DATA ENDS STACK SEGMENT STACK DW 64 DUP(6) ;定义堆栈段 STACK ENDS CODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA ;段指定
22、 START: MOV AX, DATA MOV DS, AX PUSH DS ;当前用户DS段入栈保存 MOV AX, 0000H MOV DS,AX ;修改DS=0000H,指向中断矢量表所在段 MOV AX,OFFSET IRQ0 ;取出中断处理子程序的入口偏移地址(以0为基准) ADD AX,2000H ;修正,实际地址=装入地址的偏移量+相对于0起始偏移量 MOV SI,0020H ;IR0中断矢量号为08H,处于矢量表的20H~23H MOV [SI],AX ;将偏移地址装入矢量表 MOV
23、 AX,0000H MOV SI,0022H MOV [SI],AX ;将段地址(0000H)装入矢量表 POP DS ;恢复用户数据段DS MOV AL,0FCH ;D1,D0位复位为0 OUT 21H,AL ;写入OCW1(IMR);开放8259A的IR1和IR0中断 MOV AL,34H ;设定8253通道0的工作方式,00110100B OUT 43H,AL ;CH0采用先写低8位,后写高8位,方式2,二进制计数 MOV AX,59500 ;计数初值为59500,输出20HZ信号,定
24、时0.05秒 OUT 40H,AL ;写入CH0 MOV AL,AH OUT 40H,AL STI ;开中断 MOV AL,88H ;写入8255A的方式控制字,设定工作方式为10001000B OUT 63H,AL ;即A口方式0输出,C口高4位输入,B口方式0输出,C口低4位输出 IN AL,62H ;循环读出C口的四个开关状态(PC4~PC7) AND AL,0F0H ;高四位为00~90秒 MOV SETTIME,AL ;读取用户设定的通行时间 MOV NOWTIME,AL
25、 A1: MOV AL,FLAG TEST AL,01H JZ A2 ;不闪烁,则转显示 MOV AL,ONOFF ;闪烁标志为1,闪烁,则测试是亮,还是灭 TEST AL, 01H JNZ A2 ;为1,说明亮,则转A2 MOV AL, 0FH OUT 62H, AL MOV AL, 00H OUT 61H,AL ;灭,则关闭显示 JMP A3 A2: MOV AL,NOWTIME ;取出当前剩余时间的低位 AND AL, 0FH MOV BX, OFFSET TAB
26、XLAT ;查表转换为显示码 OUT 61H, AL MOV AL,05H ;PC0~PC3为0101B,允许X2、X4数码管选通 OUT 62H, AL CALL DALEY MOV AL, NOWTIME MOV CL, 4 ROR AL, CL AND AL,0FH ;取出当前剩余时间的高位 MOV BX, OFFSET TAB XLAT OUT 61H, AL MOV AL, 0AH OUT 62H,AL ;PC0~PC3为1010B,允许X1、X3数码管选通 CALL DAL
27、EY A3: MOV AL, LEFT TEST AL, 01H JZ A5 ;测试是南北向通行,还是东西向通行 MOV AL,FLAG ;东西向通行 TEST AL,01H ;测试是否应让黄灯亮 JZ A4 ;不是东西向的黄灯亮,则转东西向绿灯亮(南北向红灯亮) MOV AL,ONOFF ;东西向黄灯亮(南北向红灯亮) TEST AL, 01H JNZ A4 ;测试亮灭 MOV AL,0FFH ;关指示灯 OUT 60H, AL JMP EXIT A4: MOV
28、AL,77H ;东西向绿灯亮(南北向红灯亮) OUT 60H, AL JMP EXIT A5: MOV AL,FLAG ;南北向通行 TEST AL,01H ;测试是否应让黄灯亮 JZ A6 ;不是南北向的黄灯亮,则转南北向绿灯亮(东西向红灯亮) MOV AL,ONOFF ;南北向黄灯亮(东西向红灯亮) TEST AL, 01H JNZ A6 ;测试亮灭 MOV AL,0FFH ;关指示灯 OUT 60H, AL JMP EXIT A6: MOV AL,0EEH ;南北向绿灯亮
29、东西向红灯亮) OUT 60H, AL EXIT: JMP A1 ;8259A的IR0中断处理子程序(8253的CH0每来59500个脉冲后(定时0.05秒),则执行下面的中断处理程序一次) IRQ0: PUSH AX MOV AL, TIMEOT1 DEC AL JZ IRTIME1 MOV TIMEOT1, AL JMP IREXIT ;不到0.5秒,则退出 IRTIME1:MOV TIMEOT1,TIME1 ;0.5秒定时时间到,重装初值 MOV AL, ONOFF XOR AL, 01H MOV ONO
30、FF,AL ;取反亮灭标志 MOV AL, TIMEOT2 DEC AL ;1秒定时单元减1 JZ IRTIME2 MOV TIMEOT2,AL ;1秒不到,保存,退出 JMP IREXIT IRTIME2: MOV TIMEOT2, TIME2 MOV AL, NOWTIME SUB AL,1 DAS CMP AL,0 JNZ IRTIME3 MOV AL, SETTIME MOV NOWTIME,AL ;重装通行时间 MOV AL, LEFT XOR AL, 01H MOV
31、LEFT,AL ;南北向与东西向通行转换 MOV FLAG,00H ;闪烁标志复位(不闪) JMP IREXIT IRTIME3: MOV NOWTIME, AL CMP AL,04H ;剩余时间小于4秒,则闪烁 JAE IRTIME4 MOV FLAG, 01H JMP IREXIT IRTIME4:MOV FLAG,00H ;>3秒,则不闪烁 IREXIT: MOV AL,20H ;常规EOI中断结束指令 OUT 20H,AL ;写入8259A的OCW2 POP AX IRET ;中断返
32、回 ;延时子程序 DALEY: PUSH CX MOV CX,0010H ;置内循环次数 DALEY1:LOOP DALEY1 ;共循环0010H次,以完成延时 POP CX RET CODE ENDS END START 八、程序及硬件系统调试情况 程序运行结果: 1. 东西路右拐和南北路左拐绿灯点亮12秒,直通到均为红灯 2. 12秒后,黄灯亮6秒钟,。此时南北方向仍维持红灯点亮。 3. 东西方向直通,为绿灯,南北 方向红灯 4. 黄灯再亮6秒之后,东西路左拐和南北路右拐绿灯点亮 5. 南北方向的黄灯亮6
33、秒钟后,南北方向直通,延时6秒 6. 闭合A口开关,四个路口全红灯,表明紧急状态。 九、设计总结与体会 通过本次的交通灯系统的设计,我再次拿起了《微型计算机原理及应用》,仔细复习以前学过的知识。由于本课程有些难学,所以当初学习的不太好,有很多知识都是一知半解。为了能够及时出色的完成本次设计任务,我就早早的开始复习,虽然在此过程中遇到了很多难题,但是通过同学们的帮助和查找资料,我对各个芯片的功能、编程及应用也有了更深层次的理解,对微机原理有了更进一步的认识。在理论学习的基础上,我又仔细思考本次设计内容及要求,结合各个芯片的功能,终于明白了设计一个系统的过程;也让我体会到要想成功地完
34、成某个设计,除了学好专业知识外,还要灵活系统的运用知识,要有严谨的求知态度和严密的思考方法,只有这样才能使设计过程有序而正确的进行。除此之外,编程语言一直是我头疼的事,此次在芯片初始化程序方面是我遇到的最大的困难,我只能借助参考资料,查每一条指令的作用与功能,最后终于攻克了这个难题。 通过本次设计,激发了同学们学习的积极性,再次把学过的计算机编程原理的知识强化了,而且把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。很感谢学校领导及周老师给我们提供的这次锻炼的机会,让我们在加深汇编语言的同时,也增强了综合理解及运用知识的能力,动手能力也得到了相应的提高,这对我们的学习和生活
35、都有很大帮助。 十、参考文献 [1] 郑学坚、周斌等编著.《计算机原理及应用》(第三版) 北京:清华大学出版社 2007 [2] 彭虎、周佩玲、傅忠谦.《微机原理里与接口技术》(第2版) [M] 北京:电子工业出版社 2008,149-187 [3] 刘乐善. 微型计算机接口技术及应用[M] . 武汉: 华中科技大学出版, 2000. [4] 谭云福 IBM PC 8086/8088宏汇编语言程序设计及实验,北京:机械工业出版社,1993 [5] 杨润生 王敬觉.微型计算机及其应用(基础篇及应用篇).北京:机械工业出版社,1983 [6] 载梅萼.微型计算机技术及应用.北京:清华大学出版社,1991 17






