打印
[STC单片机]

STC12C5A60S2 pwm波形咨询

[复制链接]
1854|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mokedeng|  楼主 | 2013-8-24 21:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"STC12C5A.h"

void delay(unsigned int cnt)   //延时函数
{
unsigned char i;
for(;cnt>0;cnt--)
for(i=0;i<250;i++);
}

void main()
{
CCON=0;           //PCA初始化
CL=0;          //PCA的16位计数器低八位
CH=0;          //PCA的16位计数器高八位
CMOD=0x0a;        //选择 系统时钟/4 为计数脉冲,则PWM的频率f=sysclk/256/4;

CCAP0H=0x80;  //  占空比控制
CCAP0L=0x80;  
PCA_PWM0=0x00; //控制占空比的第九位为0

CCAPM0=0x42;  //允许P13作为PWM输出

CR=1;         //启动PCA计数器
while(1)
{
if(P10==0)
{
delay(200);
while(P10==0);
CCAP0H+=10;         //占空比调节
CCAP0L+=10;
}
}
}


这个是我在网上查看到的一个产生PWM波的程序。我正想做一个PWM控制电机转数的一个程序。有几个问题想要咨询一下大家。
1、假如我的晶振是20M是,那是不是产生的PWM的频率是19.5k hz.  这里我把系统时钟理解成了20m不知错了     没有。
2、 那个占空比的控制  CCAP0H=0x80; CCAP0L=0x80;   这个是代表占空比是50%  是不是高地位的数值必须是一样的。     但是这一句:  PCA_PWM0=0x00; //控制占空比的第九位为0   我没有理解不知道是什么意思。
3、这个单片机是8位的,他就是把分为了256份,  是不是电机转数在10000转的时候每条一次占空比电机的转数浮动是10000/256转。  要是的话在程序的哪里可以看出来。
占时就这三个问题,谢谢了。

相关帖子

沙发
mokedeng|  楼主 | 2013-8-25 10:44 | 只看该作者
都没有人能告知一下么

使用特权

评论回复
板凳
woshiaokeman| | 2013-8-25 17:26 | 只看该作者
问题1:不是,20M只是你给PCA模块的时钟源,如果你想输入任意频率的话得使用T0作为PCA的时钟源
问题2:这个是我写的计算占空比CCAP0H = CCAP0L = 256*(100-Time)/100;你看手册里面有这句话“当CL溢出的时候会吧CCAPH放到CCAPL里面”,PCA_PWM这个寄存器我的理解是:假如是1那么和CCAP组合起来就是9位,当是0的时候就是8位。
第三个不懂。。。
这里是我个人理解

使用特权

评论回复
地板
mokedeng|  楼主 | 2013-9-3 21:06 | 只看该作者
woshiaokeman 发表于 2013-8-25 17:26
问题1:不是,20M只是你给PCA模块的时钟源,如果你想输入任意频率的话得使用T0作为PCA的时钟源
问题2:这个 ...

谢谢你    非常的感谢

使用特权

评论回复
5
老土2F| | 2013-9-3 21:46 | 只看该作者
电机转速跟占空比不是绝对的线性关系吧,你那第三个问题,是怎么想出来的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

38

帖子

0

粉丝