注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

始めの一歩

不是世界变得无聊了,而是你变成了无聊的人……

 
 
 

日志

 
 

【C51】源码 1 -- LED 脉冲宽度调制(PWM)调光  

2012-03-03 17:09:19|  分类: Fateの51单片机の |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  最近迷上了单片机,借着大学的一点儿基础,开始自学 C51 单片机编程,跟着教程看完了发光二极管 LED 相关的编程,编写以下 LED PWM 调光程序作为总结。

  先说一下 PWM 调光,PWM 就是“脉冲宽度调制”,就是在一个固定周期内,改变高低电平的比例,使 LED 呈现不同的明暗程度。

  博主编了一个比较简单的:在 CYCLE 个脉冲的周期内,低电平脉冲 PWM_LOW 的个数从 0 递增到 CYCLE,高电平脉冲的个数当然就会递减,这样 LED 就会呈现出“渐亮”的效果,“渐暗”与此同理。

 

附上源码:(初出茅庐,难免有写的不好的地方,仅作备份之用,欢迎指点,喷子退散……)

#include <reg52.h>

#define CYCLE 300       // 定义一个周期有 300 个脉冲

void Delay(unsigned int t);

sbit LED = P1^0;

void main(void)
{
    unsigned int PWM_LOW;       // 低电平的个数
    unsigned int PWM_HIGH;      // 高电平的个数

    while (1) {

        for (PWM_LOW=0; PWM_LOW<CYCLE; PWM_LOW++) {         //渐亮
            LED = 0;
            Delay(PWM_LOW);
            LED = 1;
            Delay(CYCLE-PWM_LOW);
        }

        for (PWM_HIGH=0; PWM_HIGH<CYCLE; PWM_HIGH++) {      //渐灭
            LED = 1;
            Delay(PWM_HIGH);
            LED = 0;
            Delay(CYCLE-PWM_HIGH);
        }
    }
}

void Delay(unsigned int t)
{
    while (t--);
}

  评论这张
 
阅读(215)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018