
C51单片机的交通灯控制系统.docx
14页基于C51单片机的交通灯控制系统1、实验方案论证:进行十字路口的交通信号灯控制电路设计,画出电路原理图及实验电路图,进行软件编程、以及使用说明文档的建立等一整套工作任务 进行十字路口的交 通信号灯控制程序设计,提交一个符合上述功能要求的十字路口的交通信号灯控 制系统设计2、控制流程分析:对设计要求进行分析后可得出以下交通工作状态表:车道状态东西雨北〃1红红红红#7 Jar绿10S绿10S红10S红1眸3黄闪5次黄闪5次a红山4红10S红1吟绿1噫绿 10S+J5红红邓)5次黄闪5次/3、硬件设计概要:根据设计要求,可用6个LED灯分别模拟东西、南北的交通灯具体接法 如下:AT89C51的P1 口接LED灯,P1.0、P1.1、P1.2分别接东西方向红、绿、 黄交通灯,P13 P14 P1.5分别接南北方向的红、绿、黄交通灯P1 口和LED 灯之间要接限流保护电阻两位数码管段选接 P2 口,位选接P0 口低两位,P0口低两位接上拉电阻使其可以输出高电平 紧急情况按钮一端接地,另一端与外 中断1引脚相连;恢复正常按钮一端接地,另一端与外中断 0引脚相连三、原理图设计1、LED显示部分电路设计:把单片机AT89C51的P1 口作为红黄绿灯显示部分,用 6个LED灯分别模 拟东西、南北的交通灯。
P1.0 P1.1、P1.2各通过一个300的限流保护电阻接 东西方向的红、绿、黄LED灯;P13 P14 P1.5各通过一个300的限流保护 电阻接南北方向的红、绿、黄 LED灯LED灯的一端接电源,另一端经电阻接 P1 口,因此当P1 口引脚输出低电平时LED灯发光,即此方案采取低电平驱动方式具体电路如下:匕方向U1 1fXTALIXTAL2RST”EN11 JD 9嚼 14-5 -P3 D/RXD P3.1(D(Ei P3.2/lNlOP3 3丽用P3.4TT10P3.5/T1P3.7/Rn2、紧急情况处理电路设计:紧急情况按钮一端接地,另一端与外中断1引脚相连;恢复正常按钮一端接 地,另一端与外中断0引脚相连在程序设计时,我会将其设置为下降沿触发方 式具体电路如下:10l 1 a * - ||二 ». - --I——N :: :「:■::::玉L J——L 紧急情况按钮I tii ■ ■ ■■ 1111ati ■ h e 4 n. ■3、数字显示电路设计:选用共阴极两位数码管两位数码管 A〜G引脚各通过一个300的限流保护电阻分别接P2.0〜P2.6,位选1引脚和2引脚分别接P0.0 口低两位,P0 口低两位接5kQ的上拉电阻使其可以输出高电平。
4、其他部分电路:XTAL1端和XTAL2端之间接一个12M Hz的晶振,冉各接一个30pF的普通电容后接地;RST复位端一端经10uF的电解电容接+5V电源,一端经一个10K 的电阻接地具体电路如下:C1C2口 X1CRYSTAL>XTAL118::30pF:RSTPOWADO PO.1/AD1 FO.2fMi2 P0.3/AD3 PO.4/AD4 P0.WAD5 PO日同D6 PO.7/AD710kC310uF迎31・PSENAL£ EA:P2.O/ABP2廿朋P2.2/A1DP2.3/A11P2.4^A12P2.5/A13R3SK
根据公式可知若已知要求的定时时间为t,则定时器的初值为x (其中fosc=12M Hz):x=产-1*需 J. Zj需要定时器的定时时间为50ms,根据公式计算得出X=15536,因此定时器 初值的低位TL0= (0B0H),高位TH0= (3CH)2、程序流程图:2. 1主程序流程主程序主要是对单片机进行初始化初始化首先要开放总中断、定时器 T0 中断以及外部中断0和外部中断1其次是设置中断优先级,把外中断 0设置为 高优先级,外中断1设置为低优先级再次是给定时器 T0装顶初值,然后后是 启动定时器,是使定时器开始定时最后是等待中断2.2紧急情况中断处理流程紧急情况中断处理包括两部分,第一部分是出现紧急情况可以手动使东西、 南北方向红灯全亮,而且直到紧急状况解除后才能恢复正常通车这就要求紧急 状况解除前不能退出外中断1处理程序,因此要在外中断1处理程序处设置一无 限循环第二部分是紧急状况解除为了使外中断1处理程序退出无限循环,可 用中断嵌套使机器转去执行外中断 0处理程序,而外中断0处理程序修改了寄存 器R2的值,中断返回后由于寄存器 R2的值的改变使外中断1处理程序跳循环2.2.1 外中断1处理程序(低优先级)2.2.2 外中断0处理程序(高优先级)-9 -1.3定时器中断处理流程中断返回.3、程序源代码:ORG 0000H AJMP START ORG 0003H AJMP SERV0 ORG 000BH AJMP SERV1 ORG 0013H AJMP SERV2 ORG 0030HSTART:MOV IE,#87H MOV IP,#01H MOV TMOD,#01H MOV TCON,#05H MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR,#TAB MOV P1,#0F6H MOV R0,#20 MOV R5,#00H MOV R6,#00H SETB TR0LOOP1:MOV P0,#02H MOV A,R6MOVC A,@A+DPTR;外中断0入口;外中断1入口;定时器中断入口;设置中断优先级;装定时器初值;装表首地址;启动定时器;循环动态显示,由10秒开始倒计时MOV P2,AACALL D10MSMOV P0,#01HMOV A,R5MOVC A,@A+DPTRMOV P2,AACALL D10MSAJMP LOOP1-19 -;正常状态恢复程序,使R0的值不为0;未到1秒,则转到NEXT;减1秒;显示为0;东西方向红灯亮,则转到 CHE0;东西方向绿灯灭;东西方向黄灯闪烁5次;东西方向红灯亮,南北方向绿灯亮;南北方向绿灯灭SERV0:MOV R2,#0FFH RETISERV1:DJNZ R0,NEXT CJNE R5,#01,DHE0 AJMP DHE3DHE0: CJNE R5,#00H,DHE1 CJNE R6,#00H,DHE2 MOV R5,#00H MOV R6,#01H MOV P1,#0F5H AJMP OUT0DHE1: DEC R5AJMP OUT0DHE2: MOV R6,#00HMOV R5,#09HOUT0: MOV R0,#20RETIDHE3: MOV P0,#00HMOV P2,#3FHMOV A,P1MOV R1,#05HJNB ACC.0,CHE0YELL0:SETB P1.0SETB P1.1CLR P1.2 ACALL DMS SETB P1.2 ACALL DMS DJNZ R1,YELL0 MOV P1,#0EEH SJMP NEXT1CHE0: JNB ACC.3,CHE1YELL1:SETB P1.3SETB P1.4CLR P1.5ACALL DMSSETB P1.5ACALL DMSDJNZ R1,YELL1 CHE1: MOV P1,#0F5H NEXT1:MOV R0,#20MOV R5,#00HMOV R6,#01HNEXT: MOV TH0,#3CHMOV TL0,#0B0HRETISERV2:MOV P0,#00HMOV P2,#3FHMOV R5,#00HMOV R6,#00HMOV R2,#00HMOV P1,#0F6HLOOP3:CJNE R2,#00H,OUT1MOV R3,#02HDJNZ R3,LOOP3OUT1: RETIDMS: MOV 32H,#4DL0: MOV 31H,#200DL1: MOV 30H,#250DL2: DJNZ 30H,DL2DJNZ 31H,DL1DJNZ 32H,DL0RETD10MS:MOV 33H,#50DL3: MOV 34H,#100DL4: DJNZ 34H,DL4DJNZ 33H,DL3RET;延时子程序,延时10毫秒;南北方向黄灯闪烁5次;南北方向红灯亮,东西方向绿灯亮;重置显示为10秒;重装定时器初值;显示为0;紧急状况服务程序,使R2的值为0;R2的值为0,则无限循环,直到执行 SERV0状;态恢复程序,使R0的值不为0才返回;延时子程序,延时0.4秒TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND五、仿真结果与分析在PROTEUS软件仿真中的结果如下:1、初始状态■ ■ ci ■。
