历史上的今天
今天是:2025年01月28日(星期二)
2020年01月28日 | 单片机RGB彩灯渐变七彩灯无频闪 源程序
2020-01-28 来源:51hei
/*彩灯自动循环: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 } }
上一篇:单片机双路可编程温度控制系统
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 7月16号上午开赛,下面是器件清单,我们估计会有小车、电源什么的题目。大家讨论一下会有什么题目吧。 … 查看全部问答> |
|
我在读取现代FLASH:HY27UF081G2A时,能读出里面的内容.现在有两个问题: 1 无法作用MAKEIMAGE工具压缩.提示ECC错误. 2 用示压缩的镜像烧录FLASH后,PND启动不起来. 请问哪位仁兄遇到过此类问题,请述之,谢谢!… 查看全部问答> |
|
刚开始接触有关于Symbol的应用开发(使用.Net开发环境) 先安装了Symbol Mobility Developer Kit for .NET 1.01,学习自带的范例程序。 .net开发环境在进行部署时可以选一个Symbol的模拟器(我手头上暂时没有机器),不能运行,说无法连接设备, ...… 查看全部问答> |
|
Head file error!apllication layer compile!! Hello, everyone! I\'m updating a network programe which was coded by another guy. His work envirement is WinXP+VC6.0. My OS is XP. I install VC6.0, WindowsDDK . When I run this program. Some head files, such as ntddndis.h canno ...… 查看全部问答> |
|
我想了解各种电机调速的问题,比如说直流电机电阻调速,交流变频调速等等,还有关于它们的调速曲线,什么T-S曲线之类的。在大学的时候学过《电机拖动》,《直流电机调速》,《交流电机调速》,《控制电机》等等,但是基本还给老师了,而且对各种电 ...… 查看全部问答> |
|
[LM3S8962+Keil+编译问题]IntMasterDisable()返回类型的问题 [已解决] 今天编译一个工程出现一个奇怪的问题,发上来大家给点意见, [ 本帖最后由 Study_Stellaris 于 2011-10-11 20:55 编辑 ]… 查看全部问答> |
|
在PIC16F877中定义数组是不是有什么限制,比如说:定义一些数组没办法定义。例如:unsigned char temptex0[]={0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x02,0x02, 0x02,0x02,0x03,0x03,0x03,0x03,0x04,0x04,0x04,0x04,0x05,0x05,0x05,0x06,0x06, ...… 查看全部问答> |




