色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)用C語(yǔ)言實(shí)現(xiàn)交通燈

          51單片機(jī)用C語(yǔ)言實(shí)現(xiàn)交通燈

          作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
          51單片機(jī)C語(yǔ)言實(shí)現(xiàn)交通燈(紅綠燈)源程序
          交通燈,紅黃綠燈交替亮,怎樣實(shí)現(xiàn)呢?其實(shí)就是根據(jù)單片機(jī)定時(shí)器及倒計(jì)時(shí)的程序修改。

          源程序如下:



          #include

          bit red,green,yellow,turnred; //定義紅、黃、綠及轉(zhuǎn)紅標(biāo)志

          code unsigned char tab[]=
          {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
          //共陰數(shù)碼管 0-9

          unsigned char Dis_Shiwei;//定義十位
          unsigned char Dis_Gewei; //定義個(gè)位
          void delay(unsigned int cnt) //用于動(dòng)態(tài)掃描數(shù)碼管的延時(shí)程序
          {
          while(--cnt);
          }

          main()
          {

          TMOD |=0x01;//定時(shí)器設(shè)置 10ms in 12M crystal定時(shí)器0,工作方式1,16位定時(shí)器
          TH0=0xd8; //65535-10000=55535=D8F0(十六進(jìn)制)
          TL0=0xf0;
          IE= 0x82; //中斷控制,EA=1開(kāi)總中斷,ET0=1:定時(shí)器0中斷允許
          TR0=1; //開(kāi)定時(shí)器0中斷

          P1=0xfc;//紅燈亮,根據(jù)紅黃綠接燈的順序。
          red =1;
          while(1)
          {
          P0=Dis_Shiwei;//顯示十位,這里實(shí)現(xiàn)用8位數(shù)碼管,即左1位
          P2=0;
          delay(300);//短暫延時(shí)
          P0=Dis_Gewei; //顯示個(gè)位,左數(shù),2位
          P2=1;
          delay(300);
          }

          }



          void tim(void) interrupt 1 using 1
          {
          static unsigned char second=60,count; //初值60

          TH0=0xd8;//重新賦值,10毫秒定時(shí)
          TL0=0xf0;
          count++;
          if (count==100)
          {
          count=0;
          second--;//秒減1
          if(second==0)
          { //這里添加定時(shí)到0的代碼 ,可以是燈電路,繼電器吸合等,或者執(zhí)行一個(gè)程序
          if(red) //紅滅,先轉(zhuǎn)黃
          {
          red=0;yellow=1;
          second=4;
          P1=0xF3;//黃燈亮4秒,黃燈為過(guò)渡燈,再根據(jù)情況轉(zhuǎn)綠或轉(zhuǎn)紅
          }
          else if(yellow && !turnred)
          {
          yellow=0;green=1;
          second=25;
          P1=0xCF;//綠燈亮25秒,
          }
          else if(green)
          {
          yellow=1;green=0;
          second=4;
          P1=0xF3;//黃燈亮4秒
          turnred=1;
          }
          else if(yellow && turnred) //綠燈滅,轉(zhuǎn)黃燈,后紅燈,turnred=1時(shí)
          {
          red=1;yellow=0;
          P1=0xFC;//紅燈亮60秒
          second=60;
          turnred=0; //接下來(lái)是轉(zhuǎn)黃,綠。
          }

          }
          Dis_Shiwei=tab[second/10];//十位顯示值處理
          Dis_Gewei=tab[second]; //個(gè)位顯示處理

          }
          }


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉