微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STC12C5201AD单片机的PWM功能的应用总结

STC12C5201AD单片机的PWM功能的应用总结

时间:12-01 来源:互联网 点击:

宽调节模式

Plus width modulation 是一种使用程序来控制波形占空比、周期、相位波形的技术,在三相电机驱动,D/A转换等场合有广泛的应用。

STC12C5201AD系列的PCA模块可以通过程序设定,使其工作于8位PWM模式。

由于所有的模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕捉寄存器EPCnL,CCAPnL有关。当寄存器CL的值小于EPCnL,CCAPnL时,输出为低;当寄存器CL的值大于等于EPCnL,CCAPnL的值时,输出为高。当CL得值由FF变为00溢出时,EPCnH,CCAPnH的内容装载到EPCnL,CCAPnL中,这样就实现无干扰的更新PWM 。要使用PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。

由于PWM是8位的,故PWM的频率=PCA时钟输入源频率/256

PCA时钟输入源可以从以下的几种进行选择:SYSCLK SYSCLY/2SYSCLK/4SYSCLK/6 SYSCLK/8SYSCLK/12定时器0的溢出,ECI/P3.4的输入。

如果要实现可调频率的PWM 输出,可选择定时器0的溢出率或则ECI脚的输入作为PCA/PWM的时钟输入源

当EPCnL=0及CCAPnL-00H时,PWM固定输出高

当EPCnL=1及CCAPnL=FFH时,PWM固定输出低

当某个I/O口作为PWM使用时,改口的状态

PWM之前口的状态 PWM输出时口的状态

弱上拉/准双向强推挽输出/强上拉输出,要加输出限流电阻1K-10K

强推挽输出/强上拉输出强推挽输出/强上拉输出,要加输出限流电阻1K-10K

仅为输入/高阻 PWM无效

开漏开漏

下面便是STC手册中的一个C语言例子

#include

#include “intrins.h”

#define FOSC 12000000L

Typedef unsigned int WORD;

Typedef unsigned char BYTE;

sfr CCON=0xd8;//PCA control register

sbit CCF0=CCON^0;//PCA module_0 interrupt flag

sbit CCF1=CCON^1;//pca module_1 interrupt flag

sbit CR=CCON^6;//pca time run control bit

sbit CF=CCON^7;//PCA timer overflow flag

sfr CMOD=0xd9;//pca mode register

sfr CL=0xe9;//PCA base time low

sfr CH=0xf9;//PCA base time high

sfr CCAPM0=0XDA;//PCA module_0 mode register

sfr CCAP0L=0XEA;//PCA module_0 capture register low

sfr CCAP0H=0XFA;//PCA module_0 capture register high

sfr CCAPM1=0XDB;//PCA module_1 mode register

sfr CCAP1L=0xeb;//PCA module_1 capture register low

sfr CCAP1H=0XFB,//PCA module_1 capture register high

sfr PCAPWM0=0XF2;

sfr PCAPWM1=0XF3;

void main()

{

CCON=0;//initial PCA control register

//PCA timer stop running

//clear CF flag

//clear all module interrupt flag

CL=0;//reset PCA base timer

CH=0;

CMOD=0X02;//set PCA time clock source as fosc/2

//disable PCA timer overflow interrupt

CCAP0H=CCAP0L=0X80;//PWM0 port output 50% duty cycle sequare wave

CCAPM0=0X42;//PCA module_0 work in 8_bit PWM mode

// and no PCA interrupt

CCAP1H=CCAP1L=0XFF;//pwm1 port output 0% duty cycle square wave

PCAPWM1=0X03;//

CCAPM1=0X42;//PCA module_1 work in 8_bit PWM mode and no PCA interrupt

CR=1;//PCA timer start run

While(1);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top