STC12C5A60S2单片机输出pwm的方法

        所谓的pwm输出就是让单片机在某个管脚上按照时间输出特定频率和占空比的矩形方波。这里面有两个参数,一是频率,二是占空比。两者互不干涉。以STC12C5A60S2为例子,本51型单片机可以有两路pwm输出。以其中的一路为例说明;

首先说频率。单片机内部CL计数器,用来计数输入的脉冲信号。CH无作用。从00开始,到FF结束。单调递增,不受干扰。输入的脉冲信号源有8种。三个比特位,用来选择脉冲信号来自哪里。这三位是CPS2,CPS1,CPS0。这三位位于寄存器CMOD上的3,2,1位。

最具有实用性的是010,定时器0的溢出脉冲。

设置定时器0。让定时器0按照需要的频率的256倍频率溢出。例如需要1000赫兹的频率,让计数器溢出频率为256K。

下面说占空比:

计数器每来一个脉冲,计数器CL的值增一。同时与另外的寄存器CCAP0L比较。一旦相等,就立即输出高电平。

若CCAP0L的值为0,则计数器从0开始就让输出脚输出高电平,此时的占空比为100%。如果CCAP0L的值是0xFF。此时的占空比为0。下面是pwm初始化函数

 void PCA_Init(void)
{
    CCON = 0;                       //PCA初始化
    CMOD = 0x04;                 //空闲时不计数,不产生中断,时钟源为定时器0的溢出
    CL = 0x00;                       //PCA低8位清零
    CH = 0x00;                      //PCA高8位清零
    CCAPM0 = 0x42;            //PWM模式,无中断
    CCAP0H = 0x80;            //PWM0占空比(调节此处值调节PWM占空比)
    CCAP0L = 0x80;             //PWM0占空比(调节此处值调节PWM占空比)
    CR = 1;                           //启动PCA计数器
}

CL从FF溢出到00的时候 CCAP0H的值自动装载到CCAP0L可以实现无干扰的调整占空比。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值