久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4247|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

帶人行橫道和行人的單片機(jī)六車道交通燈Proteus仿真源程序 注釋很詳細(xì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
一個(gè)非常牛逼的51單片機(jī)交通燈仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


雙向六車道模擬,人行橫道也有倒計(jì)時(shí):


人行橫道:


SN方向急車通行按鍵(例如120)
EW方向急車通行按鍵(例如119)
系統(tǒng)控制開關(guān),閉合系統(tǒng)停止工作,斷開系統(tǒng)繼續(xù)工作

1、系統(tǒng)上電工作時(shí),SN方向綠燈亮,進(jìn)入SN通車模式,通車時(shí)間40S,SN人行道開通,EW方向紅燈亮,禁止通行,
2、SN方向倒計(jì)時(shí)剩5秒時(shí),黃燈閃爍,此時(shí)切換到SN左拐模式,左拐燈亮,左拐的維持時(shí)間是20S
3、左拐倒計(jì)時(shí)5秒時(shí),黃燈閃爍,進(jìn)入EW通車模式,通車時(shí)間40S,此時(shí)SN人行道綠燈滅,EW綠燈亮,EW人行道燈亮,SN紅燈亮,禁止通車
4、EW通車倒計(jì)時(shí)5秒時(shí),黃燈閃爍,進(jìn)入左拐模式,左拐燈亮,左拐維持時(shí)間20S
5、左拐倒計(jì)時(shí)5秒時(shí),黃燈閃爍,再次進(jìn)入SN通車模式,通車時(shí)間40S,此時(shí)EW人行道綠燈滅,SN綠燈亮,SN人行道燈亮,EW紅燈亮,禁止通車
周而復(fù)始,維持上面的過(guò)程

1、繁忙按鍵按下時(shí),道路的通行時(shí)間得到調(diào)整會(huì)減少,這樣可以增加紅綠燈切換的頻率,方便通行
2、時(shí)間+和時(shí)間-分別是增加和減少綠燈開通時(shí)間
3、SN急車通行按鍵第一次按下時(shí),表示有急車通行,無(wú)論SN方向的狀態(tài)如何,都應(yīng)亮綠燈,EW亮紅燈,數(shù)字暫停倒數(shù),方便急車通過(guò)當(dāng)SN急車按鍵第二次按下時(shí),表示急車通過(guò)了,此時(shí)SN綠燈滅,SN方向的黃燈閃爍,恢復(fù)原來(lái)的狀態(tài)
4、EW急車通行按鍵第一次按下時(shí),表示EW有急車通行,無(wú)論EW方向的狀態(tài)如何,都應(yīng)亮綠燈,SN亮紅燈,數(shù)字暫停倒數(shù),方便急車通過(guò)當(dāng)EW急車按鍵第二次按下時(shí),表示急車通過(guò)了,此時(shí)EW綠燈滅,EW方向的黃燈閃爍,恢復(fù)原來(lái)的狀態(tài)

系統(tǒng)控制開關(guān),閉合系統(tǒng)停止工作,斷開系統(tǒng)繼續(xù)工作

單片機(jī)源程序如下,代碼也有詳細(xì)的中文注釋:
  1.   /*****************************************************
  2.        十字路口交通燈控制 C 程序

  3. ******************************************************/

  4. #define        uchar        unsigned char
  5. #define        uint        unsigned int
  6. #include        <reg52.h>
  7. /*****定義控制位**********************/
  8. sbit    XIANSHI_SHIJIAN_ZHISHIDENG2=P2^5;
  9. sbit    XIANSHI_SHIJIAN_ZHISHIDENG1=P2^4;
  10. sbit        DONGXI_ZHISHIDENG2=P2^3;        
  11. sbit        DONGXI_ZHISHIDENG1=P2^2;        
  12. sbit        NANBEI_ZHISHIDENG2=P2^1;        
  13. sbit        NANBEI_ZHISHIDENG1=P2^0;        
  14. sbit    NANBEI_HUANGDENG=P1^6;
  15. sbit    DONGXI_HUANGDENG=P1^2;
  16. sbit    DONGXI_HONGDENG=P1^3;
  17. sbit    NANBEI_HONGDENG=P1^7;
  18. sbit    DONGXI_PEOPLE=P3^0;
  19. sbit    NANBEI_PEOPLE=P3^1;
  20. sbit    kongzhi=P2^6;
  21. //sbit    Busy_LED=P2^7;//交通繁忙指示燈
  22. sbit    ZHENGCANG_ANJIAN=P3^5;//交通正常按鍵
  23. sbit    FANMANG_ANJIAN=P3^6;//交通繁忙按鍵
  24. sbit    NANBEI_JICHE_ANJIAN=P3^7;//南北方向急車通行按鍵
  25. sbit    DONGXI_JICHE_ANJIAN=P2^7;//東西方向急車通行按鍵
  26. sbit    SHIJIAN_JIAJIA=P3^3;//時(shí)間加
  27. sbit    SHIJIAN_JIANJIAN=P3^4;//時(shí)間減

  28. bit     NANBEI_HUANGDENG_BIAOZHI; //SN黃燈標(biāo)志位
  29. bit     DONGXI_HUANGDENG_BIAOZHI;//EW黃燈標(biāo)志位
  30. char        DONGXI_DAOJISHI;//東西方向倒計(jì)時(shí)單元
  31. char        NANBEI_DAOJISHI;//南北方向倒計(jì)時(shí)單元
  32. uchar DONGXI=60,NANBEI=40,EWL=19,SNL=19; //程序初始化賦值,正常模式
  33. uchar EW1=60,SN1=40,EWL1=19,SNL1=19;//用于存放修改值的變量
  34. uchar code table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~9段選碼
  35. uchar code S[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信號(hào)燈控制代碼
  36. uchar code S1[8]={0X28,0X08,0X82,0X80,0X82,0X84,0X81,0X84};//交通信號(hào)燈控制代碼
  37. /**********************延時(shí)子程序************************/
  38. void        Delay(uchar         a)
  39.         {
  40.                 uchar        i;
  41.                 i=a;
  42.                 while(i--){;}
  43.         }
  44. /*****************顯示子函數(shù)**************************/
  45. void        Display(void)
  46.         {
  47.                 char h,l;
  48.                 h=DONGXI_DAOJISHI/10;
  49.                 l=DONGXI_DAOJISHI%10;
  50.               P0=table[l];
  51.                 DONGXI_ZHISHIDENG2=1;
  52.                 Delay(2);
  53.                 DONGXI_ZHISHIDENG2=0;
  54.             P0=table[h];
  55.                 DONGXI_ZHISHIDENG1=1;
  56.                 Delay(2);
  57.                 DONGXI_ZHISHIDENG1=0;

  58.                 h=NANBEI_DAOJISHI/10;
  59.                 l=NANBEI_DAOJISHI%10;
  60.                 P0=table[l];
  61.                 NANBEI_ZHISHIDENG2=1;
  62.                 Delay(2);
  63.                 NANBEI_ZHISHIDENG2=0;
  64.             P0=table[h];
  65.                 NANBEI_ZHISHIDENG1=1;
  66.                 Delay(2);
  67.                 NANBEI_ZHISHIDENG1=0;
  68.                

  69.                 h= EW1/10;
  70.                 l= EW1%10;
  71.                 P0=table[l];
  72.                 XIANSHI_SHIJIAN_ZHISHIDENG1=1;
  73.                 Delay(2);
  74.         XIANSHI_SHIJIAN_ZHISHIDENG1=0;
  75.                 P0=table[h];
  76.                 XIANSHI_SHIJIAN_ZHISHIDENG2=1;
  77.                 Delay(2);
  78.             XIANSHI_SHIJIAN_ZHISHIDENG2=0;
  79. }
  80. /**********************外部0中斷服務(wù)程序************************/

  81. unsigned char FastCar_Flag_SN=0;
  82. unsigned char FastCar_Flag_EW=0;
  83. unsigned char Start_Flag=0;
  84. void        EXINT0(void)interrupt 0 using 1
  85.         {
  86.                 EX0=0; //關(guān)中斷

  87. if(SHIJIAN_JIAJIA==0) //時(shí)間加
  88.        {
  89.             EW1+=5;
  90.             SN1+=5;
  91.               if(EW1>=100)
  92.                            {
  93.                              EW1=99;
  94.                              SN1=79;
  95.                }
  96.             }
  97. if(SHIJIAN_JIANJIAN==0) //時(shí)間減
  98.        {
  99.             EW1-=5;
  100.             SN1-=5;
  101.             if(EW1<=40)
  102.               {
  103.                              EW1=40;
  104.                  SN1=20;
  105.                }
  106.                                 
  107.                     }

  108. if(ZHENGCANG_ANJIAN==0)//測(cè)試按鍵是否按下,按下為正常狀態(tài)
  109.         {
  110.             EW1=60;
  111.             SN1=40;
  112.                         EWL1=19;
  113.                         SNL1=19;
  114. //                        Busy_LED=0;//關(guān)繁忙信號(hào)燈
  115. //                        Special_LED =0;//關(guān)特殊信號(hào)燈
  116.             }
  117. if(FANMANG_ANJIAN==0) //測(cè)試按鍵是否按下,按下為繁忙狀態(tài)
  118.         {
  119.                     EW1=45;
  120.             SN1=30;
  121.                         EWL1=14;
  122.                         SNL1=14;
  123. //                        Special_LED=0;//關(guān)特殊信號(hào)燈
  124. //                        Busy_LED=1;//開繁忙信號(hào)燈               
  125.         }

  126. if(NANBEI_JICHE_ANJIAN==0)//測(cè)試按鍵是否按下,按下為南北方向急車通行特殊狀態(tài)
  127.         {
  128.                     FastCar_Flag_SN++;
  129.                         if(FastCar_Flag_SN==1)        //南北方向有急車通行
  130.                                 {
  131.                                     Start_Flag=1;
  132.                                         ET0=0;             //關(guān)閉定時(shí)器
  133.                                        
  134.                                 }
  135.                         else if(FastCar_Flag_SN==2)
  136.                         {
  137.                            FastCar_Flag_SN=0;
  138.                            Start_Flag=0;
  139.                            ET0=1;
  140.                         }                                      
  141.             }
  142.                
  143. if(DONGXI_JICHE_ANJIAN==0)//測(cè)試按鍵是否按下,按下為特殊狀態(tài)
  144.         {

  145.                     FastCar_Flag_EW++;
  146.                         if(FastCar_Flag_EW==1)        //南北方向有急車通行
  147.                                 {
  148.                                     Start_Flag=1;
  149.                                         ET0=0;             //關(guān)閉定時(shí)器
  150.                                        
  151.                                 }
  152.                    else if(FastCar_Flag_EW==2)
  153.                         {
  154.                            FastCar_Flag_EW=0;
  155.                            Start_Flag=0;
  156.                            ET0=1;
  157.                         }
  158.                                       
  159.             }                                                                        
  160.                 EX0=1;//開中斷
  161.         }
  162. /**********************T0中斷服務(wù)程序*******************/

  163. char TIME_YELLOW_COUNT=3;
  164. char SN_YELLOW_COUNT_Flag=0;
  165. char EW_YELLOW_COUNT_Flag=0;
  166. void timer0(void)interrupt 1 using 1
  167. {
  168.         static uchar count;
  169.         TH0=(65536-50000)/256;
  170.         TL0=(65536-50000)%256;
  171.         count++;
  172.                 if(kongzhi==0)
  173.                         {
  174.                                 while(1)
  175.                                 {
  176.                                         EA=0;
  177.                                         if(kongzhi==1)
  178.                                         {
  179.                                                 EA=1;
  180.                                                 break;
  181.                                         }
  182.                                        
  183.                                        
  184.                                 }
  185.                         }
  186.         if(count==10)
  187.         {
  188.           if(NANBEI_HUANGDENG_BIAOZHI==1) //測(cè)試南北黃燈標(biāo)志位
  189.           NANBEI_HUANGDENG=~NANBEI_HUANGDENG;

  190.           if(DONGXI_HUANGDENG_BIAOZHI==1)  //測(cè)試東西黃燈標(biāo)志位
  191.           DONGXI_HUANGDENG=~DONGXI_HUANGDENG;
  192.    
  193.          

  194.         }
  195.         if(count==20)
  196.         {
  197.         DONGXI_DAOJISHI--;
  198.         NANBEI_DAOJISHI--;
  199.         TIME_YELLOW_COUNT--;
  200.         if(NANBEI_HUANGDENG_BIAOZHI==1)//測(cè)試南北黃燈標(biāo)志位
  201.             {NANBEI_HUANGDENG=~NANBEI_HUANGDENG;}
  202.         if(DONGXI_HUANGDENG_BIAOZHI==1)//測(cè)試東西黃燈標(biāo)志位
  203.             {DONGXI_HUANGDENG=~DONGXI_HUANGDENG;}

  204.         count=0;
  205.         }
  206.         
  207. }
  208. /*********************主程序開始**********************/

  209. void        main(void)

  210. {
  211. //        Busy_LED=0;
  212. //        Special_LED=0;
  213.         IT0=1;        //INT0負(fù)跳變觸發(fā)        
  214.     TMOD=0x01;//定時(shí)器工作于方式1
  215.         TH0=(65536-50000)/256;//定時(shí)器賦初值
  216.         TL0=(65536-50000)%256;
  217.         EA=1; //CPU開中斷總允許
  218.         ET0=1;//開定時(shí)中斷
  219.         EX0=1;//開外部INTO中斷
  220.     TR0=1;//啟動(dòng)定時(shí)
  221.          
  222. while(1)
  223. {                                
  224.                 if(Start_Flag==0)
  225.                 {        

  226.          
  227.                                 /*******S0狀態(tài)**********/
  228.                                 DONGXI_PEOPLE=0;        //EW人行道禁止
  229.                     NANBEI_PEOPLE=1;//SN人行道通行
  230.                 DONGXI_HUANGDENG_BIAOZHI=0;           //EW關(guān)黃燈顯示信號(hào)
  231.                                 DONGXI_DAOJISHI=DONGXI;        
  232.                                 NANBEI_DAOJISHI=NANBEI;        
  233.                                  
  234.                                 while(NANBEI_DAOJISHI>=5)
  235.                             {
  236.                                 
  237.                                 if(Start_Flag==1&&FastCar_Flag_SN==1)                            //SN急車通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車通過(guò)
  238.                                 {
  239.                                   TIME_YELLOW_COUNT=3;                   //給急車過(guò)后的黃燈閃時(shí)間置3秒
  240.                                   P1=S1[0];                                            //SN通行,EW紅燈
  241.                                   SN_YELLOW_COUNT_Flag=1;    //黃燈閃標(biāo)志
  242.                                   Display();                                   //顯示當(dāng)前時(shí)間
  243.                                 }
  244.                            else if(Start_Flag==1&&FastCar_Flag_EW==1)                   //EW急車通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車通過(guò)
  245.                                 {
  246.                                   TIME_YELLOW_COUNT=3;                   //給急車過(guò)后的綠燈閃時(shí)間置3秒
  247.                                   P1=S1[2];                                            //EW通行,SN紅燈
  248.                                   EW_YELLOW_COUNT_Flag=1;    //黃燈閃標(biāo)志
  249.                                   Display();                                   //顯示當(dāng)前時(shí)間
  250.                                 }

  251.                 if(Start_Flag==0)
  252.                                 {
  253.                                         if( SN_YELLOW_COUNT_Flag==1)  //SN急車過(guò)后開始閃SN黃燈
  254.                                         {
  255.                                            P1=S1[1];                                     //SN燈全滅,EW紅燈
  256.                                          while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  257.                                                  {
  258.                                                   NANBEI_HUANGDENG_BIAOZHI=1;               //SN開黃燈信號(hào)位
  259.                                                   Display();                          //開始顯示當(dāng)前數(shù)字
  260.                                                  }
  261.                                             SN_YELLOW_COUNT_Flag=0;        //關(guān)急車通行黃燈閃標(biāo)志
  262.                                             NANBEI_HUANGDENG_BIAOZHI=0;               //SN關(guān)黃燈信號(hào)位
  263.                                         }

  264.                                     else if(EW_YELLOW_COUNT_Flag==1) //EW急車過(guò)后開始閃EW黃燈
  265.                                         {
  266.                                              P1=S1[3];                                     //EW燈全滅,SN紅燈
  267.                                             while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  268.                                                  {
  269.                                                   DONGXI_HUANGDENG_BIAOZHI=1;               //EW開黃燈信號(hào)位
  270.                                                   Display();                          //開始顯示當(dāng)前數(shù)字
  271.                                                  }
  272.                                             EW_YELLOW_COUNT_Flag=0;        //關(guān)急車通行黃燈閃標(biāo)志
  273.                                             DONGXI_HUANGDENG_BIAOZHI=0;               //EW關(guān)黃燈信號(hào)位
  274.                                        
  275.                                        
  276.                                         }
  277.                                          P1=S[0];                                                 //恢復(fù)初始狀態(tài)
  278.                                  Display();
  279.                                  }


  280.                                  }     //SN黃燈亮,等待左拐信號(hào),EW紅燈                        


  281.                                 /*******S1狀態(tài)**********/
  282.                             P1=0x00;
  283.                                 while(NANBEI_DAOJISHI>=0)
  284.                            {
  285.                             NANBEI_HUANGDENG_BIAOZHI=1;         //SN開黃燈信號(hào)位
  286.                             DONGXI_HONGDENG=1;      //SN黃燈亮,等待左拐信號(hào),EW紅燈         
  287.                             Display();
  288.                                 }
  289.                                   DONGXI_PEOPLE=0;        //EW人行道禁止
  290.                     NANBEI_PEOPLE=0;//SN人行道通行
  291.                                 /*******S2狀態(tài)**********/
  292.                             NANBEI_HUANGDENG_BIAOZHI=0; //SN關(guān)黃燈顯示信號(hào)
  293.                                 NANBEI_DAOJISHI=SNL;
  294.                                 while(NANBEI_DAOJISHI>=5)
  295.                                 {

  296.                                 if(Start_Flag==1&&FastCar_Flag_SN==1)                            //SN急車通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車通過(guò)
  297.                                 {
  298.                                   TIME_YELLOW_COUNT=3;                   //給急車過(guò)后的黃燈閃時(shí)間置3秒
  299.                                   P1=S1[0];                                            //SN通行,EW紅燈
  300.                                   SN_YELLOW_COUNT_Flag=1;    //黃燈閃標(biāo)志
  301.                                   Display();                                   //顯示當(dāng)前時(shí)間
  302.                                 }
  303.                            else if(Start_Flag==1&&FastCar_Flag_EW==1)                   //EW急車通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車通過(guò)
  304.                                 {
  305.                                   TIME_YELLOW_COUNT=3;                   //給急車過(guò)后的綠燈閃時(shí)間置3秒
  306.                                   P1=S1[2];                                            //EW通行,SN紅燈
  307.                                   EW_YELLOW_COUNT_Flag=1;    //黃燈閃標(biāo)志
  308.                                   Display();                                   //顯示當(dāng)前時(shí)間
  309.                                 }

  310.                 if(Start_Flag==0)
  311.                                 {
  312.                                         if( SN_YELLOW_COUNT_Flag==1)  //SN急車過(guò)后開始閃SN黃燈
  313.                                         {
  314.                                            P1=S1[1];                                     //SN燈全滅,EW紅燈
  315.                                          while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  316.                                                  {
  317.                                                   NANBEI_HUANGDENG_BIAOZHI=1;               //SN開黃燈信號(hào)位
  318.                                                   Display();                          //開始顯示當(dāng)前數(shù)字
  319.                                                  }
  320.                                             SN_YELLOW_COUNT_Flag=0;        //關(guān)急車通行黃燈閃標(biāo)志
  321.                                             NANBEI_HUANGDENG_BIAOZHI=0;               //SN關(guān)黃燈信號(hào)位
  322.                                         }

  323.                                     else if(EW_YELLOW_COUNT_Flag==1) //EW急車過(guò)后開始閃EW黃燈
  324.                                         {
  325.                                              P1=S1[3];                                     //EW燈全滅,SN紅燈
  326.                                             while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  327.                                                  {
  328.                                                   DONGXI_HUANGDENG_BIAOZHI=1;               //EW開黃燈信號(hào)位
  329.                                                   Display();                          //開始顯示當(dāng)前數(shù)字
  330.                                                  }
  331.                                             EW_YELLOW_COUNT_Flag=0;        //關(guān)急車通行黃燈閃標(biāo)志
  332.                                             DONGXI_HUANGDENG_BIAOZHI=0;               //EW關(guān)黃燈信號(hào)位
  333.                                        
  334.                                        
  335.                                         }
  336.                                          P1=S[2];//SN左拐綠燈亮,EW紅燈
  337.                                          Display();
  338.                                  }
  339.                                           
  340.                                           
  341.                                 
  342.                                  }

  343.                           /*******S3狀態(tài)**********/
  344.                                 P1=0x00;
  345.                                 while(NANBEI_DAOJISHI>=0)
  346.                            {
  347.                             NANBEI_HUANGDENG_BIAOZHI=1;        //SN開黃燈信號(hào)位
  348.                             DONGXI_HONGDENG=1;      //SN黃燈亮,等待停止信號(hào),EW紅燈
  349.                                    
  350.                             Display();}


  351.                            /***********賦值**********/
  352.                                 DONGXI=EW1;
  353.                                 NANBEI=SN1;
  354.                                 EWL=EWL1;
  355.                                 SNL=SNL1;


  356.                                 /*******S4狀態(tài)**********/
  357.                                 DONGXI_PEOPLE=1;        //EW人行道禁止
  358.                     NANBEI_PEOPLE=0;//SN人行道通行
  359.                             NANBEI_HUANGDENG_BIAOZHI=0;  //SN關(guān)黃燈顯示信號(hào)
  360.                                 DONGXI_DAOJISHI=NANBEI;
  361.                                 NANBEI_DAOJISHI=DONGXI;
  362.                             while(DONGXI_DAOJISHI>=5)
  363.                             {
  364.                                          if(Start_Flag==1&&FastCar_Flag_SN==1)                            //SN急車通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車通過(guò)
  365.                                         {
  366.                                           TIME_YELLOW_COUNT=3;                   //給急車過(guò)后的黃燈閃時(shí)間置3秒
  367.                                           P1=S1[0];                                            //SN通行,EW紅燈
  368.                                           SN_YELLOW_COUNT_Flag=1;    //黃燈閃標(biāo)志
  369.                                           Display();                                   //顯示當(dāng)前時(shí)間
  370.                                         }
  371.                                    else if(Start_Flag==1&&FastCar_Flag_EW==1)                   //EW急車通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車通過(guò)
  372.                                         {
  373.                                           TIME_YELLOW_COUNT=3;                   //給急車過(guò)后的綠燈閃時(shí)間置3秒
  374.                                           P1=S1[2];                                            //EW通行,SN紅燈
  375.                                           EW_YELLOW_COUNT_Flag=1;    //黃燈閃標(biāo)志
  376.                                           Display();                                   //顯示當(dāng)前時(shí)間
  377.                                         }
  378.         
  379.                         if(Start_Flag==0)
  380.                                         {
  381.                                                 if( SN_YELLOW_COUNT_Flag==1)  //SN急車過(guò)后開始閃SN黃燈
  382.                                                 {
  383.                                                    P1=S1[1];                                     //SN燈全滅,EW紅燈
  384.                                                  while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  385.                                                          {
  386.                                                          NANBEI_HUANGDENG_BIAOZHI=1;               //SN開黃燈信號(hào)位
  387.                                                           Display();                          //開始顯示當(dāng)前數(shù)字
  388.                                                          }
  389.                                                     SN_YELLOW_COUNT_Flag=0;        //關(guān)急車通行黃燈閃標(biāo)志
  390.                                                     NANBEI_HUANGDENG_BIAOZHI=0;               //SN關(guān)黃燈信號(hào)位
  391.                                                 }
  392.         
  393.                                             else if(EW_YELLOW_COUNT_Flag==1) //EW急車過(guò)后開始閃EW黃燈
  394.                                                 {
  395.                                                      P1=S1[3];                                     //EW燈全滅,SN紅燈
  396.                                                     while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  397.                                                          {
  398.                                                           DONGXI_HUANGDENG_BIAOZHI=1;               //EW開黃燈信號(hào)位
  399.                                                           Display();                          //開始顯示當(dāng)前數(shù)字
  400.                                                          }
  401.                                                     EW_YELLOW_COUNT_Flag=0;        //關(guān)急車通行黃燈閃標(biāo)志
  402.                                                     DONGXI_HUANGDENG_BIAOZHI=0;               //EW關(guān)黃燈信號(hào)位        
  403.                                                 
  404.                                                 }
  405.                                                 P1=S[4];                               //恢復(fù)EW通行,SN紅燈
  406.                                                  Display();
  407.                                          }
  408.         
  409.                                 
  410.                                  }
  411.                                 /*******S5狀態(tài)**********/
  412.                                 P1=0X00;
  413.                                 while(DONGXI_DAOJISHI>=0)
  414.                            {
  415.                             DONGXI_HUANGDENG_BIAOZHI=1;//EW開黃燈信號(hào)位
  416.                             NANBEI_HONGDENG=1;//EW黃燈亮,等待左拐信號(hào),SN紅燈        
  417.                             Display();}

  418.                                 /*******S6狀態(tài)**********/
  419.                                 DONGXI_PEOPLE=0;        //EW人行道禁止
  420.                     NANBEI_PEOPLE=0;//SN人行道通行
  421.                                 DONGXI_HUANGDENG_BIAOZHI=0;            //EW關(guān)黃燈顯示信號(hào)
  422.                                 DONGXI_DAOJISHI=EWL;
  423.                                 while(DONGXI_DAOJISHI>=5)
  424.                                 {
  425.                                 if(Start_Flag==1&&FastCar_Flag_SN==1)                            //SN急車通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車通過(guò)
  426.                                 {
  427.                                   TIME_YELLOW_COUNT=3;                   //給急車過(guò)后的黃燈閃時(shí)間置3秒
  428.                                   P1=S1[0];                                            //SN通行,EW紅燈
  429.                                   SN_YELLOW_COUNT_Flag=1;    //黃燈閃標(biāo)志
  430.                                   Display();                                   //顯示當(dāng)前時(shí)間
  431.                                 }
  432.                            else if(Start_Flag==1&&FastCar_Flag_EW==1)                   //EW急車通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車通過(guò)
  433.                                 {
  434.                                   TIME_YELLOW_COUNT=3;                   //給急車過(guò)后的綠燈閃時(shí)間置3秒
  435.                                   P1=S1[2];                                            //EW通行,SN紅燈
  436.                                   EW_YELLOW_COUNT_Flag=1;    //黃燈閃標(biāo)志
  437.                                   Display();                                   //顯示當(dāng)前時(shí)間
  438.                                 }

  439.                 if(Start_Flag==0)
  440.                                 {
  441.                                         if( SN_YELLOW_COUNT_Flag==1)  //SN急車過(guò)后開始閃SN黃燈
  442.                                         {
  443.                                            P1=S1[1];                                     //SN燈全滅,EW紅燈
  444.                                          while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  445.                                                  {
  446.                                                   NANBEI_HUANGDENG_BIAOZHI=1;               //SN開黃燈信號(hào)位
  447.                                                   Display();                          //開始顯示當(dāng)前數(shù)字
  448.                                                  }
  449.                                             SN_YELLOW_COUNT_Flag=0;        //關(guān)急車通行黃燈閃標(biāo)志
  450.                                             NANBEI_HUANGDENG_BIAOZHI=0;               //SN關(guān)黃燈信號(hào)位
  451.                                         }

  452.                                     else if(EW_YELLOW_COUNT_Flag==1) //EW急車過(guò)后開始閃EW黃燈
  453.                                         {
  454.                                              P1=S1[3];                                     //EW燈全滅,SN紅燈
  455.                                             while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  456.                                                  {
  457.                                                   DONGXI_HUANGDENG_BIAOZHI=1;               //EW開黃燈信號(hào)位
  458.                                                   Display();                          //開始顯示當(dāng)前數(shù)字
  459.                                                  }
  460.                                             EW_YELLOW_COUNT_Flag=0;        //關(guān)急車通行黃燈閃標(biāo)志
  461.                                             DONGXI_HUANGDENG_BIAOZHI=0;               //EW關(guān)黃燈信號(hào)位
  462.                                        
  463.                                        
  464.                                         }
  465.                                     P1=S[6];//EW左拐綠燈亮,SN紅燈
  466.                                     Display();
  467.                                         }

  468.                                 }
  469.                                  

  470.                                 /*******S7狀態(tài)**********/
  471.                                 P1=0X00;
  472.                                 while(DONGXI_DAOJISHI>=0)
  473.                            {
  474.                             DONGXI_HUANGDENG_BIAOZHI=1; //EN開黃燈信號(hào)位
  475.                             NANBEI_HONGDENG=1;//EW黃燈亮,等待停止信號(hào),SN紅燈        
  476.                             Display();}
  477.                         
  478.                                     /***********賦值**********/
  479.                             DONGXI=EW1;
  480.                                 NANBEI=SN1;
  481.                                 EWL=EWL1;
  482.                                 SNL=SNL1;
  483.            
  484.          
  485.                         }
  486.                 }
  487.         }
復(fù)制代碼

所有資料51hei提供下載:
交通燈電路.zip (386.5 KB, 下載次數(shù): 99)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:798125 發(fā)表于 2020-7-6 08:10 | 只看該作者
仿真圖上那些白色的人行橫道是怎么畫的呀?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久在线 | av网站免费观看 | 亚洲成人免费视频在线观看 | 久久精品国产99国产精品亚洲 | 热99在线 | 亚洲国产精品人人爽夜夜爽 | 一区二区精品视频 | 一区二区三区视频在线观看 | 黄频免费 | 日本黄色一级视频 | 91久久综合 | 久久久久国产精品午夜一区 | 99热99| 亚洲一区二区三区在线 | 涩涩视频在线观看 | 亚洲第一色站 | 综合久久一区 | 天天射色综合 | 中文字幕一区二区三区不卡在线 | 成人在线精品视频 | 欧美精品一区二区免费 | 国产一区二区三区久久久久久久久 | 欧美精品网 | 国产精品色婷婷久久58 | 嫩草视频在线看 | 亚洲精品一 | 国产精品国产成人国产三级 | 久在线观看 | 国内精品伊人久久久久网站 | 日本久久久久久 | 亚洲午夜精品 | av毛片免费| 久久久精品一区 | 99re在线播放| 成人看片在线观看 | 免费观看一区二区三区毛片 | 欧美一区二区三区久久精品 | 亚洲精品 在线播放 | 亚洲欧美中文日韩在线v日本 | 亚洲 欧美 另类 综合 偷拍 | 狠狠色狠狠色综合日日92 |