电源呼吸灯电原理图及程序设计
三路PWM呼吸灯程序及原理图

PWM三路呼吸灯系统主要是靠定时器产生最小时间,通过定时中断重装定时值和置位标记位22H。
总原理图中断按钮可以调节灯一(D3)的呼吸时间两位数码管显示灯的呼吸时间复位电路和晶振电路程序如下:ORG 0000HLJMP S00ORG 0003HLJMP ANORG 000BHLJMP DSQORG 0030HS00: SETB P2.0CLR P2.1CLR P2.2MOV IE,#83HSETB IT0MOV TMOD,#01HMOV TL0,#0DCHMOV TH0,#0BHSETB TR0MOV 30H,#00H //30H保存幅值MOV 31H,#00HMOV 32H,#00HMOV 33H,#04HCPL P2.4SETB 20HSETB 21HSETB 22HSETB 23HSS00: MOV C,22H //判断总刷新JNC S003CLR 22HSJMP S001S003: LJMP S030S001: CLR C //判断31H值,每段的加/减值MOV R2,30HCJNE R2,#00H,SS01SETB 20HMOV 31H,#5LJMP S019SS01: MOV A,30HSUBB A,#50JNC S010MOV 31H,#5S010: CLR CMOV A,30HSUBB A,#130JNC S012MOV 31H,#4SJMP S019S012: CLR CMOV A,30HSUBB A,#220JNC S013MOV 31H,#3SJMP S019S013: CLR CMOV A,30HSUBB A,#240JNC S014MOV 31H,#2SJMP S019S014: CLR CMOV R2,30HCJNE R2,#0FAH,S015CLR 20HS015: MOV 31H,#1S019: NOPS020: MOV C,20H //执行加/减JNC S021CLR CMOV A,30HADD A,31HMOV 30H,AMOV R2,ACJNE R2,#0FAH,S022CLR 20HLJMP S029S022: JNC S004SJMP S029S004: LJMP S00S021: CLR CMOV A,30HSUBB A,31HMOV 30H,AJC S100S100: CLR P2.0 //用于弥补减到最后不为零的数MOV P1,R2 //同时用于监测到不正常的数,重新执行LCALL DELAYSETB P2.0MOV 30H,#0SETB 20HLJMP S030S029: MOV A,30H //赋值给P1CLR P2.0MOV P1,ALCALL DELAYSETB P2.0S030: MOV C,23H //执行33H加减,同时计算32H单位时间的值JNC S039MOV C,21HMOV R2,33HJNC S031CJNE R2,#0AH,S032CLR 21HMOV 33H,#09HSJMP S035S032: INC 33HSJMP S035S031: CJNE R2,#01H,S033SETB 21HMOV 33H,#2SJMP S035S033: DEC 33HS035: MOV B,33HMOV A,#100DIV ABMOV 32H,A //赋值给32HS039: CLR 23HS040: //MOV C,23H //刷新显示//JNC S049MOV A,33HMOV B,#10DIV ABPUSH ACCMOV A,BMOV DPTR,#XSMOVC A,@A+DPTRSETB P2.1MOV P1,ALCALL DELAYCLR P2.1POP ACCMOV DPTR,#XSMOVC A,@A+DPTRSETB P2.2ANL A,#7FHMOV P1,ALCALL DELAYCLR P2.2S049: NOPS09: LJMP SS00DELAY: PUSH ACCPUSH PSWMOV A,R2PUSH ACCMOV A,R3PUSH ACCMOV R2,#10DE1: MOV R3,#50DE0: DJNZ R3,DE0DJNZ R2,DE1POP ACCMOV R3,APOP ACCMOV R2,APOP PSWPOP ACCRETAN: PUSH ACCPUSH PSWMOV A,R2PUSH ACCMOV A,R3PUSH ACCLCALL DELAYSETB 22HSETB 23HPOP ACCMOV R3,APOP ACCMOV R2,APOP PSWPOP ACCRETIDSQ: MOV TL0,#93HMOV TH0,#0FDHPUSH ACCPUSH PSWMOV A,R2PUSH ACCMOV A,R3PUSH ACCMOV A,34HCJNE A,#00H,DSQ0MOV A,32HMOV 34H,ASETB 22HSJMP DSQ9DSQ0: DEC 34HDSQ9: POP ACCMOV R3,APOP ACCMOV R2,APOP PSWPOP ACCRETIXS: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END。
呼吸灯原理

呼吸灯原理
呼吸灯是一种常见的LED灯光效果,通常用于提供柔和的灯光效果,常见于节日装饰、夜间照明和氛围照明等场合。
呼吸灯的原理是通过控制LED灯的亮度逐渐变化,达到灯光呼吸的效果,让人感到温暖和舒适。
原理概述
呼吸灯的原理基于PWM(脉宽调制)技术和控制算法。
PWM技术是一种通过改变信号的占空比控制输出功率的方法,即通过控制信号的高电平时间和低电平时间的比例来控制LED的亮度。
控制算法则实现灯光的渐变效果,使LED灯的亮度呼吸起来。
实现步骤
呼吸灯的实现步骤如下:
1.初始化设置:设置LED灯的初始亮度和渐变时间。
2.增加亮度:逐渐增加LED灯的亮度,直到达到最大亮度。
3.保持最大亮度:保持LED灯的最大亮度一段时间。
4.减少亮度:逐渐减少LED灯的亮度,直到达到最小亮度。
5.保持最小亮度:保持LED灯的最小亮度一段时间。
6.循环调节:根据设定的参数,循环执行上述步骤,实现灯光呼吸的
效果。
应用场景
呼吸灯广泛应用于各种场合,如:
•节日灯饰:用于节日装饰,营造欢乐的节日氛围。
•夜间照明:作为小夜灯使用,提供柔和的照明效果。
•氛围照明:用于创造浪漫或安静的氛围,增加空间的温暖感。
总结
呼吸灯的原理基于PWM技术和控制算法,通过控制LED灯的亮度实现灯光的渐变效果。
呼吸灯不仅具有装饰效果,还可以提供舒适的照明,广泛应用于不同的场合。
通过对呼吸灯原理的理解和实现步骤的掌握,可以设计出更多具有创意和美感的LED灯光效果。
三极管呼吸灯电路

电路中使用了一个NPN型三极管(例如2N3904)和几个其他组件来实现呼吸灯效果。
下面是每个组件的说明:电源(Vcc):提供电路所需的电压。
可以使用适当的电源供电,如电池或直流电源适配器。
三极管(Q1):使用一个NPN型三极管,常用的是2N3904。
它用作信号放大器,控制LED的亮度。
电阻(R1和R2):这两个电阻用来限制三极管的基极和发射极之间的电流。
它们的值可以根据需要选择。
电容器(C1):电容器用作一个储能元件。
当电压升高时,电容器充电,当电压下降时,电容器放电。
这产生了呼吸灯效果。
LED:连接在三极管的集电极和电源之间,用来显示灯光。
可变电阻(RV1):可选组件,用于调节呼吸灯的速度和亮度。
电路的工作原理如下:当电源接通时,电流通过R1流向三极管的基极,使其导通。
这导致电流从集电极流向发射极,进而流向LED和R2。
因为电容器C1开始会处于放电状态,所以初始阶段LED可能不会亮。
随着电容器C1逐渐充电,电流通过三极管和LED增加,使LED逐渐变亮。
当电容器充电到一定程度时,电流达到最大值,LED 可达到最大亮度。
接下来,电容器开始放电,电流逐渐减小,使LED的亮度逐渐减弱。
当电容器充电完毕时,LED将完全熄灭。
随后,电容器再次充电,循环重复上述过程,产生连续的呼吸灯效果。
通过调节可变电阻RV1的阻值,可以改变呼吸灯的速度和亮度。
这就是一个基本的三极管呼吸灯电路。
请注意,这只是一个简单的示例。
使用该电路时需要合理选择元件的值,并确保电源电压和元件的额定电压兼容。
呼吸灯原理

呼吸灯原理
呼吸灯是一种常见的灯光效果,它模拟了人类呼吸的节律变化,使灯光产生一种逐渐明亮和变暗的效果。
其原理是基于电流的脉冲宽度调制(PWM)技术。
呼吸灯通常由一个LED灯和一个微控制器组成。
微控制器负
责控制LED灯的亮度。
在呼吸灯的效果中,LED灯的亮度会
逐渐增加,然后再逐渐减小,如同人类的呼吸过程一样。
微控制器通过PWM技术来调整LED灯的亮度。
PWM技术利
用了电流开关的原理,在一个固定的时间周期内,通过调整电流开关的打开和关闭时间来控制电流的平均值,从而达到改变LED灯亮度的效果。
通过不断地改变PWM的频率和占空比,就可以实现呼吸灯的效果。
为了实现呼吸灯的节律变化,微控制器需要设计一个逐渐增加和逐渐减小亮度的曲线。
一种常见的方法是利用正弦函数或指数函数来模拟呼吸的节律变化。
通过不断地调整PWM的占空比,将LED灯的亮度从低到高再从高到低地变化,就可以实
现呼吸灯的效果。
需要注意的是,呼吸灯的原理并不复杂,但需要一定的编程和电路设计知识来实现。
同时,在实际应用中,还需要考虑
LED灯的电流和电压等参数,以确保呼吸灯的效果和LED灯
的正常工作。
呼吸灯电路

呼吸分为两个过程:吸气:指数曲线上升,该过程需要1.5S呼气:指数曲线下降,该过程需要1.5S.对成人而言,平均每分钟呼吸16~18次;对儿童而言,平均每分钟呼吸20次;上面的参数是在均匀呼吸情况下的次数。
可以用来做休眠时候的指示用。
2、呼吸灯电路/?id=5元件名称5mm LED 高亮蓝色灯1个LM1458N(或HA17458)双运放1个2N3904(8050,8550)NPN 三极管(TO92封装)1 个22uF 100V /47uF 35v / 47uF 50V电容1个47K [1/4w] 4个100K [1/4w] 2个100 ohm 1个说明:更改电容或者R3的大小可以改变呼吸频率。
经过实验,R3改为两个47K电阻串联起来效果比较好,呼吸的频率比较合适。
另外输入电压串上3个1N4007降一下压,这样效果会更好,呼吸灯会有短暂的熄灭时间。
(只适合绿色和蓝色的LED灯,红色的LED因为发光电压比较低不会有熄灭时间,可以再串一些1N4007来达到效果)另外LM1458是个双运放,用NE5532,CA1558等几乎都行, 至于工作电压,把输入的100欧去掉,直接上7.2就没问题~一个台湾网友的呼吸灯电路再来一个呼吸灯电路本文来自: 原文网址:/sch/others/0079557.html大部分都是用一个老外的电路图,用7555集成电路做的。
我分析了一下,电路主要由两个部分组成:7555模块主要是产生方波,RC模块是产生渐变的电压,形成呼吸效果。
换言之,任何能产生方波和产生渐变电压的模块都可以用来做呼吸灯,不同的是是否便利和成本问题。
下面要介绍的这个呼吸灯电路是我设计的。
其中的RC模块借鉴了老外的图,而方波产生模块我用了一种比7555成本更低的方案,用两个三极管构成双稳态振荡电路。
由于三极管工作在饱和区,所以不存在调试工作点的问题。
单片机呼吸灯电路

单片机呼吸灯电路
实现单片机呼吸灯的电路可以通过以下步骤实现:
1. 选择LED:选择适当的LED,如红色、绿色或蓝色,根据单片机的I/O口数量和电路板布局来决定。
2. 连接LED:将LED的正极连接到单片机的I/O口上,LED的负极连接到地线。
3. 配置I/O口:配置单片机对应的I/O口为输出模式,以便控制LED的亮灭。
4. 编写程序:编写单片机程序,使用PWM(脉冲宽度调制)控制I/O口的输出电压,从而调节LED的亮度。
在程序中,可以设置一个定时器,以一定的频率改变PWM的占空比,使LED逐渐变亮或变暗,实现呼吸灯效果。
5. 调试程序:将程序下载到单片机中,通过观察LED的亮灭和亮度变化情况,调试程序中的参数,以达到满意的呼吸灯效果。
具体实现过程可能因单片机型号和开发环境而略有不同,可查阅相关的开发文档或教程以获得更详细的指导。
4069呼吸灯

呼吸灯电路首先来说一下方波产生电路:Vdd是接电源正极,vss接电源负极.这是cd4069六个非门,我们的方波电路就是用它做的如果下图“这是我用的电阻和电容的数值,rs可有可无,它只是起保护作用。
两个非门一个电阻和一个电容就可以了,这个方波电路不管频率多大输出的占空比都是百分之五十,这样对做呼吸灯有很大帮助,在慢亮和慢灭看起来就很协调和美丽,频率的大小可以改变rf电阻和电容来改变,根据自己的需要可以自己调试。
Rs是保护电阻来保护一个非门的输入级的,大小一兆就行,/share/link?shareid=586749&uk=2837818244百度云盘地址好了下面来看呼吸灯电路:V+是方波输入。
+5v接电源的正极。
我做的是在5v的电压下工作的。
这个适合蓝色和白色的发光二极管,不适合红色和绿色的,因为他们的导通电压不一样,所以如果你想试试的话发现红色和绿色呼吸效果很不好也不协调。
当然如果你的电源功率够大,场管的功率也够大那么下边的发光二极管接多少都没问题。
D1二极管是防止电容充的返放回去电池,如果别接二极管你会发现二极管亮时效果很好而灭的时候很快。
三个100k的电阻是给电容放电的,太小太大效果都不太好。
Q1场管是电脑主板上拆下来的,因为电脑上的场管功率比较大质量也不错。
呼吸灯的原理是利用了电容的电压不能突变和场管的放大作用实现的。
当方波电路输出方波的时候就开始给电容充电,因为电容的电压不能突变只能按积分的方式上升(如果直接从电容上观看波形的话是锯齿波而不是方波),随着电容上的电压上升场管就从截至到导通在从导通到放大区在到饱和区,这样就会看见二极管慢慢的亮起来,当方波不输出的时候电容开始放电,因为电容电压不能突降二十慢慢下降,电容通过三个100k的电阻放电,这样场管又从饱和到放大再到截至从而看到二极管慢慢熄灭。
因为场管是电压控制器件所以对电容的充放电影响可以忽略不计,而如果把场管换成三极管那么效果就很不好了,因为三极管是电流控制器件对电容的充放电影响很大。
呼吸灯

前段时间坛子里的呼吸灯很像很火的样子,但那时还在家,没有元件。
开学了,准备制作一个,代替电脑上的电源指示灯。
网上大概有两种图:NE555的和LM358的。
NE555咱多的很,先用在面包板上用NE555搭,但效果很不理想,而且大容量的电容体积太大了。
遂放弃该方案。
改用比较器方案的。
用给定的参数在面包板上搭了个,但是亮与灭的时间不一样,不是很满意。
更改电阻阻值也无改善。
从波形可以明显看出来,波形成了锯齿波,咱要的应该是三角波。
恩,增加一个二极管和一个电阻,加快波形下降时的电容充电过程。
经实际测试,电阻取56K较合适,从仿真结果看,波形也已接近三角波了。
OK,电路完成,接下来就是焊接了。
以前总是用洞洞板焊,电路走线难看,这次改用覆铜板腐蚀。
早就想做PCB,但没有激光打印机,也没有热转印机,连个熨斗都没,擦。
还好买了小的手持电钻,很早前买的三氯化铁也还有半瓶。
决定开干。
用Altium Designer Winter 09 先画SCH
然后布板,线宽设为0.5mm,布线采用自动加手工折方式,完成后如下
然后导出Gerber文件,要设置成镜像
完成,拿去打印。
遗憾的是,第一次打印出来尺寸变大了,第二次打印出来的尺寸小了,第
三次打印比例设为1.05才好了。
然后贴到PCB上,先打孔。
(昨晚上打的孔,没拍照片)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电源呼吸灯电原理图及程序设计
原理图和程序已经验证并用在了实际产品中没有问题
//按键P1.0,OUT P1.5,power P3.7; STC15F104E
#include<reg51.h>
#include<intrins.h>
//#include "STC12C5A60S2.h"
#define uint unsigned int
#define uchar unsigned char
sbit KK1 = P3^1; //按键输入;
sbit led3 = P3^0; //闪灯
sbit out=P3^2;
uchar
light,lightnumber,lightcount,lighttime,dark,darknumber,darkcount,darktime,autoflag,openflag; uint stop,stopnumber;
/**************************************************************
* 名称: Delay_1ms()
* 功能: 延时子程序,延时时间为1ms * x
* 输入: x (延时一毫秒的个数)
* 输出: 无
***************************************************************/
void Delay_1ms(uint z)
{
uint x,y;
for(x = z; x>0; x--) for(y = 110; y>0; y--);
}
//**************************************************************
void keyscan()
{
if(!KK1&&openflag==0) //开电源
{
Delay_1ms(500);
if(!KK1)
{
while(!KK1);
autoflag=1;
light=0;
dark=0;
stop=0;
stopnumber=0;
lightnumber=0;
lightcount=0;
lighttime=0;
darknumber=0;
darkcount=0;
darktime=0;
led3=0;
openflag=1;
out=0;
}
}
if(!KK1&&openflag==1) //关电源
{
Delay_1ms(500);
if(!KK1)
{
while(!KK1);
autoflag=0;
openflag=0;
out=1;
}
}
}
/************************************************
*************************************************/
void Timer0_Init()
{
TMOD=0x01;
TH0 = (65536 -800)/256;
TL0 = (65536 -800)%256;
EA = 1; //开启中断总开关
ET0 = 1 ; //定时器0 开中断
TR0 = 1; // 开启定时器0
}
/************************************************ *************************************************/ void Timer1_Init()
{
TMOD=0x10;
TH1 = (65536 -50000)/256;
TL1 = (65536 -50000)%256;
EA = 1; //开启中断总开关
ET1 = 1 ; //定时器0 开中断
TR1 = 1; // 开启定时器0
}
/************************************************ *************************************************/
void Timer0(void) interrupt 1 using 1
{
TH0 = (65536 -800)/256;
TL0 = (65536 -800)%256;
if(light==1)
{
lightnumber++;
if(lightnumber>=30)
{
lightnumber=0;
lightcount++;
}
if(lightcount>=3)
{
lightcount=0;
lighttime++;
}
if(lighttime<=lightnumber)
{
led3=1;
}
if(lighttime>lightnumber)
{
led3=0;
}
if(lighttime==30)
{
led3=1;
light=0;
lighttime=0;
lightnumber=0;
lightcount=0;
dark=1;
}
}
if(dark==1)
{
darknumber++;
if(darknumber>=25)
{
darknumber=0;
darkcount++;
}
if(darkcount>=3)
{
darkcount=0;
darktime++;
}
if(darktime<=darknumber)
{
led3=0;
}
if(darktime>darknumber)
{
led3=1;
}
if(darktime==25)
{
led3=1;
dark=0;
darktime=0;
darknumber=0;
darkcount=0;
// Delay_1ms(7000);
// light=1;
stop=1;
}
}
if(stop==1)
{
stopnumber++;
if(stopnumber>=1000)
{
stop=0;
stopnumber=0;
light=1;
}
}
}
/************************************************
*************************************************/
void Timer1(void) interrupt 3 using 2
{
TH1 = (65536 -50000)/256;
TL1 = (65536 -50000)%256;
}
/**************************************************************
* 名称: Main()
* 功能: 主函数
***************************************************************/ void Main(void)
{
Timer0_Init();
Timer1_Init();
while(1)
{
keyscan();
if(autoflag==0)
{
light=1;
autoflag=1;
}
}
}。