标题:
51单片机对uln2003步进电机的驱动程序
[打印本页]
作者:
kingdom11122
时间:
2022-3-2 16:07
标题:
51单片机对uln2003步进电机的驱动程序
/*******************************************************
ULN2003驱动5V减速步进电机程序
Target:STC89C52RC-40C
Crystal:12MHz
Platform:51&avr单片机最小系统板+ULN2003步进电机驱动套件
*******************************************************
接线方式:
IN1 ---- P00
IN2 ---- P01
IN3 ---- P02
IN4 ---- P03
+ ---- +5V
- ---- GND
*********************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define MotorData P0 //步进电机控制接口定义
uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A
uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D
//ms延时函数
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
//顺时针转动
void MotorCW(void)
{
uchar i;
for(i=0;i<4;i++)
{
MotorData=phasecw[i];
Delay_xms(4);//转速调节
}
}
//逆时针转动
void MotorCCW(void)
{
uchar i;
for(i=0;i<4;i++)
{
MotorData=phaseccw[i];
Delay_xms(4);//转速调节
}
}
//停止转动
void MotorStop(void)
{
MotorData=0x00;
}
//主函数
void main(void)
{
uint i;
Delay_xms(50);//等待系统稳定
while(1)
{
for(i=0;i<500;i++)
{
MotorCW(); //顺时针转动
}
MotorStop(); //停止转动
Delay_xms(500);
for(i=0;i<500;i++)
{
MotorCCW(); //逆时针转动
}
MotorStop(); //停止转动
Delay_xms(500);
}
}
复制代码
作者:
abcdefg321
时间:
2022-3-6 22:16
有没有更加准确的电机转动角度的思路分享一下呗、
作者:
cr8526
时间:
2022-3-8 16:10
有没有接线图啊??除了晶振不一样,其他都一样,还是转不起来。我的晶振是11.0592的
作者:
铭鑫99
时间:
2022-3-9 15:07
加上稳压模块会更加准确
作者:
abcdefg321
时间:
2022-3-10 20:40
abcdefg321 发表于 2022-3-6 22:16
有没有更加准确的电机转动角度的思路分享一下呗、
有,通过延时函数的划分360,来进行相应的转动
作者:
cqcgq
时间:
2022-11-25 09:55
还是不能转,用L298能转
作者:
pigmumu
时间:
2023-4-10 09:49
cqcgq 发表于 2022-11-25 09:55
还是不能转,用L298能转
可能是你的延时没设置好,一般设置个2ms就差不多
作者:
南-wgw
时间:
2024-3-29 14:36
有接线图就更好了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1