如果用MOS管可以转,则是2003的问题,如果也不转,再检查程序吧。
STC12C56xxAD芯片用pwm调速程序的代码如下:
sbit k1=P3^4
sbit k2=P3^5
void delay(unsigned int cnt)
{
unsigned char i
for(cnt>0cnt--)
for(i=0i<250i++)
}
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
}
}
}
这个STI6608驱动器输入信号是Pluse+DIR方式控制,可以带2个步进电机。Reset可以置位步进电机到位置1。刚启动是置位1次就可以了。以下编一简单的演示程序:
#include<reg51.h>#define uchar unsigned char
#define uint unsigned char
sbit pluse1=P1^0
sbit pluse2=P1^1
sbit dir1=P1^2
sbit dir2=P1^3
sbit reset1=P1^4
sbit reset2=P1^5
void delay(uint a)
{
uint i
while(a--)for(i=0i<1100i++)
}
main()
{
uint i
reset1=0
reset2=0
delay(1000)
reset1=1
reset2=1
while(1)
{
for(i=0i<4800i++)
{
pluse1=~pluse1
dir1=1
delay(5)
}
for(i=0i<4800i++)
{
pluse2=~pluse2
dir2=1
delay(5)
}
for(i=0i<4800i++)
{
pluse1=~pluse1
dir1=0
delay(5)
for(i=0i<4800i++)
{
pluse2=~pluse2
dir2=0
delay(5)
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)