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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4203|回復(fù): 1
收起左側(cè)

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

[復(fù)制鏈接]
ID:328014 發(fā)表于 2020-7-6 01:50 | 顯示全部樓層 |閱讀模式
一個(gè)非常牛逼的51單片機(jī)交通燈仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png

雙向六車(chē)道模擬,人行橫道也有倒計(jì)時(shí):
51hei.png

人行橫道:
51hei.png

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

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

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

系統(tǒng)控制開(kāi)關(guān),閉合系統(tǒng)停止工作,斷開(kāi)系統(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;//南北方向急車(chē)通行按鍵
  25. sbit    DONGXI_JICHE_ANJIAN=P2^7;//東西方向急車(chē)通行按鍵
  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;//開(kāi)繁忙信號(hào)燈               
  125.         }

  126. if(NANBEI_JICHE_ANJIAN==0)//測(cè)試按鍵是否按下,按下為南北方向急車(chē)通行特殊狀態(tài)
  127.         {
  128.                     FastCar_Flag_SN++;
  129.                         if(FastCar_Flag_SN==1)        //南北方向有急車(chē)通行
  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)        //南北方向有急車(chē)通行
  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;//開(kāi)中斷
  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. /*********************主程序開(kāi)始**********************/

  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開(kāi)中斷總允許
  218.         ET0=1;//開(kāi)定時(shí)中斷
  219.         EX0=1;//開(kāi)外部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急車(chē)通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車(chē)通過(guò)
  238.                                 {
  239.                                   TIME_YELLOW_COUNT=3;                   //給急車(chē)過(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急車(chē)通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車(chē)通過(guò)
  245.                                 {
  246.                                   TIME_YELLOW_COUNT=3;                   //給急車(chē)過(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急車(chē)過(guò)后開(kāi)始閃SN黃燈
  254.                                         {
  255.                                            P1=S1[1];                                     //SN燈全滅,EW紅燈
  256.                                          while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  257.                                                  {
  258.                                                   NANBEI_HUANGDENG_BIAOZHI=1;               //SN開(kāi)黃燈信號(hào)位
  259.                                                   Display();                          //開(kāi)始顯示當(dāng)前數(shù)字
  260.                                                  }
  261.                                             SN_YELLOW_COUNT_Flag=0;        //關(guān)急車(chē)通行黃燈閃標(biāo)志
  262.                                             NANBEI_HUANGDENG_BIAOZHI=0;               //SN關(guān)黃燈信號(hào)位
  263.                                         }

  264.                                     else if(EW_YELLOW_COUNT_Flag==1) //EW急車(chē)過(guò)后開(kāi)始閃EW黃燈
  265.                                         {
  266.                                              P1=S1[3];                                     //EW燈全滅,SN紅燈
  267.                                             while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  268.                                                  {
  269.                                                   DONGXI_HUANGDENG_BIAOZHI=1;               //EW開(kāi)黃燈信號(hào)位
  270.                                                   Display();                          //開(kāi)始顯示當(dāng)前數(shù)字
  271.                                                  }
  272.                                             EW_YELLOW_COUNT_Flag=0;        //關(guān)急車(chē)通行黃燈閃標(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開(kāi)黃燈信號(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急車(chē)通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車(chē)通過(guò)
  297.                                 {
  298.                                   TIME_YELLOW_COUNT=3;                   //給急車(chē)過(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急車(chē)通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車(chē)通過(guò)
  304.                                 {
  305.                                   TIME_YELLOW_COUNT=3;                   //給急車(chē)過(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急車(chē)過(guò)后開(kāi)始閃SN黃燈
  313.                                         {
  314.                                            P1=S1[1];                                     //SN燈全滅,EW紅燈
  315.                                          while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  316.                                                  {
  317.                                                   NANBEI_HUANGDENG_BIAOZHI=1;               //SN開(kāi)黃燈信號(hào)位
  318.                                                   Display();                          //開(kāi)始顯示當(dāng)前數(shù)字
  319.                                                  }
  320.                                             SN_YELLOW_COUNT_Flag=0;        //關(guān)急車(chē)通行黃燈閃標(biāo)志
  321.                                             NANBEI_HUANGDENG_BIAOZHI=0;               //SN關(guān)黃燈信號(hào)位
  322.                                         }

  323.                                     else if(EW_YELLOW_COUNT_Flag==1) //EW急車(chē)過(guò)后開(kāi)始閃EW黃燈
  324.                                         {
  325.                                              P1=S1[3];                                     //EW燈全滅,SN紅燈
  326.                                             while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  327.                                                  {
  328.                                                   DONGXI_HUANGDENG_BIAOZHI=1;               //EW開(kāi)黃燈信號(hào)位
  329.                                                   Display();                          //開(kāi)始顯示當(dāng)前數(shù)字
  330.                                                  }
  331.                                             EW_YELLOW_COUNT_Flag=0;        //關(guān)急車(chē)通行黃燈閃標(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開(kāi)黃燈信號(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急車(chē)通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車(chē)通過(guò)
  365.                                         {
  366.                                           TIME_YELLOW_COUNT=3;                   //給急車(chē)過(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急車(chē)通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車(chē)通過(guò)
  372.                                         {
  373.                                           TIME_YELLOW_COUNT=3;                   //給急車(chē)過(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急車(chē)過(guò)后開(kāi)始閃SN黃燈
  382.                                                 {
  383.                                                    P1=S1[1];                                     //SN燈全滅,EW紅燈
  384.                                                  while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  385.                                                          {
  386.                                                          NANBEI_HUANGDENG_BIAOZHI=1;               //SN開(kāi)黃燈信號(hào)位
  387.                                                           Display();                          //開(kāi)始顯示當(dāng)前數(shù)字
  388.                                                          }
  389.                                                     SN_YELLOW_COUNT_Flag=0;        //關(guān)急車(chē)通行黃燈閃標(biāo)志
  390.                                                     NANBEI_HUANGDENG_BIAOZHI=0;               //SN關(guān)黃燈信號(hào)位
  391.                                                 }
  392.         
  393.                                             else if(EW_YELLOW_COUNT_Flag==1) //EW急車(chē)過(guò)后開(kāi)始閃EW黃燈
  394.                                                 {
  395.                                                      P1=S1[3];                                     //EW燈全滅,SN紅燈
  396.                                                     while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  397.                                                          {
  398.                                                           DONGXI_HUANGDENG_BIAOZHI=1;               //EW開(kāi)黃燈信號(hào)位
  399.                                                           Display();                          //開(kāi)始顯示當(dāng)前數(shù)字
  400.                                                          }
  401.                                                     EW_YELLOW_COUNT_Flag=0;        //關(guān)急車(chē)通行黃燈閃標(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開(kāi)黃燈信號(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急車(chē)通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車(chē)通過(guò)
  426.                                 {
  427.                                   TIME_YELLOW_COUNT=3;                   //給急車(chē)過(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急車(chē)通行后會(huì)置Start_Flag為1 ,用來(lái)判斷是否急車(chē)通過(guò)
  433.                                 {
  434.                                   TIME_YELLOW_COUNT=3;                   //給急車(chē)過(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急車(chē)過(guò)后開(kāi)始閃SN黃燈
  442.                                         {
  443.                                            P1=S1[1];                                     //SN燈全滅,EW紅燈
  444.                                          while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  445.                                                  {
  446.                                                   NANBEI_HUANGDENG_BIAOZHI=1;               //SN開(kāi)黃燈信號(hào)位
  447.                                                   Display();                          //開(kāi)始顯示當(dāng)前數(shù)字
  448.                                                  }
  449.                                             SN_YELLOW_COUNT_Flag=0;        //關(guān)急車(chē)通行黃燈閃標(biāo)志
  450.                                             NANBEI_HUANGDENG_BIAOZHI=0;               //SN關(guān)黃燈信號(hào)位
  451.                                         }

  452.                                     else if(EW_YELLOW_COUNT_Flag==1) //EW急車(chē)過(guò)后開(kāi)始閃EW黃燈
  453.                                         {
  454.                                              P1=S1[3];                                     //EW燈全滅,SN紅燈
  455.                                             while(TIME_YELLOW_COUNT>=0)   //黃燈閃的時(shí)間是3秒
  456.                                                  {
  457.                                                   DONGXI_HUANGDENG_BIAOZHI=1;               //EW開(kāi)黃燈信號(hào)位
  458.                                                   Display();                          //開(kāi)始顯示當(dāng)前數(shù)字
  459.                                                  }
  460.                                             EW_YELLOW_COUNT_Flag=0;        //關(guān)急車(chē)通行黃燈閃標(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開(kāi)黃燈信號(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.png
所有資料51hei提供下載:
交通燈電路.zip (386.5 KB, 下載次數(shù): 99)
回復(fù)

使用道具 舉報(bào)

ID:798125 發(fā)表于 2020-7-6 08:10 | 顯示全部樓層
仿真圖上那些白色的人行橫道是怎么畫(huà)的呀?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久精品 | 九九九视频在线观看 | 久久久久久99 | 日韩欧美日韩在线 | 成人高清视频在线观看 | 国产精品美女久久久久久免费 | 亚洲一区二区在线播放 | 久久com| 精品无码久久久久久久动漫 | 激情一区二区三区 | 国内精品免费久久久久软件老师 | 成人精品一区二区三区四区 | 国产精品久久久久久久久久久免费看 | 国产伦精品一区二区三区精品视频 | 成人精品久久日伦片大全免费 | 亚洲一区二区三区在线视频 | 波多野结衣中文视频 | 在线观看国产视频 | 北条麻妃99精品青青久久主播 | 97精品国产97久久久久久免费 | 久久国产99 | 亚洲乱码国产乱码精品精的特点 | 粉嫩一区二区三区性色av | 日日拍夜夜 | 国产精品一区二区在线播放 | 狠狠操狠狠干 | 亚洲成人福利视频 | 在线视频99| 国产成人精品午夜视频免费 | 久久久91精品国产一区二区三区 | 请别相信他免费喜剧电影在线观看 | 一区二区三区四区日韩 | 懂色av一区二区三区在线播放 | 天天精品在线 | 久久久久亚洲精品 | 久久乐国产精品 | 亚洲欧洲精品一区 | 性高湖久久久久久久久 | 欧美日韩精品一区二区 | 久久婷婷香蕉热狠狠综合 | 在线免费观看视频你懂的 |