标题:
单片机+UDN2916 5相4线步进电机的单片机驱动程序 发送速度到串口
[打印本页]
作者:
辉辉辉辉
时间:
2019-11-10 15:35
标题:
单片机+UDN2916 5相4线步进电机的单片机驱动程序 发送速度到串口
5相4线步进电机驱动程序,可以调速,正反转,发送速度到串口,用1602显示
单片机源程序如下:
/*************************************************************************************
* 标题: 步进电机试验一(双极性步进电机) *
* *
* 通过本例程了解步进马达使用及驱动程序编写 *
*; 单相四拍通电驱动时序: *
*; 正转: A/ B A B/
* 反转: B/ A B A/ *
*
* UDN2916电流控制真值表:
* I0 I1 输出电流
* L L 最大
* H L 最大*2/3
* L H 最大*1/3
* H H 0 *
* 请学员一定要消化掉本例程 0x30,0x0e,0x39,0x07 *
注意:J14短路冒需断开 *
**************************************************************************************/
#include "reg52.h"
//Motor
sbit key = P0^0; //定义管脚
sbit key1 = P0^1;
sbit key2 = P0^2; //定义管脚
sbit key3 = P0^3;
sbit key4 = P0^4; //定义管脚
sbit key5 = P0^5;
sbit key6 = P0^6; //定义管脚
sbit I01 = P1^0;
sbit I02 = P1^1;
sbit I03 = P1^2;
sbit I04 = P1^3;
int speed=20,zhuangtaiflag=0,gaodu=0,jiaodu=0,gd=0,jd=0;
void delay(int time);
void bujinzhengzhuan(int b)
{
int i;
for(i=0;i<b;i++)
{
I01=1;
I02=0;
I03=0;
I04=0;
delay(speed);
I01=0;
I02=1;
I03=0;
I04=0;
delay(speed);
I01=0;
I02=0;
I03=1;
I04=0;
delay(speed);
I01=0;
I02=0;
I03=0;
I04=1;
delay(speed);
}
}
void bujinfanzhuan(int a)
{
int i;
for(i=0;i<a;i++)
{
I01=0;
I02=0;
I03=0;
I04=1;
delay(speed);
I01=0;
I02=0;
I03=1;
I04=0;
delay(speed);
I01=0;
I02=1;
I03=0;
I04=0;
delay(speed);
I01=1;
I02=0;
I03=0;
I04=0;
delay(speed);
}
}
void bujinstop(void)
{
I01=0;
I02=0;
I03=0;
I04=0;
}
/*------------------------------------------------
串口初始化
------------------------------------------------*/
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
// ES=1; //打开接收中断
// EA=1; //打开总中断
TR1=1; //打开计数器
}
/*******************延时函数****************************/
void delay(int time)
{
int i,j;
for(j=0; j <= time; j++)
for(i =0 ; i <= 120; i++);
}
void main()
{
int flag;
UsartConfiguration();
while(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
while(key==0);
flag++;
if(flag==3)flag=0;
}
}
if(key1==0)
{
delay(10);
if(key1==0)
{
while(key1==0);
speed++;
if(speed==50)speed=2;
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
while(key2==0);
speed--;
if(speed<=2)speed=2;
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
while(key3==0);
zhuangtaiflag++;
if(zhuangtaiflag==0)jd=0;
if(zhuangtaiflag==1)gd=0;
if(zhuangtaiflag==2)zhuangtaiflag=0;
}
}
if(key4==0)
{
delay(10);
if(key4==0)
{
while(key4==0);
if(zhuangtaiflag==0)jiaodu++;
if(zhuangtaiflag==1)gaodu++;
}
}
if(key5==0)
{
delay(10);
if(key5==0)
{
while(key5==0);
if(zhuangtaiflag==0)jiaodu--;
if(zhuangtaiflag==1)gaodu--;
}
}
if(flag==0)bujinstop();
if(flag==1)bujinzhengzhuan(1);
if(flag==2)bujinfanzhuan(1);
if(gaodu-gd>0)
{
bujinzhengzhuan(100*(gaodu-gd));
gd=gaodu;
}
if(gaodu-gd<0)
{
bujinfanzhuan(100*(gd-gaodu));
gd=gaodu;
}
if(jiaodu-jd>0)
{
bujinzhengzhuan(jiaodu-jd);
jd=jiaodu;
}
if(jiaodu-jd<0)
{
bujinfanzhuan(jd-jiaodu);
jd=jiaodu;
}
SBUF=speed;
}
}
复制代码
所有资料51hei提供下载:
bujindianji.zip
(32.26 KB, 下载次数: 15)
2019-11-10 15:34 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-11-10 16:52
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1