单片机RGB彩灯渐变七彩灯无频闪 源程序

发布者:huanli最新更新时间:2020-01-28 来源: 51hei关键字:单片机  RGB彩灯  渐变七彩灯  无频闪 手机看文章 扫描二维码
随时随地手机看文章


/*彩灯自动循环: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

}

}


关键字:单片机  RGB彩灯  渐变七彩灯  无频闪 引用地址:单片机RGB彩灯渐变七彩灯无频闪 源程序

上一篇:单片机双路可编程温度控制系统
下一篇:STC15系列电压测试+LCD12864显示

推荐阅读最新更新时间:2024-11-17 12:51

PIC单片机与串行闪存的SPI接口设计
引 言 PIC单片机以性能稳定、品种众多等特点在工业控制、仪器仪表、家电、通信等领域得到广泛应用。虽然很多型号自身集成了存储器,但在很多情况下难以满足系统对大容量存储的要求,需要外扩非易失性的存储器。与并行Flash存储器相比,串行Flash存储器占用MCU引脚少,体积小,易于扩展,接线简单,工作可靠,故而越来越多地应用在各类电子产品和工业测控系统中。本文主要讨论PIC16F877A单片机与串行闪存M25P16之间的SPI通信,在要求大容量数据存储且MCU引脚资源有限的情况下具有实用价值。 1 SPI工作原理 SPI(Serial Peripheral Interface)是一种常用的串行通信协议
[单片机]
飞思卡尔16位单片机(十四)—— CAN总线模块测试
一、CAN模块介绍 这个实验我们来研究XEP100单片机内部的CAN模块。 XEP100单片机的CAN的基本特性如下: • 实施CAN协议—2.0A/B版 — 标准和扩展数据帧 — 0-8字节数据长度 — 高达1Mbps的可编程比特率 — 支持远程帧 • 5个具有FIFO存储机制的接收缓冲器 • 3个具有使用“本地优先”概念的内部优先顺序的发送缓冲器 • 灵活可掩码标识符滤波器支持2个全尺寸(32位)扩展标识符滤波器或4个16位滤波器或8个8位滤波器 • 集成低通滤波器的可编程唤醒功能 • 可编程环回模式支持自测操作 • 可编程监听模式用于CAN总线监控 • 可编
[单片机]
飞思卡尔16位<font color='red'>单片机</font>(十四)—— CAN总线模块测试
汽车行驶记录仪中USB HOST相关模块的设计
USB HOST相关模块的总体设计   汽车行驶记录仪中的USB HOST相关模块由单片机、USB HOST接口、FLASH、铁电存储体(FRAM)、实时时钟和电源管理等部分组成,其功能框图如图1所示。汽车行驶记录仪工作时,由单片机通过前端接口电路拾取汽车行驶状态的各种信息,包括车速、发动机转速和各种车辆开关信号等。汽车行驶记录仪以实时时钟为基准,把车辆信息按类别分别存入FRAM和FLASH。需要从汽车行驶记录仪中获取汽车记录状态信息时,用户插入优盘,单片机自动识别优盘并加载驱动程序,当完成设备枚举和Bulk_Only传输协议后,单片机就可以把汽车行驶记录仪中记录的状态信息以文件的形式传输到优盘。本文重点介绍电源模块、USB H
[汽车电子]
祭出相容策略 瑞萨迎战ARM核心MCU大军
瑞萨电子(Renesas Electronics)预计推出相容于安谋国际(ARM)架构的微控制器(MCU)开发套件,对抗Cortex-M系列核心的进逼,除可进一步提升该公司产品竞争力外,亦有助其巩固目前微控制器市场龙头地位。 台湾瑞萨电子营业行销事业部第一营业行销部副理黎柏均表示,该公司持续致力于微控制器产品生态系统的完整度,提高客户忠诚度。 台湾瑞萨电子营业行销事业部第一营业行销部副理黎柏均表示,瑞萨电子32位元微控制器核心RX系列,是由该公司自行研发,开发环境相对较为封闭,若是客户想自其他架构转换至瑞萨电子RX系列微控制器产品,除须重新设计外,还得购买新的开发工具,形成导入时的一大阻碍。为解决此问题,瑞萨电子预计于2012年中
[手机便携]
51单片机(使用8x8点阵)
1.说在前面 今天初步学会了怎样使用面包板,感觉挺好玩的,学硬件的路渐行渐远吧 2.74hc595模块(8位移位寄存器和一个存储器,三态输出功能) 1.将三位串行输入变为并行输出 2.数据先移位到最高点在移位到次高点 3.基础参考资料:https://wenku.baidu.com/view/4d619b1c650e52ea55189826.html 3.实现点亮8x8点阵的代码 #include reg52.h typedef unsigned char u8; typedef unsigned int u16; //定义串行端口 sbit SRCLK=P3^6; sbit RCLK=P3^
[单片机]
51<font color='red'>单片机</font>(使用8x8点阵)
单片机译码器的作用和工作原理
问:单片机里的译码器是如何工作的?寻址空间是如何确定的?译码器与寻址空间是怎么联系的? 答:单片机技术里常用的译码器实际上是由许多与门、或门、非门和它们的组合构成的。它有若干个输入端和若干个输出端(也可能只有一个输出端)。对某一个输出端来说,它的电平高低必然与输入的某一种状态相对应。 例如,具有4个输入端的与非门就是一个简单的译码器,只有四个输入端为1111时,它的输出端才为0。如果将地址总线的A9、A8、A7、A6与它的四个输入连接起来,并把它的输出连到存储器芯片或某个需要寻址的外设接口的片选端(假定低电平有效),那么,只有当A9、A8、A7、A6为1111时,存储器芯片或外设才会被选中。 译码器的寻址空间取决于地址总线的
[单片机]
基于单片机的电动汽车多功能充电系统电路设计
  由于石油危机和日益严重的环境污染,电动汽车发展已经是大势所趋。蓄电池为电动汽车提供动力,而蓄电池充电性能直接影响蓄电池的使用和寿命,蓄电池一般分为铅蓄电池、镍镉电池、镍氢电池和锂离子电池。由于蓄电池种类繁多且容量不一,不同种类和容量的蓄电池往往需要不同的充电器匹配,如果蓄电池的充电器匹配不好会出现过充过热等不安全现象,从而影响蓄电池的正常使用并缩短蓄电池寿命。因此,设计一款基于单片机控制的能为各类蓄电池充电的多功能充电系统是十分必要的。多功能充电系统能快速稳定地为不同类型和不同容量的蓄电池充电,我们在软件上针对不同类型的蓄电池设计了相应的充电方法,使每种蓄电池都能在最佳充电方法下充电。对于不同容量的蓄电池,在选择好充电方法时只
[电源管理]
基于<font color='red'>单片机</font>的电动汽车多功能充电系统电路设计
兆易创新推出GD32G5系列Cortex®-M33内核高性能MCU,全面激发工业应用创新活力
中国北京(2024年11月13日)—— 业界领先的半导体器件供应商兆易创新GigaDevice(股票代码 603986)宣布,正式推出基于Arm® Cortex®-M33内核的GD32G5系列高性能微控制器。 GD32G5系列MCU凭借出色的处理性能、丰富多样的数字模拟接口资源以及强化的安全性能,可广泛适用于数字电源、充电桩、储能逆变、变频器、伺服电机、光通信等多元化场景。该系列全新产品组合提供LQFP、QFN、WLCSP等7种封装共14个型号,现已开放样片和开发板卡申请,12月起正式量产供货。 GD32G5系列Cortex®-M33内核高性能MCU 强劲性能赋能工业市场 GD32G5系列MCU采用Arm® C
[嵌入式]
兆易创新推出GD32G5系列Cortex®-M33内核高性能<font color='red'>MCU</font>,全面激发工业应用创新活力
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved