⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhiliudianji.txt

📁 51单片机直流电机
💻 TXT
字号:
org 00h
ajmp start
org 30h
;**********检测键盘状态的程序****************
START:    
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 start

 

;************启动程序,默认为顺时针转动,转速为2000RPM***********
QIDONG:
LCALL YANSHI   ;调用延时子程序,目的:软件消除按键抖动
JNB P0.0,QI
LJMP 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,将速度设定为2000RPM
lcall XIANSHI  ;显示设定速度
LJMP START ;执行完启动程序后,回到检测按键状态程序

 

;***************反转程序,也即逆时针转动*****************
FANZHUAN:
LCALL YANSHI   ;调用延时子程序,目的:软件消除按键抖动
JNB P0.1,FAN
LJMP START    ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序
FAN:     
clr p2.3             ;接通BRK端,使电机急停
lcall PANTING   ;调用判停程序,能从判停程序中返回,说明机已停
setb p2.3          ;断开BRK端,解除急停状态
clr p0.7            ;接通DIR端,使电机逆时针转动
lcall XIANSHI      ;显示设定速度
LJMP START    ;执行完启动程序后,回到检测按键状态程序

 

;*****************急停程序*********************
JITING:
LCALL YANSHI   ;调用延时子程序,目的:软件消除按键抖动
JNB P0.2,JI
LJMP START ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序
JI:    
clr p2.3          ;接通BRK端,使电机急停
lcall PANTING      ;调用判停程序,若能从中返回,说明电机已停
LJMP START   ;执行完启动程序后,回到检测按键状态程序

 

;***************加速程序,每按一次键,加速500rpm****************
JIASU:
LCALL YANSHI  ;调用延时子程序,目的:软件消除按键抖动
JNB P0.3,JIA
LJMP START   ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序
JIA:  
mov a,p2     ;将p2的值复制到累加器a中
anl a,#07h     ;取ch3ch2ch1的值,并放到累加器a中    
jz START      ;若a中值为0,则速度已经最大,不再加速,回到检测按键状态程序       
mov r0,p2
dec r0
mov p2,r0           ;加速500rpm(参考电机驱动器说明中的多段速度选择部分)
lcall XIANSHI       ;显示设定的速度 
LJMP START      ;执行完启动程序后,回到检测按键状态程序

 

;********************减速程序,每按一次键,减速500rpm****************
JIANSU:
LCALL YANSHI  ;调用延时子程序,目的:软件消除按键抖动
JNB P0.4,JIAN
LJMP 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,P2
inc a    
mov P2,a    ;减速500rpm(参考电机驱动器说明中的多段速度选择部分)
lcall XIANSHI       ;显示设定的速度 
ljmp START   ;执行完启动程序后,回到检测按键状态程序

 


;********************停止程序***********************
TINGZHI:
LCALL YANSHI  ;调用延时子程序,目的:软件消除按键抖动
JNB P0.5,TING
LJMP START    ;软件消抖后,若p0.0为1,则认为按键未按下,回到检测按键状态程序
TING:   
setb p0.6        ;p0.6接R/S端,为1,则与COM端断开
lcall PANTING     ;调用判停程序,若能从中返回,说明电机已停
LJMP START     ;执行完启动程序后,回到检测按键状态程序

 

;*****************延时10ms,这是一个子程序,功能是延时10毫秒*************
YANSHI:
mov a,#0          ;对累加器a置零,延时用
y:    
mov r1,#00h       ;对寄存器r1置零,延时用
inc r1
cjne r1,#0ffh,y    ;延时1ms
inc a
cjne a,#10,y      ;延时10×1=10ms
ret

 

;*******判停程序,这是一个子程序,若能从判停程序中返回,则说明电机已停********
PANTING:
jnb p2.4,yanshi250ms ;若speed端为0,则进入延时程序
ajmp PANTING   ;若speed端为1,则返回PANTING,等待speed端出现0电平
yanshi250ms:
clr p2.6            ;允许对计数器置数
mov p3,#08h           ;对计数器置入数8
setb p2.6           ;计数器开始计数
mov a,#0            ;对累加器a置零,延时用
y250:    
mov r1,#00h         ;对寄存器r1置零,延时用
inc r1
jb p2.5,PANTING     ;若期間Tc为1,则电机未停,返回PANTING,继续判断
cjne r1,#0ffh,y250     ;延时1ms
inc a
cjne a,#250,y250      ;延时250ms,
ret    
;若至延时结束Tc一直不改变状态,则说明speed端口无脉冲输出,认为电机停转,程序
;返回。
;在电机停转之前,单片机不响应按键状态的改变。
;*******************显示程序,这是一个子程序**************************
XIANSHI: 
mov a,p2             ;将当前的速度设定值读入a中
anl a,#07h          ;取ch3ch2ch1的值,存入a中
mov b,#4
mul ab      ;取得低位速度值对应的相对地址,存入a中
add a,r3             ;得到低位字符地址,放在a中
mov scon,#00h       ;初始化串行口方式0
mov 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    ;发送四个字符
         ret
tab:   db 03h,03h,49h,0dh
      db 03h,03h,03h,0dh
      db 03h,03h,49h,27h
      db 03h,03h,03h,27h
      db 03h,03h,49h,9fh
      db 03h,03h,03h,9fh
      db 03h,03h,49h,0ffh
      db 03h,0ffh,0ffh,0ffh

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -