单片机控制步进电机正反转的实际应用程序.docVIP

  • 17
  • 0
  • 约5.5千字
  • 约 8页
  • 2017-08-25 发布于重庆
  • 举报

单片机控制步进电机正反转的实际应用程序.doc

单片机控制步进电机正反转的实际应用程序 /*这是一个控制步进电机正反转的实际应用程序*/ /*选用的是三相步进电机驱动器,p14口线用做步进电机的脉冲控制*/ /*p13口线用做步进电机的方向控制。p15,p16,p17是光耦开关量输入*/ /*信号端,p20,p21,p22,p23与x25045看门狗存储器相连*/ /*k7,k8键是设定步进电机转动速度参数的加减键*/ /*k9是启动运行键,按一下k9,步进电机开始运行,直到p17口线有信号输入才停止*/ /*k10是停止键,任何时候按下k10都将停止步进电机当前的运行*/ /*k11是步进运行键,按一下,步进电机动一下*/ /*k12键是反向运行键,按一下,步进电机开始反向运行,知道p15口线有信号才停止*/ /*如果p16口线有信号输入,则只有k12键才起作用,其它键都没反应。*/ START:do; $INCLUDE(REG51.DCL) DECLARE (addrl,n,I,j,ok,ds) byte; /*定义变量*/ declare l(5) byte; declare (dat,data) byte at (30h); declare delay word; DECLARE ACO(11) BYTE CONSTANT (05h,9fh,23h,0bh,99h,49h,/*定义LED段码表*/ 41h,1fh,01h,09h,00h); declare si literally p21,sck literally p20; /*X25045囗线定义*/ declare so literally p22,cs literally p23; dog:procedure; /* 初始化看门狗x25045 */ cs=1; call time(1); cs=0; call time(1); cs=1; end dog; run:procedure; /*步进电机运行脉冲输出程序*/ if ok=1 then call dog; do; p14=0; call time(1); p14=1; call time(1); end; end run; DISPLAY:PROCEDURE(L0,L10); /*显示子程序*/ DECLARE (L0,L10) BYTE; /*定义显示二位*/ n=L10; n=aco(n); /*十位数BCD码译成段码*/ sbuf=n; /*十位数送164显示*/ do while ti=0; /*等待发送结束*/ call dog; /*看门狗定时器复位*/ end; n=L0; n=aco(n); sbuf=n; /*个位数送164显示*/ do while ti=0; call dog; end; end display; outbyt: procedure(da); /*向看门狗存储器写入一字节*/ declare (i,da) byte; j=da; /*将要写入的字节赋给临时变量J */ do i=0 to 7; /*左移8位,送到口线si */ sck=0; j=scl(j,1); si=cy; sck=1; /*每移一位数据,跟一个时钟信号*/ end; end outbyt; inbyt: procedure; /* 从看门狗存储器读出一字节 */ declare (i,di) byte; j=0; do i=0 to 7; sck=1; sck=0; cy=so; j=scl(j,1); /*从看门狗存储器读出一字节送入临时变量j*/ end; dat=j; end inbyt; wrenable: procedure; /* 置看门狗写使能*/ sck=0; cs=0; ; /* write enable command */ call outbyt(06h); /* x25045 写使能指令06h */ cs=1; sck=0; end wrenable; wrdisable: procedure; /* 置看门狗写禁止 */ sck=0; cs=0; ; /* write disable command */ call outbyt(04h); sck=0; cs=1; end wrdisable; wrregister: procedure; /* 写状态寄存器 */ sck=0; cs=0; dat=01h; /* write register command */ call outbyt(dat); ; /* 00h--1.4S, 20h--200MS, 10h--600MS, 30h--disable Wdog */ call outbyt(00h); /* 设定看门狗定时时间 */ ; sck=

文档评论(0)

1亿VIP精品文档

相关文档