P1口4种流水灯,东西全在附件里了。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #define led P1 //可以改为其他口
- void delay(int x);
- void left(int x);
- void right(int x);
- void flash1(int x);
- void flash2(int x);
- void delay(x) //延迟函数1ms(大概)
- {int i;
- while(x)
- {
- for(i=0;i<125;i++);
- x--;
- }
- }
- void left(x) //从最高位的最低位(我叫它左移)
- {int i,j;
- for(i=0;i<3;i++) // 循环3遍
- { led=0xfe;
- delay(10); //每个灯亮10ms
- for(j=0;j<7;j++) //一共8位
- {
- led=led<<1|0x01;
- delay(10); //每个灯亮10ms
- }
- }
- }
- void right(x) //从最低位的最高位(我叫它右移)
- {int i,j; //其他同左移
- for(i=0;i<3;i++)
- { led=0x7f;
- delay(10);
- for(j=0;j<7;j++)
- {
- led=led>>1|0x80;
- delay(10);
- }
- }
- }
- void flash1(x) //八位全闪 (可以改很多种)
- {int i;
- led=0xff;
- delay(20); //一次亮20ms
- for(i=0;i<1;i++) //可以改循环次数
- {
- led=~led;
- delay(20);
- }
- }
- void flash2(x) //隔一位闪烁(全闪改)
- {int i; //基本和全闪一样
- led=0x55;
- delay(20);
- for(i=0;i<1;i++)
- {
- led=~led;
- delay(20);
- }
- }
- main()
- {while(1)
- {left(1); //控制每个子程序的次数
- right(1); //交替使用效果还行
- flash1(1);
- flash2(1);
- }
- }
复制代码
所有资料51hei提供下载:
P1口4种流水灯.zip
(57.37 KB, 下载次数: 19)
|