C51单片机实现呼吸灯和花样流水灯程序
1.用C51单片机实现花样流水灯,代码如下:
#include <reg52.h> #define LED_A P1 //led灯所用的接口,是哪个口就写P几 void delayms() { unsigned char x = 0; unsigned char i; unsigned char y = 0; while(y < 0.001) //定义led灯的切换的延时时间,越小越快。 { //(y < 0.001);(x<100);(i<100)都可以修改 x = 0; while(x<100) { i = 0; while(i<100) { i++; } x++; } y++; } } #define LED_NUM 8 //定义led灯的数量,可快速实现不同用途的修改; void main() { unsigned char k; unsigned char j; unsigned char LED_ALL[] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F}; //led灯亮灭的十六进制数组; unsigned char LED_ALL_2[] = {0XFC,0XF3,0XCF,0X3F}; while(1) { for(k=0;k<3;k++) //第一个for实现奇偶灯交叉闪烁三次,想闪烁几次就修改(K<3)中的数值; { LED_A = 0xAA; delayms(); LED_A = 0x55; delayms(); } for(k=3;k>0;k--) //实现一个流水灯左右三次(从左到右再从右到左算一次); { for(j=0;j<LED_NUM;j++) { LED_A = LED_ALL[j]; delayms(); } for(j=6;j>0;j--) { LED_A = LED_ALL[j]; delayms(); } } for(k=0;k<3;k++) //实现前四个灯亮后四个灯灭,交叉闪烁3次,修改次数同上; { LED_A = 0xf0; delayms(); LED_A = 0xf; delayms(); } for(k=3;k>0;k--) //实现两个灯依次流水3次; { for(j=0;j<4;j++) { LED_A = LED_ALL_2[j]; delayms(); } for(j=2;j>0;j--) { LED_A = LED_ALL_2[j]; delayms(); } } } }
2.实现第一个灯呼吸,由暗变亮,再由亮变暗,程序如下;
1 #include <reg52.h> 2 sbit LED1 = P3^0; 3 void delay(unsigned int a) //定义一个延时函数 4 { 5 while(--a); 6 } 7 void main() 8 { 9 unsigned int t,circle=800; //定义变量,circle=800为led灯呼吸的间隔长短,数值越小,间隔越短。 10 while(1) 11 { 12 LED1 = 1; 13 for(t=1;t<circle;t++) 14 { 15 LED1 = 0; 16 delay(t); 17 LED1 = 1; 18 delay(circle-t); 19 } 20 LED1 = 0; 21 for(t=circle-1;t>0;t--) 22 { 23 LED1 = 0; 24 delay(t); 25 LED1 = 1; 26 delay(circle-t); 27 } 28 } 29 }