欢迎来到天天文库
浏览记录
ID:43515507
大小:664.58 KB
页数:9页
时间:2019-10-09
《RGB三基色单片机按键调光》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《电子创新设计》课程作品报告RGB三基色单片机按键调光班级学号姓名前言现代生活中,无论是在繁华的步行街,还是我们美丽的校园中,都能看到巨型显示频的身影,显示屏成为了现代信息传递的一个重要工具,当看到一个个美丽的画面在播放时,我们不禁好奇是什么原理让这些得以实现,众所周知,彩色LED显示屏,是以RGB三原色为基础。显示出了丰富多彩的颜色,但具体的原理可能就没那么多人知道了,抱着学习的目的,以PWM为原理,我们制造了基于单片机的,三个按键控制,三基色显全彩灯光合成电路,希望给大家对了解彩色显示屏工作原理有所帮助。一:PWM原理(脉冲宽度调制)控制方式就是对逆变电路开关器件的通断
2、进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。 例如,把正弦半波波形分成N等份,就可把正弦半波看成由N个彼此相连的脉冲所组成的波形。这些脉冲宽度相等,都等于∏/n,但幅值不等,且脉冲顶部不是水平直线,而是曲线,各脉冲的幅值按正弦规律变化。如果把上述脉冲序列用同样数量的等幅而不等宽的矩形脉冲序列代替,使矩形脉冲的中点和相应正弦等分的中点重合,且使矩形脉冲
3、和相应正弦部分面积(即冲量)相等,就得到一组脉冲序列,这就是PWM波形。可以看出,各脉冲宽度是按正弦规律变化的。根据冲量相等效果相同的原理,PWM波形和正弦半波是等效的。对于正弦的负半周,也可以用同样的方法得到PWM波形。在PWM波形中,各脉冲的幅值是相等的,要改变等效输出正弦波的幅值时,只要按同一比例系数改变各脉冲的宽度即可,因此在交-直-交变频器中,PWM逆变电路输出的脉冲电压就是直流侧电压的幅值。根据上述原理,在给出了正弦波频率,幅值和半个周期内的脉冲数后,PWM波形各脉冲的宽度和间隔就可以准确计算出来。按照计算结果控制电路中各开关器件的通断,就可以得到所需要的PWM
4、波形。下图为变频器输出的PWM波的实时波形。二:原理图三:程序#include#include#defineucharunsignedchar#defineuintunsignedintsbitred=P0^0;//红色LED输出口sbitgreen=P0^1;//绿色LED输出口sbitblue=P0^2;//蓝色LED输出口sbitk1=P1^4;//红色LEDpwm控制sbitk2=P1^5;//绿色LEDpwm控制sbitk3=P1^6;//蓝色LEDpwm控制ucharr_temp=1,g_temp=1,b_temp=1;/
5、/三色占空比数值缓存ucharflag;//定时器T2定时次数标志//延时函数,大约延时10ms.voidDelay10ms()//@11.0592MHz{unsignedchari,j;i=108;j=145;do{while(--j);}while(--i);}//按键扫描程序voidkey(){ucharnum1=0,num2=0,num3=0;//if(k1==0)//按键K1处理程序//{//Delay10ms();if(k1==0){if(r_temp<99){r_temp++;while(!k1){num1++;//长按标志位加到10约100msDelay10
6、ms();if(num1==10&&r_temp<95){r_temp+=5;num1=0;}if(r_temp>=95)r_temp=1;}}elser_temp=1;}//}if(k2==0)//按键K2处理程序{Delay10ms();if(k2==0){if(g_temp<99){g_temp++;while(!k2){num2++;//长按标志位加到10约100msDelay10ms();if(num2==10&&g_temp<95){g_temp+=5;num2=0;}if(g_temp>=95)g_temp=1;}}elseg_temp=1;}}if(k3==
7、0)//按键K3处理程序{Delay10ms();if(k3==0){if(b_temp<99){b_temp++;while(!k3){num3++;//长按标志位加到10约100msDelay10ms();if(num3==10&&b_temp<95){b_temp+=5;num3=0;}if(b_temp>=95)b_temp=1;}}elseb_temp=1;}}}//定时器T016位自动模式定时1ms控制灯灭时间voidInitTimer0()interrupt1//1毫秒@11.0592MHz{ET1=
此文档下载收益归作者所有