导航:首页 > 操作系统 > 呼吸灯单片机程序

呼吸灯单片机程序

发布时间:2024-11-29 07:41:21

单片机式的呼吸灯控制方法

我们通常会在各类器件上看到形形色色的指示灯,它们都分别代表着不尽相同各项功能的运行情况。而由灯发出的指示光要比其他方法传递信息更直接更明显,也更加的经济。而现在呼吸灯这项技术已经应用于各个方面,甚至包括智能机的应用,而其比较多样的呼吸方法在传递相关信息上也是方便至极,那么今天我们就来看看呼吸灯的控制问题。

灯光在微电脑的控制之下完成由亮到暗的逐渐变化,感觉好像是人在呼吸。


应用

广泛应用于手机之上,并成为各大品牌新款手机的卖点之一。如果你的手机里面有未处理的通知,比如说未接来电,未查收的短信等等,呼吸灯就会由暗到亮的变化,像呼吸一样那么有节奏,起到一个通知提醒的作用。

电子爱好者可通过简单的电路来实现呼吸灯的效果。


为何很多手机都取消了呼吸灯

回答之前,小编想先纠正一个问题,并不是智能机都取消了呼吸灯,很多设备还是具备这一功能的,只不过能够将这一功能发挥到极致的手机,确实是少之又少。安卓设备其实多数都是有LED灯的,不过原生安卓系统本身没有提供一个可以统一控制的通知中心,而是要每个应用自己决定显示通知的方式,这方式包括声音、震动、LED灯及其颜色,再加上不同手机的灯或多或少都有些不同,这样就造成了有的应用不支持LED灯有的应用却错误地触发了LED灯。

久而久之,在我的日常使用中,LED灯通常会给人一种十分不可靠的感觉,实际表现在我们该点亮屏幕的时候还是会点亮屏幕,不该点亮屏幕的时候,看到LED灯错误的亮起,也要去点亮屏幕去处理,就这样,一个听起来很好的功能反倒变得有些鸡肋甚至是惹人讨厌。到了安卓4.4以后,感觉系统在LED灯控制方面更为混乱,一些常驻通知栏的图标甚至也会触发LED灯,导致用户体验极差。

而有些如CM一类的第三方ROM会提供系统级的分应用LED灯设置,不过在实际使用中的表现也不够完美。所以虽然LED呼吸灯本来是一个很好的设计,但是安卓系统却没有做好,于是有些厂商索性就取消了LED灯,或者取消了LED灯的呼吸功能。

另外,可能有些人会问,为何苹果手机也没有呼吸灯,这又是个老生常谈的问题了,苹果不具备的东西很多,很多时候我们都不知道为什么,不采用呼吸灯,可能是因为技术,也可能是因为专利,苹果同安卓不同,其并非开源系统,很多时候,苹果都会来规范用户的使用习惯,不设置呼吸灯,或许只是因为苹果觉得用户不需要它吧。至于这位网友在问题中提到的触控反馈,这个其实不需要小编多说了,貌似目前大部分手机都有触控反馈吧,只需要在设置中调出来就好。

呼吸灯的作用

呼吸灯是一个提气的设计,它让手机不再是一块只会亮屏的板砖。因为不是所有的消息通知都需要处理,也不是所有的消息通知都会马上处理。对于手机来讲,亮屏铃声震动属于强通知,这包括一些软件提供的来电闪光功能,呼吸灯则属于弱通知,不是所有人都会定期去查看手机的,多数情况下在办公室我们都只是把手机放在桌上,偶尔去下洗手间也不会带着,这中间如果有消息,我们回来瞟一眼就知道了,呼吸灯作为弱通知的作用,提醒的意义大于通知。



先说呼吸灯,这个本质上是LED的亮度控制。

一般是用PWM方式控制LED亮度,PWM的输出按照一定的规律变化,就可以做出呼吸灯的效果。

再说30个LED的控制,如果要简单点做,30个LED可以串起来串一个电阻,接高点的电源电压,30个LED用同一个信号控制,当然,亮度也是同步变化的。如果要复杂,那就出30个信号分别控制30个LED串30个电阻,具体看你的追求的效果吧。


呼吸灯的程序,如果有硬件的PWM模块,是很简单的,按一定的规律让PWM的输出变化就可以。

像这样输出10%亮度,持续200ms,输出20%亮度,持续200ms,输出30%亮度,持续200ms。

如果没有硬件PWM模块,可以用软件来模拟,比如,输出10%亮度,持续200ms这两件事合在一起作,变成输出高电平10us,输出低电平90us,循环2000次。


两种方法

方法1:1000个左右的灯,需要10根地址线选通,51的IO管脚应该是没有问题。剩下的就是要用大量的译码器,把二进制信息转换为管脚信息。

估计你仅仅是控制亮和灭,如果是这样选通也就可以进行明暗的控制,否则输出的信息也要加进去,就是说需要加驱动电路。

方法2:用移位电路,比如HC595,在51中地址做为串行信号发出,转换为对应的地址线,然后在连接译码器,这样,51的管脚比较节省,但,编程的难度稍大。


那么上述就是呼吸灯相关控制的方法和技巧,我们讲,呼吸灯控制在硬件圈是一个很普通的项目,而所采用的单片机控制也是硬件里最基础的,相信很多人在研习过后都能够掌握,而即便不必要掌握这个情况,熟悉相关的原理情况也可以让其在遇见故障的时候能够迅速找到方法来排除,那么今天呼吸灯控制的问题就给大家介绍到这里。

㈡ 51单片机用汇编语言如何设计8个轮流呼吸的呼吸灯

因为我不知道你这个板子的硬件,我就假设一下吧,你自己对照着看看,关键是流程
假设如下这八个灯依次接在P0口的八个口上,高电平为灯亮,低电平为灯灭,程序如下
ORG 0000H
AJMP START
START:MOV P0,#01H;()只有第一个灯亮
ACALL DELAY;延迟,不加延迟的话 你根本看不起清到底那个灯亮的
MOV P0,#02H;()只有第二个灯亮
ACALL DELAY
MOV P0,#04H;()只有第三个灯亮
ACALL DELAY
MOV P0,#08H;()只有第四个灯亮
ACALL DELAY
MOV P0,#10H;()只有第五个灯亮
ACALL DELAY
MOV P0,#20H;()只有第六个灯亮
ACALL DELAY
MOV P0,#40H;()只有第七个灯亮
ACALL DELAY
MOV P0,#80H;()只有第八个灯亮
ACALL DELAY
AJMP START;周而复始
DELAY: MOV R6,#40;延迟程序,晶振为3.57MHZ时大概是0.1S
0.1SL1: MOV R5,#246
0.1SL2: NOP
DJNZ R5,0.1SL2
DJNZ R6,0.1SL1
RET
END

㈢ 51单片机设计呼吸灯

原发布者:呦_
小屁孩
基于单片机与PWM的
呼吸灯
设计实训指导教师:班级:设计人姓名:设计日期:设计地点:完成时间:摘要本设计是基于单片机的原理与接口设计,采用单片机I/O口,加以
C语言编程
实现LED渐亮再渐暗类似人的呼吸一样的效果。关键词
AT89C51
,PWM(
脉宽调制
)一、设计要求:呼吸灯就是让
LED灯
的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样。二、
设计原理
:用C语言编程实现PWM(脉宽调制)输出驱动LED,逐渐增加PWM的
占空比
从而实现LED模拟
呼吸的过程
,即渐亮再渐暗再渐亮再渐暗……如此往复,再利用LED的余辉和人眼的暂留效应,看上去就和人的呼吸一样。三、整体方案设计8个LED按照顺序逐个实现呼吸效果。加以其他闪烁花样增加更炫彩的效果。四、实验元件及器材(1)元件:LED(
发光二极管
)8个1KΩ电阻8个
1nf
电容2个
晶振
1个
AT89C51芯片
1个(2)器件:
Atmega128
开发板
1块计算机1台5、硬件原理(1)
主电路
:8个LED分别连接AT89C51的P1口,使用共阳方式,并加以1kΩ的电阻接入电源。

㈣ 单片机制作呼吸灯的C语言程序怎样编写

#include<reg51.h>
sbit LED0=P0^0;
sbit wei=P1^1;
sbit an=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
an=0;
while (1) //主循环
{
LED0=1;
Delay(150000); //特意加延时,可以看到熄灭的过程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;

Delay(PWM_LOW);

LED0=1;

Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}

㈤ 求一个stc15w202s单片机的呼吸灯程序 要边呼吸边移动(波浪状), 就是相当于呼吸灯流水灯结合。

你可以了解一下ws2812,这个会好很多。
想过这种程序,但因为没什么卵用就给我忘了。
pwm要挺高频率才行,不然会闪,试过3灯的rgb,原理上差不多,但是直接程序死循环都难受,不是很流畅,你也可以参考一下。。。
#include "reg52.h"
#include "intrins.h"
sbit r=P1^0;
sbit g=P1^1;
sbit b=P1^2;
void Delay200ms();
void play(char rz1,char gz1,char bz1,int t);
void Delay10us();
//占空比从0到100变化
void main(void)
{
while(1)
{char rz=0,gz=0,bz=0;
char x=0,y=0,z=0;
r=1;
g=1;
b=1;
Delay200ms(); //接线验证,rgb依次亮起
r=0;
Delay200ms();
r=1;
g=0;
Delay200ms();
g=1;
b=0;
Delay200ms();
b=1;
Delay200ms();
for(x=5;x>=0;x--) //彩色连续变化
{rz=100;gz=0;bz=0;
play(rz,gz,bz,1);
for(gz=0;gz<=100;gz++)
play(rz,gz,bz,1);
for(rz=100;rz>=0;rz--)
play(rz,gz,bz,1);
for(bz=0;bz<=100;bz++)
play(rz,gz,bz,1);
for(gz=100;gz>=0;gz--)
play(rz,gz,bz,1);
for(rz=0;rz<=100;rz++)
play(rz,gz,bz,1);
for(bz=100;bz>=0;bz--)
play(rz,gz,bz,1);
}
}
}
//显示色彩程序,pwm,显示某占空比颜色时间t
void play(char rz1,char gz1,char bz1,int t)
{
char i=rz1,j=gz1,k=bz1,yt;
for(t=t*4;t>=0;--t)
{
i=rz1;j=gz1;k=bz1;

for(yt=100;yt>=0;yt--)
{
if(i>0)
r=0;
else
r=1;
if(j>0)
g=0;
else
g=1;
if(k>0)
b=0;
else
b=1;
--i;
--j;
--k;
Delay10us();
}

}
r=1;g=1;b=1;
}
//延时程序组
void Delay200ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 10;
j = 31;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay10us() //@12.000MHz
{
unsigned char i;
_nop_();
_nop_();
i = 27;
while (--i);
}

㈥ 求助,51单片机用PWM的RGB呼吸灯程序怎么写

#include<reg52.h>

sbitLED0=P2^0;//译码器控制端,低有效

voidDelay(unsignedintt);//函数声明


voidmain(void)
{

unsignedintset=400,pwm=0;//定义周期并赋值

while(1)//主循环
{
LED0=0;
Delay(60000);//延时,可以看到熄灭的过程
for(pwm=1;pwm<set;pwm++){


LED0=1;//熄灭LED
Delay(pwm);//延时长度,600次循环中从1加至599
LED0=1;//点亮LED
Delay(set-pwm);//延时长度,600次循环中从599减至1

}
LED0=1;
for(pwm=set-1;pwm>0;pwm--){//与逐渐变亮相反的过程

LED0=1;
Delay(pwm);
LED0=0;
Delay(set-pwm);

}
//主循环中添加其他需要一直工作的程序
}
}

voidDelay(unsignedintt)
{
while(--t);
}

阅读全文

与呼吸灯单片机程序相关的资料

热点内容
想在上海租房子什么app好 浏览:184
编译程序各部分是必不可少的吗 浏览:885
编程不超过十行 浏览:763
数电编译器的作用 浏览:337
时间算法与现在有什么区别 浏览:162
7zip解压后没文件夹 浏览:902
为什么安卓送玫瑰ios收不到 浏览:8
美篇文章加密是什么意思 浏览:82
ilasm编译dll 浏览:38
呼吸灯单片机程序 浏览:954
linux域socket 浏览:249
qq分身怎么样才能加密 浏览:457
windows打开linux 浏览:998
新建文件夹为什么不能发送微信 浏览:603
交警app怎么绑定本人几辆车 浏览:989
彩虹六号如何人工服务器 浏览:634
mc服务器地址怎么登入 浏览:558
苹果app怎么扫描二维码下载 浏览:961
css文件在线解压 浏览:156
36岁程序员近况 浏览:285