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

如题所述

第1个回答  推荐于2016-04-11
#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();

}

}

/*************************************
[ t1 (0.5ms)中断] 中断中做 PWM 输出
------------1000/(0.02ms*250)=200Hz
*************************************/
void Tzd(void) interrupt 1
{
TH0 = 0xfe; //11.0592
TL0 = 0x33;

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

还有其他控制方式的~本回答被提问者采纳

89c52单片机怎么用4个针脚控制几个4相5线步进电机
1、用两片74HC595,串转并,扩展出16个端口,可以控制4个步进电机;2、可以给同时几个驱动模块发电平,可以驱动无数个电机的,输出4路PWM,然后再用一片89C52。因为即使用专用的步进电机驱动芯片,也至少得2个IO控制一个电机。89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司CMOS工艺技术...

89c52单片机驱动电机
你好 你猜测得不错电机启动瞬间造成电压跌落,单片机反复重启。原因:1、电源如楼上说的电流不够;2、7805的输入端至少要8V左右7805才能正常工作;3、7805的输入端与输出端都有有滤波电容,而且要加散热片。4、如果你的电源本身就在4.5-5.5V之间相对稳定,就不要再用7805 ,直接使用就好。既然原因...

单片机89C52RC抄程序遇到个问题请求高手解答
现在有不少单片机 内部有 EEPROM 存储器,单片机89C52RC抄程序,如果 光 抄了程序 数据部分 没有 抄下了, 就有可能 运行 都有问题,能运行 还是 不错了。有可能缺少数据。其实 要完成 上述功能 找个 编程的, 编制一个程序 不很复杂。

单片机引脚直接控制tt电机
第一:不能直接接到单片机上。因为单片机端口的工作电流很小——千万不要把由二极管、三极管等元件组成的电子电路,与中学学习的电阻电路搞混了——虽然可能单片机端口的电压满足了电机,但电流不够,功率不够,电机是不会转动的。第二:要驱动电机工作,首先要看你用的是什么电机——直流电机、步进电机....

毕业论文资料收集(采纳追加1000分)
·基于单片机的电加热炉温度控制系统设计·红外遥控电源开关·基于单片机的低频信号发生器设计·基于单片机的呼叫系统的设计·基于PIC16F876A单片机的超声波测距仪·基于单片机的密码锁设计·单片机步进电机转速控制器的设计·由AT89C51控制的太阳能热水器·防盗与恒温系统的设计与制作·AT89S52单片机实验系统的开发与应用·...

测试自己做的L298驱动模块 驱动直流减速电机 想先看看可不可以正转...
你可以这样调试:你的程序先是让电机按这个方向转:ENA=1; IN1=1; IN2=0;那么可以改成先是这个方向转:ENA=1; IN1=0; IN2=1;看看能不能反个方向转,不行的话,就说明这个方向的控制有问题了,考虑换芯片。

51单片机,用一个按键来关闭和打开定时器t0,用作暂停。定时时间的过于短...
既然用一个按键来关闭和打开定时器t0,说明你设计按键是按一次打开、再按一次关闭。是不是按键消抖程序没写好,导致你按一次键实际上是等同按了多次,最后被认为按键状态没改变?

如何用单片机控制产生的波形输出电压可调,步进0.1v,0-5v
用PWM,即脉宽调制。我使用1个定时器中断做周期,在中断服务程序中用DJNZ指令循环比较做占空比实现步进电机的电流控制的。占空多了,电流就弱。要控制电压可能需要电路转换一下,如:在主回路串接PWM控制的开关管和电感,输出并电容。ORG 000BH;---T0---PWM CLR ET0 LJMP PWM ;---T0--...

基于自由摆的平板控制系统 怎么去设计
凡涉及推动摆杆至某一位置并准备开始摆动时,允许手动操作启动工作,亦可自动启动工作。一旦摆杆开始自由摆动,不得再人为干预系统运行。9.设计报告正文中应包括系统总体框图、核心电路原理图、主要流程图、主要测试结果。完整的电路原理图、重要的源程序和完整的测试结果用附件给出。

微控制器系统版和开发板有什么区别。
支援汇编、C语言混合除错。 片内 28K 程式空间可以随时进行线上程式更新。 完全模拟 P0、P2 口。 模拟频率 6-33 MHz 晶振可选,系统配置 11.0592 MHz 。 可以模拟标准的 89C51 , 89C52 , 89C58 等全部51核心的微控制器。 51模拟器占用T2定时器、UART口。使用模拟插针可更换结构,模拟插针可以取下,方便断针...

相似回答