步进电机驱动器的设计(5)

2018-11-19 21:35

附 录

程序代码

#include #include void delay1(void); void delay2(void); void display(int); int bs=0; int cishu; main() {

Char a,b,c,d,j,*q,

done1[10]={0x01,0x02,0x04,0x08,0x00,0x01,0x08,0x04,0x02,0x00}, done2[10]={0x03,0x06,0x0c,0x09,0x00,0x03,0x09,0x0c,0x06,0x00},

done3[18]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09,0x00,0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x00}; P3=0x00; //P3.5口置1,绿灯亮,不工作

delay1();

L: a=P3;

while(!(a&0x08)) //判断是否

启动,若没启动则重新启动

{

P3=0x00; a=P3; delay1(); }

a=P3; //判断工作模式 if(a&0x01) //方式1模型 q=done1;

if(a&0x02) //方式2模型 q=done2; if(a&0x04) //方式3模型 q=done3;

if(a&0x20) //步进电机速度控制 cishu=5; else

cishu=50;

if(a&0x10) //判断电机是否要正转 {

P3=0x80; //P3.4口为

1,电机正转,红灯亮 b=0;

}

17

else {

P3=0x40; //P3.4口

为,电机反转,黄灯亮 if(a&0x04) b=9; else

b=5;

} d=b; while(1) {

c=*(q+b); //判断步数是否走完 if(c==0)

b=d; //步数走完,重新再走 else { P1=c; //从P1输出控制信号 b++;

bs++; //总步数加1 display(bs); //显示步数 j=a;

a=P3;

}

if(a!=j) //判断P3口状态信

号是否改变 {

if(!(a&0x08))

bs=0; //步数清零

goto L;

} //状态信号改变,返回到

开始,重新对电机控制 }

} void delay1() { int i,j;

for(i=0;i<200;i++) for(j=0;j<300;j++);

} void display(int n) {

Unsigned

char

tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67}; unsigned char i,k,t,num[4];

num[0]=n;

//将总步数的各位分别存在num数组中 num[1]=(n/10); num[2]=(n/100); num[3]=(n/1000);

for(t=0;t

k=0xf7; //位选码指向最

左一位,第四位 for(i=0;i<4;i++) {

P2=k; //从P2口输入位选码

18

P0=(tab[num[i]]); }

//取出显示码,并从P0口输出显示码

k=k>>1; //求下一位选码 delay2();

void delay2()

{ int i,j;

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

for(j=0;j<60;j++);}

} }

19

原理图

20


步进电机驱动器的设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:@@2013年新人教版七年级上册期中古诗词复习默写专题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: