资源描述
- -
大学通信工程学院
课程设计〔论文〕
设计〔论文〕题目:交通灯的控制系统设计与分析
系别:通信工程学院
专业:计算机通信工程
班级:08计算机通信工程
XX: 朱燕燕
学号:5
指导教师: 胡国庆
完成时间:2021年6月
目 录
1. 摘要------------------------------------------------------------------------- 3
2. 设计目标---------------------------------------------------------------------4
3. 硬件设计------------------------------------------------------------------5
3.1 器件选择
3.2 MSC-51芯片简介
3.3 8255可编程并行接口芯片简介
3.4 74LS373简介
4. 系统硬件设计
4.1 交通管理的方案论证
4.2 设计其目的
4.3 设计与步骤
4.3 1 系统硬件设计
4.3 2 系统总框图
4.3 3 交通灯硬件线路图
4.3 4 系统工作原理
5.程序设计
5.1流程图
5.2 程序源代码
6. 设计结果与分析
7.设计体会
摘要:
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件构造软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示〔交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管〕;车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。本系统实用性强、操作简单、扩展功能强。
当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
2.设计目标
1、实现交通灯控制系统的根本功能;
2、系统具有较强的稳定性;
3、系统可根据需要附加一些功能;
3.硬件设计
1.用单片机的定时器产生秒信号,控制十字路口的红绿黄灯交替点亮和熄灭;
2.用实验箱上的发光二级管模拟十字路口交通灯信号。用可编程并行接口芯片8255A来实现该设计
3.1 器件
元件名
参数
备注
MSC-51(8051)
1
单片机
8255A
2
可编程外设接口
LED-RED、GREEN、YELLOW
3
红绿黄LED
74LS373
6
锁存器
选择
3.2 MSC-51芯片简介
MCS-51单片机部构造
8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进展系统的讲解。8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线
图1
下列图是MCS-51系列单片机的部构造示意图2。
图2
MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP构造,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:
MCS-51的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP构造,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:如图3
图3
Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开场工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用存放器被清“0〞。RESET由高电平下降为低电平后,系统即从0000H地址开场执行程序。然而,初始复位不改变RAM〔包括工作存放器R0-R7〕的状态,8051的初始态。
8051的复位方式可以是自动复位,也可以是手动复位,见下列图4。此外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可接上备用电源,以保证单片机部RAM的数据不丧失。
图4
·Pin30:ALE/当外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当外部程序存储器,ALE会跳过一个脉冲。
如果单片机是EPROM,在编程其间,将用于输入编程脉冲。
·Pin29:当外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器那么把指令数据放到P0口上,由CPU读入并执行。
·Pin31:EA/Vpp程序存储器的外部选通线,8051和8751单片机,置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取部程序存储器指令数据,而超过4kB地址那么读取外部指令数据。如EA为低电平,那么不管地址大小,一律读取外部程序存储器指令。显然,对部无程序存储器的8031,EA端必须接地。
在编程时,EA/Vpp脚还需加上21V的编程电压。
3.3 8255可编程并行接口芯片简介:
8255可编程并行接口芯片有三个输入输出端口,即A口、B口和C口,对应于引脚PA7~PA0、PB7~PB0和PC7~PC0。其部还有一个控制存放器,即控制口。通常A口、B口作为输入输出的数据端口。C口作为控制或状态信息的端口,它在方式字的控制下,可以分成4位的端口,每个端口包含一个4位锁存器。它们分别与端口A/B配合使用,可以用作控制信号输出或作为状态信号输入。
方式控制字格式说明如表1:
D7
D6
D5
D4
D3
D2
D1
D0
D7:设定工作方式标志,1有效。
D6、D5:A口方式选择
0 0 —方式0
0 1 —方式1
1 ×—方式2
D4:A口功能 〔1=输入,0=输出〕
D3:C口高4位功能 〔1=输入,0=输出〕
D2:B口方式选择 〔0=方式0,1=方式1〕
D1:B口功能 〔1=输入,0=输出〕
D0:C口低4位功能 〔1=输入,0=输出〕
8255A各口的应用:PA负责传输南北向数码管的值,PB负责传输东西向数码管的值,PC负责控制东西向、南北向数码的暗灭,控制存放器〔假设为PD〕负责控制8255a的工作方式,此系统中值为0x80,即无条件传输方式;
3.4 74LS373简介
74LS373 是一种带三态门的8D锁存器,其管脚示意图如下示:
其中:1D-8D为8个输入端。
1Q-8Q为8个输出端。
LE为数据打入端:当LE为“1〞时,锁存器输出
状态同输入状态;当LE由“1〞变“0〞时,数据
打入锁存器
OE为输出允许端:当OE=0时,三态门翻开;
当OE=1时,三态门关闭,输出高阻。
因为P0口为数据线、地址线复用,所以用一个锁存器将8255a的地址所存;
4 系统硬件设计
4.1交通管理的方案论证
东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人平安通行。红灯亮制止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。
设计一个十字路口的交通灯控制系统。
南北东西四个方向:南北口绿灯亮,东西红灯亮,南北方向通车,时间为20秒;南北口绿灯灭,黄灯开场闪烁5秒,红灯亮,东西口红灯灭,绿灯亮,东西口方向通车,时间为20秒;东西口绿灯灭,黄灯闪烁5秒,红灯亮,南北口红灯灭,黄灯开场闪烁5秒,绿灯亮,南北口通车,以此类推循环运行,按任意键停顿。假设有紧急情况,四个路口红灯全亮,紧急车通过时间为本10秒。
4.2 设计其目的:
应用、掌握接口芯片与中断技术的硬件电路组成及中断处理程序等软件的编制方法容4.3 设计与步骤
用实验箱上的发光二级管模拟十字路口交通灯信号。用可编程并行接口芯片8255A来实现该设计。
8255A的B口和C口控制12个LED发光二极管的亮、灭〔“0〞亮,“1〞灭〕。
并行接口硬件连线
如下图〔见下页〕
图1. 并行接口连线图
(3)三个端口均工作于方式0,处于输出状态
(4)8255A A口地址为218H,B口地址为219H,C口为21AH,控制端口地址为21BH
8255PA口输出信号接信号灯:
由于发光二极管为共阳极接法,输出端口为低电平,对应的二极管发光,所以可以用置位方法点亮红,绿,黄发光二极管。
8255输出信号与数码管的连接:
LED 灯的显示原理:通过同名管脚上所加电平的上下来控制发光二极管是否点量而显示不同的字形
4.3 1 系统硬件设计
选用设备8031单片机一片选用设备:8031单片机一片,8255并行通用接口芯片一片,74LS07两片,MAX692‘看门狗’一片,共阴极的七段数码管两个双向晶闸管假设干,7805三端稳压电源一个,红、黄、绿交通灯各两个,开关键盘、连线假设干。
4.3 2 系统总框图如下:
图6
4.3 3 交通灯硬件线路图
4.3.4 系统工作原理
〔1〕开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统
(2) 由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA 口显示红、绿、黄灯的燃亮情况;由8255的PC口显示每个灯的燃亮时间。
(3)8051通过 设置 各个信号等的燃亮时间、通过8031设置,绿、红时间分别为60秒、80秒循环由8051的 P0口向8255的数据口输出。
〔4〕 通过8051单片机的P3.0位来控制系统是工作或设置初值,当.牌位0就对系统进展初始化,为1系统就开场工作。
〔5〕红灯倒计时时间,当有车辆闯红灯时,启动蜂鸣器进展报警,3S后然后恢复正常。
〔6〕增加每次绿灯时间车流量检测的功能,并且通过查询P2.0端口的电平是否为低,开关按下为低电平,双位数码管显示车流量,直到下一次绿灯时间重新记入。
〔7〕绿灯时间倒计时完毕,重新循环。
8051并行口的扩展
8051虽然有4个8位I/O端口,但真正能提供借用的只有P1口,因为P2和P0口通常用于传送外部传送地址和数据,P3口也有它的第二功能。因此,8031通常需要扩展。由于我们用外部输入设定红绿灯倒计时初值、数码管的输出显示、红绿黄信号灯的显示都要用到一个I/O端口,显然8031的端口是不够,需要扩展。
扩展的方法有两种:〔1〕借用外部RAM地址来扩展I/O端口;〔2〕采用I/O接口新片来扩大。我们用8255并行接口信片来扩展I/O端口。
8255PA口输出信号接信号灯:
由于发光二极管为共阳极接法,输出端口为低电平,对应的二极管发光,所以可以用置位方法点亮红,绿,黄发光二极管。
8255输出信号与数码管的连接:
LED 灯的显示原理:通过同名管脚上所加电平的上下来控制发光二极管是否点量而显示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上7FH所以 SP上为0伏,不亮其余为TTL高电平,全亮那么显示为8
采用共阴级连接:
其中 PC0\PB0-a,
PC1\PB1-b,
PC2\PB2-c,
PC3\PB3-d,
PC4\PB4-e,
PC5\PB5-f,
PC6\PB6-g
PC7\PB7 -SP接地
显示数值
dop g f e d c b a
驱动代码〔16进制〕
0
0 0 1 1 1 1 1 1
3FH
1
0 0 0 0 0 1 1 0
06H
2
0 1 0 1 1 0 1 1
5BH
3
0 1 0 0 1 1 1 1
4FH
4
0 1 1 0 0 1 1 0
66H
5
0 1 1 0 1 1 0 0
6DH
6
0 1 1 1 1 1 0 0
7DH
7
0 0 0 0 0 1 1 1
07H
8
0 1 1 1 1 1 1 1
7FH
表 3 驱动代码表
8255与8051的连接:
用8051的P0 口的 p0.7 连接8255的片选信号cs 我们用8031的地址采用全译码方式,当p0.7 =0 时片选有效, 其他无效, p0.1 p0.1 用于选择8255端口
P0.7 p0.6 p0.5 p0.4 p0.3 p0.2 P0.1 P0.0
A7 A6 A5 A4 A3 A2 A1 A0
1 X X X X X 0 0 00H为8255 的PA口
1 X X X X X 0 1 01H 为8255的PB口
1 X X X X X 1 0 02H 为8255的PC口
1 X X X X X 1 1 03H 为8255的控制口
由于8051是分时对8255和储存器进展所以8051的P0口不会发生冲突
5.程序设计
5.1流程图如下图
开场
初始化
等待键盘事件
显示程序处理
键盘事件处理
图8
图9 程序流程图
5.2 程序源代码
ORG 0000H ;主程序的入口地址
LJMP MAIN ;跳转到主程序的开场处
ORG 0003H ;外部中断0的中断程序入口地址
ORG 000BH ;定时器0的中断程序入口地址
LJMP T0_INT ;跳转到中断效劳程序处
ORG 0013H ;外部中断1的中断程序入口地址
MAIN : MOV SP,#50H
MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断
MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1
MOV TH1,#00H ;T1计数器清零
MOV TL1,#00H
SETB TR1 ;启动T1计时器
SETB EX1 ;允许INT1中断
SETB IT1 ;选择边沿触发方式
MOV DPTR ,#0003H
MOV A, #80H ;给8255赋初值,8255工作于方式0
MOVX DPTR, A
AGAIN: P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,假设P3.1为1 那么跳转
MOV A,P1
P1.7,RED ;判断P1.7是否为1,假设为1那么设定红灯时间,否那么设定绿灯时间
MOV R0,#00H ;R0清零
MOV R0,A ;存入东西方向绿灯初始时间
MOV R3,A
LCALL DISP1
LCALL DELAY
AJMP AGAIN
RED: MOV A,P1
ANL A,#7FH ;P1.7置0
MOV R7,#00H ;R7清零
MOV R7,A ;存入东西方向红灯初始时间
MOV R3,A
LCALL DISP1
LCALL DELAY
AJMP AGAIN
;-------------------------------------------
N0: SETB TR0 ;启动T0计时器
MOV 76H,R7 ;红灯时间存入76H
N00: MOV A,76H ;东西方向制止,南北方向通行
MOV R3,A
MOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮
MOV A,#0DDH
MOVX DPTR, A
N01: P2.0,B0
N02: SETB P3.0
CJNE R3,#00H,N01 ;比拟R3中的值是否为0,不为0转到当前指令处执行
;------黄灯闪烁5秒程序------
N1: SETB P3.0
MOV R3,#05H
MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮
MOV A,#0D4H
MOVX DPTR,A
N11: MOV R4,#00H
N12: CJNE R4,#7DH,$ ;黄灯持续亮0.5秒
N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭
MOV A,#0DDH
MOVX DPTR,A
N14: MOV R4,#00H
CJNE R4,#7DH,$ ;黄灯持续灭0.5秒
CJNE R3,#00H,N1 ;闪烁时间达5秒那么退出
;------------------------------------------------------------
N2: MOV R7,#00H
MOV A,R0 ;东西通行,南北制止
MOV R3,A
MOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮
MOV A,#0EBH
MOVX DPTR,A
N21: P2.0,T03
N22: CJNE R3,#00H,N21
;------黄灯闪烁5秒程序------
N3: MOV R3,#05H
MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮
MOV A,#0E2H
MOVX DPTR,A
N31: MOV R4,#00H
CJNE R4,#7DH,$ ;黄灯持续亮0.5秒
N32: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭
MOV A,#0EBH
MOVX DPTR,A
N33: MOV R4,#00H
CJNE R4,#7DH,$ ;黄灯持续灭0.5秒
CJNE R3,#00H,N3 ;闪烁时间达5秒那么退出
SJMP N00
;------闯红灯报警程序------
B0: MOV R2,#03H ;报警持续时间3秒
B01: MOV A,R3
JZ N1 ;假设倒计时完毕,不再报警
CLR P3.0 ;报警
CJNE R2,#00H,B01 ;判断3秒是否完毕
SJMP N02
;------1秒延时子程序-------
N7: RETI
T0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms的初值
MOV TH0,#0F1H
INC R4
INC R5
CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够那么调用显示子程序
MOV R5,#00H ;R5清零
DEC R3 ;倒计时初值减一
DEC R2 ;报警初值减一
T01: ACALL DISP ;调用显示子程序
RETI ;中断返回
;------显示子程序------
DISP: JNB P2.4,T02
DISP1: MOV B,#0AH
MOV A,R3 ;R3中值二转十显示转换
DIV AB
MOV 79H,A
MOV 7AH,B
DIS: MOV A,79H ;显示十位
MOV DPTR,#TAB
MOVC A,A+DPTR
MOV DPTR,#0002H
MOVX DPTR,A
MOV DPTR,#0001H
MOV A,#0F7H
MOVX DPTR,A
LCALL DELAY
DS2: MOV A,7AH ;显示个位
MOV DPTR,#TAB
MOVC A,A+DPTR
MOV DPTR,#0002H
MOVX DPTR,A
MOV DPTR,#0001H
MOV A,#0FBH
MOVX DPTR,A
RET
;------东西方向车流量检测程序------
T03: MOV A,R3
SUBB A,#00H ;假设绿灯倒计时完毕,不再检测车流量
JZ N3
P2.0,T03
INC R7
CJNE R7,#64H,E1
MOV R7,#00H ;中断到100次那么清零
E1: SJMP N22
;------东西方向车流量显示程序------
T02: MOV B,#0AH
MOV A,R7 ;R7中值二转十显示转换
DIV AB
MOV 79H,A
MOV 7AH,B
DIS3: MOV A,79H ;显示十位
MOV DPTR,#TAB
MOVC A,A+DPTR
MOV DPTR,#0002H
MOVX DPTR,A
MOV DPTR,#0001H
MOV A,#0F7H
MOVX DPTR,A
LCALL DELAY
DS4: MOV A,7AH ;显示个位
MOV DPTR,#TAB
MOVC A,A+DPTR
MOV DPTR,#0002H
MOVX DPTR,A
MOV DPTR,#0001H
MOV A,#0FBH
MOVX DPTR,A
LJMP N7
;------延时4MS子程序----------
DELAY: MOV R1,#0AH
LOOP: MOV R6,#64H
NOP
LOOP1: DJNZ R6,LOOP1
DJNZ R1,LOOP
RET
;------字符表------
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
6.设计结果与分析
用单片机设计的结果实现了交通信号灯的控制以及特殊情况的信号处理。还充分利用了8255芯片和74LS373。系统统采用MSC-51系列单片机Intel8051和可编程并行I/O接口芯片8255A为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8031芯片的P1口设置红、绿灯燃亮时间的功能红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示〔交通灯信号通过PA口输出,显示时间直接通过8255的PC口输出至双位数码管〕;车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。。系统缺乏之处不能控制车的左、右转、以及自动根据车流改变红绿灯时间等。这是由于本身地理位子以及车流量情况所定,如果有需要可以设计扩大原系统来实现 。
7.设计体会
通过此设计,让我对8255,单片机有了更深的了解,通过对硬件的编程,微型计算机技术可以在很多工业生产和日常生活中得以应用,当然在计算机领域中更有举足轻重的作用,使我更有兴趣学习微机这门课程,虽然我们这学期已经完毕了这门课程,但利用课余时间我一定继续学习,更深入的了解这门深而广的课程。从而使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的根本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧〔特别是汇编语言〕的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的根底。
- word.zl
展开阅读全文