交通灯控制系统教学文案.doc
Good is good, but better carries it.精益求精,善益求善。交通灯控制系统-实训四交通灯控制系统当今,社会上的汽车越来越多,并且交通事故愈演愈烈,为了要减少此类的事情的发生,必须加强道路的管理。因此、合理设计交通灯控制系统可以大大减少此类事情发生。一、 系统功能要求:1. 设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制。时间方向控制要求2. 白天东西绿灯黄灯红灯南北红灯绿灯黄灯夜晚东西黄灯南北黄灯2.总体设计方案现在流行的一种设计为两主干线相交的十字路。本设计采用一主干道(南北方向),一从干道(东西方向)的路口,即主干道的通行时间为从干道的2倍。在正常情况下,两干道的交通灯按图1进行转换,并以倒计数的方式将剩余时间显示在每个干道对应的两位LED上;另发挥部分为当出现紧急情况时,路口的交通灯全为红灯,紧急情况解除时,恢复到原来的状态。二、 总体设计方案提示:1.假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态。2.东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态。3.南北绿灯通车,东西红灯。过一段时间转状态。4.南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。三硬件设计电路原理图如下:四、软件设计1、流程图计完25s后南北绿灯亮东西红灯亮判断东西南北倒计完计完25s后东西绿灯亮南北红灯亮计完30s后东西红灯亮南北绿灯亮1s延时后东西南北黄灯闪烁1s结束判断东西南北倒计完计完25s后南北绿灯亮东西红灯亮计完30s后南北红灯亮东西绿灯亮确保P0为0设定定时时间和方式绿灯25s倒计时红灯30s倒计时1s延时后东西南北黄灯闪烁1s开始2、程序设计ORG0000HMOVP0,#00H;确保P0为低电位lJMPMAIN0ORG0030HMAIN0:MOV30H,#08HMOVR6,#00HMOVR7,#00HMOVDPTR,#TABLE;取数码管的译码MOVTMOD,#01H;设计定时方式及时间MOVTL0,#0CDHMOVTH0,#0BHSETBTR0MOVIE,#00HMAIN:MOVP1,#0F3H;南北绿灯,东西红灯MOVR6,#1EH;红灯30s倒计时MOVR7,#19H;绿灯25s倒计时MAIN1:CALLDELAY;1S延时子程序JBP0.1,REL1;判断是否有东西方向按钮按下CJNER7,#00H,MAIN1;判断绿灯25s是否倒计完MOVP1,#0F5H;南北黄灯,东西红灯MAIN2:CALLDELAYMOVR7,#00H;红灯继续倒计时,黄灯闪烁,保持0sCPLP1.1;黄灯闪烁CJNER6,#00H,MAIN2;判断红灯是否倒计时完MOVP1,#0DEH;南北红灯,东西绿灯MOVR7,#1EHMOVR6,#19HMAIN3:CALLDELAYJBP0.0,REL2CJNER6,#00H,MAIN3MOVP1,#0EEHMAIN4:CALLDELAYMOVR6,#00HCPLP1.4CJNER7,#00H,MAIN4JMPMAINREL1:MOVP1,#0F5H;东西方向按钮按下,南北方向强制由绿灯变成黄灯警告MOVR6,#05HMOVR7,#00HJMPMAIN2REL2:MOVP1,#0EEH;南北方向按钮按下,东西方向强制由绿灯变成黄灯警告MOVR7,#05HMOVR6,#00HJMPMAIN4;1s延时子程序DELAY:MOVA,R6;进行南北方向倒计时时间的十进制调整MOVB,#0AHDIVABMOVCA,A+DPTR;找寻相应的数码管代码MOVP2,#01HMOVP3,A;输出个位MOVR4,#4;降低动态显示频率LOOP2:MOVR3,#125LOOP3:DJNZR3,LOOP3DJNZR4,LOOP2MOVA,BMOVCA,A+DPTRMOVP2,#02H;输出十位MOVP3,AMOVR4,#4LOOP4:MOVR3,#125LOOP5:DJNZR3,LOOP5DJNZR4,LOOP4MOVA,R7;进行东西方向倒计时时间的十进制调整MOVB,#0AHDIVABMOVCA,A+DPTRMOVP2,#04HMOVP3,AMOVR4,#4LOOP6:MOVR3,#125LOOP7:DJNZR3,LOOP7DJNZR4,LOOP6MOVA,BMOVCA,A+DPTRMOVP2,#08HMOVP3,AMOVR4,#4LOOP8:MOVR3,#125LOOP9:DJNZR3,LOOP9DJNZR4,LOOP8JBCTF0,LOOP;判断是否计满125msAJMPDELAYLOOP:MOVTL0,#0CDH;计满125ms重新给定时器赋值MOVTH0,#0BHMOVA,30HDECAMOV30H,AJNZDELAY;判断是否计满8次125ms,即1sDECR6;计满1s,东西倒计时减1,南北倒计时减1DECR7MOV30H,#08H;重新1s次数,重新计时RETTABLE:DB0C0H,0F9H,0A4H,0B0H,99H;相应数值的数码管代码DB92H,82H,0F8H,80H,90HEND-