0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

51单片机的Timer,运用PWM完成呼吸灯

0BFC_eet_china 来源:未知 作者:李倩 2018-05-02 09:14 次阅读

Pulse Width Modulation脉冲宽度调制,简称PWM。

PWM(脉冲宽度调制)对模拟信号电平进行数字编码的方法,计算机只能输出0或5V的数字电压值而不能输出模拟电压,而我们如果想获得一个模拟电压值,则需通过使用高分辨率计数器,改变方波的占空比来对一个模拟信号的电平进行编码。

仍输出数字信号,因为满幅值的直流供电只有5V(1)和0V(0)两种。电压是以一种连接(1)或断开(0)的重复脉冲序列被夹到模拟负载上去的,连接即是直流供电输出,断开即是直流供电断开。通过对连接和断开时间的控制,只要带宽足够,可以输出任意不大于最大电压值的模拟电压。

输出电压=(接通时间/脉冲时间)*最大电压值

12

二、51单片机Timer

作者用的单片机是STC89C52,其内部有3个16位Timer,分别为T/C0,T/C1,T/C2,通过配置相关寄存器即可实现Timer的功能控制。

控制PWM需要用到定时器来生成不同占空比的波形,采用定时器中断的方式。

相关寄存器:

1.IE寄存器

2. TCON寄存器

3. TMOD寄存器

控制Timer0/1的工作方式


TL14. Timer0/1计数寄存器

TL0

TH0

TH1

当定时开启后,TL0(TL1)自动跟随机器周期加一。当TL0(TL1)满了后,自动清零同时向TH0(TH1)进一位,不需要手动操作.

而当TL0(TL1)和TH0(TH1)都满了以后,此时如果定时中断和总中断都已经打开,那么就会发生溢出中断,同时这两个寄存器清零

三、运用PWM完成呼吸灯

1. 硬件电路

2. 软件驱动

unsigned char PWM_COUNT; //计数

unsigned int HUXI_COUNT; //占空比更新时间

unsigned char PWM_VLAUE; //占空比比对值

bit direc_flag; //占空比更新方向

void timer0_init()

{

TMOD=0x02; //模式设置,00010000,定时器0,工作于模式2(M1=1,M0=0)

TH0=0x47; //定时器溢出值设置,每隔200us发起一次中断。

TL0=0X47;

TR0=1; //定时器0开始计时

ET0=1; //开定时器0中断

EA=1; //开总中断

PWM_COUNT =0;

}

void time0() interrupt 1

{

PWM_COUNT++;

HUXI_COUNT++;

if(PWM_COUNT == PWM_VLAUE) //判断是否到了点亮LED的时候

LED = 1; //点亮LED

if(PWM_COUNT == 10) //当前周期结束

{

LED = 0; //熄灭LED

PWM_COUNT = 0; //重新计时

}

if((HUXI_COUNT == 600) && (direc_flag == 0))

{ //占空比增加10%

HUXI_COUNT = 0;

PWM_VLAUE++;

if(PWM_VLAUE == 9) //占空比更改方向

direc_flag = 1;

}

if((HUXI_COUNT == 600) && (direc_flag == 1))

{ //占空比减少10%

HUXI_COUNT = 0;

PWM_VLAUE--;

if(PWM_VLAUE == 1) //占空比更改方向

direc_flag = 0;

}

}

void main()

{

HUXI_COUNT = 0;

PWM_COUNT = 0;

PWM_VLAUE = 5;

direc_flag = 0;

LED = 1; //默认LED熄灭

timer0_init(); //定时器0初始化

while(1);

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5140

    浏览量

    213365
  • 51单片机
    +关注

    关注

    273

    文章

    5697

    浏览量

    123142

原文标题:51单片机PWM的控制(呼吸灯)

文章出处:【微信号:eet-china,微信公众号:电子工程专辑】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    51单片机呼吸程序设计

    51单片机呼吸程序设计是基于单片机的原理与接口设计,采用单片机I/O口,加以C语言编程实现LE
    发表于 07-14 07:54

    基于51单片机呼吸怎样设计

    课程设计报告书题目:基于51单片机呼吸设计信息工程学院课程设计任务书学 号1学生姓名专业(班级)设计题目基于51
    发表于 07-15 08:01

    怎么样去设计基于单片机PWM呼吸

    51单片机(呼吸)C语言版基于单片机PWM呼吸
    发表于 07-15 06:02

    51单片机如何利用PWM定时器实现呼吸

    51单片机如何利用PWM定时器实现呼吸
    发表于 10-15 09:24

    基于51单片机的七彩呼吸设计资料分享

    ”。(4)按键3按下时,恢复起始亮法。1 先做一个呼吸由易到难,先做一个呼吸呼吸是让小
    发表于 11-19 07:11

    51单片机呼吸的实现源程序

    51单片机呼吸的实现,源程序,hex文件都有,用到的led是共阴极的
    发表于 12-10 16:35 169次下载

    使用51单片机做一个简易呼吸的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机做一个简易呼吸的程序免费下载。
    发表于 04-01 08:00 1次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>做一个简易<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的程序免费下载

    使用51单片机实现的呼吸工程文件免费下载

    本文档的主要内容详细介绍的是使用51单片机实现的呼吸工程文件免费下载。
    发表于 09-03 08:00 13次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>实现的<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>工程文件免费下载

    单片机(通过PWM调制模拟呼吸)源代码

    //功能:通过PWM调制模拟呼吸//名称:呼吸#include //调用含有51
    发表于 11-10 19:35 8次下载
    <b class='flag-5'>单片机</b>(通过<b class='flag-5'>PWM</b>调制模拟<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>)源代码

    51单片机 呼吸 七彩呼吸

    呼吸”。(4) 按键3按下时,恢复起始亮法。1 先做一个呼吸由易到难,先做一个呼吸呼吸
    发表于 11-12 11:51 59次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b> <b class='flag-5'>呼吸</b><b class='flag-5'>灯</b> 七彩<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>

    51单片机基于定时器的精准呼吸

    51单片机基于定时器的精准呼吸设计目的:实现LED小从最暗到最亮再到最暗的循环显示最暗——最亮——最暗整个周期为2.88秒(符合
    发表于 11-21 09:51 50次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>基于定时器的精准<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>

    基于51单片机呼吸程序编写

    利用51单片机编写的呼吸小程序,实验程序内容截图分享~
    发表于 11-23 16:36 33次下载
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b>的<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>程序编写

    STC89C52_51单片机_例程3_PWM_呼吸

    STC89C52_51单片机_例程3_PWM_呼吸_代码链接0000000000000000000000
    发表于 11-23 17:21 15次下载
    STC89C52_<b class='flag-5'>51</b><b class='flag-5'>单片机</b>_例程3_<b class='flag-5'>PWM</b>_<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>

    单片机呼吸的实现(可移植性强)

    1.增强程序的可移植性通过硬件PWM的方式实现呼吸是十分方便的,但这种方式要求单片机带有硬件PWM外设,且不同
    发表于 12-31 18:50 7次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的实现(可移植性强)

    51单片机呼吸频率怎么调节

    51单片机呼吸频率的调节方法可以通过改变PWM(脉冲宽度调制)的工作周期和占空比来实现。在下面的文章中,我将详细介绍如何使用
    的头像 发表于 12-19 10:39 2324次阅读