STC12C56xxAD芯片怎么用pwm调速程序?

如题所述

STC12C56xxAD芯片用pwm调速程序的代码如下:

sbit k1=P3^4;

sbit k2=P3^5;

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=0x00; //选择 系统时钟/12 为计数脉冲,则PWM的频率f=sysclk/256/12;

CCAP0H=0x80; // 占空比控制

CCAP0L=0x80; 

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

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

CR=1; //启动PCA计数器

while(1)

{

if(k1==0)

{

delay(200);

while(k1==0);

CCAP0H+=5; //占空比调节

CCAP0L+=10;

}

if(k2==0)

{

delay(200);

while(k2==0);

CCAP0H-=5; //占空比调节

CCAP0L-=5;

}

}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-02-02
我有一个程序
我也是用的这个芯片 我控制的是直流电机 . 你需要我可以给你

#include"STC12C5A.h"//注意这个头文件,用reg52是不行的,如果你没有的话,可以去百 // //度文档里搜索"STC12C5A系列单片机头文件",有我共享的头文件。
sbit k1=P3^4;
sbit k2=P3^5;
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=0x00; //选择 系统时钟/12 为计数脉冲,则PWM的频率f=sysclk/256/12;

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

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

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

if(k2==0)
{
delay(200);
while(k2==0);
CCAP0H-=5; //占空比调节
CCAP0L-=5;
}
}
}

如果你是控制 直流电机的话
还需要一个 直流电机的驱动芯片
这个程序可以在 P1.3口输出一个PWM 信号 而且是通过调PWM的占空比
你可以 用示波器 观察下..

希望对你有帮助