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

发布者:电子设计艺术家最新更新时间:2015-04-30 来源: 51hei关键字:STC12C5201AD  单片机  PWM功能 手机看文章 扫描二维码
随时随地手机看文章
52xxAD系列单片机的内部集成了两路可编程计数阵列模块(PCA),可用于软件定时器、外部脉冲的捕捉、高速输出和脉宽调制输出(PWM)。
这里主要是对PWM输出功能进行介绍。
首先要清楚与PCA/PWM应用有关的特殊功能寄存器

 

符号
描述
地址
位地址及其符号
复位值
B7
B6
B5
B4
B3
B2
B1
B0
CCON
PCA control register
D8H
CF
CR
 
 
 
 
CCF1
CCF0
00xx,xx00
CMOD
PCA mode register
D9H
CIDL
 
 
 
CPS2
CPS1
CPS0
ECF
0xxx,0000
CCAPM0
PCA module 0 mode register
DAH
 
ECOM0
CAPP0
CAPN0
MAT0
TOG0
PWM0
ECCF0
X000,0000
CCAPM1
PCA module 1 mode register
DBH
 
ECOM1
CAPP1
CAPN1
MAT1
TOG1
PWM1
ECCF1
X000,0000
CL
PCA base time low
E9H
 
 
 
 
 
 
 
 
0000,0000
CH
PCA base time high
F9H
 
 
 
 
 
 
 
 
0000,0000
CCAP0L
PCA module_0 captureregister  low
EAH
 
 
 
 
 
 
 
 
0000,0000
CCAP0H
PCA module0 capture register high
FAH
 
 
 
 
 
 
 
 
 
CCAP1L
PCA module_1 capture register low
EBH
 
 
 
 
 
 
 
 
0000,0000
CCAP1H
PCA module_1 capture register high
FBH
 
 
 
 
 
 
 
 
0000,0000
PCA_PWM0
PCA PWM mode auxiliary register 0
F2H
 
 
 
 
 
 
EPC0H
EPC0L
Xxxx,xx00
PCA_PWM1
PCA PWM mode auxilia
F3H
 
 
 
 
 
 
EPC1H
EPC1L
Xxxx,xx00

 

1、 PCA工作模式寄存器CMOD
CIDL:空闲模式下是否停止PCA计数的控制位
      当CIDL=0时,空闲模式下PCA计数器继续工作
      当CIDL=1时,空闲模式下PCA计数器停止工作
CPS2CPS1CPS0:pca计数器脉冲源选择控制位。
0     0     0     0,系统时钟SYSCLK/12
0     0     1     1,系统时钟SYSCLK/2
0     1     0     2,定时器0的溢出脉冲。由于定时器0可以工作在1T模式,所以可以达到计一个时钟就溢出,从而达到最高频率CPU工作时时钟SYSCLOCK,通过改变定时器0的溢出率,可以实现可调频率的PWM输出。
0     1     1     3,ECI/P1.2(或P1.4)脚输入的外部时钟(最大速率=SYSCLK/2)
1     0     0     4,系统时钟 SYSCLK
1     0     1     5,系统时钟/4,sysclk/4
1     1     0     6, 系统时钟/6,
1     1     1     7, 系统时钟/8
2、 PCA控制寄存器CCON
CF:PCA计数器阵列溢出标志位。当PCA计数器溢出时,CF由硬件置位。如果CMOD寄存器的ECF位置位,则CF标志可用来产生中断。CF位可通过硬件或软件置位,但只可通过软件清零。
CR:PCA计数器阵列运行控制位,该位通过软件置位,用来启动计数器阵列计数,通过软件清零,用来关闭PCA计数器。
CCF1:pca模块1中断标志。当出现匹配或捕获时该位由硬件置位,必须通过软件清零
CCF0:PCA模块0中断标志。
3、 PCA比较/捕获寄存器CCAPM0和CCAPM1
ECOM0:允许比较器功能控制位。为1,允许
CAPP0:正捕获控制位。为1,允许
CAPN0:负捕获控制位。为1,允许
MAT0:匹配控制位。
      为1时,PCA计数值与模块的比较/捕获寄存器的值的匹配将置位CCON寄存器的中断标志位CCF0。
TOG0:翻转控制位。当tog0=1时,工作在PCA高速输出模式,PCA计数器的值与模块的比较/捕获寄存器的值的匹配将使CEX0脚翻转。(CCP0/PCA0/PWM0/P1.3)
PWM0:脉冲调节模式
       当PWM0=1时,允许CEX0脚用作脉宽调节输出(CCP0/PCA0/PWM0/P1.3)
ECCF0:时能CCF0中断。使能寄存器CCON的比较/捕获标志CCF0,用来产生中断。
4、 PCA的16位寄存器——低8位CL和高8位CH
用于保存PCA的装载值。
5、 PCA捕捉/比较寄存器——CCAPnL(低位字节)和CCAPnH(高位字节)
当PCA模块用于捕获或比较时,它们用于保存各个模块的16位捕捉计数值;当PCA模块用于PWM模式时,它们用来控制输出的占空比。其中,n=0、1,分别对应模块0和模块1.复位值均为00H,对应的地址分别为:
CCAP0_EAH CCAP0H_FAH:
CCAP1_EBHCCAP1H_FAH;
 
PCA模块的工作模式设定表如下:
ECOMn  CAPPn   CAPNn   MATn   TOGn    PWMn   ECCFn      模块功能
   0     0        0        0      0        0        0     无此操作
   1     0        0        0      0        1        0     8位PWM,无中断
   1     1        0        0      0        1        1     8位PWM输出,由低变高可产生中断
   1     0        1        0      0        1         1    8位PWM输出,由高变低可产生中断
   1     1        1        0      0        1         1     8位PWM输出,由低变高或者有高变低均可产生中断
   X     1        0        0      0        0         x     16位捕获模式,由CCPn/PCAn的上升沿触发
   X     0        1        0      0        0         x     16位捕获模式,由CCPn/PCAn的下降沿触发
   X     1        1        0      0        0         x     16位捕获模式,由CCPn/PCAn的跳变触发
   1     0        0        1      0        0         x     16位软件定时器
   1     0        0        1      1        0        x      16位高速输出
6、     PCA的16位计数器——低8位CL和高8位CH
用于保存PCA的装载值。
7、     PCA捕捉/比较寄存器CCAPnL(低位字节)和CCAPnH(高位字节)
当PCA 模块用于捕获或比较时,它们用于保存各个模块的16位捕捉计数值;当PCA模块用于PWM模式时,它们用来控制输出的占空比。其中,n=0,1分别对应模块0和模块1.复位值均为00H。它们对应的地址分别为:
CCAP0L_EAH   CCAP0H_FAH:模块0的捕捉/比较寄存器
CCAP1L_EBH   CCAP1H_FBH:模块1的捕捉/比较寄存器。
脉宽调节模式
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/2 SYSCLK/4 SYSCLK/6 SYSCLK/8 SYSCLK/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);
}
关键字:STC12C5201AD  单片机  PWM功能 引用地址:STC12C5201AD单片机的PWM功能的应用总结

上一篇:STC12C5201AD芯片AD应用总结
下一篇:C语言中的变量详解

推荐阅读最新更新时间:2024-03-16 14:00

基于PIC单片机的SPWM控制技术
引言 在UPS等电力电子设备中,控制方法是核心技术。早期的控制方法使得输出为矩形波,谐波含量较高,滤波困难。SPWM技术较好地克服了这些缺点。目前SPWM的产生方法很多,汇总如下。 1)利用分立元件,采用模拟、数字混和电路生成SPWM波。此方法电路复杂,实现困难且不易改进; 2)由SPWM专用芯片SA828系列与微处理器直接连接生成SPWM波,SA828是由规则采样法产生SPWM波的,相对谐波较大且无法实现闭环控制; 3)利用CPLD(复杂可编程逻辑器件)设计,实现数字式SPWM发生器; 4)基于单片机实现SPWM,此方法控制电路简单可靠,利用软件产生SPWM波,减轻了对硬件的要求,且成本低,
[单片机]
stm8s单片机程序编译报错
编译stm8s程序过程报如下错误: Compiling stm8s_stdperiph_driversrcstm8s_adc2.c... cxstm8 +mods0 +debug -pxp -no -pp -l -istm8s_stdperiph_driverinc -i C:Program Files (x86)COSMICCXSTM8Hstm8 -i C:Program Files (x86)STMicroelectronicsst_toolsetinclude -clDebug -coDebug stm8s_stdperiph_driversrcstm8s_adc2.c #error cpstm8 stm8s_stdp
[单片机]
ATmega 16 单片机的WDT定时器的相关寄存器(七)
1.WDTCR 看门狗定时器控制寄存器 WDTOE WDE WDP2 WDP1 WDP0 位 Res:保留位 ATmega16保留位,读操作返回值为零。 位 4 WDTOE:看门狗修改使能 清零WDE时必须置位WDTOE,否则不能禁止看门狗。一旦置位,硬件将在紧接的4个时钟周期之后将其清零。 位 3 WDE:使能看门狗 WDE为 1 时,看门狗使能,否则看门狗将被禁止。只有在WDTOE为 1 时WDE才能清零。以下为关闭看门狗的步骤: (1).在同一个指令内对WDTOE和WDE写 1 ,即使WDE已经为 1 (2).在紧接的4个时钟周期之内对WDE写 0 位 WDP2,
[单片机]
51单片机项目设计:基于51单片机时钟万年历
一、项目功能 1、可以显示当前时间、星期、日期 2、可以修改当前时间、星期、日期 3、可以获取环境的温度,并显示到LCD 4、可以设置闹钟,当时间到蜂鸣器鸣叫、按下按键后关闭鸣叫 二、材料选择 (一)主控选择:STC89C52RC STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 (二)显示屏选择:LCD1602 LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。它是由字符型液晶显示屏(LCD)、控制驱动主电路HD44780及其扩展驱动
[单片机]
51<font color='red'>单片机</font>项目设计:基于51<font color='red'>单片机</font>时钟万年历
基于AT89C52单片机模糊PID的电阻炉温度控制系统
电阻炉是热处理工业中常用的设备,具有大滞后、参数时变、非线性等特点。各个领域对电阻炉温度控制的精度、稳定性、可靠性要求越来越高。提高该类对象的控制品质具有广泛的应用价值。常规PID控制算法简单、易于实现,适用于可建立精确数学模型的确定性控制系统。而实际工业生产过程往往具有非线性和时变性,难以建立精确的数学模型,因此常规PID控制器不能达到理想的控制效果。模糊控制不需要被控对象的精确数学模型,而且控制灵活、鲁棒性强,但模糊控制器的积分作用较弱,导致系统的动态品质较差。将模糊控制和PID控制两者结合起来的复合型控制器,对复杂控制系统具有良好的控制效果。 文中在深入研究先进PID控制理论及其智能优化控制策略的基础上,以电阻炉为被
[单片机]
基于AT89C52<font color='red'>单片机</font>模糊PID的电阻炉温度控制系统
单片机中printf的使用
1. 如c语言同:printf( );在控制台就会输出 中的内容; 2. 通过串口输出:只需要在初始化串口后,直接使用printf( )即可通过串口输出 中的内容(参考keil的安装文件夹里有个 EXAMPLE 目录,里面 HELLO 的例子)。 主要是单片机C对标准C进行了一些扩充、删减和更改优化,因为keil里的单片机c把printf函数重定义到串口了,这也是单片机c语言和标准c语言的区别。
[单片机]
<font color='red'>单片机</font>中printf的使用
51单片机I/O口模拟串行通信实现方法
目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或 8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。 1.串行接口的基本通信方式 串行接口的有异步和同步两种基本通信方式。异步通信采用用异步传送格式,如图1 所示。数据发送和接收均将起始位和停止位作为开始和结束的标志。在异步通信中,起始位占用一位(
[单片机]
51<font color='red'>单片机</font>I/O口模拟串行通信实现方法
一种DSP与单片机实现高速通信的设计方案
1 引言 数字信号处理器( DSP )是一种适合于实现各种数字信号处理运算的微处理器,具有下列主要结构特点:(1)采用改进型哈佛(Harvard)结构,具有独立的程序总线和数据总线,可同时访问指令和数据空间,允许实际在程序存储器和数据存储器之间进行传输;(2)支持流水线处理,处理器对每条指令的操作分为取指、译码、执行等几个阶段,在某一时刻同时对若干条指令进行不同阶段的处理;(3)片内含有专门的硬件乘法器,使乘法可以在单周期内完成;(4)特殊的指令结构和寻址方式,满足数字信号处理FFT、卷积等运算要求;(5)快速的指令周期,能够在每秒钟内处理数以千万次乃至数亿次定点或浮点运算;(6)大多设置了单独的DMA总线及其控制器,可以在基本不
[嵌入式]
一种DSP与<font color='red'>单片机</font>实现高速通信的设计方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved