久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

51單片機按鍵控制花樣燈

作者:佚名   來源:本站原創   點擊數:  更新時間:2010年09月10日   【字體:
首戰告捷——51單片機按鍵測試 
 

第一次那么認真過,越來越感覺自己不錯的嘛@!用了我5個小時吧~~

/**********************************************************************************************
* 本程序實現用按鍵控制花樣燈。                                                                                  *
* 當K1按下時,燈從0xfe向左跑一遍;                                                                          *
* 當K2按下時,LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置;                   *
* 當K3鍵按下時,LED燈從0xfe開始作流水燈形式運行一次,然后再流回來。         *
* 當K4鍵按下時,LED燈先亮前四個,接著再轉向亮后四個。                                 *
* 當K5鍵按下時,結束任意正在進行的程序,使LED燈全部熄滅。                         *
*********************************************************************************************/
*********************************************************************
 連接方法:P0接獨立按鍵JP5;P2接LED燈接口JP1            *
********************************************************************/
#include <reg52.h>   //頭文件,函數聲明
#include <intrins.h>

//定義按鍵所在位
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標準延時
{
    while(ms--)
 {
 for(j=0;j<110;j++);        //還是無法設置比較標準的延時,如1S等;所以應該用定時器延時才最準確
 }
}


void main()
{ //P2=led;
    unsigned int i;
   
 
    while(1)
 { 
  
/*********************************************
* 當K1按下時,燈從0xfe向左跑一遍;    *             
*********************************************/ 
      if(K1==0)
  delayms(10);        //消除鍵盤抖動
  if(K1==0)
  {
   led=0xfe; 
      for(i=0;i<7;i++)      //i可以去8的倍數,表示本電路執行多少次
   {
    //led=0x7f;     // P端口的初定義要在循環外面,不然會使效果錯亂
      P2=led;         //由于這里已經初設一個燈,所以for里面要加上這一個
    delayms(100);       //起初這里設置500MS,使按鍵每按一下燈彩走一個,不能達到要求。
    led=_crol_(led,1);
    
    P2=led;
    delayms(100);
     
         }
    while(!K1);         //這里強調松開就沒再次執行程序
    P2=led;             //說明執行完上面的程序的最后狀態 
      }  //P2=led;          // 如果把本行放在這里,雖然在開頭中沒有說明程序燒寫好之后就先顯示一個燈,但由于本行在if外面,所有最后還是會顯示 
 
 
/***********************************************************
*當K2按下時,LED燈從0x7f向右跑一遍到了0xfe右跑回到起始位置 *                 
***********************************************************/   
   
      if(K2==0)
  delayms(10);       
  if(K2==0)    
  {
   led=0x7f; 
      for(i=0;i<7;i++)      
   {
    P2=led;        
    delayms(100);     
    led=_cror_(led,1);
    
    P2=led;
    delayms(100);
     
      
         }
    while(!K1);       
    P2=led;
    delayms(100);
   for(i=0;i<7;i++)
   {
    led=_crol_(led,1);
    
    P2=led;
    delayms(100);             //跑回去怎么就那么快呀?
   }       //此時led=0x7f
    
      }   
/********************************************************************
*當K3鍵按下時,LED燈從0xfe開始作流水燈形式運行一次,然后再流回來。   *                 
********************************************************************/   
   if(K3==0)
  delayms(10); //消除抖動      
  if(K3==0)    
  {
   led=0xfe;
   delayms(200); 
      for(i=0;i<7;i++)      
   {
     P2=led;        
     delayms(200);     
     led=led<<1;     //  備注led=_crol_(led,1)等于led<<1||led>>7;
     
     P2=led;
     delayms(200);
      
        if(led==0x00)
     break;       //這里一定要有個break,跳出循環,然后別忘了此時的狀態是00,而不是7f
         }
   while(!K1);       
    
   led=0x7f;
   P2=led;
   delayms(200 ); 
   for(i=0;i<7;i++)
   {
     led=led>>1;
     
     P2=led;
     delayms(200);          
   }
    
      }    

/****************************************************
*當K4鍵按下時,LED燈先亮前四個,接著再轉向亮后四個。*               
****************************************************/
  if(K4==0)
  delayms(10); //消除抖動      
  if(K4==0)    
  {
   for(i=0;i<4;i++)      //執行四次
   { led=0xf0;
       P2=led;
    delayms(500);
    led=0x0f;
    P2=led; 
       delayms(500);
   } 
     }   
  
/********************************************************
*當K5鍵按下時,結束任意正在進行的程序,使LED燈全部熄滅。*               
********************************************************/  
   if(K5==0)
  delayms(10);
   if(K5==0)
  P2=0xff;
  
  }         
}

/****
大功告成,太高興了,第一次那么投入地去編程,希望再接再厲 !            */ 
關閉窗口

相關文章

主站蜘蛛池模板: 国产精品高潮呻吟 | 中文字幕在线观看精品 | 国产日产精品一区二区三区四区 | 欧美成人精品激情在线观看 | 午夜精品一区 | 久久在看 | 久久一区精品 | 在线观看h视频 | 日韩一区二区三区在线播放 | 日韩精品一区二区三区中文在线 | 日韩一及片 | 国产美女在线观看 | 欧美一区不卡 | 亚洲视频免费 | 国产精品一区二区三区四区 | 亚洲精品自在在线观看 | .国产精品成人自产拍在线观看6 | 在线欧美一区 | 一区二区三区中文字幕 | 成人在线电影在线观看 | 精品成人免费一区二区在线播放 | 中文字幕在线一 | 欧美激情视频一区二区三区免费 | 天天操天天射天天舔 | 成av在线 | 亚洲视频在线播放 | 成人三级网址 | 亚洲精品小视频在线观看 | 欧美国产精品久久久 | 亚洲一区中文字幕在线观看 | www.一区二区三区.com | 在线免费观看黄a | 精品久久久久久久久久久久久久 | 久久精品国产99国产精品 | 亚洲精品视频在线看 | 久久综合一区二区 | 国产一级在线观看 | 久久久久资源 | 亚洲网站在线观看 | 久久精品亚洲精品国产欧美 | 高清国产一区二区 |