找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7744|回复: 4
收起左侧

关于STC12C5A60S2单片机的PWM程序咨询

[复制链接]
ID:51963 发表于 2013-8-24 21:56 | 显示全部楼层 |阅读模式
#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转。  要是的话在程序的哪里可以看出来。
暂时就这三个问题,谢谢了。

回复

使用道具 举报

ID:51963 发表于 2013-8-25 10:44 | 显示全部楼层
都没有人能告知一下么{:soso_e101:}
回复

使用道具 举报

ID:53155 发表于 2013-8-26 00:01 | 显示全部楼层
STC的手册有比较详细的使用说明(www.STCMCU.com可下载:http://www.stcmcu.com/datasheet/stc/STC-AD-PDF/STC12C5A60S2.pdf),你问的几个问题手册基本都有解答(详见手册第十章):
1.pwm频率 = PCA时钟源频率/256
2.CCAPnL是不需要赋值的,看过手册上PWM功能框图就知道了(n=0,1);因为CCAPnL的值是由CCAPnH的值自动装入
3.通常不会用pwm输出引脚直接驱动直流电机,所以PWM占空比与电机转速没有直接关系;要想了解二者之间的关系还要分析电机驱动电路,这也只能做定性判断,定量研究必须要有测速装置
回复

使用道具 举报

ID:121114 发表于 2016-5-18 23:21 | 显示全部楼层
初学小白 看不懂 这是第几层次水平了??
回复

使用道具 举报

ID:229821 发表于 2019-4-2 12:16 | 显示全部楼层
亘黑鹿 发表于 2016-5-18 23:21
初学小白 看不懂 这是第几层次水平了??

炼气期第十层啊。没看见楼上说详见第十章吗?呵呵开过玩笑。最好还是要把芯片手册看熟的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表