用PWM控制渐变七彩灯C51程序

发布者:Asawen最新更新时间:2015-07-21 来源: eechina关键字:PWM控制  渐变七彩灯  C51程序 手机看文章 扫描二维码
随时随地手机看文章

一、硬件介绍:

 (采用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次、兰不变)
---白红过度,技术支持网站:http://www.51hei.com/ 全部程序源代码:点此下载*/

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;//兰灯灭
 } 
}
  [page]
/***********************************************/
/********************主程序*********************/
/***********************************************/
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
 }
}

关键字:PWM控制  渐变七彩灯  C51程序 引用地址:用PWM控制渐变七彩灯C51程序

上一篇:LED流星雨C51程序
下一篇:51串口通信程序(带详细注释)

推荐阅读最新更新时间:2024-03-16 14:25

51单片机温度+pwm控制风扇转速,且温度在LCD1602上显示
原理图如下: 源代码如下: #include reg52.h #include intrins.h #include define.h #include delay.h #include LCD1602.h #include DS18B20.h #include HL_alarm.h sbit KEY3 = P3^5; //定义开始/停止 void zhuan(); unsigned char timer1; //***********************************************************************/ void main() { if(
[单片机]
51单片机温度+<font color='red'>pwm控制</font>风扇转速,且温度在LCD1602上显示
AP384XC系列PWM控制器的设计考虑
Ⅰ.主要特点简介 384X系列电流型PWM控制器已广泛应用于开关电源设计中。许多半导体厂商都生产此标准电源管理控制芯片。表一列出了BCD和三个主要竞争对手产品的关键参数对比。   与竞争对手的产品相比,BCD的AP384XC具有如下特点: 1.低启动电流 2.低工作电流 3.内部过温保护功能 这些特点不仅能够提供更加可靠的过温保护,而且能降低开关电源在空载待机时的功耗。 同时,由于启动电流小,AP384XC的启动电路参数应当和竞争对手产品稍有不同。在某些应用中,一个简单的直接替代可能会产生问题,尤其是在短路工作模式中。 在其它部分的性能参数上,例如内部运放,参考电压,PWM部分,驱动能力,欠压保护以及启动关断时
[应用]
蜂鸣器报警声C51程序
蜂鸣器报警声C51程序 #define uchar unsigned char //宏定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include //包括一个52标准内核的头文件 sbit BEEP=P0^7; //蜂鸣器输出脚 /******************************************************************** 函 数 名:main() 功 能:主程序 说 明: 入口参数:无 返 回 值:无 修 改: 日 期: *****************************************
[单片机]
基于DSP和SPWM控制的全数字单相变频器设计
  本文介绍了基于 DSP TMS320LF2407A并使用 SPWM 控制技术的全数字 单相变频器 的设计及实现方法,最后给出了实验波形。   常见的AC/DC/AC变频器,是对输出部分进行变频、变压调节,而且在多种逆变控制技术中,应用最广泛的一种逆变控制技术是正弦脉宽调制( SPWM )技术。在变频调速系统中,应用 DSP 作为控制芯片以实现数字化控制,它既提高了系统可靠性,又使系统的控制精度高、实时性强、硬件简单、软件编程容易,是变频调速系统中最有发展前景的研究方向之一。   TMS320LF2407A芯片简介   TMS320LF2407A是TI公司专为电机控制而设计的单片 DSP 控制器。它具有高性能的
[嵌入式]
基于DSP和S<font color='red'>PWM控制</font>的全数字单相变频器设计
STM32——pwm控制LED
pwm.c #include pwm.h /******************************************************************************* * 函 数 名 : TIM3_CH1_PWM_Init * 函数功能 : TIM3通道1 PWM初始化函数 * 输 入 : per:重装载值 psc:分频系数 * 输 出 : 无 *******************************************************************************/ void TIM3_CH1_PWM_Init(u1
[单片机]
曼彻斯特编码的接收C51程序
曼码接收程序,常用在无线信号的编码与解码中,给大家分享: rxi() { // this routine gets called every time TMR0 overflows if(T0IF) //定时器中断程序 { TMR0 = PERIOD; // 装计时器初值 T0IF = 0; // 清定时器溢出标志 XTMR++; // 外部的系统时钟计时器加1 RFcount++; // 脉冲宽度计数器加1 return; } if(RAIF) //端口电平变化中断程序 { if (RFFull) // 如果接收
[单片机]
C51单片机——红外遥控 驱动程序
本文为学习HC6800-EM3 V2.2开发板的学习笔记汇总,本文所用 红外接收头的引脚封装如图下: 驱动函数封装 声明:请自行根据晶振编写相匹配的延时函数; IrReceive.h文件 #ifndef __IRRECEIVE_H__ #define __IRRECEIVE_H__ #include delay.h //请自行根据晶振编写相匹配的延时函数; typedef struct{ uchar usercode;//用户码 uchar cmd;//操作码 uchar ok;//完成标志位 uchar irtime; //时间控制 uint count_repeat;//重复码计数
[单片机]
<font color='red'>C51</font>单片机——红外遥控 驱动<font color='red'>程序</font>
[组图]单端PWM控制器NCP1205及其应用
摘要: NCP1205是安森美公司采用先进技术生产的一种单端脉冲宽度调制控制器。该控制器可保证在任何负载/线路条件下的完全继续传导模式DCM和准谐振QR操作,同时,该器件还组合了一个真正的电流模式控制调制器和一个退磁检测器。文中介绍了NCP1205 PWM控制芯片的基本结构、工作原理和主要特点,给出了它的典型应用电路。 关键词:QR ;I/CO;频率软折弯;PWM控制器;NCP1205 1 概述 NCP1205是安森美公司生产的一种先进的单端PWM控制器。其应用领域主要包括:较大功率笔记本电脑用AD/DC适配器、脱机电池充电器和DVD、CD唱机、TVS、机顶盒(STB)等系统的开关电流(SMPS)及USB中的辅助
[模拟电子]
[组图]单端<font color='red'>PWM控制</font>器NCP1205及其应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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