单片机源程序如下:
- #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)
|