單片機源程序如下:
- #include<AT89X52.H>
- int main()
- {
- unsigned int i;
- unsigned char j;
- unsigned char LEDState=0;//0 閃爍 1 跑馬燈上之下 2 流水燈上之下 3 流水燈下之上 4跑馬燈下之上
- //識別按鍵
- while(1)
- {
- if(P1_0==0)//按鍵按下
- {
- //消抖 延時 10S
- for(i=0;i<1000;i++);
- //等待按鍵抬起,直到按鍵抬起為止
- while(P1_0==0);
- //消抖
- for(i=0;i<1000;i++);//按鍵抬起以后做的事
- LEDState=(LEDState+1)%5;
- }
-
- if(LEDState==0)//閃爍
- {
- P2=0X00;
- for(i=0;i<20000;i++);
- P2=~P2;
- for(i=0;i<20000;i++);
- }
- else if(LEDState==1)//上到下跑馬
- {
- for(j=0;j<8;j++)
- {
- P2=~(1<<j);
- for(i=0;i<20000;i++);
- }
- }
- else if(LEDState==2)//上到下流水
- {
- P2=0XFF;
- for(j=0;j<8;j++)
- {
- P2=P2&(~(1<<j));
- for(i=0;i<20000;i++);
- }
- for(j=0;j<8;j++)
- {
- P2=P2|(1<<j);
- for(i=0;i<20000;i++);
- }
-
- }
- else if(LEDState==3)//下到上流水
- {
- P2=0XFF;
- for(j=0;j<8;j++)
- {
- P2=P2&(~(1<<(7-j)));
- for(i=0;i<20000;i++);
- }
- for(j=0;j<8;j++)
- {
- P2=P2|(1<<(7-j));
- for(i=0;i<20000;i++);
- }
-
- }
- else if(LEDState==4)//下到上跑馬
- {
- for(j=0;j<8;j++)
- {
- P2=~(1<<(7-j));
- for(i=0;i<20000;i++);
- }
- }
- }
- }
復制代碼
所有資料51hei提供下載:
RZH跑馬流水切換.zip
(75.88 KB, 下載次數: 35)
2020-3-19 16:35 上傳
點擊文件名下載附件
|