×
单片机 > 单片机程序设计 > 详情

51单片机输出3路PWM,驱动RGB LED源程序

发布时间:2024-05-21 发布时间:
|

用单片机中断处理PWM,控制普通三色LED,输出七种不同颜色,呼吸变化。不占用程序运行时间。

单片机源程序如下:

}

else //白色由亮变暗

{

time-=t;

G_OUT=time;

B_OUT=time;

R_OUT=time;

if(time<=MIN)

{

dir=0;

time=0;

index=0;

}

}

break;

}

}

//定时器1配置

void configtime1()

{

TH1=0x80;

TL1=TH1;

TMOD&=0x0f;

TMOD|=0x20;

TR1=1;

ET1=1;

}

//定时器0配置

void configtime0(unsigned int ms)

{

unsigned long tmp;

tmp=11059200/12;

tmp=tmp*ms/1000;

tmp=65536-tmp;

T0RH=(unsigned char)(tmp>>8);

T0RL=(unsigned char)tmp;

TH0=T0RH;

TL0=T0RL;

TMOD&=0xf0;

TMOD|=0x01;

TR0=1;

ET0=1;

}

//定时器0中断涵数,每5ms刷新一次占空比

void timer0() interrupt 1

{

static unsigned int tmr;

TH0=T0RH;

TL0=T0RL;

tmr++;

if(tmr>=5)

{

tmr=0;

ConfigPWM(1);

}

}

//定时器1中断涵数,输出占空比

void timer1() interrupt 3

{

unsigned char cnt;

for(cnt=0;cnt

{

if(cnt

R_LED=1; //红色占空比大于计数值时红灯亮

else

R_LED=0; //否则就关闭红色

if(cnt

G_LED=1; //绿色占空比大于计数值时绿灯亮

else

G_LED=0; //否则就关闭绿色

if(cnt

B_LED=1; //蓝色占空比大于计数值时蓝灯亮

else

B_LED=0; //否则就关闭蓝色

}

}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机制作超级流水灯