精华内容
下载资源
问答
  • LED呼吸灯

    2019-10-06 12:39:39
    通过PWM控制4个LED的渐亮渐灭,可用按键调速,能用数码管显示相对速度 前5个key模块为延时消除抖动,speed模块为调速,后面产生可变的占空比的PWM,LED为...2、呼吸灯可以再调一下参数,已到达更加好看 3、调速模...

     

    通过PWM控制4个LED的渐亮渐灭,可用按键调速,能用数码管显示相对速度

    前5个key模块为延时消除抖动,speed模块为调速,后面产生可变的占空比的PWM,LED为数码管显示。

    虽然实现了,但是仍有很多地方需要优化:

    1、比如变量名的设定,发现变量一多,就不会取名字了,或取出来的名字感觉很别扭(也许英文太差)!

    2、呼吸灯可以再调一下参数,已到达更加好看

    3、调速模块很简单,只是做一个选择,可以增强按键的功能,如实现自加,连击,组合键...

    4、对4个灯增加更多的闪烁样式

    总结:如果只用FPGA做类似的控制,模块的划分的确很重要,只要划分好了,每个模块也就很简单了,千万不能写在一个文件里。

     

    转载于:https://www.cnblogs.com/Mrseven/archive/2011/11/17/2253344.html

    展开全文
  • LED呼吸灯程序

    千次阅读 2019-06-08 22:59:08
    LED呼吸灯是在闪烁的基础上,调节LED点亮的时间和熄灭的时间,进而时LED呈现出逐渐变亮或者变暗的过程。 我们知道点亮或者熄灭LED就是给端口高低电平即1或0,通过调节占空比,改变1和0 的占用时间即可达到此效果。 ...

    STM32入门一百步第二十八步

    LED呼吸灯是在闪烁的基础上,调节LED点亮的时间和熄灭的时间,进而时LED呈现出逐渐变亮或者变暗的过程。
    我们知道点亮或者熄灭LED就是给端口高低电平即1或0,通过调节占空比,改变1和0 的占用时间即可达到此效果。

    主程序如下

    int main (void)
    {
    	u8 MENU;
    	u16 t,i;
    	//初始化程序
    	RCC_Configuration(); //时钟设置
    	LED_Init();
    	//设置变量的初始值
    	MENU = 0;
    	t = 1;
    	//主循环
    	while(1)
    	{
    		//菜单0
    		if(MENU == 0)
    		{ //变亮循环
    			for(i = 0; i < 10; i++)
    			{
    				GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
    				delay_us(t); //延时
    				GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
    				delay_us(501-t); //延时
    			}
    			t++;
    			if(t==500){
    				MENU = 1;
    		}
    	}
    		//菜单1
    		if(MENU == 1)
    		{ //变暗循环
    			for(i = 0; i < 10; i++)
    			{
    				GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
    				delay_us(t); //延时
    				GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
    				delay_us(501-t); //延时
    			}
    			t--;
    			if(t==1)
    			{
    				MENU = 0;
    			}
    		}		
    	}
    }
    
    展开全文
  • STM8S_PWM_LED呼吸灯

    2017-07-18 10:27:17
    利用STM8S005 PWM做LED呼吸灯的IAR 源码
  • STM32F407ZE 使用延时控制LED灯亮暗变换,实现LED呼吸灯效果 具体代码如下: main.c部分 #include <stm32f4xx.h> #include "sys.h" #include "led.h" #include "delay.h" #include "tim.h" int main() { ...

    STM32F407ZE 使用延时控制LED灯亮暗变换,实现LED呼吸灯效果
    具体代码如下:

    main.c部分

    #include <stm32f4xx.h> 
    #include "sys.h"
    #include "led.h"
    #include "delay.h"
    #include "tim.h"
    
    int main()
    {
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//中断优先级分组  2分组
    	
    	LED_Init();										//LED灯初始化
    	
    	while(1)										//呼吸灯
    	{
    		int i=0;
            for(;i<100;i++)
            {
                delay(60);
                TIM_Init(i);
            }
            
            for(;i>0;i--)
            {
                delay(60);
                TIM_Init(i);
            }
    	}
    }
    

    tim.h部分:

    #ifndef __TIM_H_
    #define __TIM_H_
    
    #include <stm32f4xx.h>
    #include "sys.h"
    void TIM_Init(int light);
    #endif
    
    
    tim.c部分
    #include "tim.h"
    
    void TIM_Init(int light)
    {
    	TIM_TimeBaseInitTypeDef TIMInit_struct;
    	NVIC_InitTypeDef  TIMNVIC_Struct;
    	
    	//0、使能TIM2时钟
    	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
    	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
    	
    	//1、初始化定时器2模块
    	TIMInit_struct.TIM_Prescaler = 840-1;					//84Mhz/840 = 100000Hz 0.01ms/脉冲
    	TIMInit_struct.TIM_Period    = light;					//定时1s
    	TIMInit_struct.TIM_CounterMode = TIM_CounterMode_Up;	//递增模式
    	TIMInit_struct.TIM_ClockDivision = TIM_CKD_DIV1;		//不分频
    	TIM_TimeBaseInit(TIM4,&TIMInit_struct);
    
        TIMInit_struct.TIM_Period    = 100-light;				//定时1s
        TIM_TimeBaseInit(TIM5,&TIMInit_struct);
        
       
        
    	//2、开启定时器2的更新中断---确保定时一到能够通过中断机制报告给CPU
    	//让CPU快速执行对应的功能
    	TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);
    	TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE);
        
        
    	//3、NVIC中断管理
    	TIMNVIC_Struct.NVIC_IRQChannel = TIM4_IRQn;//stm32f4xx.h
    	TIMNVIC_Struct.NVIC_IRQChannelPreemptionPriority = 1;
    	TIMNVIC_Struct.NVIC_IRQChannelSubPriority        = 0;
    	TIMNVIC_Struct.NVIC_IRQChannelCmd   = ENABLE;
    	NVIC_Init(&TIMNVIC_Struct);
    	
        TIMNVIC_Struct.NVIC_IRQChannel = TIM5_IRQn;//stm32f4xx.h
        NVIC_Init(&TIMNVIC_Struct);
            
    	//4、开启对应定时器的计数器----启动定时器
    	TIM_Cmd(TIM4,ENABLE);
        TIM_Cmd(TIM5,ENABLE);
    }
    
    void TIM4_IRQHandler(void)
    {
    	//再次对相应的标志位进行判断
    	if(TIM_GetITStatus(TIM4,TIM_IT_Update) == 1)
    	{
    		PFout(9) 	= 	1;
    		PFout(10) 	= 	1;
            PEout(13) 	= 	1;
    		PEout(14) 	= 	1;
    		
    		//清除指定的中断标志位  Update
    		TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
    	}
    }
    void TIM5_IRQHandler(void)
    {
    	//再次对相应的标志位进行判断
    	if(TIM_GetITStatus(TIM5,TIM_IT_Update) == 1)
    	{
    		PFout(9) 	= 	0;
    		PFout(10) 	= 	0;
            PEout(13) 	= 	0;
    		PEout(14) 	= 	0;
    		
    		//清除指定的中断标志位  Update
    		TIM_ClearITPendingBit(TIM5,TIM_IT_Update);
    	}
    }
    
    

    sys.h

    #ifndef __SYS_H
    #define __SYS_H	 
    #include "stm32f4xx.h" 
    
    //IO口操作宏定义
    #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr & 0xFFFFF)<<5)+(bitnum<<2)) 
    #define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 
    #define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 
    //IO口地址映射
    #define GPIOA_ODR_Addr    (GPIOA_BASE+20) //0x40020014
    #define GPIOB_ODR_Addr    (GPIOB_BASE+20) //0x40020414 
    #define GPIOC_ODR_Addr    (GPIOC_BASE+20) //0x40020814 
    #define GPIOD_ODR_Addr    (GPIOD_BASE+20) //0x40020C14 
    #define GPIOE_ODR_Addr    (GPIOE_BASE+20) //0x40021014 
    #define GPIOF_ODR_Addr    (GPIOF_BASE+20) //0x40021414    
    #define GPIOG_ODR_Addr    (GPIOG_BASE+20) //0x40021814   
    #define GPIOH_ODR_Addr    (GPIOH_BASE+20) //0x40021C14    
    #define GPIOI_ODR_Addr    (GPIOI_BASE+20) //0x40022014     
    
    #define GPIOA_IDR_Addr    (GPIOA_BASE+16) //0x40020010 
    #define GPIOB_IDR_Addr    (GPIOB_BASE+16) //0x40020410 
    #define GPIOC_IDR_Addr    (GPIOC_BASE+16) //0x40020810 
    #define GPIOD_IDR_Addr    (GPIOD_BASE+16) //0x40020C10 
    #define GPIOE_IDR_Addr    (GPIOE_BASE+16) //0x40021010 
    #define GPIOF_IDR_Addr    (GPIOF_BASE+16) //0x40021410 
    #define GPIOG_IDR_Addr    (GPIOG_BASE+16) //0x40021810 
    #define GPIOH_IDR_Addr    (GPIOH_BASE+16) //0x40021C10 
    #define GPIOI_IDR_Addr    (GPIOI_BASE+16) //0x40022010 
     
    //STM32中  对寄存器的访问  是不能单独访问寄存器的单个bit  只能以32bit地址访问寄存器
    //这些位为只写形式,只能在字(word)--4byte、半字2byte 或字节模式下访问 
    //IO口操作,只对单一的IO口!
    //确保n的值小于16!
    #define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //输出 
    #define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //输入 
    
    #define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出 
    #define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入 
    
    #define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //输出 
    #define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //输入 
    
    #define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  //输出 
    #define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  //输入 
    
    #define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  //输出 
    #define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  //输入
    
    #define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  //输出 
    #define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  //输入
    
    #define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  //输出 
    #define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  //输入
    
    #define PHout(n)   BIT_ADDR(GPIOH_ODR_Addr,n)  //输出 
    #define PHin(n)    BIT_ADDR(GPIOH_IDR_Addr,n)  //输入
    
    #define PIout(n)   BIT_ADDR(GPIOI_ODR_Addr,n)  //输出 
    #define PIin(n)    BIT_ADDR(GPIOI_IDR_Addr,n)  //输入
    
    
    #endif
    

    led.h部分

    #ifndef _LED_H_
    #define _LED_H_
    
    #include <stm32f4xx.h>
    #include "sys.h"
    
    void LED_Init(void);
    
    #endif
    

    led.c部分

    #include "led.h"
    
    
    void LED_Init(void)
    {
    	GPIO_InitTypeDef LED;
    	
    	//1、先开启对应用到的模块时钟节拍
    	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
    	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);	//PE组时钟
    
    	//2、可以初始化配置GPIO  F组的9号引脚
    	LED.GPIO_Pin   = GPIO_Pin_9 | GPIO_Pin_10;
    	LED.GPIO_Mode  = GPIO_Mode_OUT;							//输出模式
    	LED.GPIO_Speed = GPIO_Fast_Speed;						//快速  点灯和引脚速度无关
    	LED.GPIO_OType = GPIO_OType_PP;							//推挽输出
    	LED.GPIO_PuPd  = GPIO_PuPd_UP;							//内部上拉
    	GPIO_Init(GPIOF,&LED);
    	
    	
    	LED.GPIO_Pin   = GPIO_Pin_13 | GPIO_Pin_14;
    	GPIO_Init(GPIOE,&LED);
    	
    	//初始化完成  灭掉4盏灯
    	PFout(9)  = 1;
    	PFout(10) = 1;
    	PEout(13) = 1;
    	PEout(14) = 1;
    
    }
    

    delay.h部分

    #ifndef _DELAY_H_
    #define _DELAY_H_
    
    
    void delay(int tim);
    
    #endif
    

    delay.c部分

    #include "delay.h"
    
    void delay(int tim)
    {
    	int i;
    	while(tim--)
    	{
    		for(i =3840;i>0;i--);
    	}
    }
    
    展开全文
  • 基于wiringPi库PWM aip 的LED呼吸灯控制程序。
  • ZigBee-CC2530单片机 - LED呼吸灯 程序源码 #include "ioCC2530.h" #define LED1 P1_0 // P1_0定义为P1_0 #define LED2 P1_1 // P1_0定义为P1_1 #define LED3 P1_3 // P1_0定义为P1_3 #define LED4 P1_4 // P1_0...

    ZigBee-CC2530单片机 - LED呼吸灯

    程序源码

    #include "ioCC2530.h"
    
    #define LED1 P1_0     // P1_0定义为P1_0
    #define LED2 P1_1     // P1_0定义为P1_1
    #define LED3 P1_3     // P1_0定义为P1_3
    #define LED4 P1_4     // P1_0定义为P1_4
    #define SW1  P1_2     //SW1端口宏定义
    
    unsigned char h;
     
    /*******************LED1初始化部分*****************/
    void InitLed()
    {
        P1SEL &= ~0x01;         //设置P1_0口为普通I/O口
        P1DIR |= 0x01;          //设置P1_0口为输出口
        LED1 = 0;            //熄灭LED1
    }
    /***************************************************/
    
    /*****************定时器1初始化部分****************/
    void InitT1()
    {
        T1CTL |= 0x01;        //定时器1时钟频率1分频,自动重装0x0000-0xFFFF
        PERCFG=0x40;       //定时器1选择外设位置2
        P1SEL|=0x01;         //P1_0选择外设功能
        T1CCTL2=0x64;       //定时器1通道2向上比较,比较模式
        T1CC2L=0xFF;        //
        T1CC2H=h;
    }
    /***************************************************/
    void main(void)
    {
        unsigned char js=0;
        unsigned char a=1;          //a=1为渐亮,a=2为渐灭
        InitLed();           //调用初始化函数
        InitT1();            
        while(1)
        {
    	     if((T1STAT&0x04)>0)  
    		 {
    		     T1STAT=T1STAT&0xfb;   //清除中断标志
    		     js++;
    		     if(js>=1)        //改变亮度的时间
    		     {
    		       js=0;         //清零
    		       if(a==1)      //渐亮
    		         h=h+1;
    		       else          //渐灭
    		         h=h-1;
    		       T1CC2L=0xff;  //重装比较值
    		       T1CC2H=h;
    		       if(h>=254)     //最大亮度
    		          a=2;       //设为渐灭
    		       if(h==0)       //最小亮度
    		         a=1;        //设为渐亮
    			}
    		}
    	}
    }
    
    
    
    展开全文
  • 这篇文章 [使用 Verilog 实现 LED 呼吸灯效果]是基于纯数字逻辑来实现呼吸灯的效果,本节介绍采用C语言来实现LED呼吸灯的效果,重点理解如何通过ARM来实现LED呼吸灯效果的,即原理和过程。 本次利用一个GPIO 外设...
  • 常见的应用在手机的呼吸灯,这里我们采用硬件描述语言来实现LED呼吸灯的效果,即在1s内,LED灯由暗逐渐变亮,再1s内再由亮逐渐变暗。 一、设计原理 呼吸灯设计原理归结为对于分频和占空比的应用,就是先分频,然后再...
  • STM32F103ZET控制WS2811/SM16703P驱动RGB全彩LED呼吸灯。本人已用示波器确定好归零码时序,可直接使用。
  • 本程序是用51单片机通过PWM(脉冲宽度调制)方式控制LED,达到呼吸灯的效果。
  • 原标题:Python on Zynq - 手把手教你如何在Zybo上跑Python制作一个LED呼吸灯
  • 2.GPIO实现led呼吸灯 首先添加一下库函数 看一下开发板原理图 得到对应的PC10,PC11,PC13 什么都不要说直接上代码 先LED初始化 void LEDInit(void) { GPIO_InitTypeDef GPIO;//自定义GPIO RCC_AHB1...
  • 炫酷LED呼吸灯

    千次阅读 2019-05-23 21:40:46
    LED(发光二极管)虽然体积很小,但内有乾坤,在我们的生活中也是随处可见他的身影,电子钟表表盘上的数字、超大电视屏幕上的图像、或是用于点亮交通信号,他是电子世界中真正的英雄,默默无闻,但是作用巨大,...
  • 定时器实现led呼吸灯 实验原理: 灯在高速闪烁时,光信号传入大 脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失。每次循环时,前半部分先让亮的时间逐渐增加,暗的时间逐渐减小;后半部分先让...
  • pwm控制led呼吸灯

    2013-05-29 16:58:02
    pwm信号控制led灯,使其有呼吸的效果,亲自测试过,可行
  • 最近在串口发送引脚上接LED指示发送或者接收状态,但是需求是希望连续发送或者接收字符过程中LED闪烁,而... 但是在实际操作中发现大于2500bps,连续发送数据的时候是不会闪烁的,会保持一个常量的状态,只是亮度
  • 1-2-3-LED呼吸灯程序.zip

    2021-03-19 10:12:24
    呼吸灯测试例程,stm32f103
  • 前言 在本周,我们在python课上做了一个实验,用ARDUINO使小LED灯模仿出呼吸...这篇博文里介绍的就是我对本周的实验LED呼吸灯的原理通过学习进行的浅层次的理解分享. 理解PWM需要知道的知识 (1)脉冲 解释: 电子...
  • mtk led 呼吸灯

    千次阅读 2016-12-23 18:31:13
    LED调用流程 g_leds_data[i]->cdev.blink_set = mt65xx_blink_set; //mt65xx_leds_probe -- leds_drv.c mt65xx_blink_set//leds_drv.c mt_mt65xx_blink_set mt_led_blink_pmic //leds external_ic_leds...
  • Ardunio led呼吸灯

    2016-08-28 23:10:00
    #include <Adafruit_NeoPixel.h>...#define PIN 9#define LED_NUM 16Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800);void setup() { // put your setup code here, to run...
  • 原标题:Python on Zynq - 手把手教你如何在Zybo上跑Python制作一个LED呼吸灯 来源: www.DIGILENT.com.cn/community作者: Michael080808导读继 Xilinx 联合 DIGILENT 推出世界上第一款支持 Python 的 FPGA 嵌入式...
  • 基于C语言和LPC1114开发板的嵌入式实验,一、SysTick实验,二、定时器实验,三、LED呼吸灯实验,四、蜂鸣器实验。
  • 单片机实现LED呼吸灯功能

    千次阅读 2020-03-07 11:52:52
    ** 程序名: 两键控制亮度 编写人: 编写时间: 2017年12...接口说明: 8个LED彩灯接P1口,按键接P3.7和P3.3 修改日志:   NO.1- /************************************************************************...
  • 小熊派gd32f303学习之旅(7)—使用PWM实现LED呼吸灯 一、前言 通过查看gd32f30x的参考手册,可以知道gd32f303的通用定时器和高级定时器可以硬件生成PWM波,然后我们查看gd32f303xx的数据手册,可以看到,小熊派上...
  • MSM-AOSP_LED呼吸灯适配(泛泰IM-A910)

    千次阅读 2015-04-18 12:08:59
    泛泰A910的led呼吸灯用了非标准代码,逼格甚高。 但也造成了标准的呼吸灯hal代码不可用,对于第三方适配者就苦逼了。 本文介绍泛泰A910的呼吸灯hal适配调试过程,最终目标是找到正确的LED调用方式。 hal代码在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 653
精华内容 261
关键字:

led呼吸灯