找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用51单片机做一个简易呼吸灯

  [复制链接]
跳转到指定楼层
楼主
ID:256956 发表于 2017-12-5 16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
利用占空比的方式来控制灯的变暗和变亮
占空比就是高电平和低电平的比例;
实现呼吸灯效果是利用人眼的分辨率只能看到25帧每秒,甚至还不够,
所以用单片机做呼吸灯是利用频率来控制呼吸灯的呼吸时间,用占空比来控制灯的亮度
代码如下
#include <reg52.h>
sbit LED1=P2^0;         //定义灯的位置
int PWM_Low,Clock=500;
void delay(unsigned int x) //延迟函数
{
   int i;
   for(i=0;i<x;i++);
}          
void main(void)
{
    while(1)
          {
            for(PWM_Low=Clock;PWM_Low>0;PWM_Low--) //逐渐变暗
             {
                   LED1=1;
                   delay(PWM_Low);
                   LED1=0;
                   delay(Clock-PWM_Low);
                 }
            for(PWM_Low=0;PWM_Low<Clock;PWM_Low++)        //逐渐变亮
                  {
                                LED1=1;
                                delay(PWM_Low);
                                LED1=0;
                                delay(Clock-PWM_Low);
                  }          
           }
}
如有错误,还望指正,新手来的

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:501910 发表于 2019-8-3 10:33 | 只看该作者
学习了
回复

使用道具 举报

板凳
ID:404263 发表于 2019-8-6 14:01 | 只看该作者
最好不要用for循环来写,这样的呼吸灯就真的只有呼吸灯了,可以用定时器来做
回复

使用道具 举报

地板
ID:575010 发表于 2019-8-6 17:17 | 只看该作者
学习了
回复

使用道具 举报

5#
ID:596939 发表于 2019-8-7 15:32 | 只看该作者
感谢分享
回复

使用道具 举报

6#
ID:13396 发表于 2019-11-5 17:28 | 只看该作者
学习了,谢谢。
回复

使用道具 举报

7#
ID:636872 发表于 2019-11-6 17:15 | 只看该作者
cokesu 发表于 2019-8-6 14:01
最好不要用for循环来写,这样的呼吸灯就真的只有呼吸灯了,可以用定时器来做

用定时器该怎么做呢?
回复

使用道具 举报

8#
ID:432265 发表于 2019-12-8 10:58 | 只看该作者
学习了,谢谢分享。
回复

使用道具 举报

9#
ID:432265 发表于 2019-12-8 10:58 | 只看该作者
学习了。
回复

使用道具 举报

10#
ID:659013 发表于 2019-12-8 18:47 | 只看该作者
太强了呀
回复

使用道具 举报

11#
ID:320525 发表于 2019-12-29 19:46 | 只看该作者
cokesu 发表于 2019-8-6 14:01
最好不要用for循环来写,这样的呼吸灯就真的只有呼吸灯了,可以用定时器来做

学习了
回复

使用道具 举报

12#
ID:649381 发表于 2020-1-11 12:45 | 只看该作者
学到了
回复

使用道具 举报

13#
ID:47286 发表于 2020-1-12 19:53 | 只看该作者
同"板凳"

用for做循环之间就干不了别的事了 作为单片机来说不合算的 小片子还好 要是个大片子就干这么点事太浪费资源 就按你说的25帧/秒 就是每帧占用40ms左右 这40ms能干多少事啊 如果只实现呼吸灯 还不如用555搭一个

还有这么写的呼吸灯是没有曲率变化的 严格说只能叫渐亮渐暗灯 人呼吸 渐亮和渐暗的变化过程不是线性的
回复

使用道具 举报

14#
ID:549732 发表于 2020-1-13 15:25 | 只看该作者
#include <reg52.h>
sbit LED1=P1^0;         //定义灯的位置
int PWM_Low,Clock=420;
void delay(unsigned int x) //延迟函数
{
   int i;
   for(i=0;i<x;i++);
}           
void main(void)
{
    while(1)
          {
            for(PWM_Low=Clock;PWM_Low>0;PWM_Low--) //逐渐变暗
             {
                   LED1=0;
                   delay(PWM_Low);
                   LED1=1;
                   delay(Clock-PWM_Low);
                 }
            for(PWM_Low=0;PWM_Low<Clock;PWM_Low++)        //逐渐变亮
                  {
                                LED1=0;
                                delay(PWM_Low);
                                LED1=1;
                                delay(Clock-PWM_Low);
                  }           
           }
}
回复

使用道具 举报

15#
ID:701254 发表于 2020-3-16 13:41 | 只看该作者
学习了。有创意。我找时间用定时器实现试试
回复

使用道具 举报

16#
ID:630491 发表于 2020-3-16 17:36 | 只看该作者
不错哦,原理图可以发出来了?
回复

使用道具 举报

17#
ID:744410 发表于 2020-6-2 17:38 来自手机 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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