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

这是一个实际应用的步进电机控制程序,通过单片机控制步进电机的正反转,利用脉冲和方向控制实现不同方向的转动。程序中还包括了按键设定速度、停止和方向切换等功能,并涉及到了看门狗存储器的使用和接口控制。
/*这是一个控制步进电机正反转的实际应用程序*/
/*选用的是三相步进电机驱动器,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;
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值