《交通灯控制系统的设计论文.doc》由会员分享,可在线阅读,更多相关《交通灯控制系统的设计论文.doc(14页珍藏版)》请在三一办公上搜索。
1、交通灯控制系统的设计 摘要:我国目前各大、中城市都更新替换了原始的交通信号灯,即不仅有灯的转换,而且增加了计时系统,为广大群众行驶提供了方便。本文主要通过自主的设计和调试一个简单实际系统,熟练单片机仿真系统的使用方法,达到提高综合运用相关知识的能力,进一步熟悉和掌握Protel99的使用方法。关键词:单片机 交通信号灯 振荡电路 复位电路一、设计基本要求1.采用89C52单片机芯片控制交通信号灯。2.以南北方向的交通灯为例,结合实际情况,控制红、黄、绿交通灯。3.红、黄、绿交通灯的亮和灭的时间可以调节。4.采用数码管显示红或绿交通灯的剩余时间。5.通过按键或拔动开关设定红或绿交通灯亮一次的时间
2、。6.控制东西方向和南北方向的红、黄、绿交通灯的亮与灭。7.控制键的原理图和接线图用Protel99绘图软件绘制。二、总体设计论证本实验板采用89C52为主芯片,板上安装了6位数码管,12个发光二极管,四个按钮开关,一个振荡器。1.89C52介绍AT89C52S是ATMEL公司生产的低电压,高性能CMOS8位单片机,片内8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存储数据存储器,期间采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS51指令系统及8052产品兼容,片内置通用8位中央处理器(CPU)和FLASH存储器,功能强大AT89C52单片机使
3、用于许多较为复杂控制应用场合。AT89C52提供以下标准功能:8K字节FLASH闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时器,一个6响亮两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两中软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/记数器,串行通信口及中断系统继续工作。掉电方式保存RAM的内容,但震荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。2.89C52引脚功能: Vcc 电源提供掉电空闲正常工作电压 GND 接地 P0.0-0.7 P0 口 P0 口是开漏双向口可以写
4、为1 使其状态为悬浮用作高阻输入P0 也可以在访问外部程序存储器时作地址的低字节在访问外部数据存储器时作数据总线此时通过内部强上拉输出1 P1.0-1.7 P1 口 P1 口是带内部上拉的双向I/O 口向P1 口写入1时P1 口被内部上拉为高电平可用作输入口当作为输入脚时被外部拉低的P1 口会因为内部上拉而输出电流(见DC 电气特性) P1 口第2 功能T2(P1.0) 定时/计数器2 的外部计数输入/时钟输出(见可编程输出)T2EX(P1.1) 定时/计数器2 重装载/捕捉/方向控制 P2.0-2.7 P2 口 P2 口是带内部上拉的双向I/O 口向P2 口写入1时P2 口被内部上拉为高电平
5、可用作输入口当作为输入脚时被外部拉低的P2 口会因为内部上拉而输出电流,在访问外部程序存储器和外部数据时分别作为地址高位字节和16 位地址(MOVX DPTR)此时通过内部强上拉传送1 当使用8 位寻址方式(MOVRi)访问外部数据存储器时,P2 口发送P2 特殊功能寄存器的内容 RST 复位 当晶振在运行中只要复位管脚出现2 个机器周期高电平即可复位内部有扩散电阻连接到Vss 仅需要外接一个电容到Vcc 即可实现上电复位 ALE 地址锁存使能 在访问外部存储器时输出脉冲锁存地址的低字节在正常情况下ALE 输出信号恒定为1/6 振荡频率并可用作外部时钟或定时注意每次访问外部数据时一个ALE 脉
6、冲将被忽略ALE 可以通过置位SFR 的auxlilary.0 禁止置位后ALE 只能在执行MOVX 指令时被激活 PSEN 程序存储使能当执行外部程序存储器代码时PSEN 每个机器周期被激活两次在访问外部数据存储器时PSEN无效访问内部程序存储器时PSEN 无效 XTAL1晶体1 反相振荡放大器输入和内部时钟发生电路输入 XTAL2 晶体2 反相振荡放大器输出3.工作原理:采用单片机的I/O口P1口直接和交通灯连接, 控制程序放在89C52单片机的ROM中,在十字路口的四组红、黄、绿交通灯中,A道上的两组同色灯蝉联一起,B道的两组同色灯也彼此互联,受单片机P110P115控制,由于交通灯为发
7、光二极管且阳极通过限流电阻和电源正极连接,因此I/O口输出低电平时,与之相连的相应指示灯会亮I/O口输出高电平时,相应指示灯会灭,以中断方式输入单片机,无中断请求时,通过电阻和电源正极连接为高电平,单片机执行主程序,有中断请求时,中断引脚接地为低电平,产生中断请求,单片机执行中断服务程序。4.总原理接线图附后三单元电路设计1. 振荡电路 由于单片机需要高稳定,高频率的实基脉冲,因此需要晶体振荡器。89C51在XTAL1, XTAL2两管脚接晶体振荡器。在晶体振荡器的两端并联两个电容C1,C2参数为30pF,对振荡器频率有微调作用,振荡范围为1.2MHz 12MHz。2. 复位电路 紧急情况与复
8、位按钮:复位电路3. 共阴极LED显示主芯片的P1端口接了8个发光二极管,这些发光二极管的负极接到P1端口各引脚,而正极则通过一个排电阻接到正电源端,这样,这些发光二极管亮的条件就U1的P1口相引的引脚为低电平,即如果P1口某引脚输出为0,相应的灯亮,如果输出为1,相应的灯灭。 例:MOV P1,#0FH 该行程序将使发光二极管L1-L4熄灭,而L5-L8点亮。4.数码显示电路 U1的P0口和P2口的部份引脚构成了6位LED数码管驱动电路,这里LED数码管采用了共阳型,共阳型数码管的笔段引脚是二极管的负极,所有二极管的正极连在一起,构成公共端,即片选端,对于这种数码管的驱动,要求在片选端提供电
9、流,为此,使用了PNP型三极管作为片选端的驱动,共使用5只三极管,所有三极管的发射极连在一起,接到正电源端,它们的基极则分别连到P2.0P2.4,这样,当P2.0P2.4中某引脚输出是高电平时,三极管不导通,不能给相应位的数码管供电,该位数码管的所有笔段都不亮,反之,如果某引脚是低电平时,三极管导通,可以给相应的数码管供电,该位数码管是否点亮,点亮哪些笔段,取决于这些笔段引脚是高或低电平。所有5位数码管的笔段连在一起,通过限流电阻后接到P0口,因此,究竟哪些笔段亮,取决于P0口的8根线是输出高电平还是低电平。注意,为了简化线路板设计,减少跳线,P0口与笔段的连接并不“规矩”,即不是从最高位到最
10、低位依次连接,具体的连接方法可以参考电路图,这是单片机开发中常用的以“软”代“硬”的例子。四. 组装与调试1.组装安装时注意以下几个问题,第一是集成电路的缺口,要与丝印层一致,这样规范且在插集成块时不易出错;第二是排电阻的安装,排电阻上有点的一端是公共端;第三是三极管的安装,引脚不能安装错误,市面上常见的塑封型8050和8550引脚的判断方法是将三极管的扁平面朝向自己,引脚在下,从左到右依次是e、b、c,在丝印层图上已标e的位置,将e引脚插入该孔,其余引脚依次插好;第四是轻触按钮的安装,轻触按钮的外形看起来是四方的,但是其引脚两两之间的距离并不相同。第五是发光二极管的安装,比较讲究,不能落底安
11、装,这样在焊接时易损坏发光管,也不美观,在发光管的引脚上有被压扁的扁平部份,安装时即插到该位置。将12只发光管全部插好,反过来后先用少许焊锡点焊一只引脚,然后翻回到元件面,适当整形发光二极管,12只发光管高度一致,每三只排列在一条线上,返回印板面,焊好另一只引脚,再次反过来查看,如果仍有位置不妥当的,适当调整,完全调整好后,反过来将第一次焊的引脚全部重焊一遍,安装完成后,仔细观察线路板,清除可能存在的错误,暂时不要插入任何一块集成电路,用万用表的电阻档测试一下电源两端有没有短路现象,如果没有,就可以进行通电测试了。2.测试如果灯不亮,说明硬件电路工作不正常,大体有这样的几种情况: 1、振荡电路
12、未起振 有条件可以用示波器观察89C51的18脚的波形以确定是否起振,如果没有示波器可以用万用表分别测18脚和19脚的对地电压,如果两者的电压差在2V左右,说明振荡正常,否则是未起振,检测电容C1、C2和晶振是否损坏,安装是否正确。 2、复位电路未能正确工作 使用万用表测9脚,如果有电压,说明复位电路在正常工作时的状态不正常,查E1、R1、JP1和相关连接,否则说明正常工作时复位端电平正确;可以测一下复位工作过程是否正常,取一根电线,一端接在单片机的第九脚(RST脚),另一端与正电源端短接,然后撤去电线,如果电路已工作正常,说明复位电路工作不正常,同样要查E1、R1、JP1和相关连接。 3、如
13、果以上两处均正确,可能是发光二极管的正负极安装错误导致不亮,用电线短接P1端各引脚与地,看接在该引脚上的发光管是否亮,如果不亮,就是发光管装反了。将下面的这段测试程序的代码通过伟福仿真器进行测试:测试程序: MOV A,#0FEH LOOP: MOV P1,A RR A LCALL DELAY AJMP LOOP DELAY: MOV R7,#255 D1: MOV R6,#255 D2: DJNZ R6,D2 DJNZ R7,D1 RET END 如果灯不亮,说明硬件电路工作不正常,大体有这样的几种情况: 1、振荡电路未起振 有条件可以用示波器观察89C52的18脚的波形以确定是否起振,如果
14、没有示波器可以用万用表分别测18脚和19脚的对地电压,如果两者的电压差在2V左右,说明振荡正常,否则是未起振,检测电容C1、C2和晶振是否损坏,安装是否正确。 2、复位电路未能正确工作 使用万用表测9脚,如果有电压,说明复位电路在正常工作时的状态不正常,查E1、R1、JP1和相关连接,否则说明正常工作时复位端电平正确;可以测一下复位工作过程是否正常,取一根电线,一端接在单片机的第九脚(RST脚),另一端与正电源端短接,然后撤去电线,如果电路已工作正常,说明复位电路工作不正常,同样要查E1、R1、JP1和相关连接。 3、如果以上两处均正确,可能是发光二极管的正负极安装错误导致不亮,用电线短接P1
15、端各引脚与地,看接在该引脚上的发光管是否亮,如果不亮,就是发光管装反了。 实际中我们遇到过这样的问题,电容被安装了一个为27P,另一个为103(0.01uf),以上的测试一切正常,但是不能正常工作,因此,安装时要细心,出现问题还要注意查看。以上测试如果通过,说明电路板部份工作正常,可以利用伟福仿真器对电路板来做进行仿真了。五. 软件部分程序分主程序和中断程序,可采用汇编语言编程, 计时采用延时程序进行, 延时程序的执行时间为1 秒(若单片机的晶振频率为6MHZ) 用特殊功能寄存器PSW 的第6 位FO (PSW 15) 作A、B 通道的放行标志, PSW 15= 0 时,A 道放行, PSW
16、15= 1 时,B道放行。工作寄存器R4 作为计数器(对1 秒计数)。A 道放行时, R4 中存放立即数# 5AH (相当于十进制数90) , R4 计数90 次时,A 道放行正好90 秒; B 道放行时, R4 中存放立即数# 3CH (相当于十进制数60) , R4 计数60 次时,B 道放行正好60 秒, 还可根据控制过程中的实际情况来改变R4 中的数据,就能改变A、B 通道的放行时间。紧急车通过的处理用中断服务程序来控制。总系统流程图:中断服务程序流图如下:源程序:ORG 0000HLJMP STAR1A_BIT EQU 20H ;数码管个位数存放内存位置 B_BIT EQU 21H
17、;数码管十位数存放内存位置 TEMP EQU 22H ;计数器数值存放内存位置STAR1: MOV TEMP,#20 ;初始化计数器,从60开始 CLR P1.0 ;南北方向红灯亮 CLR P1.5 ;东西方向绿灯亮STLOP1: ACALL DISPLAY1 ;调用显示子程序 DEC TEMP ;对计数器减1 MOV A,TEMP ; CJNE A,#0,STLOP1 ;判断计数器是否满0? SETB P1.0 ;南北方向红灯灭 SETB P1.5 ;东西方向绿灯 ACALL SHAN ;调用黄灯闪烁程STAR2: MOV TEMP,#20 ;重新开始开始60秒倒数 CLR P1.2 ;南北
18、方向绿灯亮 CLR P1.3 ;东西方向红灯亮STLOP2: ACALL DISPLAY2 ;调用数码管显示子程序 DEC TEMP ;计数器减一 MOV A,TEMP ; CJNE A,#0,STLOP2 ;判断计数器是否为0? SETB P1.2 SETB P1.3 ACALL SHAN ;调用黄灯闪烁子程? SJMP STAR1 ;DISPLAY1:MOV A,TEMP MOV B,#10 DIV AB MOV B_BIT,B ;个位在B MOV A_BIT,A ;十位在A MOV DPTR,#NUMTAB ;指定查表启始地址 MOV R0,#12 ;DPL1: MOV R1,#250
19、;DPLOP1: MOV A,A_BIT ;取个位数 MOVC A,A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.3 ;开个位显示 ACALL D1MS ;显示162微秒 SETB P2.3 ;关闭个位显示,防止鬼影 MOV A,B_BIT ;取十位数 MOVC A,A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.2 ;开十位显? CLR P2.0 CLR P2.1 ACALL D1MS ;显示162微秒 SETB P2.2 ;关闭十位显示,防止鬼影 DJNZ R1,DPLOP1 ;循环执行250次 DJNZ
20、 R0,DPL1 ;循环执行250X4=1000次 RETDISPLAY2:MOV A,TEMP ;将TEMP中的十六进制数转换成10进制 MOV B,#10 ;10进制/10=10进制 DIV AB ; MOV A_BIT,B ;个位在B MOV B_BIT,A ;十位在A MOV DPTR,#NUMTAB ;指定查表启始地址 MOV R0,#12 ;DPL2: MOV R1,#250 ;DPLOP2: MOV A,A_BIT ;取个位数 MOVC A,A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.0 ;开个位显示 ACALL D1MS ;显示16
21、2微秒 SETB P2.0 ;关闭个位显示,防止鬼影 MOV A,B_BIT ;取十位数 MOVC A,A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.1 ;开十位显 CLR P2.2 CLR P2.3 ACALL D1MS ;显示162微秒 SETB P2.1 ;关闭十位显示,防止鬼影 DJNZ R1,DPLOP2 ;循环执行250次 DJNZ R0,DPL2 ;循环执行250X4=1000次 RETSHAN: MOV R3,#5 ;ROUND: CLR P1.1 ; CLR P1.4 ; ACALL DELAY ;黄灯闪烁五次 SETB P1.1
22、;每次间隔一秒 SETB P1.4 ; ACALL DELAY DJNZ R3,ROUND ; RET ;D1MS: MOV R7,#80 ;2+2X80=162微秒,延时按12MHZ计算 DJNZ R7,$ ; RET ;DELAY: MOV R6,#10 ;YL3: MOV R4,#100 ;XL2: MOV R5,#71 ;DL1: NOP ;一秒延时子程序 NOP NOP NOP NOPDJNZ R5,DL1 ; DJNZ R4,XL2 ; DJNZ R6,YL3 ; RET ;共阴数码管显示代码NUMTAB: DB 03FH ;0 DB 006H ;1 DB 05BH ;2 DB 0
23、4FH ;3 DB 066H ;4 DB 06DH ;5 DB 07DH ;6 DB 007H ;7 DB 07FH ;8 DB 06FH ;9 END六元件列表元 件类 型参 数数 量1电 阻金属膜510 202电 阻金属膜5.1k103三极管NPN 44电 容电解电容22uF 15电 容陶瓷电容30pF 26发光二极管LEDR / Y / G347晶 振12MHz 18按钮开关 4989C52 110单片机插座 211数码管 112电源插座 113万用表 114万用板 115导 线若干七. 心得体会本设计作为单片机的课程设计,既有理论设计,又有实践操作。在操作中,要经历设计调试再设计再调试直至成功的过程。这是一个能激发学生创造性、开发性的过程,使我们充分发挥自己的想象在可编程中的“可”字上下功夫,编制出各种各样的交通信号灯。这样不但可以调动我们学习的积极性还可使大家体验一个完整的科研设计过程。让我们在实训中提高自己的动手能力,激发了创造性和开发性。参考文献1余永权等编著单片机在控制系统中的应用北京:电子工业出版社,2004年2月 2家才主编单片机控制工程实践技术北京:化学工业出版社,2004年5月 3马忠梅等编著单片机的C语言应用程序设计电子工业出版社4徐爱钧,彭秀华编著 电子工业出版社
链接地址:https://www.31ppt.com/p-3934486.html