单片机/MCUwilliam hill官网
直播中

姜&莉

8年用户 41经验值
私信 关注
[问答]

STC12C5A60S2S输出频率怎么设置成1KHZ

着急!!!!着急!!!在线等。。。。
最近调试stc12c5a60s2程序的,晶振11.0592M.  PWM输出,使用12分频的时钟源,频率在3.6KHZ。使用T0定时器作为时钟源,频率只有500HZ一下。哪位大侠知道怎么设置成1Khz.还有使用WM输出时:send_PWM1(0xfa)时,转速235转;send_PWM1(0xe0);时,转速在1600转。不是成比例增加的(我理解的占空比是50%时,转速是最大转速的一半,可是我的程序实际不是这样的,0x80时,转速达到6000转了都,好可怕)。哪位大侠知道原因啊?       
这是PWM程序:
#include"stc12c5a60s2.h"
#include "PWM.h"
void send_PWM1(uchar j_temp);
void pwm_init() ;
//static uint step0 = 0;
//static uint step1 = 0;
//void Set_PWM1(uchar duty);



void send_PWM1(uchar j_temp)
{       
   CR      =   0;
   CMOD    =   0x00;   // CIDL - - - - CPS1 CPS0 ECF  Setup PCA Timer
                        // CPS1 CPS0 = 00, Fosc/12 is PCA/PWM clock
                                                // CPS1 CPS0 = 01, Fosc/2 is PCA/PWM clock         CMOD.1,CMOD.2
                        // 18432000/12/256 = 6000
   CL      =   0x00;
   CH      =   0x00;
   CCAP1L  =   j_temp;   //Set the initial value same as CCAP0H        00为高电平,FF为低电平
   CCAP1H  =   CCAP1L;   //230   10%
   CCAPM1  =   0x42;   //0100,0010 Setup PCA module 0 in 8BIT PWM,
   CR      =   1;      //启动 PCA/PWM 定时器
}
/*
void pwm_set(unsigned char x,unsigned char y)
{
CCAP0H=x;
CCAP0L=x;
CCAP1H=y;
CCAP1L=y;
}
  */


void pwm_init()      //PWM初始化函数,初始占空比为0
{
    CR      = 0;
    CMOD    = 0x00;   // CIDL - - - - CPS1 CPS0 ECF  Setup PCA Timer
    CCON   = 0x00;                    // CPS1 CPS0 = 00, Fosc/12 is PCA/PWM clock
                        // 11952000/256


    CCAPM1 = 0x42;                 // 设置为高速模式,允许中断
//    IPH    = 0x80;               // PCA为最高优先级
//  IP     = 0x80;
    CL      =   0x00;
    CH      =   0x00;
        CR      =   1;      //启动 PCA/PWM 定时器
//        EA     = 1;
}



  • 1.PNG
  • 2.PNG
  • 3.PNG
  • 4.PNG
  • 5.PNG
  • 6.PNG

回帖(6)

linchenfeng

2016-10-18 19:14:22
另外,可以采用PCA功能里面有一个采用定时器做分频基数的功能。 可以任意分频。 我发个链接给你,你看看https://bbs.elecfans.com/forum.p ... d=546043&extra=
举报

linchenfeng

2016-10-18 22:48:00
如果程序是可调的。 那么,检查硬件威廉希尔官方网站 。 看俺频率是否和硬件匹配。
举报

姜&莉

2016-10-19 06:53:27
怎么能看出硬件和频率匹配 呢?楼上大侠
举报

姜&莉

2016-10-19 07:11:59
这是威廉希尔官方网站 图,能帮看看么?
举报

linchenfeng

2016-10-19 15:43:16
引用: zhanglixpp 发表于 2016-10-19 07:11
这是威廉希尔官方网站 图,能帮看看么?

我说的看,是需要看元器件的参数对不对。  另外,电机的PWM接受范围是多少,需要和程序匹配。  你看看之前我发给你的那个资料链接,就可以把频率调节到你要的。
举报

曲海洋

2016-10-20 05:52:34
本帖最后由 langzitianya 于 2016-10-20 06:15 编辑

一般的调制pwm调制出来后直接驱动后级放大,然后驱动电机的话,这样调制出来的实际就是电压控制电机的,电压和电机的转数是不成正比的,如果想精确那就要有一个转数的反馈才可以的
QQ图片20161020061301.png
这个频率自己算,根据你想得到的PWM的频率算出频率,然后用内部晶振就可以了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分