PCA是一个模块,是一个硬件结构,具体的如下图所示
16位PCA定时器/计数器相当于定时器0/1。每经过一个时钟周期会自动加1,时钟周期来源与下图几部分:
一个时钟周期可能为(SYSclk/1,SYSclk/2...),最后一个外部输入指的是给他外接的晶振源。
模块0/1是十六位的捕获/比较模块。这个模块的工作方式有四种: 1、上升/下降沿捕获 2、软件定时器 3、高速脉冲输出 4、克调制脉冲输出
至于要在哪一个模式下工作,可以通过配置寄存器来进行完成
在手册中有一个配置表格,我们按自己的要求来进行选择即可。例如我们选择 8位PWM,无中断模式
这是最简单的模式,去掉那些烦人的中断,对了虽然PCA模块可以配置成不同的模式,但是无论在什么模式下,所触发的任何中断,都只有一个中断入口。代号为7。
当将PCA模块配置成上述模式之后,再经过一些配置后,会出现在相应的引脚发出相应的PWM波形
下来以手册中例程来对PWM的生成过程进行一个分析。
CMOD = 0x02 //设置PCA的时钟源为SYSclk/2,并且禁止PCA定时器的溢出中断
CCAP0H=CCAP0L=0x80; //设置占空比为50%
CCAPM0 = 0X42; //设置PCA的工作模式为8位PWM并且不允许任何中断
为什么CCAP0H=CCAP0L=0X80 PWM的占空就为50%呢?下来看这幅图
CL是PCA模块中的定时器的低八位寄存器,他的变化范围为0~255,CCAP0L是PCA模块0的数据寄存器,他的值的取值范围为0~255,当CCAP0L=0X80时,即CCAP0L=128。
然后128和CL的值进行比较,CL比CCP0L小则,引脚输出低电平,反之,输出高电平。因为CL的值是每经过一个时钟周期加1,加到255时,溢出重新置0。
也就是说CL在0~128之前,CL都一直小于CCP0L,也就是引脚会一直低电平,一旦CL值超过128,引脚会输出高电平。128位256的一半,所以高电平的时间为整个PWM周期的一半,即占空比为50%。
当我们改变CCP0L的值,就会去改变PWM的占空比,这也就是所说的脉宽调制。
要改变PWM的周期,只能改变CL的取值范围,但是CL的取值范围是不可改变的,因为CL是一个8位寄存器。所以只能是改变CL每次加1的速度(原来CL加1用0.1s,现在要改为0.05s)也就是说我们要时钟源的频率。这种方法并没有被PCA模块所用,PCA模块所改变PWM频率的方法为,时钟源选择T0的溢出率,或者是选择外部时钟晶振源。
上述为个人理解,下图为手册中的流程
关键字:STC12C5A60S2 PCA模块 输出PWM波
引用地址:
STC12C5A60S2的PCA模块输出PWM波
推荐阅读最新更新时间:2024-03-16 16:23
stc12c5A60s2用ds18b20测温
//温度显示程序==LED显示,精度0.1摄氏度 //晶振:12M //单片机:stc12c5a60s2 1T /****************************************** 跳线设置:默认 注意事项:ds18b20切勿插反,有爆炸烫伤的危险,方向是ds18b20的平面(有字的一面)朝旁边的三极管Q4 ***/ #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int //数据口define interface sbit dula = P2^6; //数码管段选 sbit
[单片机]
用DSP56F805 PWM模块输出高频正弦波
针对Motorola DSP56F805的PWM模块中不能产生高频正弦波的缺点,根据SPWM原理,由直接面积等效法,计算出对应脉冲的起始点和终点,然后编程实现,经调试发现调制出的正弦波具有良好的特性。
DSP56F805是一种专门用来控制电机的微处理器,内部具有各种功能模块,例如,A/D转换模块、PWM模块、定时器模块等,为开发基于DSP的系统提供了很大便利。针对开发系统,Motorola为我们提供了相应的软件开发工具CodeWarrior及SDK,使得我们开发基于Motorola DSP的系统更加方便快捷。
1 问题的描述
Motorola的嵌入式SDK(Software Development Kit)是一个API、
[应用]
基于STC12C5A60S2 单片机的植物智能精确补光系统研制
前 言 在农作物生长过程中,光照条件对农作物的生长速度、产量以及品质都具有重要的影响 。现阶段我国大部分设施农业仍依靠白炽灯、卤钨灯、高压水银荧光灯、高压钠灯等作为光源对植物进行补光 ,这些传统的补光方法存在着光谱匹配不理想 、光能利用率低、未考虑其他环境因素的影响等缺点,其能耗过高导致难以在实际生产中形成较高投入产出比。随着半导体技术的发展,采用 LED 冷光源作为补光灯光源的方案也已被提出 ,可在一定程度解决上述补光光源的问题。但由于大部分研发方案和产品仍采用定光强、定光质的补光方式,未考虑不同植物不同阶段需光量的差异,造成补光不足和补光过度并存的现象,仍未能真正意义上解决低能耗精准化补光的问题 。 针对以上问
[单片机]
STC12c5a60s2单片机内部ADC应用测试外部电压
#include STC12C5A.H #include intrins.h /*use _nop_() function*/ #define uchar unsigned char #define uint unsigned int uint k; uchar ch ; /*******************延时****************/ void Delay (uint j) { uint i; while(j--) { i=111;while(i--); } } void InitADC() { P1M0=0X01; P1M1=0X01; P1ASF=0XFF; //相应端口当ADC
[单片机]
STC12C5A60S2单片机产生SPWM主程序C代码
本程序通过模拟仿真,实际示波器测试,均表现良好,愿拿出来分享,若有更好的实现方法,希望高手多多指教。。。。 /*************spwm产生程序******/ /*单片机STC12C5A60S2,晶振11.0592M,正弦波50Hz,spwm波形21.6KHz*/ #include STC12x5A60S2.H #define uchar unsigned char #define uint unsigned int uchar code pwm ={255,240,226,211,196,182,168,154,141,128,115,103,91 ,80,69,59,50,42,34,27,20,15,10,6,3,1
[单片机]
stc12c5a60s2工作电压
stc12c5a60s2在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。而且STC系列单片机支持串口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。 stc12c5a60s2的工作电压 STC12C5A60S2系列工作电压:5.5V-3.3V(5V单片机)STC12LE5A60S2系列工作电压:3
[单片机]
STC12C5A60S2读取ADC的值串口发送
#include STC12C5A60S2.H #include intrins.h //ADC_CONTR bit: #define ADC_POWER 0x80 //adc 启动 #define ADC_FLAG 0x10 //adc转换完成标志 #define ADC_START 0x08 //adc开始标志 #define ADC_SPEEDLL 0x00 //540 clocks #define ADC_SPEEDL 0x20 //360 clocks #define ADC_SPEEDH 0x40 //180 clocks #define A
[单片机]
空气能见度和CO2浓度测量装置的设计与研究
0 引言 能见度即目标物的能见距离,是指观测目标物时,能从背景中分辨出目标物的最大距离。近年来,由于种种原因,世界各地大气能见度越来越低,温室效应也日趋明显,雾霾、沙尘暴等成为人们热议的话题,国防工业生产和百姓日常生活都受到极大影响。加强空气中CO2和能见度测量迫在眉睫。 目前国际上已经研制出的能见度仪器有透射式和散射式两大类,而我国能见度测量仪器的研究还未成熟。本文提出一种简单的透射法测量能见度的方法,同时配备CO2检测功能。利用单片机控制,集测量、显示于一体,仪器简单实用,测量结果一目了然。体积小易携带,数据实时性好,灵活度大。实验验证,基本满足日常生活所需。 1 装置原理及构成 该装置包含了能见度测量系统和CO2测量
[单片机]