Pole.25°——51呼吸灯之定时器实现——2020-8-21

前言

初入嵌入式,相信大家就是从点亮一个LED灯开始的吧。成功点亮后,我们接下来干的就是让LED灯闪烁起来,当LED闪烁起来后,我们已经不满足于此,想追求更难一点的,让灯呼吸起来!

一、呼吸灯原理

呼吸灯指灯光在一个连续的正弦电压控制之下完成由亮到暗再由暗到亮的逐渐变化,从肉眼观察来看像是灯在呼吸。此次我们没有选用单片机的PWM功能改变占空比的方法实现,而是用定时器模拟PWM输出来实现呼吸灯的。
定时器实现要点:
1.呼吸灯周期要确定好,一般选择 T=10ms(100Hz),即10ms改变一次占空比,效果比较不错。(选用 T>20ms 以上会出现闪烁情况)( 18ms~10ms 之间都可以)
2.定时器采用中断方式,故中断时间不能太短,需确定好进入中断的时间。如若中断时间过短,可能中断未执完,就再次进入下一次中断了!!!(因为中断时间越短,你单位周期内就可以改变更多的占空比:例如200us进一次中断,T = 10ms ,你每进一次中断改变一次占空比,最多可以改变50次,所以呼吸灯PWM只有五十个等级。然而呼吸灯要想效果好,至少要有100个等级!)
3.呼吸灯两个重要变量:呼吸方向、呼吸步长;前者实现由 亮到暗 再从 暗到亮 方向的改变。后者改变的是呼吸的快慢。

二、实现代码

1.单片机介绍

如下:

	1.采用的851内核单片机,采用内部震荡8MHz。
	2.定时器采用的是8位计数器,其频率最后分频为1MHz(1us)。
	3.采取定时器中断方式,由于是八位计数器,即一次最多定时256us。
	4.LED采用高电平点亮

2.代码

代码如下(示例):

typedef s
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值