永发信息网

89C52单片机驱动步进电机的C程序?

答案:2  悬赏:30  手机版
解决时间 2021-02-09 23:34
89C52单片机驱动步进电机的C程序?
最佳答案
#include "reg52.h"
//Motor
sbit F1 = P1^0;
sbit F2 = P1^1;
sbit F3 = P1^2;
sbit F4 = P1^3;

///////////////////////////////////////
//步进电机驱动
unsigned char MotorStep=0;
unsigned int MotorTimer = 0;
unsigned int TIM,CT;

void InitMotor()
{
F1 = 1;
F2 = 1;
F3 = 1;
F4 = 1;
}

void SetMotor()
{
// if(Speed == 0) return;

switch(MotorStep)
{
case 0:
if(TIM)
{
F1 = 0;
F2 = 0;
F3 = 1;
F4 = 1;
MotorStep = 1;
TIM=0;
}
break;

case 1:
if(TIM)
{
F1 = 1;
F2 = 0;
F3 = 0;
F4 = 1;
MotorStep = 2;
TIM=0;
}
break;

case 2:
if(TIM)
{

F1 = 1;
F2 = 1;
F3 = 0;
F4 = 0;
MotorStep = 3;
TIM=0;
}
break;

case 3:
if(TIM)
{
F1 = 0;
F2 = 1;
F3 = 1;
F4 = 0;
MotorStep = 0;
TIM=0;
}
break;
}

}

void system_Ini()
{
TMOD|= 0x11;
TH0=0xDC; //11.0592M
TL0=0x00;
IE = 0x8A;
TR0 = 1;

}

main()
{ system_Ini();
InitMotor();
while(1)
{
SetMotor();

}

}


void Tzd(void) interrupt 1
{
TH0 = 0xfe; //11.0592
TL0 = 0x33;

if( CT++==20)
{TIM=1;
CT=0;
}
}
希望对你有所帮助,这个亲自试过,可以的!

还有其他控制方式的~
全部回答
额,就是移位和延时,用移位程序或者直接给px口赋值控制led,延时控制速度,
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
万家村这个地址在什么地方,我要处理点事
阿里云的空间怎样开通80端口
色弱能报测绘工程吗
将纯种的某二倍体植物品种甲(AA)与近缘纯种乙
知味小厨地址在哪,我要去那里办事
密室逃脱第六关有个红车有个船,怎么过
如何看远用数值:球镜R1.75L1.75柱镜R-2.00L-1
y=根号(3-2x)+2x y值域 X定义域速度快的+10
兰朵精品这个地址在什么地方,我要处理点事
食为先蒸菜馆地址在什么地方,想过去办事
promised land 歌词翻译 猫王那个~在线等
塑钢线是啥啊
用一根长9.6米的铁丝围城一个正方体模型,这个
中国移动通信手机连锁卖场国兆店地址有知道的
武昌区武汉世龙世家灰指甲哪位知道具体地址啊
推荐资讯
奥鹏手机商城在哪里啊,我有事要去这个地方
金属表面处理中的阳极黑色和电着黑有区别吗?
银行卡复印有没有危险
如果我在荆州买社保,还可以在武汉买吗?
win7 64位旗舰版怎么安装ie8浏览器
请问青岛海尔第五门属于哪个区啊? 附近有什
中国·声立方地址在哪,我要去那里办事
vivox5l怎么才能看到自己的电话号码
SR咖啡(仑仓店)怎么去啊,我要去那办事
2016年春节联欢晚会什么时间开始
富士拍立得能用别的牌子相纸吗?用了会怎么样
新发堡地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?