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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)控制的微波爐定時(shí)程序

          51單片機(jī)控制的微波爐定時(shí)程序

          作者: 時(shí)間:2012-08-15 來源:網(wǎng)絡(luò) 收藏

          //免責(zé)聲明:這是的定時(shí)功能 純?yōu)榧夹g(shù)交流、學(xué)習(xí)之用。
          //轉(zhuǎn)載、使用者切莫用于不正當(dāng)?shù)挠猛荆磺泻蠊赊D(zhuǎn)截/使用者自行負(fù)責(zé)
          //按下獨(dú)立鍵盤RD按鍵,每按一次增加60秒,按下INT1啟動(dòng),按下INT0停止
          //我們知道是不會(huì)自動(dòng)運(yùn)行的,得手動(dòng)啟動(dòng)

          #include reg52.h>
          #define uint unsigned int
          #define uchar unsigned uchar
          sbit duan=P2^5;
          sbit wei=P2^6;
          const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,

          0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF}; //數(shù)碼管數(shù)組
          uint bai=0,gg=16,shi=0,ge=0,x;
          uint time=60,tt=0; //uint tt,time;

          void init()
          {

          TMOD=0x01;

          TH0=(65536-50000)/256;

          TL0=(65536-50000)%256;
          EA=1;

          ET0=1;

          TR0=0;

          }

          void scan()
          {
          if(RD==0)
          {
          while(!RD);
          time=time+60;
          }
          if(INT0==0)TR0=0;
          if(INT1==0)TR0=1;
          }
          void fuzhi()
          {
          bai=time/60;
          shi=time%60/10;
          ge=time%10;
          }
          uint jishi()
          {
          if(tt==20)
          {
          tt=0;
          time--;if(time==0)TR0=0; //這個(gè)位置不能動(dòng),time--必須在if(tt==20)里
          }
          }
          //-------------------函數(shù)聲明--------------------------
          void disp(uint bai,uint gg,uint shi,uint ge);

          void delay(uint x)
          {
          uint a,b;
          for(a=x;a>0;a--)
          for(b=110;b>0;b--);
          }
          void main()
          {
          init();
          while(1)
          {
          jishi();
          scan();

          fuzhi();
          disp(bai,gg,shi,ge);
          if(INT1==0)TR0=1;
          }
          }
          //------------------------------------------------
          void disp(uint bai,uint gg,uint shi,uint ge)
          {
          duan=1;P0=table[bai];duan=0;
          wei=1;P0=0x02;wei=0;
          delay(5);

          duan=1;P0=table[gg];duan=0;
          wei=1;P0=0x04;wei=0;
          delay(2);

          duan=1;P0=table[shi];duan=0;
          wei=1;P0=0x08;wei=0;
          delay(5);

          duan=1;P0=table[ge];duan=0;
          wei=1;P0=0x10;wei=0;
          delay(5);

          }
          void tming0() interrupt 1
          {
          TH0=(65536-50000)/256;

          TL0=(65536-50000)%256;
          tt++;

          }


          //-----------------------------------------------

          //
          //每按一次RD增加60秒,每按一次WR減少60秒,每按一次T1增加30秒,每按一次T0減少30秒
          //按下INT1啟動(dòng),按下INT0停止
          //我們知道微波爐是不會(huì)自動(dòng)運(yùn)行的,得手動(dòng)啟動(dòng),所以設(shè)定好定時(shí)時(shí)長后按下INT0啟動(dòng)。結(jié)束后蜂鳴器響3聲
          //已完善的程序見另一章文章:
          //免責(zé)聲明:這是模擬微波爐的定時(shí)



          評論


          相關(guān)推薦

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

          關(guān)閉