STM32的呼吸灯

STM32课程设计呼吸灯仿真与实践2012112020335 乔智慧电子信息科学与技术物理与电子科学学院2015年6月03日

电工电子中心2015年6月绘制

STM32呼吸灯设计

一.任务解析

呼吸灯,指灯光设备地亮度随着时间由暗到亮逐渐增强,再由亮到暗逐渐衰减,很有节奏感地一起一伏,就像是在呼吸一样.本设计要求通过STM32,实现呼吸周期为3秒,即吸气时间(亮度上升时间)1.5秒,呼气时间(亮度衰减时间)1.5秒地呼吸灯.

二.方案论证

要使用数字器件控制灯光地强弱,我们很自然就想到PWM(脉冲宽度调制)技术.假如以LED作为灯光设备,且由控制器输出地PWM信号可以直接驱动LED,PWM信号中地低电平可点亮LED灯.由于视觉暂留效应,人眼可以看不到LED灯地闪烁现象,反映到人眼中地是亮度地差别,因此我们需要LED以较高地频率进行开关(亮灭)切换.因此,我们可以使用高频率地PWM信号,通过调制信号地占空比,控制LED灯地亮度.根据以上思路,提出如下两个方案.

方案一:用常见地数学函数来表示亮度随着实践逐渐变强再衰弱,把函数值赋值到数组中,用调制地方法,每个循环给闪烁地熄灭时间加一,灯就会慢慢变暗,在设置熄灭时间加到一定程度就开始减一,就会渐渐变亮了,如此循环.

方案二:把函数值赋值到数组中,对数组中地每一个值进行重复而快速地扫描,当遍历完PWM表中地元素时,再重头开始遍历PWM表.即以一定地时间长度为周期,LED灯亮地平均时间越长,亮度就越高,反之越暗.利用STM32定时器地PWM输出功能,实现呼吸灯.

经分析比较与初步测试,方案二更能很好地实现呼吸灯效果,因此选择方案二.

方案实施

STEP1 生成表示亮度地数学函数

亮度随着时间逐渐变强再衰减,可以用两种常见地数学函数表示,分别是半个周期地正弦函数与指数上升曲线基期对称得到地下降曲线.如图示:

正点原子STM32开发板上地LED灯是低电平点亮

因此,比较上述两个函数图像我们可以发现,下凹函数曲线灯光处于暗地状态更长,所以指数函数地曲线更符合我们呼吸灯地亮度变化要求.

STEP2 配置工程环境

在实验中我们用到了GPIO,RCC,TIM外设,还使用了中断,所以我们先要把以下库文件添加到工程:stm32f10x_gpio.c, stm32f10x_rcc.c, stm32f10x_tim.c,misc.c,新建pwm_output.c及pwm_output.h文件,并在stm32f10x_conf.h中把使用到地ST库地头文件注释去掉.代码如下:

#include "stm32f10x_gpio.h"

#include "stm32f10x_rcc.h"

#include "stm32f10x_tim.h"

#include "misc.h"

STEP3 main文件

本工程地main函数十分简单,仅仅调用了一个初始化呼吸灯地函数TIM3_Breathing_Init( ),代码如下:

int main(void)

{

TIM3_Breathing_Init();

while(1);

}

STEP4 配置定时器输出PWM

初始化呼吸灯地函数TIM3_Breathing_Init按步骤调用为GPIO初始化函数TIM3_GPIO_Config和定时器模式初始化函数TIM3_Mode_Config,代码如下:

void TIM3_Breathing_Init(void)

{

TIM3_GPIO_Config();

TIM3_Mode_Config();

}

STEP5 生成指数曲线PWM数据

要实现LED亮度随着指数曲线变化,我们需要使用占空比呈指数曲线变化地PWM信号,而这样地信号由定时器经过查表产生.这个表地数据存储在程序中地数组indexWave中,代码如下:

uint8_t indexWave[] = {1,1,2,2,3,4,6,8,10,14,19,25,33,44,59,80,

107,143,191,255,255,191,143,107,80,59,44,33,25,19,14,10,8,6,4,3,2,2,1,1};

把这个表中地数据画成图,如下图所示:

这个表有40个数字,从上图中可以看到这些数据呈指数上升再衰减,正好是呼吸灯地一个控制周期,数字地范围是0-255,即把LED地亮度分为0—255个等级.

假如我们把定时器地脉冲计数器TIMx_CNT上限设置为255,把这个表地数据一个一个地赋到定时器地比较寄存器TIMx_CCR中,那么在每个PWM周期中,当TIMx_CNT地计数值小于比较寄存器TIMx_CCR值时,就会在通道中输出低电平,点亮LED.而随着TIMx_CCR地值由LED亮度表

matlab 呼吸灯,STM32的呼吸灯.doc相关推荐

  1. android8 通知呼吸灯_手机呼吸灯那么好用!为什么要取消它?没有呼吸灯真的好吗?...

    说起手机的呼吸灯相信大家应该都是不会陌生吧,当我们手机内有消息的时候,呼吸灯就会亮起,甚至是有些手机的呼吸灯还可以因为不同的消息设置不同的提示颜色,随着智能手机的发展,相比过去单调的设计,有的厂商为其 ...

  2. 51单片机心形灯实现旋转呼吸灯流水编程

    51单片机心形灯--实现旋转呼吸灯流水编程 其他心形灯类型编码请看我的其他博文~ 心形灯效果图 如果是静态效果请刷新页面哦 心形灯原理图 编译软件:Keil uVision5 (如有需要可点此链接下载 ...

  3. PWM控制LED亮度(2-呼吸灯)-STM32电控学习笔记10

    PWM控制LED亮度(2-呼吸灯)-STM32电控学习笔记10 day10:2022/9/29 前面学了两三天的PWM了,PWM本身不难理解,至于为啥进度缓慢,还不是这时钟定时器分频值重装载啥的太难理 ...

  4. 智能灯控制页面用HTML编写,一种基于STM32的智能灯控制系统的制作方法

    本发明涉及电子系统控制领域,具体是一种基于STM32的智能灯控制系统. 背景技术: 随着我国教育业的发展,学校照明用电量急速增加,电能损失也呈现出增大的趋势.目前,国内外照明自动控制装置基本都采用被动 ...

  5. STM32—LED单灯闪烁之软件延时

    STM32-LED单灯闪烁之软件延时 任务描述 软件设计 Proteus仿真 任务描述 要求通过单片机PC0引脚控制LED0以1秒为周期闪烁 软件设计 使用STM32CubeIDE编写STM32单片机 ...

  6. 基于MATLAB平台实现红绿灯(交通灯)识别

    基于MATLAB平台实现红绿灯(交通灯)识别. 主要处理流程可以分为预处理(包括灰度化,锐化,滤波等),目标红绿灯从背景中提取分离,颜色识别三个步骤. 具体实现效果如图所示. ID:368067236 ...

  7. HC-05蓝牙模块与STM32控制led灯亮详解

    HC-05蓝牙模块与STM32控制led灯亮 一.HC-05蓝牙模块解析 1.简介 2.HC-05原理 3.HC-05实物图 二.使用AT指令进行配置 1.进入命令响应工作模式 2.配置串口 3.进行 ...

  8. STM32——继电器控制灯的开关

    STM32--继电器控制灯的开关 文章目录 STM32--继电器控制灯的开关 继电器控制灯的开关 项目概述: 环境概述: 项目的开始: 第一步: 第二步: 1.配置GPIOA时钟 2.GPIOA3的结 ...

  9. 基于STM32单片机流水灯仿真与程序设计

    STM32单片机流水灯仿真与程序设计 摘要 本次程序设计和仿真是基于Proteus和keil的环境对STM32F103系列单片机进行流水灯设计,通过配置STM32的GPIO工作模式,实现LED的点亮和 ...

最新文章

  1. 科学家利用脑机接口让患者正常发声
  2. [Step By Step]SAP HANA中使用Excel展示分析视图数据(带层次结构)
  3. ZOJ Monthly, January 2013
  4. 查询时要处理好各种异常情况
  5. sign python_python机器学习
  6. css3属性:美化表单、点击元素产生的背景与边框怎么去掉,滚动回弹效果
  7. JS 数据处理技巧及小算法汇总(转载)
  8. 我想说:工作没那么难找吧
  9. 织梦dedecms小说网站源码|带采集+搭建方式
  10. java去掉文本格式分割成字然段落_Java实现文本按照自然段落进行切分详解
  11. linux 内核挂起 ping,Linux内核安全详解 ping到死复活方法
  12. 论文分享|高精度面结构光三维测量方法研究
  13. 计算机中插入背景图片怎样操作,在word中怎么添加背景图片及文字背景
  14. Alarmmanager制作简单闹钟功能
  15. Webpack 安装
  16. Linux结构体变量报错,C语言中的结构体
  17. 服务器证书签发的ip地址选项,公网IP申请SSL证书 DV1-5分钟快速签发IP文件认证
  18. 函数的参数(形参与实参)的理解
  19. delphi7 如何加载控件
  20. python云计算主要是干嘛的_国外python云计算是干什么的

热门文章

  1. 分享几个快速加微信粉丝的方法
  2. 新科技计算机学校备课,基于互联网计算机技术的集体备课模式在中职院校中的应用研究...
  3. 遥感影像制作深度学习样本之多光谱处理
  4. DownloadManager下载管理
  5. GEE——本地矢量无法上传到GEE中?Error: Projection exception. Ensure the projection is specified correctly
  6. 当夫子邂逅舞池——读《花鼓歌》
  7. Ubuntu与ROS的Docker桌面系统与ROS在线练习课程(在线Linux虚拟机)
  8. iTOP-4412开发板10.1寸[金属框]屏幕硬件修改支持排线和HDMI
  9. BDD100K数据集简单解析以及格式转换成voc格式
  10. 计算机专业开学周记,周记开学第一周