渐明渐暗的闪烁彩灯
/****************************************************************************
程序名: 渐明渐暗的闪烁彩灯
编写人: 杜洋
初写时间: 2005年8月25日
程序功能: 使LED彩灯由亮渐灭再由灭渐亮的闪烁
实现方法: 通过改变彩灯亮灭的时间长度来改变彩灯亮度
CPU说明: AT89S52型单片机 12MHZ晶体振荡器
修改日志:
NO.1-2005年8月26日-修改了闪烁周期长度
/****************************************************************************/
#include <AT89X52.h>
sbit LED = P0 ^ 0; //你的P1.0引脚上接了一个发光二极管
code unsigned char stop[3] _at_ 0x3B; //Mon51用
/****************************************************************************
延时程序:
/****************************************************************************/
void delay (unsigned int d){ // 延时功能函数--由d决定延时长度
unsigned char i;
while( d-- != 0){
for(i = 0; i < 8; i++);
}
}
/****************************************************************************
主程序:渐变式LED闪烁
/****************************************************************************/
void main (void){ // 彩灯主函数 实现彩灯的显示
unsigned char a, b; // a控制延时长度 b控制循环周期
while (1){
LED = 1;
a = 0x00;
for (b=255; b>0; b--){ // 定义半周期循环时间(次数)
a++;
delay (a); // 延时长度随a而改变
LED = 0;
a = ~a; // a值取反 决定灯灭时的占空比
delay (a);
LED = 1;
a = ~a; // a值取反 使a回到原值继续循环
}
LED = 0; // 彩灯全亮 使灯达到最亮
a = 0x00;
for (b=255; b>0; b--){
a++;
delay (a);
LED = 0xff;
a = ~a;
delay (a);
LED = 0;
a = ~a;
}
LED = 1;
}
}
/*****************************************************************************
DoYoung.net 电子技术
/*****************************************************************************/
文章评论(0条评论)
登录后参与讨论