STM32F103VET6实现全彩LED灯 |
您所在的位置:网站首页 › rgb三色原理 › STM32F103VET6实现全彩LED灯 |
全彩LED灯的实现
文章目录
全彩LED灯的实现
前言
一、相关知识
1.全彩 LED 灯简介
2.硬件简介
二、代码实现
1.编程要点
2.LED灯硬件相关宏定义
2.初始化 GPIO
3.定时器 PWM配置
4.设置混合颜色
5.主函数
总结
前言
利用PWM控制实现全彩LED灯 一、相关知识 1.全彩 LED 灯简介全彩 LED 灯,实质上是一种把红、绿、蓝单色发光体集成到小面积区域中的 LED 灯,控制时对这三种颜色的灯管输出不同的光照强度,即可混合得到不同的颜色,其混色原理与光的三原色混合原理一致。 本工程配套开发板中的 RGB 灯就是一种全彩 LED 灯,实现LED 基本控制时候,只能控制 RGB 三色灯的亮灭,即 RGB 每盏灯有[0:1]两种等级,因此只能组合出 8种颜色。要使用 STM32 控制 LED 灯输出多种亮度等级,可以通过控制输出脉冲的占空比来实现 图中列出了周期相同而占空比分别为 100%、80%、50%和 20%的脉冲波形,假如利用这样的脉冲控制 LED 灯,即可控制 LED 灯亮灭时间长度的比例。若提高脉冲的频率,LED 灯将会高频率进行开关切换,由于视觉暂留效应,人眼看不到 LED 灯的开关导致的闪烁现象,而是感觉到使用不同占空比的脉冲控制 LED 灯时的亮度差别。即单个控制周期内,LED 灯亮的平均时间越长,亮度就越高,反之越暗。 把脉冲信号占空比分成 256 个等级,即可用于控制 LED 灯输出 256 种亮度,使用三种这样的信号控制 RGB 灯即可得到 256256256 种颜色混合的效果。而要控制占空比直接使用 STM32定时器的 PWM 功能即可。 2.硬件简介LED 硬件原理图 RGB 灯使用阴极分别连接到了 PB5、PB0 及 PB1,它们分别是定时器 TIM3 的通道 2、3、4,其中 PB5用于定时器输出通道时,需要使用重定义功能。 二、代码实现 1.编程要点 初始化 RGB灯使用的 GPIO; 配置定时器输出 PWM 脉冲; 编写修改 PWM脉冲占空比大小的函数; 测试配置的定时器脉冲控制周期是否会导致 LED 灯明显闪烁; 2.LED灯硬件相关宏定义color_led.h文件: /********定时器通道*******/ #define COLOR_TIMx TIM3 #define COLOR_TIM_APBxClock_FUN RCC_APB1PeriphClockCmd #define COLOR_TIM_CLK RCC_APB1Periph_TIM3 #define COLOR_TIM_GPIO_CLK (RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO) //红灯的引脚需要重映射 #define COLOR_GPIO_REMAP_FUN() GPIO_PinRemapConfig(GPI0_PartialRemap_TIM3,ENABLE); /********红灯*********/ #define COLOR_RED_TIM_LED_PORT GPIOB #define COLOR_RED_TIM_LED_PIN GPIO_Pin_5 #define COLOR_RED_TIM_OCxInit TIM_0C2Init //初始化通道函数 #define COLOR_RED_TIM_OCxPreloadconfig TIM_OC2Preloadconfig//通道重载配置函数 //通道比较寄存器,以TIMx->CCRx方式可访问该寄存器,设置新的比较值,控制占空比 //以宏封装后 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |