通过单片机定时器产生PWM波

PWM(脉宽调制)在很多场合都用得上,例如LED亮度控制,开关电源输出电圧控制等。 c~dX8+  
这里采用简单的定时器实现PWM波输出,通过更改定时器定时参数,控制IO口输出 ;H2O<>+s  
波形高低电平持续时间,实现PWM波。 QnVVu2xWtA  
Q=d1Wz �  
代码如下: 01cnC/DjV  
qv� n;i~  
#include<reg52.h> +ukvl~tx0y  
*>$t4d  
#define T0_INTERRUPT 1  //T0中断向量号 (K%9_MF:%  
#define PWMH_L 0x9C u/-`8`?  
#define PWMH_H 0xFF   //PWM低电平时间0.1ms �S {BEFk~  
G`6]j^1^  
#define PWML_L 0xCE & &$=@NE  
#define PWML_H 0xFF    //PWM高电平时间0.05ms KxbO705u  
g1*.0%*  
sbit LED1 = P1^0;   //常亮LED,作为对比,仿真看不出效果 TV?:nTQc  
sbit LED2 = P1^1;    //PWM驱动LED &K<|I, s  
ET |J!RE  
>P6{#/&v  
^2�#gMh"J  
typedef unsigned char uchar; LK(Geg  
typedef unsigned int uint; I9h`+,abI@  
pZ;:6?*  
void Init_T0(); oe*NIQ]  
B_%&@EEa=  
void main() <dvJAyVU  
{ o+(!.  
    LED1 = 0;      //点亮LED1 '0c3p]3A  
    LED2 = 1;      //熄灭LED2 Fj#{$N:w  
    Init_T0();    //初始化定时器0 u?mO+p,g  
    while(1) ?-NlEjvK*  
    { juh�{  
        PCON |= 0x01; //单片机进入休眠模式,节省功耗 ~oa3@  
    } IB[&J  
} 'tZ li1p  
Uif0p 0  
void Init_T0() i{TSZ-m�  
{ x@8~?R}>  
    TMOD &= 0xF0; FN]lLc+  
    TMOD |= 0x01;  //16位定时器模式 k{>^qk]-H  
     {%5iK �  
    TH0 = PWML_H; d<r'DF}h-  
    TL0 = PWML_L; f!SI" L  
     axaTSg`?  
    EA = 1;       //开全局中断 AU%mZH  
    ET0 = 1;      //允许T0中断 Wg ~e~mA  
    TR0 = 1;      //启动定时器 ?>ey; m  
} I7 RXR  
{o}?x@~6j  
void T0_Interrupt() interrupt T0_INTERRUPT :T^/b9x.  
{ V%]=zmm  
    TF0 = 0; ErvaT%Rb  
    if(LED2 == 1) ^cI$^|T  
    { %9vpB@z  
        LED2 = 0;        //设置低电平持续时间,LED2亮 wdeZ1  
        TH0 = PWMH_H; iTB*qh~  
        TL0 = PWMH_L; Hu:vH}v(>`  
    } Qd+* Yv*r  
    else AR0!X=�m^o  
    { N``KRI{+9  
        LED2 = 1;        //设置高电平持续时间,LED2灭         2<h~Wb/  
        TH0 = PWML_H; QA} vc g  
        TL0 = PWML_L; ~0ndeV4  
    } 7_4�]o  
} Il:.4^h@a 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岛上码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值