基于单片机的交通灯控制器的设计.docx
- 文档编号:11207586
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:24
- 大小:319.69KB
基于单片机的交通灯控制器的设计.docx
《基于单片机的交通灯控制器的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通灯控制器的设计.docx(24页珍藏版)》请在冰豆网上搜索。
基于单片机的交通灯控制器的设计
基于单片机的交通灯控制器的设计
摘要:
近些年,单片机的使用正跟着科学与技术的快速发展,慢慢逐渐深刻,并且引起以前的控制有了新变化。
在自控单片机应用体系和监测里,单片机通常都是核心部件,而且结合硬件结构做出了相关一些软件的设计,来改善单片机部分区域的不良。
此文描绘的是选择可编程的并行I/O接口的芯片8255A及MCS-51类的单片机英特尔8031研发的关于交通灯的控制器。
此文先讲述单片机的发展和相关说明,而后论述设计所要用的芯片的组成以及性能,详细讲述了控制器的软/硬件设计,以及实现过程,并从系统的安全方面考虑,设计了看门狗来控制电路。
关键词:
单片机;交通灯控制器;接口;安全性
DesignoftrafficlightcontrollerbasedonSinglechip
Abstract:
Inrecentyears,alongwiththescienceandtechnologyrapiddevelopment,themonolithicintegratedcircuitapplicationunceasinglywasmovingtowardsthoroughly,atthesametimeledthetraditionalcontroltochangewitheachnewday.Inthereal-timeexaminationandintheautomaticcontrolmonolithicintegratedcircuitapplicationsystem,themonolithicintegratedcircuitoftenistookacorepartuses,atthesametimeunifiestheconcretehardwarearchitecturetocarryonthecorrelationthesoftwaredesign,makesupthemonolithicintegratedcircuitincertainaspectsinsufficiencies.ThisarticledescribedtouseMCS-51seriesmonolithicintegratedcircuitIntel8031andprogrammableparallelI/Oconnectionchip8255Adesigntrafficlightcontrollerrealizationmethod.Thearticlefirstintroducedthemonolithicintegratedcircuitrelatedsituationandthedevelopingprocess,thendescribedthesystemdesigntoneedthechipthebasicstructureandtheperformance,indetaildiscussedthecontrollersoftwareandhardwaredesignanditstherealizationprocess,finallyembarkedfromthesystemsecureanglehasdesignedthewatch-dogcontrolcircuit.
Keywords:
Onlyflatmachine;TrafficlightsControler;Connection;Security
目录
第一章引言1
1.1绪论1
1.2单片机概述1
1.3芯片的选择与简介1
1.3.1MCS-51芯片简介1
1.3.28255芯片简介5
第二章控制器硬件系统设计7
2.1交通管理的方案论证7
2.2系统硬件设计7
2.2.1系统总框图如下:
7
2.2.2交通灯控制线路图8
2.2.3系统工作原理8
第三章系统的软件设计11
3.1延时的应用11
3.2计数器硬件延时11
3.2.1计数器初值计算11
3.2.2计算公式11
3.2.31秒的方法11
3.2.4相应程序代码12
3.3软件延时13
3.4时间及信号灯的显示13
3.4.1STC89C52并行口的扩展14
3.4.2显示原理:
14
3.4.38255输出信号的放大:
14
3.4.48255输出信号与信号灯的连接:
15
3.4.58255与STC89C52的连接:
16
3.5程序设计16
3.5.1流程图16
3.5.2系统内存分配和I/0接口使用16
第四章看门狗硬件电路19
4.1软件看门狗19
4.2硬件看门狗18
结论20
参考文献21
第一章引言
1.1绪论
信号灯的横空出世,让交通高效的得到了管制,在疏通路口流量、改善马路通行方面,有显著的效果,并减少了交通事故。
70年代颁布的《道路交通和道路标志信号协定》划定了所有交通灯的意义。
绿色的信号灯是允许通行的信号,车身正面显示绿灯,说明允许直行,左/右转。
左/右转弯的车必须让在路口中合法通行的车、过人行道的路人优先通行。
红色信号灯代表禁止通行,车身正面显示红色信号灯的车主驾车时,要在岔口的停车线前停。
黄色的信号灯代表预警信号,车辆正面显示黄灯的车主驾车时,禁止越过停车线,但对于已经非常靠近停车线,并难以正常停下来的这种情况,该车允许驶入路口。
1.2单片机概述
单片机,又叫单片机微型计算机,它是微型计算机中很有活力的一种。
单片机非常适合控制领域,所以又称作微控制器。
在一般情况下,单片集成电路所组成的单片机,与计算机的基本组成部分有以下相同部件:
CPU,内存,I/O接口电路。
因此,外部设备与合适的软件工作组成了单片机控制系统。
通过3代的研究,单片机如今在往多品种、高性能的路上发展,其内部功能在增多,引脚越来越多,并且所需电压越来越低,功耗越来越低。
1.3芯片的选择与简介
1.3.1MCS-51芯片简介
MCS-51单片机中,最经典的一种类型,即为8051,现在将这种具有标志性意义的类型,作具体的描述。
该机型有中央处理器和计数/定时器,以及数据存储器(RAM)/程序存储器(ROM),另外还有计数器和定时器,串/并行接口,以及中断系统等其他单元,数据和地址,以及控制三大总线,以下分类描述:
1.中央处理器:
中央处理器,称为CPU,是主要部分,可以处置八位代码和2进制数据,并担当把持、批示、调节单位体系的和谐作业,实现把持完整的输入和输出控制和运算等。
2.数据存储器(RAM)
其包含128个同一地址八个用户的数据的存储及寄存器单元,专用的寄存器仅可存放指令数据,用户不可以寄存数据,因此,可以用的存储器仅有一百二十八个,用于存/放读写,计算。
数据总线
地址总线
控制总线
图18051内部结构
3.定时/计数器:
其含有二个十六位的计数器、定时器,用来计数或定时的发出中断,控制转变方向。
4.程序存储器(ROM):
其总计有4096个八位的Rom,来存储用户程序及数据资料。
5.并行输入输出(I/O)口:
其有四组八位I/O口(P0-P3),用来传输外部的数据。
6.中断系统:
其可以比较好的中断,因为其有2个外部的中断、定时器中断、计数器中断、串行中断,能符合各种控制条件,而且有2种级别的选取。
7.时钟电路:
其内部装有时钟电路,最大频率为12MHz,可激发脉冲供单片机作业,且其需要外部配置振荡电容。
其主要分为以下2个形式:
一类是数据跟程序分开形式的存储器,还有类是使用计算机的数据跟程序存储器融合的结构。
MCS-51单片机用的是分开形式,之后的MCS-96单片机采用的是融合的结构。
图2MCS-51结构图
引脚说明:
这款MCS-51单片机的8031、8051、8751都采纳40Pin封装,双列DIP结构,包括2根正电源和地线,2根石英振荡器的时钟线,四种八位合计三十二个I/O口,中断口和P3口合用。
图3MCS-51引脚说明
Pin9:
RESET/Vpd信号的复用脚,在8051通电的时候,该时钟电路可以作业,并呈现最低二十四个时钟周期的高电平,复位初始化。
之后,程序的计数器为0000H,P0到P3输出口都是高电平,堆栈指针为07H,剩下的专用寄存器归零。
RESET电平从高减少到低,就从0000H地址从新执行。
但是,它不改变RAM的状态(包含的寄存器有R0-R7),以及8051的始状态。
其复位方式能为自动复位,亦能为手动复位。
另外,RESET/Vpd仍然是一复用脚,Vcc掉电此间,该脚能接备用的电源,用来确定单片机内RAM的数据不遗失。
图4复位图
Pin30:
/
访问内部,ALE端会产生六分之一时钟频率的正脉冲信号,该脉冲信号能识别单片机工作与否,亦能作为一个时钟往外部输出。
一旦访问外部程序器,地址锁存的输出就会锁存地址的低位字节,而且ALE将忽略下个脉冲信号。
另外当EPROM编程的时候,
主要用来输入编程的脉冲。
Pin29:
访问外部,该脚输出负脉冲信号,十六位地址数据会出现在P0及P2口,而外部程序存储器会把指令数据放在P0口上,让CPU读取和执行。
pin31:
EA/VPP程序存储器的栅极线,8051和8751单片机内部设备的大小是4KB的程序存储器,只有EA水平高,程序的地址小于4,读内部程序存储器的指令数据,否则读外部指令数据。
如EA电平为低,那么无论地址如何,都读外部程序存储器的指令。
因此,里面没有程序存储器的8031,EA端要接地。
编程的时候,EA/Vpp脚必须通上21伏的编程电压。
1.3.28255芯片简介
其有三个输入/出的端口,也就是A/B/C口,映射引脚PA7至PA0、PB7至PB0和PC7至PC0。
同时,它还包含控制寄存器,也就是控制口。
一般来说,A/B口会定义为输入输出的数据端口。
而C口是用来控制“或”状态的,在方式字的调配下,能分为四位端口,各端口都有个四位锁存器,都和各自的A/B端口共同运作,能用来调配信号输出,也能成为状态信号输入。
8255可编程并行接口芯片方式控制字格式说明:
其有两类调配命令字,一种为方式选择控制字,还有种是C口根据位置位/复位控制字,这种方法用起来比较麻烦,不方便阐明,故不具体分析,要用的时候可以去查阅相关知识。
方式控制字格式说明如表1:
D7:
定义工作方式标志,为1时有效。
D6、D5:
A口方式选择
00—方式0
01—方式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=输出)
其运行方法说明:
方式0:
基本输入/输出方式。
可以用在3个端口中的每个。
且每个端口均能当作输入及输出。
输出可以被锁存,但是输入不可以锁存。
方式1:
选通输入/输出方式。
该状态下,A和B口的八位外设线被当作输入及输出,而C口中的三条线会用来传输数据及中断请求。
方式2:
双向总线方式。
仅当A口含双向总线方式,八位外设线用来为输入以及输出,而C口中的五条线用来发出通讯联络和中断请求。
第二章控制器硬件系统设计
2.1交通管理的方案论证
A、B两条路相交,有一个十字路口,每条路上都有组三色交通指示灯,保证过往的车辆及行人安全通行。
红灯亮代表不允许通行,绿灯亮代表允许通行。
黄色信号灯亮,则是预警信号,告诉路过的人和车,该路上马上就不允许通过了,同时,黄色信号灯的点亮时长为A、B两条路上的车辆停车时长。
令A道的车流量比较大,则信号灯亮的方案如下表2所示。
表2
分析:
(1)黄色信号亮的时候,两条路都是黄灯亮,警示过往行人及车辆马上到红灯,即将禁止通行时间设置为3秒。
(2)当A为红灯亮时,A路的车不可以通行,行人可以通行;当B为绿灯亮时,B路的车可以通过,行人不可以通行。
时间设置为60秒。
(3)当A为绿灯亮时,A路的车通行;B为红灯亮时,B路车不可以通过,行人可以通行。
时间设置为80秒。
因为A路的车多通行时间久。
(4)此表可根据车流量动态设定。
2.2系统硬件设计
要使用的仪器有:
8031弹片机1片,8255并行通用接口芯片1片,74LS07两片,max692“看门狗”1片,7805三端稳压电源1个,交通信号灯分别有2个,2个双向晶闸管和共阴极的7段数码管,另有若干开关键盘、连线。
2.2.1系统总框图如图3所示:
图6系统总框图
2.2.2交通灯控制线路图
图7交通灯控制线路图
2.2.3系统工作原理
(1)先用键盘设置交通灯的起始时间,然后用8031单片机的P1口输入系统[]。
(2)由8031单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PC口显示红、绿、
黄灯的燃亮情况由PC端显示,每个灯的倒计时时间PA、PB分别显示个位与十位。
(3)每个信号灯由STC89C52单片机控制时间,黄色、绿色、红色的时间依次为3秒、60秒、3秒、80秒,3秒这样的周期,数据输出STC89C52单片机8255P0。
(4)对系统的初始值设定,是由STC89C52单片机P3.0控制的,系统初始化,则P3.0为0,开始工作,则P3.0为1。
(5)PB口和8255PA口分别输出时间和十位,由单片机驱动芯片控制74LS07,PC终端连接的双向晶闸管使用220V交流电压。
(6)指令的看门狗可以当报警系统发出一个中断信号,所以它可以添加到该指令在交通控制程序。
复位信号的复位系统是可用的输入端口芯片MAX692WDI的看门狗控制的。
第三章系统的软件设计
3.1延时的应用
对于延时,现有两种方法可用,其一是软延迟,其二是用MCS-51单片机内部定时器溢出中断控制。
3.2计数器硬件延时
3.2.1计数器初值计算
当定时器运行的时候需要给计数器传输初值,其是运输到TH以及TL里。
它通过加法记数,当从全1到全0的时候,就会自动产生溢出,然后中断请求。
因此,我们可以把记录到零值测量计数器设置为C,计数初始值设置为TC,计算公式可以由下面的获得:
TC=M-C
在这个通式中,M是计数器的摸值,这个数据与计数器的工作方式相关。
其中,方式0的时候,M等于213;而当方式1的情况,M等于216;而其他方式的时候,值为28。
3.2.2计算公式
T=(M-TC)T计数
或
TC=M-T/T计数
T计数=TCLK(单片机时钟周期)×12;
公式中TC代表定时初值。
可以这么说明,单片机的主脉冲频率是TCLK12MHZ ,通过12分频。
方式0 TMAX=213 *1微秒=8.192毫秒
方式1 TMAX=216 *1微秒=65.536毫秒
按此类方式可明确得出下面结论,1秒钟比计数器的最大定时的时间还要大,所以我们没有其他办法来解决这项问题,只除了采用定时器与软件彼此结合的办法。
3.2.31秒的方法
于主程序当中,我们可以设置一个初始值等于二十的软件计数器,然后设置T0定时50毫秒.在此状态下,只要在T0到50毫秒的时候,CPU将会通过它的溢出中断请求,然后开始中断服务的子程序。
并且,在中断服务的子程序的时候,CPU通常将首先让软件计数器减去1,同时检查它是不是等于零。
等于零的话,就说明1秒在这个时候,足够返回到输出时间显示程序。
3.2.4相应程序代码
(1)主程序
定时器需要定时50毫秒,所以T0工作于方式1。
初值:
TC=M-T/T计数 =216 -50ms/1us=15536=3CBOH
ORG1000H
START:
MOVTMOD,#01H;令T0为定时器方式1
MOVTH0,#3CH;装入定时器初值
MOVTL0,#BOH ;
MOVIE, #82H;开T0中断
SEBT TRO ;启动T0计数器
MOV RO, #14H ;软件计数器赋初值
LOOP:
SJMP$ ;等待中断
(2)中断服务的子程序
ORG 000BH
AJMP BRT0
ORG00BH
BRTO:
DJNZR0,NEXT
AJMPTIME;跳转到时间及信号灯显示子程序
DJNZ:
MOV R0,#14H ;恢复R0值
MOVTH0,#3CH;重新装入定时器初值
MOVTL0,#BOH ;
MOVIE, #82H
RET1
END
3.3软件延时
MCS-51的工作频率的范围,是2-12MHZ,本文中,我们选择的8031是一种频率等于6MHZ的单片机。
其中,T(机器周期)和主频直接相关,T必须等于主频的12倍,因此T(机器周期)等于12×(1/6M)=2us。
我们可以知道每个指令周期的具体数量,这样我们就可以根据指令执行的方法来确定1秒的时间。
具体的延时程序分析如下:
DELAY:
MOVR4,#08H延时1秒子程序
DE2:
LCALLDELAY1
DJNZR4,DE2
RET
DELAY1:
MOVR6,#0延时125ms子程序
MOVR5,#0
DE1:
DJNZR5,$
DJNZR6,DE1
RET
MOVRN,#DATA字节数为2,机器周期数为1,所以这条指令的执行时间为2ms。
DELAY1是一个双重循坏,其次数为256*256=65536,因此延时时间=65536*2=131072us,大概是125usDELAYR4设定初始值等于8,主延时程序循环8次,因此,125us*8=1秒。
因为单片机的功能极强,运行的非常快,导致别的程序等消耗的时间基本上能直接忽略。
3.4时间及信号灯的显示
3.4.18031并行口的扩展
当使用对外输出时间的时候,其个位、十位、信号灯的显示皆应该使用一个I/O端口,可以看出来,很明显,8031的端口肯定不满足,这是由于8031纵使有4个八位I/O端口,但是事实上可以供应的,仅仅只有P1口,由于P2和P0口大部分情况下,都是来传送外部的地址以及数据,P3口其实还有一个属于它的第二功能。
所以,8031通常需要扩展。
而扩充8031的方式,一般为这样两种:
(1)通过外部RAM地址,然后扩充I/O端口;
(2)使用I/O接口新片扩充。
此文则是使用8255并行接口信片来扩充I/O端口。
3.4.2显示原理:
当定时器定时为1秒,时程序跳转到时间显示及信号灯显示子程序,它将会依次显示信号灯时间,同时一直显示信号灯的颜色,这时再返回定时子程序定时1秒,再显示黄灯的下一个时间,这样依次把所有的灯色的时间显示完后在重新给时间计数器设置初值,然后重新进入循环[]。
3.4.38255输出信号的放大:
为了使行人可以看见信号灯的情况,就必须把8255输出的信号进行放大,这里我们用VT为双向晶闸管,当门极为高电平时晶闸管导通,该支路指示灯亮;而当门极为低电平时关断,则该支路指示灯灭[]。
如图2
我们采用连接7段数码管的方法来连接晶闸管。
3.4.48255输出信号与信号灯的连接:
LED灯的显示原理:
通过同名管脚上所加电平的高低来控制发光二极管是否点亮从而达到显示不同的字形的目的,如SP,g,f,e,d,c,b,a管角上加上7FH所以 SP上为0伏,不亮其余为TTL高电平,全亮就会显示为8[].
采用共阴级连接:
其中PA0\PB0-a,PA1\PB1-b,
PA2\PB2-c,
PA3\PB3-d,
PA4\PB4-e,
PA5\PB5-f,
PA6\PB6-g,
PA7\PB7-SP接地
表3驱动代码表
3.4.58255与STC89C52的连接:
与p0.7STC89C52单片机P0口连接的芯片选择信号CS8255,利用STC89C52地址译码方式:
当p0.7=0,选择有效的芯片,其他则为无效,p0.1用于选择8255端口。
表4地址表
之所以STC89C52P0口不发生冲突,是因为总会有STC89C52分开控制8255和储存器。
3.5程序设计
3.5.1流程图
图5程序流程图
3.5.2系统内存分配和I/0接口使用
1.程序空间(64k)
表5
2.I/O接口使用
8255用户程序区的端口地址如表6所示:
表6
我们在运用I/O接口的地址时要让独特的调用功能程序去控制接口电路,以弥
补该地址不能占用STC89C52外部数据空间的地址的缺陷。
(1)然后根据定时器的定时时间,在主程序中按照一定的间隔插入复位定时器的指令,也就是插入监控指令,两条指令之间的时间间隔应该要小于定时时间,否则看门狗将会发生错误动作[]。
(2)最后在定时器的中断服务程序里设置一条无条件转移的指令,将程序计数器PC转移到初始化程序的入口[]。
软件看门狗最大特点的就是不需要外加硬件电路,经济性好。
当然,如果片内的定时器/计数器被占用,那么就需要采用其他的设计方式了[]。
4.2硬件看门狗
专用硬件看门狗指的是一些集成化的或集成在单片机内的专用看门狗电路,其实也就是一个特殊的定时器,在定时的时间到了的情况下,系统会发出溢出脉冲。
此类方式是类软件与片外专用电路相互结合的技术,在硬件电路全部连接完以后,于程序里面加上合适的一些看门狗复位的指令,从而保障程序在正常工作的时候,看门狗不发出溢出脉冲。
而在程序运行异常的时候,看门狗超时发出溢出脉冲,通过单片机的RESET引脚使单片机复位。
这种方式中,看门狗能否可靠有效地工作,与硬件组成及软件的控制策略都有密切的关系[]。
现在常用的集成看门狗电路有很多,如MAX705~708、MAX813L、X5043/5045等。
看门狗电路可以分为内看门狗和外看门狗。
看门狗电路指的是看门狗的硬件电路包含在单片机的内部,如Microchip的16C5x系列,MOTOROLA的68C05系列,51内核中比较典型的有Atmel公司的AT89C55WD、AT89S8252,Winbond公司的W77E58,SST公司的SST89C58以及Philips公司87系列的多种型号的单片机等[]。
当单片机没有看门狗定时器或是认为内部看门狗已经不可靠时,就可以采用外部看门狗定时器。
外部看门狗电路既可以用专用看门狗芯片,也可由普通芯片来实现[]。
这里,以专用芯片MAX692作为外部看门狗的电路。
MAX692是微型系统监控电路芯片,具有后备电池切换、掉电判别、看门狗监控等功能[]。
其封装和引脚说明如图10所示:
VOUTVBATT
VCCRESET
GNDWDI
PFI/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 交通灯 控制器 设计