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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1530|回復: 0
打印 上一主題 下一主題
收起左側

單片機控制交通燈系統 四個方向,每個方向9個交通燈 支持485通信

[復制鏈接]
跳轉到指定樓層
樓主
ID:366152 發表于 2018-7-6 14:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
四個方向,每個方向9個交通燈,單片機串行控制,支持485通信
全部資料51hei下載地址:
交通燈系統控制模塊.rar (71.27 KB, 下載次數: 16)

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include <hc595.h>
  4. #include <shumaguan.h>
  5. #define  NOP() _nop_()
  6. #define  uchar         unsigned char
  7. #define  uint   unsigned int
  8. #define FOSC 11059200L      //System frequency
  9. #define BAUD 9600           //UART baudrate


  10. sbit RS485E=P3^7;

  11. uint count;
  12. uchar second,cnt;
  13. uchar YELLOW_warning = 5;
  14. uchar GREEN_pass = 10;
  15. uchar WORK = 1;

  16. uchar a;
  17. uchar buff_on;
  18. uchar cnt_buff;
  19. uchar rs485[5];

  20. void InitTimer0(void)
  21. {
  22.     TMOD = 0x01;
  23.     TH0 = 0x0F8;
  24.     TL0 = 0x0CD;
  25.     EA = 1;
  26.     ET0 = 1;
  27.     TR0 = 1;
  28. }

  29. void Timer0Interrupt(void) interrupt 1
  30. {
  31.     TH0 = 0x0F8;
  32.     TL0 = 0x0CD;
  33.     count++;
  34.         if(count == 500)
  35.         {
  36.                 count = 0;
  37.                 second++;

  38.                 if(second % (GREEN_pass) == 0 || second % (YELLOW_warning + GREEN_pass)  == 0 )
  39.                 {
  40.                        
  41.                         cnt++;
  42.                         if(cnt == 12)cnt=0;
  43.                     
  44.                 }
  45.                 if(second == YELLOW_warning + GREEN_pass )
  46.                 second = 0;
  47.                 Test(cnt);
  48.         }
  49.        
  50. }

  51. void InitUART(void)
  52. {
  53.     TMOD |= 0x20;
  54.     SCON |= 0x50;
  55.     TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule
  56.     PCON = 0x00;
  57.     ES = 1;
  58.     TR1 = 1;
  59. }

  60. void UARTInterrupt(void) interrupt 4
  61. {
  62.     if(RI)
  63.     {                      
  64.         a = SBUF;
  65.                 if(a==0x55)
  66.                 {
  67.                    buff_on =1;
  68.                    cnt_buff = 0;
  69.                 }
  70.                 if(buff_on)
  71.                 {
  72.                     rs485[cnt_buff]=a;
  73.                     cnt_buff++;
  74.                         if(cnt_buff==5)
  75.                         {
  76.                                 cnt_buff=0;
  77.                             buff_on =0;
  78.                         }
  79.                          
  80.                 }
  81.                 RI = 0;
  82.     }
  83.         else
  84.            TI = 0;
  85.                                        
  86. }


  87. //void T0Interrupt(void) interrupt 0
  88. //{
  89. //           uchar i        ;
  90. //        TR0 = 0;
  91. //    GREEN_pass++;
  92. //    if(GREEN_pass == 26)
  93. //        GREEN_pass = 10;
  94. //        for(i=0;i<100;i++)
  95. //        {
  96. //           LED_HC595SendData(S,GREEN_pass);
  97. //           LED_HC595SendData(X,GREEN_pass);
  98. //           LED_HC595SendData(Z,GREEN_pass);
  99. //           LED_HC595SendData(Y,GREEN_pass);
  100. //        }
  101. //        TR0 = 1;
  102. //}

  103. //void T1Interrupt(void) interrupt 2
  104. //{
  105. //    WORK =!WORK;
  106. //        TR0=!TR0;
  107. //}

  108. void main(void)
  109. {  
  110.    InitTimer0();
  111.    InitUART();
  112. //   IT0=1;       //???μ??′¥·¢
  113. //   EX0=1;
  114. //   IT1=1;       //???μ??′¥·¢
  115. //   EX1=1;

  116.    SG3 = 0;
  117.    XG3 = 0;
  118.    ZG3 = 0;
  119.    YG3 = 0;
  120.    EA = 1;

  121.    RS485E=0;

  122.    T_HC595SendData(S,GREEN,STRAT);
  123.    T_HC595SendData(Z,RED,STRAT);
  124.    T_HC595SendData(X,GREEN,STRAT);
  125.    T_HC595SendData(Y,RED,STRAT);
  126.   while(1)
  127.   {         

  128.              
  129. //          LED_HC595SendData(S,rs485[0]);
  130. //          LED_HC595SendData(X,rs485[1]);
  131. //          LED_HC595SendData(Z,rs485[2]);
  132. //          LED_HC595SendData(Y,rs485[3]);

  133.      if(WORK )
  134.          {
  135.                   switch(cnt)
  136.          {
  137.                   case 0:
  138.                          LED_HC595SendData(S,GREEN_pass - second);
  139.                                   LED_HC595SendData(X,GREEN_pass - second);
  140.                                   LED_HC595SendData(Z,(GREEN_pass+YELLOW_warning)*3 - second);
  141.                                   LED_HC595SendData(Y,(GREEN_pass+YELLOW_warning)*3 - second);
  142.                                  break;
  143.                  case 1:
  144.                          LED_HC595SendData(S,GREEN_pass+YELLOW_warning - second);
  145.                                   LED_HC595SendData(X,GREEN_pass+YELLOW_warning - second);
  146.                                   LED_HC595SendData(Z,(GREEN_pass+YELLOW_warning)*3 - second);
  147.                                   LED_HC595SendData(Y,(GREEN_pass+YELLOW_warning)*3 - second);
  148.                                  break;
  149.                  case 2:
  150.                          LED_HC595SendData(S,GREEN_pass  - second);
  151.                                   LED_HC595SendData(X,GREEN_pass  - second);
  152.                                   LED_HC595SendData(Z,(GREEN_pass+YELLOW_warning)*2 - second);
  153.                                   LED_HC595SendData(Y,(GREEN_pass+YELLOW_warning)*2 - second);
  154.                                  break;
  155.                 case 3:
  156.                          LED_HC595SendData(S,GREEN_pass +YELLOW_warning - second);
  157.                                   LED_HC595SendData(X,GREEN_pass +YELLOW_warning - second);
  158.                                   LED_HC595SendData(Z,(GREEN_pass+YELLOW_warning)*2 - second);
  159.                                   LED_HC595SendData(Y,(GREEN_pass+YELLOW_warning)*2- second);
  160.                                  break;
  161.                  case 4:
  162.                          LED_HC595SendData(S,GREEN_pass - second);
  163.                                   LED_HC595SendData(X,GREEN_pass - second);
  164.                                   LED_HC595SendData(Z,(GREEN_pass+YELLOW_warning) - second);
  165.                                   LED_HC595SendData(Y,(GREEN_pass+YELLOW_warning) - second);
  166.                                  break;
  167.                  case 5:
  168.                          LED_HC595SendData(S,GREEN_pass +YELLOW_warning - second);
  169.                                   LED_HC595SendData(X,GREEN_pass +YELLOW_warning - second);
  170.                                   LED_HC595SendData(Z,GREEN_pass+YELLOW_warning - second);
  171.                                   LED_HC595SendData(Y,GREEN_pass+YELLOW_warning - second);
  172.                                  break;
  173.                   case 6:
  174.                          LED_HC595SendData(Z,GREEN_pass - second);
  175.                                   LED_HC595SendData(Y,GREEN_pass - second);
  176.                                   LED_HC595SendData(S,(GREEN_pass+YELLOW_warning)*3 - second);
  177.                                   LED_HC595SendData(X,(GREEN_pass+YELLOW_warning)*3 - second);
  178.                                  break;
  179.                  case 7:
  180.                          LED_HC595SendData(Z,GREEN_pass+YELLOW_warning - second);
  181.                                   LED_HC595SendData(Y,GREEN_pass+YELLOW_warning - second);
  182.                                   LED_HC595SendData(S,(GREEN_pass+YELLOW_warning)*3 - second);
  183.                                   LED_HC595SendData(X,(GREEN_pass+YELLOW_warning)*3 - second);
  184.                                  break;
  185.                  case 8:
  186.                          LED_HC595SendData(Z,GREEN_pass  - second);
  187.                                   LED_HC595SendData(Y,GREEN_pass  - second);
  188.                                   LED_HC595SendData(S,(GREEN_pass+YELLOW_warning)*2 - second);
  189.                                   LED_HC595SendData(X,(GREEN_pass+YELLOW_warning)*2 - second);
  190.                                  break;
  191.                 case 9:
  192.                          LED_HC595SendData(Z,GREEN_pass +YELLOW_warning - second);
  193.                                   LED_HC595SendData(Y,GREEN_pass +YELLOW_warning - second);
  194.                                   LED_HC595SendData(S,(GREEN_pass+YELLOW_warning)*2 - second);
  195.                                   LED_HC595SendData(X,(GREEN_pass+YELLOW_warning)*2- second);
  196.                                  break;
  197.                  case 10:
  198.                          LED_HC595SendData(Z,GREEN_pass - second);
  199.                                   LED_HC595SendData(Y,GREEN_pass - second);
  200.                                   LED_HC595SendData(S,GREEN_pass+YELLOW_warning - second);
  201.                                   LED_HC595SendData(X,GREEN_pass+YELLOW_warning - second);
  202.                                  break;
  203.                  case 11:
  204.                          LED_HC595SendData(Z,GREEN_pass +YELLOW_warning - second);
  205.                                   LED_HC595SendData(Y,GREEN_pass +YELLOW_warning - second);
  206.                                   LED_HC595SendData(S,GREEN_pass+YELLOW_warning - second);
  207.                                   LED_HC595SendData(X,GREEN_pass+YELLOW_warning - second);
  208.                                  break;
  209.          }
  210.          
  211.          
  212.          }
  213.          else
  214.          {
  215.                  T_HC595SendData(S,RED,STRAT);
  216.         T_HC595SendData(Z,RED,STRAT);
  217.         T_HC595SendData(X,RED,STRAT);
  218.         T_HC595SendData(Y,RED,STRAT);

  219.          }

  220.         if(rs485[0]==0x55 && rs485[4] == 0x44 )
  221.         {
  222.            if( (rs485[3]==0||rs485[3]==0x011) && (rs485[1]<25 && rs485[2]<15))
  223.            {
  224.                       GREEN_pass = rs485[1];
  225.                 YELLOW_warning = rs485[2];
  226.                 if(rs485[3] == 0x11)
  227.                 {
  228.                 WORK = 0;
  229.                 TR0 = 0;
  230.                 }
  231.                 else
  232.                 {
  233.                 WORK = 1;
  234.                 TR0 = 1;
  235.                 }
  236.            }
  237.                
  238.    }                 

  239.   }
  240. }
復制代碼


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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 超碰在线国产 | 国产成人一区二区三区久久久 | 麻豆av在线 | 午夜精品久久久久久久久久久久久 | 国产免费xxx| 国产精品污www在线观看 | 国产高清一区二区三区 | 欧美日韩精品 | 精品伊人久久 | 久久黄色网 | 国产精品18久久久久久白浆动漫 | 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 日日爱夜夜操 | 麻豆一区二区三区精品视频 | 欧美亚洲国产日韩 | 国产精品一区一区 | 久久婷婷色 | 免费黄网站在线观看 | 午夜伦理影院 | 日韩一区二区三区av | 国产成人艳妇aa视频在线 | 欧美亚洲国产一区二区三区 | 亚洲视频一区二区三区 | 国产91网站在线观看 | 欧美 日韩 国产 成人 在线 | 在线观看视频91 | 精品久久久久久久久久久久久久 | 粉嫩粉嫩芽的虎白女18在线视频 | 欧美日韩中文在线观看 | 九九精品在线 | 日韩在线电影 | 一二三在线视频 | 91一区二区 | 亚洲乱码国产乱码精品精的特点 | 精品久久久久久久 | 美女视频一区二区三区 | 亚洲成人高清 | 狠狠草视频| 久久99精品久久久97夜夜嗨 | 欧美日韩一区二区在线播放 | 一区二区国产精品 |