標(biāo)題: 基于單片機(jī)按鍵按下改變流水燈方向源程序 [打印本頁]

作者: shankmorder    時(shí)間: 2021-5-2 18:46
標(biāo)題: 基于單片機(jī)按鍵按下改變流水燈方向源程序
P2口接8個(gè)LED流水燈,P3.0接一個(gè)按鍵
按鍵按下一次流水燈方向改變一次

單片機(jī)源程序如下:
#include<reg52.h>             //51系列單片機(jī)頭文件
#include<intrins.h>           //51系列單片機(jī)頭文件
#define uint unsigned int     //宏定義
#define uchar unsigned char   //宏定義
sbit k1=P3^0;
uchar a,b,c,d,y=0;            //定義一個(gè)變量,用來給P2口賦值
void delayms(uint xms)        //延時(shí)子函數(shù)
{
  uint i,j;
  for(i=xms;i>0;i--)          //i=xms即延時(shí)約xms毫秒
  for(j=110;j>0;j--);      
}
void key()
{
  uchar x;
  if(k1==0)
  {
    delayms(10);              //延時(shí)10ms 去抖
    if(k1==0)                                  //再判斷k1按鍵是否按下
    {
      while(!k1);
      x++;
      if(x==4)
      x=1;
      if(y==4)
      x=0;
      switch(x)                                  //條件選擇
      {
        case 1: y=1; break;
        case 2: y=2; break;
        case 3: y=3; break;
        default: break;  
      }
    }
  }
}
void display()
{   
    if(y==0)
        {
          P2=a;
          delayms(500);
          a=~a;                                 //狀態(tài)0時(shí) LED閃爍
        }  
    if(y==1)
    {      
      P2=b;            
      delayms(500);                     
      b=_crol_(b,1);           //狀態(tài)1時(shí) LED選擇左移
    }
    if(y==2)
    {
      P2=c;            
      delayms(500);                     
      c=_cror_(c,1);         //狀態(tài)2時(shí) LED選擇右移
    }      
    if(y==3)
    {
      P2=d;           
      delayms(500);                     
      d=d;                     //狀態(tài)3時(shí)  LED全亮
    }
  }
void main()            
{
  a=0xff;                         //高4位和低4位都置為1
  b=0x01;                                //只有低4位的最低位為1
  c=0xfe;                                //低4位的最低位為0
  d=0xff;  
  while(1)            
  {  
    key();
    display();                   //按鍵顯示
  }
}







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1