51单片机实现七彩呼吸灯程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机用PWM的RGB呼吸灯程序
程序设计思路:灯在高速闪烁人眼是看不出来的,开的时候,以非常快的速度开-关,逐渐加大开的时间比率,减小关的时间比率。关的时候,以非常快的速度开-关,逐渐加大关的时间比率,减小开的时间比率。程序如下:
#include
typedef unsigned int WORD;
/*-----------定义单片机引脚-----*/
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
void Delay(WORD t); //函数声明
WORD z,y;
void main (void)//主函数
{
WORD CYCLE=500,PWM_LOW=0;//定义周期并赋值
while (1) //主循环
{
/*--------第一颜色LED灯呼吸---------*/
LED1=1;
Delay(500);
for(PWM_LOW=1;PWM_LOW LED1=0; //点亮LED灯 Delay(PWM_LOW); LED1=1; Delay(CYCLE-PWM_LOW); } LED1=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) //实现亮缓慢到暗{ LED1=0; Delay(PWM_LOW); LED1=1; Delay(CYCLE-PWM_LOW); } //同理可以实现剩下的六种颜色 /*--------第二颜色LED灯呼吸----------*/ LED2=1; Delay(500); for(PWM_LOW=1;PWM_LOW { LED2=0; Delay(PWM_LOW); LED2=1; Delay(CYCLE-PWM_LOW); } LED2=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { LED2=0; Delay(PWM_LOW); LED2=1; Delay(CYCLE-PWM_LOW); } /*--------第三颜色LED灯呼吸----------*/ LED3=1; Delay(500); for(PWM_LOW=1;PWM_LOW LED3=0; Delay(PWM_LOW); LED3=1; Delay(CYCLE-PWM_LOW); } LED3=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { LED3=0; Delay(PWM_LOW); LED3=1; Delay(CYCLE-PWM_LOW); } /*--------第四颜色LED灯呼吸----------*/ LED1=1; LED2=1; Delay(500); for(PWM_LOW=1;PWM_LOW LED1=0; LED2=0; Delay(PWM_LOW); LED1=1; LED2=1; Delay(CYCLE-PWM_LOW); } LED1=0; LED2=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { LED1=0; LED2=0; Delay(PWM_LOW); LED1=1; LED2=1; Delay(CYCLE-PWM_LOW); } /*--------第五颜色LED灯呼吸----------*/ LED1=1; LED3=1; Delay(500); for(PWM_LOW=1;PWM_LOW LED1=0; LED3=0; Delay(PWM_LOW); LED1=1; LED3=1; Delay(CYCLE-PWM_LOW); } LED1=0; LED3=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { LED1=0; LED3=0; Delay(PWM_LOW); LED1=1; LED3=1; Delay(CYCLE-PWM_LOW); } /*--------第六颜色LED灯呼吸----------*/ LED2=1; LED3=1; Delay(500); for(PWM_LOW=1;PWM_LOW LED2=0; LED3=0; Delay(PWM_LOW); LED2=1; LED3=1; Delay(CYCLE-PWM_LOW); } LED2=0; LED3=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { LED2=0; LED3=0; Delay(PWM_LOW); LED2=1; LED3=1; Delay(CYCLE-PWM_LOW); } /*--------第七颜色LED灯呼吸----------*/ LED1=1; LED2=1; LED3=1; Delay(500); for(PWM_LOW=1;PWM_LOW LED1=0; LED2=0; LED3=0; Delay(PWM_LOW); LED1=1; LED2=1; LED3=1; Delay(CYCLE-PWM_LOW); } LED1=0; LED2=0; LED3=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--) { LED1=0; LED2=0; LED3=0; Delay(PWM_LOW); LED1=1; LED2=1;