<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-09-10 來(lái)源:網(wǎng)絡(luò) 收藏

          /****************************************************
          * 本程序?qū)崿F(xiàn)用燈。 *
          * 當(dāng)K1按下時(shí),燈從0xfe向左跑一遍; *
          * 當(dāng)K2按下時(shí),LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置; *
          * 當(dāng)K3鍵按下時(shí),LED燈從0xfe開(kāi)始作流水燈形式運(yùn)行一次,然后再流回來(lái)。 *
          * 當(dāng)K4鍵按下時(shí),LED燈先亮前四個(gè),接著再轉(zhuǎn)向亮后四個(gè)。 *
          * 當(dāng)K5鍵按下時(shí),結(jié)束任意正在進(jìn)行的程序,使LED燈全部熄滅。 *
          ******************************************************/
          *************************************************
          連接方法:P0接獨(dú)立JP5;P2接LED燈接口JP1 *
          ***********************************************************/
          #include reg52.h> //頭文件,函數(shù)聲明
          #include intrins.h>

          本文引用地址:http://www.ex-cimer.com/article/170903.htm

          //定義所在位
          sbit K1=P0^0;
          sbit K2=P0^1;
          sbit K3=P0^2;
          sbit K4=P0^3;
          sbit K5=P0^4;
          unsigned char led;
          unsigned char j;

          void delayms(unsigned char ms) // 1ms標(biāo)準(zhǔn)延時(shí)
          {
          while(ms--)
          {
          for(j=0;j110;j++); //還是無(wú)法設(shè)置比較標(biāo)準(zhǔn)的延時(shí),如1S等;所以應(yīng)該用定時(shí)器延時(shí)才最準(zhǔn)確
          }
          }


          void main()
          { //P2=led;
          unsigned int i;

          while(1)
          {

          /*********************************************
          * 當(dāng)K1按下時(shí),燈從0xfe向左跑一遍; *
          *********************************************/
          if(K1==0)
          delayms(10); //消除鍵盤(pán)抖動(dòng)
          if(K1==0)
          {
          led=0xfe;
          for(i=0;i7;i++) //i可以去8的倍數(shù),表示本電路執(zhí)行多少次
          {
          //led=0x7f; // P端口的初定義要在循環(huán)外面,不然會(huì)使效果錯(cuò)亂
          P2=led; //由于這里已經(jīng)初設(shè)一個(gè)燈,所以for里面要加上這一個(gè)
          delayms(100); //起初這里設(shè)置500MS,使按鍵每按一下燈彩走一個(gè),不能達(dá)到要求。
          led=_crol_(led,1);

          P2=led;
          delayms(100);

          }
          while(!K1); //這里強(qiáng)調(diào)松開(kāi)就沒(méi)再次執(zhí)行程序
          P2=led; //說(shuō)明執(zhí)行完上面的程序的最后狀態(tài)
          } //P2=led; // 如果把本行放在這里,雖然在開(kāi)頭中沒(méi)有說(shuō)明程序燒寫(xiě)好之后就先顯示一個(gè)燈,但由于本行在if外面,所有最后還是會(huì)顯示


          /***********************************************************
          *當(dāng)K2按下時(shí),LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置 *
          ***********************************************************/

          if(K2==0)
          delayms(10);
          if(K2==0)
          {
          led=0x7f;
          for(i=0;i7;i++)
          {
          P2=led;
          delayms(100);
          led=_cror_(led,1);

          P2=led;
          delayms(100);


          }
          while(!K1);
          P2=led;
          delayms(100);
          for(i=0;i7;i++)
          {
          led=_crol_(led,1);

          P2=led;
          delayms(100); //跑回去怎么就那么快呀?
          } //此時(shí)led=0x7f

          }
          /*****************************************************
          *當(dāng)K3鍵按下時(shí),LED燈從0xfe開(kāi)始作流水燈形式運(yùn)行一次,然后再流回來(lái)。 *
          *************************************************/
          if(K3==0)
          delayms(10); //消除抖動(dòng)
          if(K3==0)
          {
          led=0xfe;
          delayms(200);
          for(i=0;i7;i++)
          {
          P2=led;
          delayms(200);
          led=led1; // 備注led=_crol_(led,1)等于led1||led>>7;

          P2=led;
          delayms(200);

          if(led==0x00)
          break; //這里一定要有個(gè)break,跳出循環(huán),然后別忘了此時(shí)的狀態(tài)是00,而不是7f
          }
          while(!K1);

          led=0x7f;
          P2=led;
          delayms(200 );
          for(i=0;i7;i++)
          {
          led=led>>1;

          P2=led;
          delayms(200);
          }

          }

          /****************************************************
          *當(dāng)K4鍵按下時(shí),LED燈先亮前四個(gè),接著再轉(zhuǎn)向亮后四個(gè)。*
          ****************************************************/
          if(K4==0)
          delayms(10); //消除抖動(dòng)
          if(K4==0)
          {
          for(i=0;i4;i++) //執(zhí)行四次
          { led=0xf0;
          P2=led;
          delayms(500);
          led=0x0f;
          P2=led;
          delayms(500);
          }
          }

          /********************************************************
          *當(dāng)K5鍵按下時(shí),結(jié)束任意正在進(jìn)行的程序,使LED燈全部熄滅。*
          ********************************************************/
          if(K5==0)
          delayms(10);
          if(K5==0)
          P2=0xff;

          }
          }

          /**** */



          關(guān)鍵詞: 花樣 控制 按鍵 單片機(jī)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();