<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用51單片機(jī)做的小旋磁美容儀

          用51單片機(jī)做的小旋磁美容儀

          作者: 時(shí)間:2012-12-01 來(lái)源:網(wǎng)絡(luò) 收藏

          //以下為按鍵檢測(cè)子程序
          void key(void)
          {
          uchar num,num1=0;
          uint a;
          P1=0xfc;
          num=P1;
          if(num!=0xfc)
          { fmqbit=0; //檢測(cè)按鍵有輸入鍵值時(shí)使蜂鳴器鳴叫
          if(openbit!=0)
          {

          for(a=17;a>0;a--)
          {
          display(time,hotled,xuanled);
          }
          }
          else
          {
          for(a=200;a>0;a--)
          {
          duan=0xfe; //此處隨便加入值
          shila=0;
          gela=0;
          hotla=0;
          xuanla=0;//打開(kāi)四路數(shù)碼管位顯示控制
          delay(1);
          }
          hotla=1;
          shila=1;
          gela=1;
          xuanla=1;//關(guān)閉四路數(shù)碼管位顯示控制
          }
          P1=0xfc;
          num=P1;
          if(num!=0xfc)
          { P1=0xfe;
          num=P1;
          if(num!=0xfe)
          {
          switch(num)
          {
          case 0xfa: num1=7; break;//旋轉(zhuǎn)減
          case 0xf6: num1=5; break;//hot 減
          case 0xee: num1=3; break;//時(shí)間減
          case 0xde:
          if(openbit!=0)
          {
          for(a=40;a>0;a--)
          display(time,hotled,xuanled);
          }
          else
          {
          for(a=400;a>0;a--)
          {
          duan=0xfe; //此處隨便加入值
          hotla=0;
          shila=0;
          gela=0;
          xuanla=0;//打開(kāi)四路數(shù)碼管位顯示控制
          delay(2);
          }
          hotla=1;
          shila=1;
          gela=1;
          xuanla=1;//關(guān)閉四路數(shù)碼管位顯示控制
          }
          openbit=~openbit;//改變開(kāi)關(guān)機(jī)標(biāo)志位
          default:break;
          }

          }
          else
          {
          P1=0xfd;
          num=P1;
          switch(num)
          {
          case 0xf9: num1=6; break;
          case 0xf5: num1=4; break;
          case 0xed: num1=2; break;
          default: break;
          } }
          if(openbit!=0)
          bianlian(num1);//開(kāi)機(jī)即可改變相關(guān)變量值,條件為開(kāi)機(jī)后使能 }
          } P1=0xfc;
          }//以下為定時(shí)0中斷程序,定時(shí)時(shí)間為50MS
          void time0_int(void) interrupt 1
          {
          TH0=0x3c;
          TL0=0xb0; //進(jìn)入裝初值
          d++;
          fmq=~fmq;
          if(d%10==0)
          xsd=~xsd;
          if(d==1200)
          {
          d=0;
          if(time!=0)
          time--; //此處停機(jī)變量處理已OK了。
          else
          openbit=0;

          }
          }//以下為定時(shí)1中斷程序,定時(shí)時(shí)間為1000US
          void time1_int(void) interrupt 3
          {
          TH1=0xff;
          TL1=0xe0;//進(jìn)入裝初值if(openbit!=0)
          {

          if(hot1)
          {
          hot1--;
          if(hot1==0)
          {
          hotoff1=hotoff;
          if(biaobit0!=0)
          hotout=0;
          else hotout=1;
          }
          }
          if(hotoff1)
          {
          hotoff1--;
          if(hotoff1==0)
          {
          hot1=hot;
          if(biaobit1!=0)
          hotout=1;
          else hotout=0;
          }
          } if(xuan1)
          {
          xuan1--;
          if(xuan1==0)
          {
          xuanoff1=xuanoff;
          if(biaobit2!=0)
          xuanout=0;
          else xuanout=1;
          }
          }

          if(xuanoff1)
          {
          xuanoff1--;
          if(xuanoff1==0)
          {
          xuan1=xuan;
          if(biaobit3!=0)
          xuanout=1;
          else xuanout=0;
          }
          }



          }
          }
          void main(void)
          {
          P1=0xfc;
          openbit=0;//使起始狀態(tài)為停機(jī)等待狀態(tài)
          TMOD=0x11; //定義定時(shí)器工作模式
          IP=0x08; //定時(shí)器1設(shè)置為最高中斷級(jí)別
          TH0=0x3c;
          TL0=0xb0; //進(jìn)入裝初值
          TH1=0xff;
          TL1=0xe0;//進(jìn)入裝初值
          ET0=1;
          ET1=1;
          EA=1; //定時(shí)中斷至此全部打開(kāi)開(kāi)始運(yùn)作。
          while(1)
          {
          hotout=1;
          xuanout=1;//將輸出都置為0輸出狀態(tài),待機(jī)狀態(tài) TR0=0;
          TR1=0;//將返回的定時(shí)器全部關(guān)閉,避免不必要的誤動(dòng)作
          duan=0xfe; //待機(jī)時(shí)顯示的筆段控制
          hotla=0;
          shila=0;
          gela=0;
          xuanla=0;//打開(kāi)四路數(shù)碼管位顯示控制
          delay(1); //顯示維持時(shí)間設(shè)定
          hotla=1;
          shila=1;
          gela=1;
          xuanla=1;//關(guān)閉四路數(shù)碼管位顯示控制

          if(P1!=0xfc)
          fmqbit=0;
          else fmqbit=1; //對(duì)按鍵掃描進(jìn)行檢測(cè),得出判斷蜂鳴器的鳴叫結(jié)果。 key(); //按鍵檢測(cè)函數(shù)調(diào)用
          if(openbit!=0)
          {

          d=0; //秒鐘計(jì)時(shí)值置0狀態(tài)
          TR0=1;
          TR1=1;
          hot=0;
          hot1=hot;
          hotoff=t-hot;
          hotoff1=hotoff; //將熱控制的初值給予設(shè)定 xuan=0;
          xuan1=xuan;
          xuanoff=t-xuan;
          xuanoff1=xuanoff; //將旋轉(zhuǎn)控制的初值給予設(shè)定 biaobit0=0;
          biaobit1=1;
          biaobit2=0;
          biaobit3=1; hotled=0; //將熱輸出顯示值及狀態(tài)設(shè)置為0狀態(tài)
          xuanled=0; //旋轉(zhuǎn),效果同上 time=30; //時(shí)間初值設(shè)置為30分鐘整
          while(openbit!=0)
          {
          key(); //按鍵檢測(cè)函數(shù)
          if((time==0)(d>=1000))
          {fmqbit=xsd;} //倒計(jì)至最后10秒時(shí)進(jìn)行鳴叫
          else
          {
          if(P1==0xfc)
          fmqbit=1;
          else fmqbit=0; //對(duì)按鍵掃描進(jìn)行檢測(cè),得出判斷蜂鳴器的鳴叫結(jié)果。
          }
          display(time,hotled,xuanled);//調(diào)用顯示函數(shù)
          }
          }
          }}
          與hotandxuan10區(qū)別于bing1 和bing0兩個(gè)變量取消,同時(shí)定時(shí)中斷1的程序體全部加以代碼優(yōu)化,解決掉原程序執(zhí)行過(guò)程中中斷停留時(shí)間過(guò)長(zhǎng),影響數(shù)碼管顯示,閃爍的問(wèn)題,同時(shí)處理掉按鍵在開(kāi)至最高檔時(shí)檢測(cè)靈敏度下降問(wèn)題.

          蜂鳴器相關(guān)文章:蜂鳴器原理

          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();