呼吸灯程序
来源:互联网 发布:淘宝贴片图 编辑:程序博客网 时间:2024/05/17 01:23
#nclude //51头文件
//《B_无级亮度变化》
#define DY_PORT P1 //设置LED连接的I/O组
#define DY_SPEED 1 //设置每一个明亮级的停留时间(值域:0~65535)
#define DY_PWM 500 //设置明亮的总级数(级数过大会出现闪烁)(值域:0~65535)
#define DY_MAX 500 //设置最大明亮(值域:小于明亮总级数)
void delay (unsigned int a){ // 0.1ms延时程序(12MHz 10倍于51单片机速度时)
unsigned char i;
while( --a != 0){
for(i = 0; i < 12; i++);
}
}
void display (unsigned int a){ //显示程序(50ms的PWM宽度)
DY_PORT = 0x00; //LED小灯亮
delay (a); //延时a的长度
DY_PORT = 0xff; //LED小灯灭
delay (DY_PWM-a);//延时总PWM长度减a
}
void main (void){ //主程序
unsigned int t=1;
unsigned int i;
bit LOOP=0; //LOOP是循环切换标志
while (1){
if(LOOP == 0){ //变亮循环
for(i = 0; i < DY_SPEED; i++){
display(t);
}
t++;
if(t>(DY_MAX-2)){
LOOP = 1;
}
}
if(LOOP == 1){ //变暗循环
for(i = 0; i < DY_SPEED; i++){
display(t);
}
t--;
if(t<2){