历史上的今天
返回首页

历史上的今天

今天是: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

}

}


推荐阅读

史海拾趣

AMICC [AMIC TECHNOLOGY]公司的发展小趣事

作为一家具有社会责任感的企业,AMICC始终关注环境保护和可持续发展。公司在生产过程中积极采用环保材料和技术,降低能耗和排放。同时,AMICC还积极参与公益事业,为社会做出贡献。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

这五个故事只是AMICC发展历程中的一部分,但它们足以展现出这家企业在电子行业中的拼搏和成长。AMICC以其坚定的信念、不懈的努力和持续的创新精神,在激烈的市场竞争中脱颖而出,成为了一家备受瞩目的优秀企业。

Ametherm公司的发展小趣事

随着技术的不断进步,Ametherm公司始终保持着对技术创新的追求。他们不断研发新的材料、优化生产工艺,以提高产品的性能和稳定性。同时,公司还密切关注市场需求的变化,根据客户需求进行产品升级和改进。这些努力使得Ametherm的功率热敏电阻在行业中逐渐脱颖而出,赢得了客户的信赖和好评。

ARBOR公司的发展小趣事

ARBOR公司深知合作的重要性,积极与上下游企业建立紧密的合作关系。公司通过与供应商和客户建立长期稳定的战略合作关系,实现了资源共享和优势互补。这种合作模式不仅降低了公司的运营成本,也提高了产品的竞争力。同时,ARBOR公司还积极参与行业交流活动,推动整个电子产业的健康发展。

EBK Kruger GmbH & Co KG公司的发展小趣事

在电子行业的初期,EBK Kruger GmbH & Co KG由创始人Klaus Kruger在德国的一个小镇创立。Klaus是一位电子工程师,对新型电子元器件的研发充满热情。他带领团队成功研发出一种具有更高稳定性和更低能耗的新型电阻器,这一技术突破让公司在行业中崭露头角。通过不断的技术创新和产品优化,EBK Kruger逐渐赢得了市场的认可。

Fong Ya Enterprise Co Ltd公司的发展小趣事

随着公司技术的不断成熟和产品的多样化,EBK Kruger开始将目光投向国际市场。公司参加了多个国际电子展会,并成功与多家国际知名企业建立了合作关系。通过与这些企业的合作,EBK Kruger不仅扩大了市场份额,还学到了先进的国际管理经验和技术知识,为公司的发展注入了新的活力。

Fillfactory Nv公司的发展小趣事

FIDELIX公司成立于1990年,是一家专注于存储芯片研发与销售的韩国企业。在公司成立初期,FIDELIX凭借对技术的深入研究和对市场的敏锐洞察,成功推出了多款性能优越的NAND FLASH(闪存)和SDR/DDR(单/双数率同步动态存储器)等存储芯片产品。这些产品不仅在韩国市场上获得了良好的口碑,同时也开始逐步进入国际市场。

随着技术的不断进步和市场的不断扩大,FIDELIX逐渐在韩国存储芯片领域崭露头角。公司不断投入研发资金,加强技术创新,努力提升产品的性能和品质。同时,FIDELIX也积极拓展销售渠道,与多家国内外知名厂商建立了合作关系,为公司的持续发展奠定了坚实的基础。

问答坊 | AI 解惑

AT89S51最小系统

本帖最后由 paulhyde 于 2014-9-15 09:19 编辑 有用AT89S51做最小系统的吗?经验可以分享一下吗?  …

查看全部问答>

大家来分析一下四川2010年TI杯大赛的题目会是怎样的吧

本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 7月16号上午开赛,下面是器件清单,我们估计会有小车、电源什么的题目。大家讨论一下会有什么题目吧。 …

查看全部问答>

使用ALL-100制作IMAGE文件出错

我在读取现代FLASH:HY27UF081G2A时,能读出里面的内容.现在有两个问题: 1 无法作用MAKEIMAGE工具压缩.提示ECC错误. 2 用示压缩的镜像烧录FLASH后,PND启动不起来. 请问哪位仁兄遇到过此类问题,请述之,谢谢!…

查看全部问答>

[求助]所有 Symbol 的范例程序都无法正常运行

刚开始接触有关于Symbol的应用开发(使用.Net开发环境) 先安装了Symbol Mobility Developer Kit for .NET 1.01,学习自带的范例程序。 .net开发环境在进行部署时可以选一个Symbol的模拟器(我手头上暂时没有机器),不能运行,说无法连接设备, ...…

查看全部问答>

请问谁有嵌入式方面的最新论文?

请问谁有嵌入式方面的最新论文?请发到我的邮箱:yangzhengyu_2008@126.com 谢谢!!…

查看全部问答>

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 编辑 ]…

查看全部问答>

PIC16单片机的数组定义问题

在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, ...…

查看全部问答>