电机调速程序.docx

上传人:b****7 文档编号:23581223 上传时间:2023-05-18 格式:DOCX 页数:12 大小:77.63KB
下载 相关 举报
电机调速程序.docx_第1页
第1页 / 共12页
电机调速程序.docx_第2页
第2页 / 共12页
电机调速程序.docx_第3页
第3页 / 共12页
电机调速程序.docx_第4页
第4页 / 共12页
电机调速程序.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

电机调速程序.docx

《电机调速程序.docx》由会员分享,可在线阅读,更多相关《电机调速程序.docx(12页珍藏版)》请在冰豆网上搜索。

电机调速程序.docx

电机调速程序

ORG  0034h

Graphemic:

DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,84H,0FFH;共阳0~9字型码              

;PN1   EQU  30H               ;PN1用来记脉冲的低二位数

;PN2   EQU  31H               ;PN2用来记脉冲的高二位数

PN3   EQU  32H                 ;PN3用来做延时程序

PN4   EQU  33H                 ;PN4用来做延时程序

        ORG100H

MAIN:

        MOVR6,#00H           ;用R6来辅助显示计时

        MOVB,#00H

        CLRKG

        CLRW

        MOVTMOD,#01H      ;T1和T0都是方式一计数

        MOVTL0,#18H

        MOVTH0,#0E0H

        ;MOV  TL1,#0AFH

       ;MOV  TH1,#3CH

        SETBEA

        SETBET0          ;T0中断允许

        SETBTR0

        SETBP3.4

       ;SETBET1        ;T1中断允许

        ;SETBTR1

        SETBPT0          ;设置T1T2的中断优先,都设其为高级中断

       ;SETBPT1

        MOVR1,#5H       ;默认开始的时候速度为5档

        SETBKK1

        SETBKK2

        MOV  A,#00H     ;把PN1,PN2都清零

        ;MOV  PN1,A

       ;MOV  PN2,A

        MOV  DPTR,#Graphemic

        ANL  P1,#0FH

       ;ANL  P0,#00H

mainline:

        jb  p2.2,ks          ;关机等待

      clr  w

      clr  kg

      setbp1.0

      setbp1.1

      clr  p1.2

      clr  p1.3

ks:

   jnb  kg,wait     ;是否开机?

开了就往下执行,不开就跳到开机等待

     

        ANL  P1,#00011111B;显示最后一位为1,即是可以工作了的意思

        SETBP1.4

        MOV  A,#1H

        MOVC  A,@A+DPTR

        MOV  P0,A

        SETBP3.6

        NOP

        NOP

        CLR  P3.6

        LCALLDELAY

SPD2:

        JB  P2.1,KEY1

        CLRKK1

KEY1:

   JNBP2.1,KEY2;当p2.1高电平时就往下执行,但是只要执行一次后,kk就为1,往后就不再执行     

        JB  KK1,KEY2

        INCR1

        SETBKK1       ;这段的任务是不用延时也能消除按键抖动的程序

KEY2:

   JB  P2.4,KEY3

        CLRKK2

KEY3:

   JNBP2.4,pos      

        JB  KK2,pos    

        SETBKK2

        DECR1    

pos:

  jb   p2.0,rev      ;正转按钮

      setbt

      setbw

rev:

  jb   p2.3,tt        ;反转按钮

      clr  t

      setbw

tt:

   jnb  w,pos          ;选择正反转了吗,选了电机就开始转了,不选电机就不转,等待正反转按钮

      jb   t,positive

      jnb  t,reverse

                        

positive:

               ;电机正转

      setb  p1.0

      clr  p1.1

      clr  p1.2

      setb  p1.3

      lcallBIJIAO0    ;PWM调制

     ;lcallShowSpeed     ;显示速度程序

      LCALLshowdigit1

      Ljmpmainline

reverse:

                ;电机反转

      clr  p1.0

      setbp1.1

      setbp1.2

      clr  p1.3

      lcallBIJIAO0    ;PWM调制

     ;lcallShowSpeed     ;显示速度程序

      LCALLshowdigit2

      Ljmpmainline

        

wait:

mov  a,#00h;如果不开始,那么程序就在这里等待,

      mov  p0,a

wait1:

setbp0.6

      setbp0.7

      anl  p1,#0fh

      setbp1.4

      setbp1.5

      setbp1.6

      setbp1.7

      SETBP3.6

      NOP

      CLR  P3.6

      lcalldelay

      jb   p2.5,wait1  ;开机等待

      setbkg

      Ljmpmainline

showdigit1:

      ANL  P1,#10001111B;显示12在首位

      SETBP1.7

      MOV  A,#1H

      MOVC  A,@A+DPTR

      MOV  P0,A

       SETBP3.6

      NOP

      NOP

      CLR  P3.6

      LCALLDELAY

      ANL  P1,#01001111B

      SETBP1.6

      MOV  A,#2H

      MOVC  A,@A+DPTR

      MOV  P0,A

       SETBP3.6

      NOP

      NOP

      CLR  P3.6

      LCALLDELAY

      RET

showdigit2:

      ANL  P1,#10001111B;显示21在首位

      SETBP1.7

      MOV  A,#2H

      MOVC  A,@A+DPTR

      MOV  P0,A

      SETBP3.6

      NOP

      NOP

      CLR  P3.6

      LCALLDELAY

      ANL  P1,#01001111B

      SETBP1.6

      MOV  A,#1H

      MOVC  A,@A+DPTR

      MOV  P0,A

       SETBP3.6

      NOP

      NOP

      CLR  P3.6

      LCALLDELAY

      RET

;ShowSpeed:

               ;由于没有买到光电编码器,所以智能把数码管显示换成其他的功能

;      MOV  A,R6

;     SUBBA,#3FH       ;7Dh=125即1000/8=125秒

;     JNZ  else1

;     MOV  R6,#00H

      ;可以每秒重复输出很多次,才能在数码管里显示出来,但是还要再定义两个变量

;     ANL  P1,#0FH;置位(输出个位)

;     SETBP1.4

;      CLR  P3.6

;     MOV  A,PN1;把最低速度的个位输出

;     ANL  A,#0FH;把A和0F相与,求出A的低四位字节表示的数

     

;     MOVC  A,@A+DPTR

;     MOV  P0,A    ;输出个位数

;     SETBP3.6

;     NOP

;     CLR  P3.6  

;     LCALLDELAY;加延时程序

;    

;     ANL  P1,#2FH;置位(输出十位)

;     SETBP1.5

;     MOV  A,PN1

;     SWAPA  ;高四位和低四位内容交换

;     ANL  A,#0FH;把低四位清零,然后输出十位的数

;     MOVCA,@A+DPTR

;     MOV  P0,A    ;输出十位

;     SETBP3.6

;     NOP

;     CLR  P3.6

;     LCALLDELAY;加延时程序

     

;     ANL  P1,#4FH    ;置位(输出百位数)

;     SETBP1.6

;     MOV  A,PN2

;     ANL  A,#0FH

;     MOVCA,@A+DPTR

;     MOV  P0,A     ;输出百位数

;     SETBP3.6

;     NOP

;     CLR  P3.6

;     LCALLDELAY;加延时

;     ANL  P1,#8FH    ;置位(输出千位数)

;     SETBP1.7

;     MOV  A,PN2

;     SWAPA

;     ANL  A,#0FH

;     MOVCA,@A+DPTR

;     MOV  P0,A    ;输出千位数

;     SETBP3.6

;     NOP

;     CLR  P3.6

;     LCALLDELAY                                              

;else1:

;        JB  P3.3,SPD1         ;这以段的任务是不用延时也能消除按键抖动的程序

;       CLRKK3

;SPD1:

   JNBP3.3,SPD2       ;当p3.3高电平时就往下执行,但是只要执行一次后,kk就为1,往后就不再执行     

;       JB  KK3,SPD2

;       MOVA,PN1            

;       INCPN1

;       CLRCY     ;清空进位位

;       MOVA,PN1

;       DA  A

;       MOVPN1,A

;       JNBCY,XIAMIAN  ;如果最高位产生进位,就在高一位PN2加一

;       INCPN2

;XIAMIAN:

MOVPN1,A       

;       SETBKK3        

;       CLRPN1

;       INCPN2

;       MOVA,PN2

;       DA  A

;       MOVPN2,A

;ShowSpeedEnd:

RET

BIJIAO0:

MOVA,R1      

        SUBBA,#0H       

        JZ  JJ0

BIJIAO1:

MOVA,R1

        SUBBA,#1H

        JZ  JJ1

               

BIJIAO2:

MOVA,R1

        SUBBA,#2H

        JZ  JJ2

        

BIJIAO3:

MOVA,R1

        SUBBA,#3H

        JZ  JJ3

        

BIJIAO4:

MOVA,R1

        SUBBA,#4H

        JZ  JJ4

        

BIJIAO5:

MOVA,R1

        SUBBA,#5H

        JZ  JJ5

        

BIJIAO6:

MOVA,R1

        SUBBA,#6H

        JZ  JJ6

       

BIJIAO7:

MOVA,R1

        SUBBA,#7H

        JZ  JJ7

        

BIJIAO8:

MOVA,R1

        SUBBA,#8H

        JZ  JJ8

        

BIJIAO9:

MOVA,R1

        SUBBA,#9H

        JZ  JJ9

       

BIJIAO10:

MOVA,R1

        SUBBA,#0AH

        JZ  JJ10

        MOVA,R1       ;如果R1的值小于零,则速度和pwm0的速度不变。

        SUBBA,#0FFH

        JNZ  PWM100     ;这一小段是限制调速范围只能在0-10之间

        MOVR1,#0H

        AJMPPWM0

PWM100:

MOVR1,#0AH    ;如果r1>10则直接给r1赋值10,然后转速和最大速度不变

        LJMPPWM10

JJ0:

    LJMPPWM0      ;由于JZ跳转的距离不够长,所以这里只能用以下几句转跳转来辅助跳转

JJ1:

    LJMPPWM1

JJ2:

    LJMPPWM2

JJ3:

    LJMPPWM3

JJ4:

    LJMPPWM4

JJ5:

    LJMPPWM5

JJ6:

    LJMPPWM6

JJ7:

    LJMPPWM7

JJ8:

    LJMPPWM8

JJ9:

    LJMPPWM9

JJ10:

   LJMPPWM10

PWM0:

   MOVR2,#0FFH

        MOVR3,#0FFH

        MOVR4,#0f8H

        MOVR5,#02fH

        MOV  A,#0H

        LCALLSHOW    

        LJMPMAINLINE1

PWM1:

   MOVR2,#0FFH

        MOVR3,#037H

        MOVR4,#0F8H

        MOVR5,#0F7H

         MOV  A,#1H

        LCALLSHOW

        LJMPMAINLINE1

PWM2:

   MOVR2,#0FEH

        MOVR3,#06FH

        MOVR4,#0F9H

        MOVR5,#0BFH

        MOV  A,#2H

        LCALLSHOW

        LJMPMAINLINE1

PWM3:

   MOVR2,#0FDH

        MOVR3,#0A7H

        MOVR4,#0FAH

        MOVR5,#087H

         MOV  A,#3H

        LCALLSHOW

        LJMPMAINLINE1

PWM4:

   MOVR2,#0FCH

        MOVR3,#0DFH

        MOVR4,#0FBH

        MOVR5,#4FH

         MOV  A,#4H

        LCALLSHOW

        LJMPMAINLINE1

PWM5:

   MOVR2,#0FCH

        MOVR3,#18H

        MOVR4,#0FCH

        MOVR5,#18H

         MOV  A,#5H

        LCALLSHOW

        LJMPMAINLINE1

PWM6:

   MOVR2,#0FBH

        MOVR3,#4FH

        MOVR4,#0FCH

        MOVR5,#0DFH

         MOV  A,#6H

        LCALLSHOW

        LJMPMAINLINE1

PWM7:

   MOVR2,#0FAH

        MOVR3,#087H

        MOVR4,#0FDH

        MOVR5,#0A7H

         MOV  A,#7H

        LCALLSHOW

        LJMPMAINLINE1

PWM8:

   MOVR2,#0F9H

        MOVR3,#0BFH

        MOVR4,#0FEH

        MOVR5,#6FH

         MOV  A,#8H

        LCALLSHOW

        LJMPMAINLINE1

PWM9:

   MOVR2,#0F8H

        MOVR3,#0F7H

        MOVR4,#0FFH

        MOVR5,#37H

         MOV  A,#9H

        LCALLSHOW

        LJMPMAINLINE1

PWM10:

  MOVR2,#0f8H

        MOVR3,#02FH

        MOVR4,#0FFH

        MOVR5,#0FFH

        MOV  A,#0AH

        LCALLSHOW

        LJMPMAINLINE1

MAINLINE1:

RET

show:

  ANL  P1,#00101111B;显示速度档次

        SETBP1.5    

        MOVC  A,@A+DPTR

        MOV  P0,A

        SETBP3.6

        NOP

        NOP

        CLR  P3.6

        LCALLDELAY

        RET

DELAY:

  MOVPN4,#08H;40ms延时子程序

L7:

     MOVPN3,#0FAH

L8:

     DJNZPN3,L8

        DJNZPN4,L7

        RET

;CTCA:

   MOV  TL1,  #0AFH  ;定时一秒钟输出速度值一次(定时0.05秒R6自加一)

;       MOV  TH1,  #3CH

;       INC  R6

;       RETI       

CTC0:

  

        JNB  P3.4,CTC1          ;这里是定时中断程序,p3.4的高低电平就是在这里控制的

        JBP3.4,CTC2

CTC1:

   MOVTL0,R3

        MOVTH0,R2

        CPLP3.4           

        RETI

CTC2:

   MOVTL0,R5

        MOVTH0,R4

        CPLP3.4

        RETI

END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1