精华内容
下载资源
问答
  • 呼吸灯原理简介 + FPGA实现呼吸灯

    千次阅读 2020-02-11 23:15:21
    本文简要介绍一下呼吸灯的原理,最后并附上FPGA的呼吸灯Verilog HDL代码。希望能给各位读者些许帮助。 呼吸灯的效果是灯逐渐由暗变亮再逐渐由亮变暗周而复始像人在呼吸一样。大家可能会想到如果能实现逐渐增加电压再...

    呼吸灯原理简介 + FPGA实现呼吸灯

    所谓呼吸灯,就是是指灯光在微电脑的控制之下完成由亮到暗再由暗到亮的逐渐变化,感觉好像是人在呼吸,主要用于起通知提醒的作用。
    本文简要介绍一下呼吸灯的原理,最后附上FPGA的呼吸灯Verilog HDL代码。希望能给各位读者些许帮助。

    呼吸灯的效果是灯逐渐由暗变亮再逐渐由亮变暗周而复始像人在呼吸一样。大家可能会想到如果能实现逐渐增加电压再逐渐减小电压就能轻松实现。但是FPGA的引脚电压只有“0”和“1”两个等级。因此通过FPGA引脚实现“正弦波式”信号输出是不现实的。所以事实上都是通过改变引脚单位时间内高电平的输出时间来实现呼吸灯,也就是让FPGA引脚输出一系列PWM波信号并不断改变PWM波的占空比。

    呼吸灯分为两个阶段:
    第一阶段:由暗到亮。就是输出的一系列PWM波占空比由0%到100%以1%为间隔递增,共100个周期PWM波。
    第二阶段:由亮到暗。就是输出的一系列PWM波占空比由100%到0%以1%为间隔递减,共100个周期PWM波。
    注意:
    有两个100:一个100为占空比100%;另一个100为由0%到100%或100%到0%需要100个周期PWM波。

    FPGA呼吸灯代码Breath_LED.v:

    /*************************************************
    // 文件说明:      led呼吸灯代码
    // 创 建 人:     mnWu522
    // 日期:         2020-2-11
    // 修 改 人:                     
    // 修改日期:     20xx-xx-xx
    *************************************************/
    module Breath_LED(
    	input clk,
    	output reg led
    );
    
    reg [12:0]cnt1;
    reg [8:0]cnt2;
    reg [8:0]cnt3;
    reg flag;
    initial flag <= 0;
    initial cnt1 <= 0;
    initial cnt2 <= 0;
    initial cnt3 <= 0;
    
    always @(posedge clk)
    begin
    	if(cnt1 == 5000)begin
    		cnt2 <= cnt2 + 1;
    		cnt1 <= 0;
    	end else begin
    		cnt1 <= cnt1 +1;
    	end
    
    	if(cnt2 == 99)begin
    		cnt3 <= cnt3 + 1;
    		cnt2 <= 0;
    	end
    
    	if(cnt3 == 99)begin
    		flag <= ~flag;
    		cnt3 <= 0;
    	end
    
    	if(cnt2 >= cnt3 && flag == 0)begin
    		led <= 1;
    	end else if(cnt2 <= cnt3 && flag == 0)begin
    		led <= 0;
    	end else if(cnt2 >= cnt3 && flag == 1)begin
    		led <= 0;
    	end else if(cnt2 <= cnt3 && flag == 1)begin
    		led <= 1;
    	end
    end
    
    endmodule
    

    代码讲解:
    该代码实现一个2s的呼吸灯,1s由暗到亮,1s由亮到暗。
    由第二个100得一个PWM波周期为1s/100=10ms;
    由第一个100得1%占空比为10ms/100=100us;
    cnt1加到5000是因为本代码默认时钟为50MHz,5000/50000000Hz=100us,可根据FPGA实际情况自行修改。

    展开全文
  • 呼吸灯的实现

    千次阅读 2019-04-02 17:36:54
    有要求要实现LED灯光强弱变化控制的,之前有了解过呼吸灯的概念,也知道通过PWM来控制,但也只是停留在概念上面,以前也没有真正去做过这方面的,所以就在网上再搜罗了一番,感觉还是有些云里雾里的,最后只好自己静...

    最近做的项目中,有要求要实现LED灯光强弱变化控制的,之前有了解过呼吸灯的概念,也知道通过PWM来控制,但也只是停留在概念上面,以前也没有真正去做过这方面的,所以就在网上再搜罗了一番,感觉还是有些云里雾里的,最后只好自己静下心来,从原理上弄懂先。

    了解到要想改变LED亮度改变LED的电流,就需要,一则改变限流电阻,二则改变供电电压值。
    前者一般电阻都是选定,无法再做实时更改,就算可以实时(如数字电位器)在此也是大材小用。
    后者则是一个良好的选择,电压怎么变,如下:

    在这里插入图片描述
    该图展示了方波(PWM)与其电压有效值或者平均值的关系。
    t/T的值可以改变输出的电压有效值或者平均值,t则是高电平时间,T则是方波(PWM)的周期值。
    我们只要固定方波周期值,固定高电平时间,即固定了占空比,也就固定了输出电压值。
    在这里插入图片描述
    先码一下例程代码:

    //灯亮度控制
    void Light_LuxAssign(unsigned char Lux_Strenth)//亮度配置(实设置高电平时长)
    {
    	static unsigned char breath_rt;         //呼吸计时器
    	static const unsigned char breath_Ta=20;这里就先固定一下周期值(周期值不能超过22ms.否则会有闪烁现象,视觉暂留)
    	static unsigned char breath_Ton; //高电平时间
    	breath_Ton=Lux_Strenth;//注意Lux_Strenth不能超过周期值breath_Ta
    	if(breath_Ta<breath_rt)//计时器累加到一个周期
    	{
    		breath_rt=0; //计时器归零	
    	}		
    	else 
    	{
    		breath_rt++;//计时器继续累加
    	}
    	(breath_Ton>breath_rt)?(LED7_O(1)):(LED7_O(0));//灯亮灭时间控制
    }
    

    这段函数功能是实现输入一个固定的高电平时间值(即固定占空比),然后LED就实现了LED的亮度控制。
    在这里插入图片描述
    按此思路,然后就来呼吸灯的实现步骤,
    实现呼吸灯的效果,即运行过程中,就需要实现占空比(高电平时长)如同呼吸一样消长。因为如上言,改变占空比,即改变LED两端的电压有效值,也就改变了驱动LED的有效电流值,从而实现LED暗亮的渐变效果。即动态占空比的实现

    实现代码如下:

    void Breath_Light(unsigned char breath_speed,unsigned char breath_Ta)// 呼吸速率(us)|呼吸时间(us)
    {
    	#define BREATH_TASK_TIME 200 //时基200us
    
    	static unsigned char breath_dir;//呼吸方向(呼气/吸气)
    	static unsigned char breath_rt;//呼吸计时器
    	static unsigned char breath_speed_cnt;//呼吸速率累加器
    	static unsigned char breath_Ton;//高电平时间
    	
    	if(!breath_dir)
    	{
    		if(breath_Ta<breath_rt)//计时器累加到一个周期
    		{
    			breath_rt=0; //计时器归零
    			if(0==breath_speed_cnt++%breath_speed)	
    			{
    				breath_speed_cnt=0;
    		   	breath_Ton++;//占空比加大
    			}				
    		}		
    		else  //
    		{
    			breath_rt++;//计时器继续累加
    		}
    		if(breath_Ton>=breath_Ta)
    		{		
    			breath_dir=1;
    			breath_Ton=breath_Ta;
    		}	
    		(breath_Ton>breath_rt)?(LED7_O(1)):(LED7_O(0));	//Ton导通时间区	
    	}
    	else
    	{
    		if(breath_Ta<breath_rt)//计时器累加到一个周期
    		{
    			breath_rt=0; //计时器归零
    			if(0==breath_speed_cnt++%breath_speed)	
    			{
    				breath_speed_cnt=0;
    				breath_Ton--;//占空比减小
    			}		
    		}		
    		else  //
    		{
    			breath_rt++;//计时器继续累加
    		}
    		if(0>=breath_Ton)
    		{		
    			breath_dir=0;
    			breath_Ton=0;
    		}
    		(breath_Ton>breath_rt)?(LED7_O(1)):(LED7_O(0));		
    	}
    }
    

    上面函数是在定时器中运行的,定时时基为200us

    定时器中断如下:

    void TIM1_ISR() interrupt 3 
    {
    //	Breath_Light(5,100);//呼吸灯
    	Light_LuxAssign(20);//暗弱控制
    }
    
    展开全文
  • 1.呼吸灯原理分析: 模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面),按最快0.04s算,就是40... 亮的百分比多,人眼看到的就亮,反之就是暗(实验,为了提高呼吸灯的柔和效果,采用设置20m...

    1.呼吸灯原理分析:
    模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面),按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)。

    2.呼吸灯程序设计:
    就是改变这40ms中,亮和灭所占的百分比(40ms相对不柔和,20ms效果柔和)。

    亮的百分比多,人眼看到的就亮,反之就是暗(实验,为了提高呼吸灯的柔和效果,采用设置20ms一个周期,20ms内调整亮和灭的比例)

    因此程序设计:
    1.5S需要1500/20=75个周期,75个周期中,亮度百分比有0%增长到100%,因此每个周期增长时间为20ms/75=266us(点亮)。熄灭的原理,正好相反,熄灭时间增长。程序中需要两个循环,一个用来点亮一个用来熄灭。

    3.STM32程序实现代码
    程序要灵活设计,能够调整呼吸时间的长短,1.5s这个参数。可以调整柔和度,可以调整40ms这个周期参数,这样就实现了呼吸灯的灵活调整。源代码先不放出来了,等做完实验放出。
    ***********

    428f3f31b7c95907c154196b3183ec18.png

    //=======================================
    void LedOnOff(uint32_t t,uint32_t xx) //T代表整个周期的时间,xx代表周期中点亮时间的长度{ HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //GPIO_PIN_SET HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET); mydely_us(xx); //点亮时间
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET); mydely_us(t-xx); //熄灭时间
    }
    //*****************下面注视的代码是通过调用库函数来实现IO控制的方法*****************************************int main(void){ int i; int myLongTime=1500; //ms 呼吸总体时间 int myshortTime=40; //ms int myCYC=myLongTime/myshortTime; delay_init(); //初始化延时函数 LED_Init(); //初始化LED端口 while(1) { for(i=1; i1; i-=1)
    LedOnOff(myshortTime*1000,i*myshortTime*1000.0/myCYC);
    }}

    3a85d21b39501fc9548d45e5525b5bc2.png

    4.原理分析:

    模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面)按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)呼吸灯,就是改变这40ms中,亮和灭所占的百分比。
    1500/40=38周期,40ms/37=1052us。38个周期变比中,每个周期增长1个单位1052us,38个周期刚好是40ms.这样达到全亮
    亮的百分比多,人眼看到的就亮,反之就是暗。
    利用40ms这个时间,目测感觉有闪烁,减少这个时间,变化就会缓慢,没有闪烁感。参考用20ms

    //us延时函数的实现

    void mydely_us(uint32_t count)

    {

    HAL_TIM_Base_Stop_IT(&htim1);

    my_tim1_count=0;

    HAL_TIM_Base_Start_IT(&htim1);

    while(my_tim1_count

    HAL_TIM_Base_Stop_IT(&htim1);

    }

    void TIM1_UP_IRQHandler(void)

    {

    /* USER CODE BEGIN TIM1_UP_IRQn 0 */

    extern uint32_t my_tim1_count;

    my_tim1_count++;

    __HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);

    /* USER CODE END TIM1_UP_IRQn 0 */

    //HAL_TIM_IRQHandler(&htim1);

    /* USER CODE BEGIN TIM1_UP_IRQn 1 */

    /* USER CODE END TIM1_UP_IRQn 1 */

    }

    29e9f0fcfa9e0c99aad116e65637d389.png

    5.说明:

    利用HAL库,默认没有办法实现us的定时器,方法是。利用硬件定时器,产生一个1us的周期中断,每进入一次中断,一个全局变量加1,通过判断这个变量的值,来确定当前的延时时间。

    6.问题:
    1.HAL库的执行效率比较低,1us中断的实际,还没有处理完中断过程,因此需要手动修改中断函数,
    添加__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);
    屏蔽: //HAL_TIM_IRQHandler(&htim1);
    这样中断处理时间会减少很多。
    2.全局变量的变化,如果总开着定时中断,会影响正常程序的执行,因此,需要延时的时候,开启定时器,延时结束,关闭定时器

    void mydely_us(uint32_t count)

    {

    HAL_TIM_Base_Stop_IT(&htim1);

    my_tim1_count=0;

    HAL_TIM_Base_Start_IT(&htim1);

    while(my_tim1_count

    HAL_TIM_Base_Stop_IT(&htim1);

    展开全文
  • 最终所要实现的效果:当按下A键对应A亮,按下B键对应B亮,按下C键对应C亮,按下D键对应D亮。 就选四个键,多了自己写,原理都一样。 原理支撑:对于嵌入LED,低电平亮,高电平灭(这个大部分这样,实际...

    51之旅的第一步,亮灯。但我们不仅仅只是亮一个灯就够了,我们亮就要亮出花样出来,接下来我来说几种常见的形式。

    (一)按键亮灯

    最终所要实现的效果:当按下A键对应A灯亮,按下B键对应B灯亮,按下C键对应C灯亮,按下D键对应D灯亮。

    就选四个键,多了自己写,原理都一样。

    原理支撑:对于嵌入的LED,低电平亮,高电平灭(这个大部分这样,实际情况不放心可以自己测一下,分别给个高低的电平看看那个亮)。对于独立按键来说,当按键按下,按键所接对应引脚变为低电平。

    接线:LED:L1接P1.0,L2接P1.1,L3接P1.2,L4接P1.3。按键:K1接P0.0,K2接P0.1,K3接P0.2,K4接P0.3。

    好了,原理跟接线都完成了,接下来思路就是:当K1按下时,P0.0变成低电平,此时P1.0应变位低电平,L1亮。即实现了按下K1时L1亮。此时问题就转化成了判断P0.0是否为低电平,实现很简单,没错,用个if语句足以。

    sbit p00 = P0^0;
    if(p00 == 0){
    }

    这里需注意一点,为了减少误触的风险,应当设置防抖动。所以最后一个完整过程的代码实现应为:

    sbit p00 = P0^0;
    sbit p10 = P1^0;
    if(p00 == 0){
        delay_ms(10);
        if(p00 == 0){
            p10 = 0;
        }
    }

    注意,上面的delay代表延时,这个函数得自己写。
    带上头文件,最后得完完整整得程序应为:

    #include <reg51.h>
    
    sbit p00 = P0^0;
    sbit p10 = P1^0;
    
    void delay_ms(unsigned int n)
    {
     int i,y;
     for(i=n;i>0;i--)
      for(y=114;y>0;y--);
    }
    
    void main()
    {
    	while(1)
    	{
    	if(p00 == 0){
    	    delay_ms(10);
    	    if(p00 == 0){
    	        p10 = 0;
    	    }
    	}
    	}
    }

    四个的话,改变引脚重复四次就可以了。我就不多说了。

    接下来,进行下一个,跑马灯。

    (二)跑马灯

    最终效果:当第一个灯亮,其余灯灭,接着第二个灯亮,同时第一个灯灭,接下来是第三个····当最后一个灯亮完,重复整个过程,再来一遍。

    原理支撑:灯亮的原理同上,emmm,好像只要说这个就行。

    接线:讲L1-L8对应接在P1.0-P1.7上。

    实现上述过程,主要是通过位运算来完成。通过左移右移来实现灯灭灯亮。
    在这之前介绍一种用法:

    P1 = 0xfe

    上面代表着,将P1的第一位置为0,也就是P1.0为0,其余位置为1。

    有了上面的基础,这我也不多说,大概差不多,我直接给出完整的程序:

    #include <reg51.h>
    
    void delay_ms(unsigned int n)
    {
     int i,y;
     for(i=n;i>0;i--)
      for(y=114;y>0;y--);
    }
    
    void main(void)
    {
     while(1)
     {
      P1 = 0xfe;
      delay_ms(1000);
      while(P1 != 0xf7)
      {
       P1 <<= 1;
       P1 |= 0x01;
       delay_ms(1000);
      }
      P1 = 0x7f;
      delay_ms(1000);
      while(P1 != 0xef)
      {
       P1 >>= 1;
       P1 |= 0x80;
       delay_ms(1000);
      }
     }
    }

    ok,跑马灯咋也完成了,接下来进行最后一项,呼吸灯。

    (三)呼吸灯

    最终效果:实现灯的由暗到亮并且由亮到暗的逐渐变化。

    原理:emmm,我们采用for循环的方式来进行呼吸灯的实现。两个for循环,总的循环次数不变。假设,总的循环次数为500,当亮为500时,暗为0;当亮为200时,暗为300;当亮为0时,暗为500。如果开始是从亮为0开始循环,即实现的是由暗到亮,如果从亮为500开始,即实现的是由亮到暗。然后你想象一下,两者一结合,是不是就是一个从暗到亮然后亮到暗的完整过程,然后不断重复此过程,好了,恭喜你,呼吸灯你完成了。

    接线:我们只实现一个灯的呼吸灯,所以我们只接一个脚就可以了。将L1接在P1.0上。

    感觉差不多,原理中应该说的很详细了,接下来接触程序:

    #include <reg51.h>
    
    sbit p10 = P1^0;
    
    void main(void)
    {
     int time = 200;
     int i,j=0;
     while(1)
     {
      p10 = 0;
      for(i=0;i<time-j;i++);
      p10 = 1;
      for(i=0;i<j;i++);
      j++;
      if(j == time)
      {
       while(j>0)
       {
        p10 = 0;
        for(i=0;i<time-j;i++);
        p10 = 1;
        for(i=0;i<j;i++);
        j--;
       }
      }
     }
    }

    上面的time是做一次呼吸灯要的时间,不可过长,也不可过短,这个自己改几个值试一下,找到最佳的值。导致这个原因是,晶振的不同。

    好了,呼吸灯现在你也完成了。到这基本也结束了。
    怎么样,是不是很开森。到这,这个LED基本你也完溜了。
    接下来,自己去找一些更好玩的玩法。

    展开全文
  • (1)呼吸灯的原理,通俗的说就是利用PWM波的占空比的变化,让其输出的电压的有效值变化使得LED灯的亮度发送变化(灯泡的亮度是由有效值来确定的),然后通过延时让消除由PWM波占空比带来的闪烁影响。(关于如何
  • 我们选取stm32mini开发板来完成实验,其实,这次完成呼吸灯的目的是了解PWM的工作原理,方便以后完成电机的驱动。同样,这次采取的也是外接灯来完成呼吸灯。 选取定时器3的通道2来完成,其对应的引脚为PA7,所以灯的...
  • 前言 在本周,我们在python课上做了一个实验,用ARDUINO使小LED灯模仿出呼吸...这篇博文里介绍的就是我对本周的实验LED呼吸灯的原理通过学习进行的浅层次的理解分享. 理解PWM需要知道的知识 (1)脉冲 解释: 电子...
  • STM32呼吸灯原理

    2020-09-16 21:48:49
    呼吸灯原理其实是利用pwm(脉冲宽度调节)技术,通过改变占空比来实现呼吸灯,占空比是指高电平除以总周期, 下面直接上代码 int xxx=20000; while(1) { for(i=0;i<xxx;i++) { GPIO_ResetBits(GPIOF,GPIO_Pin_...
  • 全彩RGB呼吸灯效果实现-STM32

    千次阅读 2019-11-15 16:38:22
    全彩RGB呼吸灯效果实现——PWM方式 全彩LED 灯控制原理: 使用STM32控制LED灯输出多种亮度等级,可以通过控制输出脉冲占空比来实现,见图1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img...
  • PWM实现呼吸灯

    千次阅读 2019-07-30 20:34:20
    PWM实现呼吸灯 一、PWM简介 脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 缩写,简称脉宽调制,是利用微处理器数字输出来对模拟电路进行控制一种非常有效技术。简单一点,就是对脉冲宽度控制, ...
  • led实现呼吸灯

    千次阅读 2018-08-12 10:46:46
    从1us到1s钟,改变led呼吸灯的触发条件。 2.依旧把程序写出来,这次在写计数器的时候,发现自己很大问题,就是计数器条件写不全。要不就是只写计数不清零,要么就是忘记清零不拉高。说白了,就是不理解时序,没有...
  • 呼吸灯抽象过来就像呼吸一样,实现的效果是一种渐变循环,从明亮到微弱以此无限循环一种效果。那么用HTML写出基本框架,CSS实现样式,效果。两种方法HTML代码是一样 呼吸灯主体部分 两种方法HTML代码是...
  • 呼吸灯 呼吸灯:我们将通过脉宽调制技术来实现“呼吸灯”,实现LED亮度由最暗...实现原理:如上图所示,脉冲信号周期为T,高电平脉冲宽度为t,占空比为t/T。为了实现PWM脉宽调制,我们需要保持周期T不变,调整...
  • ESP32LED_PWM实现呼吸灯效果

    千次阅读 2019-01-11 00:20:16
    乐鑫的ESP32的esp_idf实现了一个呼吸灯的接口;我按着接口写了个小程序去实现闪烁和呼吸的效果,但调了半天才调出了想要的呼吸效果;故作此笔记;先来说下几个简单的概念; PWM:Pulse Width Modulation 的缩写,即...
  • STM32 PWM实现呼吸灯

    千次阅读 2018-12-19 15:35:44
    STM32 PWM控制呼吸灯程序(脉冲宽度调制) PWM工作原理 ARR:自动预装载寄存器 CNT:自动装载计数器 CRR:比较器 图解:在一个周期t2内,随着计数器(CNT)值不断增加,取任一时刻t1,CNT值与CCR值进行比较,...
  • 一般使用PWM脉冲调制实现,其原理就时通过改变高电平的时间(占空比),从而实现呼吸灯的效果。在这里通过延时来模拟PWM脉冲。 PWM原理如下图所示: 硬件说明如下图所示: 实现代码 1.宏定义 #define LED1_ON ...
  • 上篇文章全彩呼吸灯的制作(一)已经谈论了呼吸灯的原理及设计过程,不过我们上篇文章是使用STM32控制的,这篇文章就让我们一起使用Arduino控制呼吸灯,下面让我们一起来来看一下具体如何实现吧!一、所需硬件1.1 实验...
  • Unity 实现物体上呼吸灯效果Shader

    千次阅读 2019-08-20 20:08:28
    原理:最终呼吸效果 = 当前颜色+ 周期变化数值*呼吸灯颜色 如果要部分位置要进行呼吸效果,就和之前流光一样加一个mask图来rgb其中一个通道来处理就行 部分呼吸原理:最终呼吸效果 = 当前颜色+ 周期变化数值*...
  • css实现呼吸灯动效

    千次阅读 2019-07-19 16:39:46
    实现原理:改变图片透明度 代码: <div class="breath"></div> .breath { width: 8%; height: 77%; position: absolute; right: 19px; top: 17px; background: url("../../assets/image/...
  • 呼吸灯之定时器实现前言一、呼吸灯原理二、实现代码1.单片机介绍2....此次我们没有选用单片机的PWM功能改变占空比的方法实现,而是用定时器模拟PWM输出来实现呼吸灯的。 定时器实现要点: 1.呼吸灯周期要
  • 7月6日消息,现在越来越多的手机因为全面屏设计导致了LED通知灯被移除...这款应用程序的工作原理,直接通过屏幕模拟显示呼吸灯的样式,来通知手机用户其手机收到的未读通知。虽然这款应用程序最初只是针对OnePlus 6...
  • 呼吸灯为常见的数字IC设计案例,也比较简单,主要是关于呼吸灯的原理需要理解。常见的应用在手机的呼吸灯,这里我们采用硬件描述语言来实现LED呼吸灯的效果,即在1s内,LED灯由暗逐渐变亮,再1s内再由亮逐渐变暗。 ...
  • 上个博客讲了通用...脉宽调制的原理就是不断的调节 高低电平的占空比来实现平均电压的变化,从而实现呼吸灯的效果。 代码如下: main.c /* 创建时间:2019.9.17 创建人:王艇 */ #include "stm32f10x.h" ...
  • 要求和基本原理都已经知道了,下面就可以来开始我们设计。  既然要求我们从灭到亮时间是2s,我们就可以把这2s分成1000段,然后在这个1000段里边,依次让时间增加。又因为我们的灯亮时间是依次递增,...

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
关键字:

呼吸灯的实现原理