找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4889|回复: 12
打印 上一主题 下一主题
收起左侧

关于单片机IO口模拟实现呼吸灯的疑问

[复制链接]
跳转到指定楼层
楼主
ID:258164 发表于 2018-12-18 11:34 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
如何利用一个定时器和IO口实现LED有呼吸的功能呢?因为我的单片机资源有限,没有硬件的PWM,所以想使用定时器来实现调节占空比,原理我是知道的,但是逻辑感觉还是没有理清楚。

我看网上很多都是用的延时或者多个定时器,如果我只有一个定时器该怎么实现呢?我的定时周期多少合适?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:258164 发表于 2018-12-18 14:55 | 显示全部楼层
沧浪 发表于 2018-12-18 13:56
如果用一个定时器的话你,你可以用这个定时器来做一个节拍啊,假设节拍是100us,你定时器就设置为100us,然 ...

呼吸灯一般要求是3s的周期,也就是说要在3s的时间里实现渐亮到渐灭再到渐亮的过程。我现在的定时器周期是10ms,那么我怎么利用变量来改变占空比呢,怎么和LED的高低电平配合起来
回复

使用道具 举报

板凳
ID:258164 发表于 2018-12-18 14:55 | 显示全部楼层
xuyaqi 发表于 2018-12-18 14:21
参考程序:
#include
void Delay1(int del)

你这个是延时的办法,对于我的程序来说效率太低了,如果要使用定时器该怎么做呢?
回复

使用道具 举报

地板
ID:258164 发表于 2018-12-18 20:32 | 显示全部楼层
xuyaqi 发表于 2018-12-18 16:50
设定好定时器中断时间,数中断次数求得延时时间。

这样还是不行啊,我的目标是最好在中断里实现呼吸灯的效果,如果是在主循环里的话,对我的程序效率来说太差了。
回复

使用道具 举报

5#
ID:258164 发表于 2018-12-18 20:34 | 显示全部楼层

谢谢拉,不过你给的这个程序看着有点乱啊,我看了还是没有太理解思路是什么
回复

使用道具 举报

6#
ID:258164 发表于 2018-12-20 17:55 | 显示全部楼层
Y_G_G 发表于 2018-12-19 22:46
楼上的程序太恐怖了
给你一个算法,自己去写代码
模拟PWM的频率设定为1KHZ,如果你要PWM的分辨率达到1%,那 ...

我其实 不需要呼吸灯的效果有多好,只要肉眼看到的效果是呼吸的就行。
另外如果用两个定时器的话,程序逻辑该是怎么样的呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表