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

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

3天内不再提示

pwm呼吸灯原理及程序分享

ss 来源:网络整理 2018-03-28 17:41 次阅读

PWM

PulseWidthModulation脉冲宽度调制,简称PWM。

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

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

pwm呼吸灯原理及程序分享

51单片机Timer

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

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

相关寄存器:

1.IE寄存器

pwm呼吸灯原理及程序分享

2. TCON寄存器

pwm呼吸灯原理及程序分享

3. TMOD寄存器

控制Timer0/1的工作方式

pwm呼吸灯原理及程序分享

pwm呼吸灯原理及程序分享

4. Timer0/1计数寄存器

TL0

TL1

TH0

TH1

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

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

运用PWM完成呼吸灯硬件电路

pwm呼吸灯原理及程序分享

程序设计:

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

    文章

    5186

    浏览量

    213868
  • 呼吸灯
    +关注

    关注

    10

    文章

    110

    浏览量

    42727
收藏 人收藏

    评论

    相关推荐

    PWM驱动LED实现呼吸效果

    C51 利用pwm 驱动LED 实现呼吸效果
    的头像 发表于 04-24 15:29 3828次阅读
    <b class='flag-5'>PWM</b>驱动LED实现<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>效果

    自己写的io口输出pwm呼吸程序,基于stc89c52RC

    源码和工程文件都给出来,够积分的下载,积分不够就自己辛苦复制一下。源码如下:[code]/*利用io口输出pwm模拟呼吸*//*T0作为产生pwm的时间基准,*//*T1作为
    发表于 08-29 10:09

    基于stm32的PWM呼吸工程分享

    (NVIC_PriorityGroup_2);//中断优先级分组分两组LED_Init();TIM3_CH1_PWM_Init(500,72-1); //频率是2kHzTIM_SetCompare1(TIM3,i);delay_ms(10); } 全部资料51hei下载地址: 基于stm32的
    发表于 07-02 07:51

    基于stm32的PWM呼吸工程分享

    (NVIC_PriorityGroup_2);//中断优先级分组分两组LED_Init();TIM3_CH1_PWM_Init(500,72-1); //频率是2kHzTIM_SetCompare1(TIM3,i);delay_ms(10); } 全部资料51hei下载地址: 基于stm32的
    发表于 07-06 07:37

    一文分享pwm呼吸原理及程序

    PulseWidthModulation脉冲宽度调制,简称PWMPWM(脉冲宽度调制)对模拟信号电平进行数字编码的方法,计算机只能输出0或5V的数字电压值而不能输出模拟电压,而我们如果想获得一个
    发表于 10-30 08:21

    关于PWM呼吸的几个问题,求解答

    ){flag = 1;}if(value == 0){flag = 0;}if(value > timer1){LED = 0;}else{LED = 1;}//}}这是我编写的PWM呼吸
    发表于 04-09 23:36

    STM32 PWM是如何去控制呼吸程序

    PWM的工作原理是什么?STM32 PWM是如何去控制呼吸程序呢?
    发表于 11-26 07:00

    基于stm32 f103的pwm呼吸程序代码分享

    基于stm32 f103的pwm呼吸程序代码分享
    发表于 12-14 07:52

    PWM实现呼吸的应用

    stm32实现PWM最简单方法前言一、PWM概念二、PWM应用输出比较功能框图三、PWM呼吸
    发表于 01-21 13:18

    使用单片机的定时器模拟PWM输出实现呼吸程序免费下载

    本文档的主要内容详细介绍的是使用单片机的定时器模拟PWM输出实现呼吸程序免费下载。
    发表于 09-06 17:27 20次下载
    使用单片机的定时器模拟<b class='flag-5'>PWM</b>输出实现<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的<b class='flag-5'>程序</b>免费下载

    STM32实现PWM呼吸程序合集免费下载

    本文档的主要内容详细介绍的是STM32实现PWM呼吸程序合集免费下载。
    发表于 03-19 08:00 16次下载
    STM32实现<b class='flag-5'>PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的<b class='flag-5'>程序</b>合集免费下载

    使用PWM控制LED实现呼吸的效果

    本文主要讲解使用PWM控制LED,实现呼吸的效果。
    的头像 发表于 02-08 17:50 1.4w次阅读
    使用<b class='flag-5'>PWM</b>控制LED实现<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的效果

    STM32_PWM呼吸

    全面屏发展,因此很多手机取消了呼吸这一功能,取而代之的是息屏显示)2、什么是PWM?PWM:Pulse Width Modulation,脉冲宽度调制,是利用微处理器的数字输出来对模
    发表于 11-26 12:21 20次下载
    STM32_<b class='flag-5'>PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>

    STM32 使用PWM实现呼吸

    STM32 PWM实现呼吸使用STM32F103ZET6 定时器4 CH2通道产生PWM波,在GPIOD,GPIO_PIN13引脚LED1产生呼吸
    发表于 12-24 19:41 55次下载
    STM32 使用<b class='flag-5'>PWM</b>实现<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>

    通过STM32实现PWM呼吸的教程

    顾名思义,就是一个的亮度的变化,由亮变暗,从暗变亮,有一个渐变,规律的变化,像是人的呼吸,是呼吸,所以叫
    的头像 发表于 07-26 15:20 1.3w次阅读
    通过STM32实现<b class='flag-5'>PWM</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的教程