利用PWM技术控制RGB灯变色和呼吸

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

/******************************************************************函数功能:利用pwm技术控制RGB全彩灯变色和呼吸的实验说明:可以设置全彩灯在1600万色之间进行变化,也可以选择一些特定颜色进行呼吸,本程序为个人原创,转载请注明出处设计者:空心菜联系QQ:190719416日期:2016/8/5*******************************************************************/#includereg52.h#defineuintunsignedint#defineucharsignedchar#defineLEDsP2sbitR_LED=LEDs^0;sbitG_LED=LEDs^1;sbitB_LED=LEDs^2;#defineR_ON()R_LED=0#defineR_OFF()R_LED=1#defineG_ON()G_LED=0#defineG_OFF()G_LED=1#defineB_ON()B_LED=0#defineB_OFF()B_LED=1ucharR_ZKB=1,G_ZKB=1,B_ZKB=1;uintnum=100,i;//num的值最大可设置为255,当设置成255,且在变色模式下能达到1600万色ucharFLAG;main(){EA=1;TMOD=0x02;//T0工作于自动重装模式TH0=246;//定时时间10USTR0=1;ET0=1;while(1){if(FLAG){FLAG=0;/*R_ZKB+=1;if(R_ZKB=num){R_ZKB=1;G_ZKB+=1;if(G_ZKB=num){G_ZKB=1;B_ZKB+=1;if(B_ZKB=num){B_ZKB=1;}}}*///以上为全彩变色模式/***********************************************************************************///以下为单色呼吸模式for(i=0;inum;i++)R_ZKB=i;//红色渐渐变亮for(i=num;i0;i--)R_ZKB=i;//红色渐渐变暗for(i=0;inum;i++)//橙色渐渐变亮,红255,绿156{R_ZKB=i;G_ZKB=i/2;}for(i=num;i0;i--)//橙色渐渐变暗,红255,绿156{R_ZKB=i;G_ZKB=i/2;}for(i=0;inum;i++)//黄色渐渐变亮{R_ZKB=i;G_ZKB=i;}for(i=num;i0;i--)//黄色渐渐变暗{R_ZKB=i;G_ZKB=i;}for(i=0;inum;i++)G_ZKB=i;//绿色渐渐变亮for(i=num;i0;i--)G_ZKB=i;//绿色渐渐变暗for(i=0;inum;i++)//青色渐渐变亮{G_ZKB=i;B_ZKB=i;}for(i=num;i0;i--)//青色渐渐变暗{G_ZKB=i;B_ZKB=i;}for(i=0;inum;i++)B_ZKB=i;//蓝色渐渐变亮for(i=num;i0;i--)B_ZKB=i;//蓝色渐渐变暗for(i=0;inum;i++)//紫色渐渐变亮{B_ZKB=i;R_ZKB=i;}for(i=num;i0;i--)//紫色渐渐变暗{B_ZKB=i;R_ZKB=i;}for(i=0;inum;i++)//白色渐渐变亮{R_ZKB=i;G_ZKB=i;B_ZKB=i;}for(i=num;i0;i--)//白色渐渐变暗{R_ZKB=i;G_ZKB=i;B_ZKB=i;}}}}/**************************************************************函数功能:定时器0中断服务函数说明:设置定时溢出时间为10us,频率10khz,当进入中断后,为了避免在程序执行过程中为完又进入下一次中断,先关闭定时器,当此段程序执行完再打开定时器,并设置一个标志位,给主函数去判断***************************************************************/voidtimer0(void)interrupt1{uintcount;TR0=0;for(count=1;countnum;count++)//分辨率为NUM{if(countR_ZKB){R_ON();//当红色占空比大于计数值时点亮}elseR_OFF();//否则就关闭红色if(countG_ZKB){G_ON();}elseG_OFF();if(countB_ZKB){B_ON();}elseB_OFF();}FLAG=1;TR0=1;}

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功