基于stm32的呼吸灯

基于stm32的呼吸灯

ID:844444

大小:583.02 KB

页数:16页

时间:2017-09-19

基于stm32的呼吸灯_第1页
基于stm32的呼吸灯_第2页
基于stm32的呼吸灯_第3页
基于stm32的呼吸灯_第4页
基于stm32的呼吸灯_第5页
资源描述:

《基于stm32的呼吸灯》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、湖北师范学院电工电子实验教学省级示范中心电子版实验报告STM32课程设计呼吸灯仿真与实践2012112020335乔智慧电子信息科学与技术物理与电子科学学院2015年6月03日电工电子中心2015年6月绘制第16页,共16页湖北师范学院电工电子实验教学省级示范中心电子版实验报告第16页,共16页湖北师范学院电工电子实验教学省级示范中心电子版实验报告STM32呼吸灯设计一.任务解析呼吸灯,指灯光设备的亮度随着时间由暗到亮逐渐增强,再由亮到暗逐渐衰减,很有节奏感地一起一伏,就像是在呼吸一样。本设计要求通过STM32,实现呼吸周期为

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

3、常见的数学函数来表示亮度随着实践逐渐变强再衰弱,把函数值赋值到数组中,用调制的方法,每个循环给闪烁的熄灭时间加一,灯就会慢慢变暗,在设置熄灭时间加到一定程度就开始减一,就会渐渐变亮了,如此循环。第16页,共16页湖北师范学院电工电子实验教学省级示范中心电子版实验报告方案二:把函数值赋值到数组中,对数组中的每一个值进行重复而快速的扫描,当遍历完PWM表中的元素时,再重头开始遍历PWM表。即以一定的时间长度为周期,LED灯亮的平均时间越长,亮度就越高,反之越暗。利用STM32定时器的PWM输出功能,实现呼吸灯。经分析比较与初步测试

4、,方案二更能很好地实现呼吸灯效果,因此选择方案二。三.方案实施STEP1生成表示亮度的数学函数亮度随着时间逐渐变强再衰减,可以用两种常见的数学函数表示,分别是半个周期的正弦函数与指数上升曲线基期对称得到的下降曲线。如图示:正点原子STM32开发板上的LED灯是低电平点亮因此,比较上述两个函数图像我们可以发现,下凹函数曲线灯光处于暗的状态更长,所以指数函数的曲线更符合我们呼吸灯的亮度变化要求。STEP2配置工程环境在实验中我们用到了GPIO,RCC,TIM外设,还使用了中断,所以我们先要把以下库文件添加到工程:stm32f10x

5、_gpio.c,stm32f10x_rcc.c,stm32f第16页,共16页湖北师范学院电工电子实验教学省级示范中心电子版实验报告10x_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"STEP3main文件本工程的main函

6、数十分简单,仅仅调用了一个初始化呼吸灯的函数TIM3_Breathing_Init(),代码如下:intmain(void){TIM3_Breathing_Init();while(1);}STEP4配置定时器输出PWM初始化呼吸灯的函数TIM3_Breathing_Init按步骤调用为GPIO初始化函数TIM3_GPIO_Config和定时器模式初始化函数TIM3_Mode_Config,代码如下:voidTIM3_Breathing_Init(void){TIM3_GPIO_Config();TIM3_Mode_Confi

7、g();}第16页,共16页湖北师范学院电工电子实验教学省级示范中心电子版实验报告STEP5生成指数曲线PWM数据要实现LED亮度随着指数曲线变化,我们需要使用占空比呈指数曲线变化的PWM信号,而这样的信号由定时器经过查表产生。这个表的数据存储在程序中的数组indexWave中,代码如下:uint8_tindexWave[]={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

8、,3,2,2,1,1};把这个表中的数据画成图,如下图所示:这个表有40个数字,从上图中可以看到这些数据呈指数上升再衰减,正好是呼吸灯的一个控制周期,数字的范围是0-255,即把LED的亮度分为0—255个等级。第16页,共16页湖北师范学院电工电子实验教学省级示范中心电子版

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。