正文

彩色灯光控制系统2013-11-10 23:04:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/enc999/54344.html

分享到:

彩色灯光控制系统

一、概述

现代LED制造技术的发展大大促进了照明和显示行业,采用RGB三基色调光的系统应用广泛,本系统使用STC89C52RC+三基色LED初步实现调光功能。

二、基本要求

1.实现七彩灯光,分别为红、绿、蓝、黄(红+绿)、青(绿+蓝)、紫(红+蓝)、白(红+绿+蓝),使用按键控制灯光颜色循环切换;

2.实现可设置间隔时间的七彩灯光自动切换,并在数码管显示倒计时,时间设置范围为19秒;

3.在要求1的基础上实现每种颜色8级亮度可调,并在数码管显示当前亮度(0为不亮,7为最大亮度)。

三、扩展要求

1.实现RGB调光,要求红绿蓝分别16级亮度可调并同时输出,每级亮度变化明显且无明显闪烁,并在数码管显示当前调整颜色的亮度(015);

2.实现呼吸灯效果,要求七彩颜色和亮度平滑渐变(颜色顺序自由发挥,不需要按照前面说的顺序);

3.实现光控,要求环境光照较强时关闭灯光和显示,尽量减小整个系统电流,并在光照减弱后能自动恢复工作(响应时间小于1秒);

4.其它扩展功能,允许自行添加元器件。


#include <reg52.h>
sbit LED_R=P2^0;
sbit LED_G=P2^1;
sbit LED_B=P2^2;
unsigned char v_R,v_G,v_B;
unsigned char cnt_PWM,cnt_S,flg_S;
unsigned char Tab_7C[][3]=
{
{16,0,0},
{0,16,0},
{0,0,16},
{16,16,0},
{0,16,16},
{16,0,16},
{16,16,16}
};
void main(void) 
{
unsigned char MOD_Color;   
TMOD=0x01;//定时器T0,工作方式1 
TH0=(65536-1000)/256;//T0高八位装定时初值
TL0=(65536-1000)%256;// T0低八位装定时初值   
EA=1;//开总中断  
ET0=1;//开T0中断   
TR0=1;//开定时器T0 


while(1)//循环 
{    
    if(flg_S>=2) //每2秒钟更换一种颜色
{
flg_S=0;
MOD_Color++;
}
if(MOD_Color>=7) MOD_Color=0;
//
v_R=Tab_7C[MOD_Color][0];
v_G=Tab_7C[MOD_Color][1];
v_B=Tab_7C[MOD_Color][2];
}
}
/*……………中断函数……………*/ 
void timer0_intp() interrupt 1//中断号为1 
{
   
TH0=(65536-1000)/256;//重装高八位初值  
TL0=(65536-1000)%256;//重装低八位初值  
cnt_PWM++;//中断次数计数变量,每1ms发生一次中断加1 
cnt_S++;
if(cnt_S>=100) {cnt_S=0; flg_S++;}
if(cnt_PWM>=16) cnt_PWM=0;  
if(cnt_PWM<v_R)
LED_R=0;//LED_R点亮 
else
LED_R=1;//LED_R 熄灭  
if(cnt_PWM<v_G)
LED_G=0;//LED_G点亮 
else
LED_G=1;//LED_G 熄灭  
if(cnt_PWM<v_R)
LED_B=0;//LED_B点亮 
else
LED_B=1;//LED_B 熄灭    
}

阅读(2976) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册