當前位置:編程學習大全網 - 編程語言 - 怎麽用單片機按鍵控制循環跑馬燈

怎麽用單片機按鍵控制循環跑馬燈

我剛好寫過壹個這樣的程序,參考壹下吧,希望對妳有幫助

/*硬件電路連接:流水燈接在P0口, 陽極接高電平,

陰極接P0口,4個按鍵分別接P3.4,P3.5, P3.6,P3.7 ,按下時是低電平 */

#include <regx51.h>

sbit key1=P3^4;

sbit key2=P3^5;

sbit key3=P3^6;

sbit key4=P3^7;

int a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//左流水燈數組

int b[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//右流水燈數組

int c[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff}; //逐盞點亮,逐盞滅掉數組

//************************************************************************************************************

void delay()

//延時子程序

{int i;

for(i=0;i<30000;i++);

}

//**********************************************************************************************************

void aa() //實現要求(1)的子程序(key1按下時流水燈,彈開時全滅)

{ int i=0;

while(!key1) //判斷是否有鍵按下

{P0=a[i];delay();i++;if(i==8)i=0;}//流水燈

}

//*************************************************************************************************************

void bb() // 實現要求(2)的子程序(key2按下時實現計數功能,彈開時停止計數;)

{

while(!key2){P0--;delay();if(P0==0)P0=0xff;} //判斷是否有鍵按下,按下則計數器加1

}

//*************************************************************************************************************

void cc() // 實現要求(3)的子程序(key3按下時實現逐盞點亮,逐盞滅掉)

{ int i=0;

P0=0xff ;// 發光二極管全滅

while(!key3) //判斷是否有鍵按下

{P0=c[i];delay();i++;if(i==16)i=0;}//逐盞點亮,逐盞滅掉

}

//*************************************************************************************************************

void dd() // 實現要求(4)的子程序(key4按第壹次按下,左流水,第二次按下,右流水,第三次按下,熄滅)

{ int i=0,j=0,k=0,h=0;

loop:P0=0xff;

if(key4==0)

//第壹次判斷是否有鍵按下

{for(i=0;i<30000;i++); //延時防抖動

if(key4==1)

//判斷按鍵是否彈起

while(1){P0=a[j];delay();j++;if(j==8)j=0; //左流水燈

if(key4==0)

//第二次判斷是否有鍵按下

{for(i=0;i<30000;i++);

//延時防抖動

if(key4==1)

//判斷按鍵是否彈起

while(1){P0=b[k];delay();k++;if(k==8)k=0; //右流水燈

if(key4==0)

//第三次判斷是否有鍵按下

{for(i=0;i<30000;i++);

//延時防抖動

if(key4==1)

//判斷按鍵是否彈起

goto loop;

//跳轉到LOOP處,即P3=0xff,此時燈全滅

}}}}}}

//****************************************************************************************************************

main()

{while(1){P0=0xff;

while(!key1)aa();

while(!key2)bb();

while(!key3)cc();

while(!key4)dd();

}}

  • 上一篇:小學二年級下冊數學教學設計三篇
  • 下一篇:智能電能表怎麽連接rs485
  • copyright 2024編程學習大全網