步进电机仿真程序

电子元件 4年前 (2022) aysz01
0

这是一款步进电机仿真程序,程序是经过仿真调试通过的,是电子制作比较好的实例现贴出来给大家参考试验。单片机使用的是的AT89C51单片机、晶振12M、电机驱动电路是L298、电机选用的是5-12伏的真流电机,程序实现四种功能:正转、反转、加速、减速。仿真图如下:

 

附上源程序:

#include "REGX51.H"

#define uchar unsigned char

#define uint unsigned int

uint time,s;

zhpai[8]={0x16,0x96,0x86,0xc6,0x46,0x66,0x26,0x36};//正转

fzai[8]={0x36,0x26,0x66,0x46,0xc6,0x86,0x96,0x16};//正转

sbit k1=P1^1;

sbit k2=P1^2;

sbit k3=P1^3;

sbit k4=P1^4;

bit qt,zf; //启动停止及正反转标志位

void t0() interrupt 1 //定时器0中断,定时1ms//

{

TH0=(65536-1000)/256;

TL0=(65536-1000)%6;

time++;

}

void delay(uint dtime) //延时

{

TR0=1;

while(time<=dtime)

{

if(k2==0) //加速按键处理程序

{

while(k2==0);

{

if(s>80)

s=s-40;

}

}

if(k3==0)

{

while(k3==0); //减速按键处理程序

{

if(s<200)

s=s+40;

}

}

}

time=0;

TR0=0;

}

void moto() //电机驱动子程序,

{

uchar i,l=0;

for(i=0;i<8;i++)

{

P2=zhpai[l];

l++;

delay(s);

if(l>8)

l=0;

}

}

void moto1() //电机驱动子程序,

{

uchar i,l=0;

for(i=0;i<8;i++)

{

P2=fzai[l];

l++;

delay(s);

if(l>8)

l=0;

}

}

void main()

{

TMOD=0x01;

TH0=(65536-1000)/256;

TL0=(65536-1000)%6;

EA=1;

ET0=1;

TR0=1;

qt=0;

zf=1;

s=200;

while(1)

{

if(k1==0) //反转按键处理程序

{

while(k1==0);

qt=0;

}

if(k4==0)

{

while(k4==0); //正转按键处理程序

qt=1;

}

if(qt==1)

{

moto();//正转

}

else moto1();//正转

}

}

版权声明:aysz01 发表于 2022-08-06 9:11:06。
转载请注明:步进电机仿真程序 | 鳌游电工

暂无评论

暂无评论...