1、1、 系统功能要求:1. 设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制。时间方向 控制要求白天 东西 绿灯 黄灯 红灯 南北 红灯 绿灯 黄灯晚上 东西 黄灯 南北 红灯2.总体设计方案现在流行的一种设计为两主干线相交的十字路。本设计采用一主干道(南北方向) ,一从干道(东西方向)的路口,即主干道的通行时间为从干道的 2 倍。在正常情况下,两干道的交通灯按图 1 进行转换,并以倒计数的方式将剩余时间显示在每个干道对应的两位 LED 上;另发挥部分为当出现紧急情况时,路口的交通灯全为红灯,紧急情况解除时,恢复到原来的状态。二、 总体设计方案提示:1.假设一个十字路口为东西南北走向
2、。初始状态 0 为东西红灯,南北红灯。然后转状态 1东西绿灯通车,南北红灯。过一段时间转状态。2.东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态。3.南北绿灯通车,东西红灯。过一段时间转状态。4.南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态 1。三硬件设计电路原理图如下:2、程序设计ORG 0000HMOV P0,#00H ;确保 P0为低电位lJMP MAIN0ORG 0030HMAIN0: MOV 30H,#08HMOV R6,#00HMOV R7,#00HMOV DPTR,#TABLE ;取数码管的译码MOV TMOD,#01H ;设计定时方式及时间MOV TL0,#
3、0CDHMOV TH0,#0BHSETB TR0MOV IE,#00HMAIN: MOV P1,#0F3H ;南北绿灯,东西红灯MOV R6,#1EH ;红灯30s 倒计时MOV R7,#19H ;绿灯25s 倒计时MAIN1:CALL DELAY ;1S 延时子程序JB P0.1,REL1 ;判断是否有东西方向按钮按下CJNE R7,#00H,MAIN1 ;判断绿灯25s 是否倒计完MOV P1,#0F5H ;南北黄灯,东西红灯MAIN2:CALL DELAYMOV R7,#00H ;红灯继续倒计时,黄灯闪烁,保持0sCPL P1.1 ;黄灯闪烁CJNE R6,#00H,MAIN2 ;判断红
4、灯是否倒计时完MOV P1,#0DEH ;南北红灯,东西绿灯MOV R7,#1EHMOV R6,#19HMAIN3:CALL DELAYJB P0.0,REL2CJNE R6,#00H,MAIN3MOV P1,#0EEHMAIN4:CALL DELAYMOV R6,#00HCPL P1.4CJNE R7,#00H,MAIN4JMP MAINREL1:MOV P1,#0F5H ;东西方向按钮按下,南北方向强制由绿灯变成黄灯警告MOV R6,#05HMOV R7,#00H JMP MAIN2 REL2:MOV P1,#0EEH ;南北方向按钮按下,东西方向强制由绿灯变成黄灯警告MOV R7,#05
5、HMOV R6,#00HJMP MAIN4;1s 延时子程序DELAY:MOV A,R6 ;进行南北方向倒计时时间的十进制调整MOV B,#0AHDIV ABMOVC A,A+DPTR ;找寻相应的数码管代码MOV P2,#01HMOV P3,A ;输出个位MOV R4,#4 ;降低动态显示频率LOOP2:MOV R3,#125LOOP3:DJNZ R3,LOOP3DJNZ R4,LOOP2MOV A,BMOVC A,A+DPTRMOV P2,#02H ;输出十位MOV P3,AMOV R4,#4LOOP4:MOV R3,#125LOOP5:DJNZ R3,LOOP5DJNZ R4,LOOP4
6、MOV A,R7 ;进行东西方向倒计时时间的十进制调整MOV B,#0AHDIV ABMOVC A,A+DPTRMOV P2,#04HMOV P3,AMOV R4,#4LOOP6:MOV R3,#125LOOP7:DJNZ R3,LOOP7DJNZ R4,LOOP6MOV A,BMOVC A,A+DPTRMOV P2,#08HMOV P3,AMOV R4,#4LOOP8:MOV R3,#125LOOP9:DJNZ R3,LOOP9DJNZ R4,LOOP8JBC TF0,LOOP ;判断是否计满125msAJMP DELAYLOOP:MOV TL0,#0CDH ;计满125ms 重新给定时器赋值MOV TH0,#0BHMOV A,30HDEC AMOV 30H,AJNZ DELAY ;判断是否计满8次125ms ,即1sDEC R6 ;计满1s,东西倒计时减 1,南北倒计时减1DEC R7MOV 30H,#08H ;重新1s 次数,重新计时RETTABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;相应数值的数码管代码DB 92H,82H,0F8H,80H,90H END