<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        51單片機信號交通燈系統源代碼

        作者:寒竹子   來源:本站原創   點擊數:  更新時間:2014年03月23日   【字體:

        本程序所用的原理圖下載: 點這里 ,單片機芯片使用的stc89c52

        /*項目:交通燈控制系統
        *項目設計 交通燈用于控制行人和車輛依 次通過十字路口。
        *其設計要求 如 下: 1)、首先車行道亮綠燈 45s,同時人行道亮紅 45s;
        *45s 后,2)、車行道黃燈閃爍 3 次,亮、滅各 1s,
        *此時人行道 仍維持紅燈;
        *3)、6s 后,轉為 人行道亮綠燈 20s,車行道亮 紅燈 20s;
        *4)、20s 后,再轉到 第 1步,如此循環往復; 5)
        *51 系列單片機控制整個系統工 作; 6) 交通信號燈用 LED 代 替;
        */
        /**
        *項目名稱:信號交通燈控制系統;
        *作者:徐冉;
        *日期:2013-06-01-10:00-13:45;
        *說明:開源項目,基于AT89C52-RC單片機,51hei開發板;
        *備注:系統已經順利通過調試,完美通過測試并成功實現系統功能,耗時3小時45分鐘;
        **/
        /*******************AT89C52-RC單片機****************************/
        /*************************HL-1開發板***************************/
        #include <reg52.h>
        typedef unsigned int uint;
        typedef unsigned char uchar;
        sbit wela = P2^7;
        sbit dula = P2^6;
        //車行道:信號交通燈
        sbit cled_hong = P1^0;    // 紅燈
        sbit cled_lv = P1^2;     //綠燈
        sbit cled_huang = P1^4; //黃燈
        //人行道:信號交通燈
        sbit rled_hong = P1^1; //紅燈
        sbit rled_lv = P1^3;  //綠燈
        //table:code
        uchar code table[] = {  
             0x3F,  //"0"
                         0x06,  //"1"
                         0x5B,  //"2"
                         0x4F,  //"3"
                         0x66,  //"4"
                         0x6D,  //"5"
                         0x7D,  //"6"
                         0x07,  //"7"
                         0x7F,  //"8"
                         0x6F  //"9"
                 };
        uchar sec, counter, counter1, flag, flag1;
        //timer1&timer0:init
         void init()
         {
          P1 = 0xff;
          TMOD = 0x11;//T0,T1 工作方式1
         TH0 = 0xB8; //定時20ms
         TL0 = 0x00;
         TH1 = 0xB8;
         TL1 = 0x00;
         TR0 = 1;
         EA = 1;
         ET0 = 1;
         ET1 = 1;
         }
        //delay:xms
        void delay(uint xms)
        {
         uchar i, j;
         for(i = 0; i < xms; i++)
           for(j = 0; j < 110; j++);
        }
        //display:
        void display(uchar sec)
        {
         uchar cshi, cge;
         cshi = sec / 10 % 10;
         cge = sec % 10;
         dula = 1;
         P0 = table[cshi];
         dula = 0;
         P0 = 0xff;
         wela = 1;
         P0 = 0xfe;
         wela = 0;
         P0 = 0x00;
         delay(1);
         dula = 1;
         P0 = table[cge];
         dula = 0;
         P0 = 0xff;
         wela = 1;
         P0 = 0xfd;
         wela = 0;
         P0 = 0x00;
         delay(1);
        }
        //main:
        void main(void)
        {
          init();
         while(1)
         {
             display(sec);
          rled_lv = 1;
          cled_hong = 1;
             rled_hong = 0;
          cled_lv = 0;
          if(flag == 1)
          {
           TR1 = 1;
           rled_hong = 0;
           cled_lv = 1;
          }
          if(flag1 == 1)
          {
           TR1 = 0;
           cled_huang = 1;
           rled_hong = 1;
           cled_lv = 1;
           rled_lv = 0;
           cled_hong = 0;
          }
         }
        }
        //timer0:int
        void timer0_int() interrupt 1
        {
         TH0 = 0xB8;
         TL0 = 0x00;
         counter++;
         if(counter == 50)
         {
          counter = 0;
          sec++;
          if(sec >= 45)
          {
           flag = 1;
             }
          if(sec >= 51)
          {
           flag1 = 1;
           flag = 0;
          }
          if(sec == 71)
          {
           sec = 0;
           flag1 = 0;
           P1 = 0xff;
           rled_hong = 0;
           cled_lv = 0;
           rled_lv = 1;
           cled_hong = 1;
           cled_huang = 1;
          }
         }
        }
        //timer1:int
        void timer1_int() interrupt 3
        {
         TH1 = 0XB8;
         TL1 = 0X00;
         counter1++;
         if(counter1 == 50)
         {
          counter1 = 0;
          cled_huang = ~cled_huang;
         }
        }
         

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮