/*彩灯自动循环:1、渐变*/
#include #define uchar unsigned char #define uint unsigned int #define dengji 1//LED变化等级调整 sfr P5=0xC8;//xxxx,1111 端口5 uint shudu=30;//LED渐变速度调整 sbit B1=P3^3; sbit R1=P5^4; sbit G1=P5^5; uchar cishu; uchar num;//定时器计数变量 uint ji;//亮度等级控制变量 uint Rout,Gout,Bout; void delay(uint z) { uint x,y; for(y=z;y>0;y--) for(x=2;x>0;x--); } void delay1(uint z) { uint x,y; for(y=shudu;y>0;y--) for(x=z;x>0;x--); } void pwm(uint r,uint g,uint b) { if(r!=0) { R1=1; delay(r); R1=0; } if(g!=0) { G1=1; delay(g); G1=0; } if(b!=0) { B1=1; delay(b); B1=0; } } void main() { TMOD=0X01; EA=1; ET0=1; TR0=1; TH0=(65536-256)/256;//给定时器高8位赋值 TL0=(65536-256)%256;//给定时器低8位赋值 while(1) { pwm(Rout,Gout,Bout); } } void zhong () interrupt 1 { TH0=(65536-156)/256;//给定时器高8位赋值 TL0=(65536-156)%256;//给定时器低8位赋值 num++;//将定时计数变自动增加1 if(num>=shudu)//如果速度变量等于定时计数器变量就执行下面大括号语句 { num=0;//将计数器清0 ji++;//将亮度等级控制变量加1 if((ji>0)&&(ji<100))//如果亮度等级控制变量ji小于100,红灯亮起时间变量为240 { Rout=240;//红灯亮起变量为240 Gout=0;//绿灯亮起变量为0 Bout=0;//兰灯亮起变量为0 } if((ji>100)&&(ji<340))/*如果亮度等级控制变量ji大于100小于340(刚好240个等级), 红灯亮起时间变量由原来的240,慢慢减小到0,同时绿灯由原来的0慢慢增到240,形成 红灯到绿灯的渐变过程*/ { Rout-=dengji;//将红灯变量减1。因为dengji为亮度变化等级(本程序变化等级为1), Gout=0;//兰灯不变 Bout+=dengji;//将绿灯变量加1 } if((ji>340)&&(ji<440))/*亮度等级控制变量ji大于340小于440时,让绿灯变量停一段时间 这样就形成了当红灯过度到绿灯时,绿灯会停一会儿的效果。*/ { Rout=0;//红灯灭 Gout=0;//兰灯灭 Bout=240;//绿灯亮 } if((ji>440)&&(ji<680))//同理:亮度等级控制变量ji大于440小于680时,由绿灯到兰灯过度 { Rout+=dengji;//红灯变量不变 Gout+=dengji;//将绿灯变量减1 Bout=240;//将兰灯变量加1 } if((ji>680)&&(ji<685))//亮度等级控制变量ji大于680小于780时,让兰灯变量停一段时间 { Rout=240;//红灯灭 Gout=240;//绿灯灭 Bout=240;//兰灯亮一会儿 } if((ji>685)&&(ji<925))//亮度等级控制变量ji大于780小于1020时,由兰灯到白灯过度 { Rout-=dengji;//将红灯变量加1 Gout=240;//绿灯变量加1 Bout-=dengji;//兰灯不变 } if((ji>925)&&(ji<1025))//亮度等级控制变量ji大于1020小于1025时,由兰灯到白灯过度 { Rout=0;//将红灯变量加1 Gout=240;//绿灯变量加1 Bout=0;//兰灯不变 } if((ji>1025)&&(ji<1265))//亮度等级控制变量ji大于1025小于1265时,由白光到红光过度 { Rout+=dengji;//红灯变量不变 Gout-=dengji;//绿灯变量自动减1 Bout=0;//兰灯变量自动减1 } if(ji>=1265)//当亮度等级控制变量ji大于1210时,就将它清0 ji=0;//将亮度控制等级清0 } }
上一篇:单片机双路可编程温度控制系统
下一篇:STC15系列电压测试+LCD12864显示
推荐阅读最新更新时间:2024-11-17 12:51
设计资源 培训 开发板 精华推荐
- 是德科技有奖直播:示波器在通用电子测量中的应用和技巧
- MPS e-store清空购物车2020
- 有奖问答|ADI技术直通车——电化学传感测量与气体检测
- 嵌入式工程师AI挑战营(初阶):基于RV1106,动手部署手写数字识别落地
- 村田感恩季:这份电子元器件使用攻略已备好,速来闯关!
- 答题赢好礼|以人为本、生命无价 ADI 楼宇烟雾探测技术
- 雷柏、京造的无线充电鼠标垫,等你拆开看——EEWorld邀你来玩拆解(第三期)
- ADI•世健工业嘉年华—有奖直播:ADI赋能工业4.0—助力PLC/DCS技术创新
- 【EEWORLD第三十四届】2012年01月社区明星人物揭晓!
- 有奖直播|TI DLP® 技术如何推动AR HUD和汽车大灯的发展