好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

探测机器人系统的设计电机控制程序.doc

5页
  • 卖家[上传人]:桔****
  • 文档编号:435936952
  • 上传时间:2023-02-23
  • 文档格式:DOC
  • 文档大小:33KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 电机控制程序org 00hajmp startorg 30hSTART:  ;  检测键盘状态的程序mov p0,#0ffh         ;置p0为输入口,将P0口置为1,用于检查按键是否按下jnb p0.0,QIDONG      ;按键S2按下,p0.0为0,进入启动(正转)程序jnb p0.1,FANZHUAN   ;按键S3按下,p0.1为0,进入反转程序jnb p0.2,JITING        ;按键S4按下,p0.2为0,进入急停程序jnb p0.3,JIASU         ;按键S5按下,p0.3为0,进入加速程序jnb p0.4,JIANSU        ;按键S6按下,p0.4为0,进入减速程序jnb p0.5,TINGZHI        ;按键S7按下,P0.5为0,进入停止程序ajmp startQIDONG. ;启动程序,默认为顺时针转动,转速为2000RPMLCALL YANSHI   ;调用延时子程序,目的:软件消除按键抖动JNB P0.0,QILJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序QI:    clr p0.6      ;p0.6接电机R/S端,将其清零表示电机可以运行          setb p0.7     ;p0.7接DIR端,为1,则与COM端断开,电机正转mov p2,#0Bh ;p2.0接CH1,p2.1接CH2,p2.2接CH3,将速度设定为2000RPMlcall XIANSHI  ;显示设定速度LJMP START ;执行完启动程序后,回到检测按键状态程序FANZHUAN: ;反转程序,也即逆时针转动LCALL YANSHI   ;调用延时子程序,目的:软件消除按键抖动JNB P0.1,FANLJMP START    ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序FAN:     clr p2.3             ;接通BRK端,使电机急停lcall PANTING   ;调用判停程序,能从判停程序中返回,说明机已停setb p2.3           ;断开BRK端,解除急停状态clr p0.7             ;接通DIR端,使电机逆时针转动lcall XIANSHI       ;显示设定速度LJMP START    ;执行完启动程序后,回到检测按键状态程序;急停程序LCALL YANSHI   ;调用延时子程序,目的:软件消除按键抖动JNB P0.2,JILJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序JI:    clr p2.3          ;接通BRK端,使电机急停lcall PANTING       ;调用判停程序,若能从中返回,说明电机已停LJMP START    ;执行完启动程序后,回到检测按键状态程序JIASU: ;加速程序,每按一次键,加速500rpmLCALL YANSHI  ;调用延时子程序,目的:软件消除按键抖动JNB P0.3,JIALJMP START    ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序JIA:  mov a,p2     ;将p2的值复制到累加器a中anl a,#07h      ;取ch3ch2ch1的值,并放到累加器a中    jz START       ;若a中值为0,则速度已经最大,不再加速,回到检测按键状态程序       mov r0,p2dec r0mov p2,r0           ;加速500rpm(参考电机驱动器说明中的多段速度选择部分)lcall XIANSHI        ;显示设定的速度 LJMP START      ;执行完启动程序后,回到检测按键状态程序JIANSU: ;减速程序,每按一次键,减速500rpmLCALL YANSHI  ;调用延时子程序,目的:软件消除按键抖动JNB P0.4,JIANLJMP START    ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序JIAN:  mov a,p2   anl a,#07h           ;取ch3ch2ch1的值    cjne a,#07h,JS     ;若a中数值为07h,则速度已为0, ljmp START         ;若速度为0,则程序回到开始程序,不再减速,以防出错JS:mov a,P2inc a    mov P2,a     ;减速500rpm(参考电机驱动器说明中的多段速度选择部分)lcall XIANSHI       ;显示设定的速度 ljmp START   ;执行完启动程序后,回到检测按键状态程序TINGZHI: ; 停止程序LCALL YANSHI  ;调用延时子程序,目的:软件消除按键抖动JNB P0.5,TINGLJMP START    ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序TING:   setb p0.6        ;p0.6接R/S端,为1,则与COM端断开lcall PANTING      ;调用判停程序,若能从中返回,说明电机已停LJMP START     ;执行完启动程序后,回到检测按键状态程序YANSHI: ;延时10ms,这是一个子程序,功能是延时10毫秒mov a,#0          ;对累加器a置零,延时用y:    mov r1,#00h        ;对寄存器r1置零,延时用inc r1cjne r1,#0ffh,y    ;延时1msinc acjne a,#10,y      ;延时10×1=10msretPANTING: ;判停程序,这是一个子程序,若能从判停程序中返回,则说明电机已停jnb p2.4,yanshi250ms ;若speed端为0,则进入延时程序ajmp PANTING   ;若speed端为1,则返回PANTING,等待speed端出现0电平yanshi250ms:clr p2.6            ;允许对计数器置数mov p3,#08h            ;对计数器置入数8setb p2.6            ;计数器开始计数mov a,#0             ;对累加器a置零,延时用y250:    mov r1,#00h         ;对寄存器r1置零,延时用inc r1jb p2.5,PANTING      ;若期間Tc为1,则电机未停,返回PANTING,继续判断cjne r1,#0ffh,y250     ;延时1msinc acjne a,#250,y250      ;延时250ms,ret    ;若至延时结束Tc一直不改变状态,则说明speed端口无脉冲输出,认为电机停转,程序;返回。

      在电机停转之前,单片机不响应按键状态的改变XIANSHI: ;显示程序,这是一个子程序mov a,p2              ;将当前的速度设定值读入a中anl a,#07h           ;取ch3ch2ch1的值,存入a中mov b,#4mul ab      ;取得低位速度值对应的相对地址,存入a中add a,r3             ;得到低位字符地址,放在a中mov scon,#00h        ;初始化串行口方式0mov r2,#0           ;利用r2来控制显示字符数mov dptr,#tab        ;字形表的入口地址mov r3,a            ;低位速度值地址存入r3 x:      add a,r2    ;利用a与r2的和获得字符地址         movc a,@a+dptr    ;查表获得字型码,放在a中         mov sbuf,a          ;串口显示     l:  jnb ti,l    ;等待发送完毕         clr ti     ;发送标志ti清零         inc r2         mov a,r3         cjne  r2,#4,x    ;发送四个字符         rettab:   db 03h,03h,49h,0dh      db 03h,03h,03h,0d。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.