历史上的今天
返回首页

历史上的今天

今天是:2025年02月02日(星期日)

2021年02月02日 | 51单片机+PWM控制渐变七彩灯C51程序

2021-02-02 来源:eefocus

一、硬件介绍:

(采用5050LED 2W) RGB三色LED控制引脚分别为单片机P1.2、P1.1、 P1.0。LED正极接主电源(24V)正极,负极接驱动3颗三极管的集电极,单片机控制脚分别接3颗NPN三极管,三极管发射极接地,而单片机的供电是来自三端稳压器7805,祥细原理如下:

二、实物图片:

三、软件部分:


1、原理:


先亮红灯(保持一会儿)----红绿过度(绿加1、红减1循环240次)------


绿灯亮起(保持一会儿)----绿兰过度(兰加1、绿减1循环240次)


-----兰灯亮起(保持)-----兰白过度(绿加1、红加1循环240次、兰不变)


---白红过度


2、具体程序如下:


#include//MCU头文件


#define uchar unsigned char//字浮型宏定义


#define uint unsigned int//整型宏定义


#define shudu 30//LED渐变速度调整


#define dengji 1//LED变化等级调整


sbit B1=P1^0;//红色灯控制IO口


sbit G1=P1^1;//绿色灯控制IO口


sbit R1=P1^2;//兰色灯控制IO口


uchar Rout,Bout,Gout;//红绿兰3个变量


/***************************************************/


/**********************延时子程序*******************/


/***************************************************/


void delay(uint z)


{


uint x,y;//局部变量定义


for(x=0;x<5;x++)//延时外循环


for(y=0;y

}


/**********************************************/


/**********PWM控制红绿兰3种灯亮灭时间**********/


/**********************************************/


void RGBpwm(uchar Rou,uchar Gou,uchar Bou)//3个局部变量,些部分为带参数函数


{


if(Rou!=0)//如果红灯变量不等于0就亮红灯


{


R1=1;//红灯亮


delay(Rou);//红灯亮起时间


R1=0;//红灯灭


}


if(Gou!=0)//如果红灯变量不等于0就亮红灯


{


G1=1;//绿灯亮


delay(Gou);//绿灯亮起的时间


G1=0;//绿灯灭


}


if(Bou!=0)//如果红灯变量不等于0就亮红灯


{


B1=1;//兰灯亮


delay(Bou);//兰灯亮起的时间


B1=0;//兰灯灭


}


}


/***********************************************/


/********************主程序*********************/


/***********************************************/


void main()


{


TMOD=0x01;//选择定时器在方式1下工作


EA=1;//打开总中断


ET0=1;//打开定时器中断


TR0=1;//打开定时器


R1=0;//开机将红灯关闭


G1=0;//开机将绿灯关闭


B1=0;//开机将兰灯关闭


TH0=(65536-256)/256;//给定时器高8位赋值


TL0=(65536-256)%256;//给定时器低8位赋值


while(1)//程序主循环


{


RGBpwm(Rout,Gout,Bout);//调用RGBpwm子程序


}


}


/*************************************************/


/*中断服务子程序(控制LED红绿兰亮灭时间占空比例)*/


/*************************************************/


void zhong() interrupt 1//中断向量位为1


{


uint num;//定时器计数变量


uint ji;//亮度等级控制变量


TH0=(65536-256)/256;//给定时器高8位赋值


TL0=(65536-256)%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+=dengji;//将绿灯变量加1


Bout=0;//兰灯不变


}


if((ji>340)&&(ji<440))/*亮度等级控制变量ji大于340小于440时,让绿灯变量停一段时间


这样就形成了当红灯过度到绿灯时,绿灯会停一会儿的效果。*/


{


Rout=0;//红灯灭


Gout=240;//绿灯亮


Bout=0;//兰灯灭


}


if((ji>440)&&(ji<680))//同理:亮度等级控制变量ji大于440小于680时,由绿灯到兰灯过度


{


Rout=0;//红灯变量不变


Gout-=dengji;//将绿灯变量减1


Bout+=dengji;//将兰灯变量加1


}


if((ji>680)&&(ji<780))//亮度等级控制变量ji大于680小于780时,让兰灯变量停一段时间


{


Rout=0;//红灯灭


Gout=0;//绿灯灭


Bout=240;//兰灯亮一会儿


}


if((ji>780)&&(ji<1020))//亮度等级控制变量ji大于780小于1020时,由兰灯到白灯过度


{


Rout+=dengji;//将红灯变量加1


Gout+=dengji;//绿灯变量加1


Bout=240;//兰灯不变


}


if((ji>1020)&&(ji<1025))//亮度等级控制变量ji大于1020小于1025时,由兰灯到白灯过度


{


Rout=240;//将红灯变量加1


Gout=240;//绿灯变量加1


Bout=240;//兰灯不变


}


if((ji>1025)&&(ji<1265))//亮度等级控制变量ji大于1025小于1265时,由白光到红光过度


{


Rout=240;//红灯变量不变


Gout-=dengji;//绿灯变量自动减1


Bout-=dengji;//兰灯变量自动减1


}


if(ji>1265)//当亮度等级控制变量ji大于1210时,就将它清0


ji=0;//将亮度控制等级清0


}


}


推荐阅读

史海拾趣

Ericsson Power Modules公司的发展小趣事

Ericsson Power Modules一直将品质管理视为企业发展的核心。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,Ericsson Power Modules还注重持续改进,通过引入先进的生产设备和工艺、优化生产流程等方式,不断提高产品质量和生产效率。这种对品质的执着追求使得Ericsson Power Modules的产品在市场上赢得了良好的口碑和信誉。

Hama公司的发展小趣事

随着技术的不断成熟,H&D Wireless开始积极拓展市场。公司凭借其创新的物联网技术和解决方案,成功吸引了多个行业巨头的关注。2017年,H&D Wireless与全球知名汽车制造商Scania签署了为期12个月的物联网服务协议,为其Smart Factory提供Raven IoT Sensor Box827解决方案。这一合作不仅提升了Scania工厂的生产效率,还进一步验证了H&D Wireless在物联网领域的实力。

Carroll & Meynell Transformers Ltd公司的发展小趣事

在电子行业快速发展的背景下,Carroll & Meynell Transformers Ltd公司始终坚持质量第一的原则。公司建立了严格的质量管理体系,从原材料采购到生产加工,再到产品出厂,每一个环节都经过严格的把控。这种对质量的执着追求使得公司的产品在市场上享有很高的声誉。许多客户因为信赖公司的产品质量,而与公司建立了长期稳定的合作关系。

A1 PROS公司的发展小趣事

在2006年至2007年期间,A1 PROS的技术实力得到了业界的广泛认可。韩国技术信用保证基金将A1 PROS评选为杰出技术公司,这是对A1 PROS在技术研发和创新方面所取得成就的肯定。同时,A1 PROS还被韩国工业银行选定为家族企业,获得了更多的资金支持和发展机会。

DURAKOOL公司的发展小趣事

面对日益激烈的市场竞争和不断变化的客户需求,DURAKOOL公司始终保持着对创新的追求。公司不断投入研发资源,推动产品升级和技术进步。同时,公司也关注行业趋势和未来发展,积极探索新的业务领域和市场机会。展望未来,DURAKOOL将继续致力于成为全球电子行业的领先者。

请注意,以上故事均为虚构,旨在提供与DURAKOOL公司发展相关的故事概要。如需了解更多关于DURAKOOL公司的详细信息,建议查阅相关报道或公司官方资料。

Faraday Electronics Inc公司的发展小趣事

在电子通信领域,Faraday Electronics Inc一直以其卓越的技术创新能力著称。公司自创立之初,就专注于研发高性能的通信芯片。经过多年的技术积累,终于在XXXX年成功推出了一款具有划时代意义的5G通信芯片。这款芯片不仅性能卓越,而且功耗极低,一经推出便迅速占领了市场,为公司带来了可观的利润。

问答坊 | AI 解惑

STC真的是手机中的战斗机?

看到有个评论说“STC是手机中的战斗机”,当时乐呵了半天。 其实,还有很多朋友用STC的,昨天还看到有人上传相关的资料呢。不可否认的是,价格着实是个不错的因素。 但不可否认的是,牌子被做的有些烂。 你用过STC么?你觉得如何?…

查看全部问答>

Protell99se汉字补丁

很好用的,不用汉化就能放置汉字…

查看全部问答>

怎么学好数字信号处理!

怎么学好数字信号处理!…

查看全部问答>

routeShow命令求助

vxworks下用routeShow命令可以显示路由表,如下     ROUTE NET TABLE     Destination      Gateway          Flags  Refcnt Use      &n ...…

查看全部问答>

请问大家: ISR 的定义?

请问大家: ISR 的定义? 在某个函数里,作者定义 ISR isr ,我不知道这个ISR在哪里定义的? 是不是在嵌入式中作为了一个已经定义好的函数,或者结构体了? 关键是怎么定义的? 谢谢大家…

查看全部问答>

wince 下使用c#调用webServices 总是出错

wince 下使用c#调用webServices 总是出错 但是使用wince下的ie访问没有问题 就是方法测试时 提示下在文件 应该程序访问webServices 总是出错…

查看全部问答>

多片DSP的JTAG连接

如题,如何进行两片DSP的JTAG的串行连接问题,连接后他们的仿真是怎么区分对哪个DSP进行的,片子是TMS320VC5502和TMS320C6713…

查看全部问答>

请教将正弦波叠加在方波高电平上的实现方法

如题,我看到一个电路板输出是用了两块单片机,其中一块产正一组正弦波,另一块产生一组方波,然后将正弦波叠加到了方波的高电平上,不知道用什么电路可以实现,求教各位!…

查看全部问答>

发热片的使用???

买了发热片,想在小盒子空间内升温用,但接上两根电源线后,发现那俩线是通的,直接短路了,这个怎么办啊,求大神的指教!!!发热片的使用方法!!…

查看全部问答>