51单片机:pwm台灯(脉宽调制)

首页 / 随随便便写 / 正文

前言

今天学习了脉宽调制,主要的原理就是控制高电平和低电平的触发时间。
应用到led灯上面,脉冲的高电平的时间决定了灯亮的时间,脉冲低电平的时间决定了灯灭的时间,所以要控制灯的亮度的变化只需要控制脉冲的高电平和低电平持续的时间即可。
例如我想让灯越来越亮,首先给得先让灯灭,那么根据上面所说的高电平和低电平之间的关系,我们主要让高电平的持续时间为零,再给个低电平的值,就能让灯处于灭的状态;灯逐渐变亮就是让高电平的值++,让低电平的值--。
灯逐渐熄灭就反过来。
废话不多说了直接上正文

正文

先放程序

#include<reg51.h>
#define i unsigned int
#define on 0
#define off 1
#define time 1000

sbit k1=P1^1;
sbit k2=P1^7;
sbit led=P2^0;

void delay(i d)
{
    i c;
    for(c=0;c<d;c++);
}

void main()
{
    i a,b;
    b=time;
    while(1)
    {
        led=on;
        // 灯亮
        delay(a);
        // 灯亮的时间
        led=off;
        // 灯灭
        delay(b);
    // 灯灭的时间
        if(k1==0)
        {
            delay(100);
            if(k1==0)
            {
                a++;
                // 亮的时间增加
                b--;
                // 灭的时间减少
                if(b==0)
                {
                    b=time;
                    a=0;
                }
                 // 完全熄灭之后让灯重新亮
            }
        }
        if(k2==0)
        {
            delay(100);
            if(k2==0)
            {
                b++;
                a--;
                if(a==0)
                {
                    a=time;
                    b=0;
                }
            }
        }
    }
}

仿真视频

一闪一闪的是因为仿真的原因!
我当时还以为我错了,特地问了老师
仿真.png

打赏
评论区
头像
  • 高兴
  • 小怒
  • 脸红
  • 内伤
  • 装大款
  • 赞一个
  • 害羞
  • 汗
  • 吐血倒地
  • 深思
  • 不高兴
  • 无语
  • 亲亲
  • 口水
  • 尴尬
  • 中指
  • 想一想
  • 哭泣
  • 便便
  • 献花
  • 皱眉
  • 傻笑
  • 狂汗
  • 吐
  • 喷水
  • 看不见
  • 鼓掌
  • 阴暗
  • 长草
  • 献黄瓜
  • 邪恶
  • 期待
  • 得意
  • 吐舌
  • 喷血
  • 无所谓
  • 观察
  • 暗地观察
  • 肿包
  • 中枪
  • 大囧
  • 呲牙
  • 抠鼻
  • 不说话
  • 咽气
  • 欢呼
  • 锁眉
  • 蜡烛
  • 坐等
  • 击掌
  • 惊喜
  • 喜极而泣
  • 抽烟
  • 不出所料
  • 愤怒
  • 无奈
  • 黑线
  • 投降
  • 看热闹
  • 扇耳光
  • 小眼睛
  • 中刀
  • 呵呵
  • 哈哈
  • 吐舌
  • 太开心
  • 笑眼
  • 花心
  • 小乖
  • 乖
  • 捂嘴笑
  • 滑稽
  • 你懂的
  • 不高兴
  • 怒
  • 汗
  • 黑线
  • 泪
  • 真棒
  • 喷
  • 惊哭
  • 阴险
  • 鄙视
  • 酷
  • 啊
  • 狂汗
  • what
  • 疑问
  • 酸爽
  • 呀咩爹
  • 委屈
  • 惊讶
  • 睡觉
  • 笑尿
  • 挖鼻
  • 吐
  • 犀利
  • 小红脸
  • 懒得理
  • 勉强
  • 爱心
  • 心碎
  • 玫瑰
  • 礼物
  • 彩虹
  • 太阳
  • 星星月亮
  • 钱币
  • 茶杯
  • 蛋糕
  • 大拇指
  • 胜利
  • haha
  • OK
  • 沙发
  • 手纸
  • 香蕉
  • 便便
  • 药丸
  • 红领巾
  • 蜡烛
  • 音乐
  • 灯泡
  • 开心
  • 钱
  • 咦
  • 呼
  • 冷
  • 生气
  • 弱
  • 阿鲁
  • 泡泡
    头像
    ygcxjlfnfc
    2025年3月2日 21:50
    回复

    建议增加具体方法论,避免停留口号层面。

    头像
    山河无恙
    2022年04月12日 19:54
    回复

    好棒好棒!!!

    头像
    Parrot
    2021年11月16日 01:36
    回复

    好厉害!!!

      头像
      Sine07
      2023年10月13日 19:58
      回复

      代码放到keil里导出hex到proteus里灯还是灭的啊

        头像
        观后无感
        2023年10月13日 20:05
        回复

        你可以试着换个led灯,或者检查端口和led的正负极有没有颠倒

    头像
    测试
    2021年11月04日 14:54
    回复

    看看

    头像
    测试
    2021年11月04日 14:45
    回复

    看看

    头像
    观后无感
    2021年11月04日 13:57
    回复

    来看看吧

      头像
      观后无感
      2021年11月04日 14:13
      回复

      kankan

        头像
        观后无感
        2021年11月04日 14:15
        回复

        kankna吧

          头像
          观后无感
          2021年11月04日 14:17
          回复

          看看吧

            头像
            观后无感
            2021年11月04日 14:21
            回复

            看看就看看

              头像
              观后无感
              2021年11月04日 14:35
              回复

              knaknakna

              头像
              观后无感
              2021年11月04日 14:23
              回复

              234253

                头像
                观后无感
                2021年11月04日 14:27
                回复

                看看那

                  头像
                  观后无感
                  2021年11月04日 14:35
                  回复

                  7856769

                  头像
                  观后无感
                  2021年11月04日 14:33
                  回复

                  43255476