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

电子说

1.2w人已加入

描述

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

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

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

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

12

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


TL14. Timer0/1计数寄存器

TL0

TH0

TH1

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

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

三、运用PWM完成呼吸灯

1. 硬件电路

PWM

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);

}

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分