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

📄 bujlndianji lingwai.txt

📁 步进电机控制系统
💻 TXT
字号:
StartEnd bit 01H ;起动及停止标志

MinSpd   EQU     25 ;起始转动速度

MaxSpd   EQU    100 ;最高转动速度

Speed      DATA    23H ;流动速度计数

DjCount DATA    24H ;控制电机输出的一个值,初始为11110 111

Hidden    EQU       10H ;消隐码

Counter   DATA     57H ;显示计数器

DISPBUF DATA    58H ;显示缓冲区


   ORG    0000H

   AJMP   MAIN

       ORG       000BH

       JMP        DISP

       ORG       001BH

       JMP        DJZD

    ORG     30H

MAIN:   

    MOV   SP,#5FH

    MOV   P1,#0FFH

       MOV      A,#Hidden

       MOV      DispBuf,A

       MOV      DispBuf+1,A

       MOV      DispBuf+2,A


       MOV      DjCount,#11110111B     

    MOV   SPEED,#MinSpd ;起始转动速度送入计数器

    CLR    StartEnd ;停转状态

       MOV      TMOD,#00010001B      ;

       MOV      TH0,#HIGH(65536-3000)

       MOV      TL0,#LOW(65536-3000)

       MOV      TH1,#0FFH;

       MOV      TL1,#0FFH

       SETB      TR0

       SETB      EA

       SETB      ET0

       SETB      ET1


LOOP: ACALL   KEY   ;键盘程序

    JNB     F0,m_NEXT1 ;无键继续

    ACALL   KEYPROC ;否则调用键盘处理程序

m_NEXT1:

       MOV      A,Speed

       MOV      B,#10

       DIV        AB

       MOV      DispBuf+5,B ;最低位

       MOV      B,#10

       DIV        AB

       MOV      DispBuf+4,B

       MOV      DispBuf+3,A

       JB          StartEnd,m_Next2

       CLR        TR1        ;关闭电机

       JMP        LOOP

       ORL       P1,#11110000B

m_Next2:

       SETB      TR1               ;启动电机

    AJMP   LOOP            ;主程序结束

;---------------------------------------

D10ms: 

……

;---------延时程序,键盘处理中调用

KEYPROC:

    MOV     A,B ;获取键值

    JB      ACC.2,StartStop ;分析键的代码,某位被按下,则该位为1

    JB      ACC.3,KeySty

    JB      ACC.4,UpSpd

    JB      ACC.5,DowSpd

    AJMP    KEY_RET

StartStop:

    SETB      StartEnd    ;启动

    AJMP    KEY_RET

KeySty: 

       CLR        StartEnd; ;停止

    AJMP    KEY_RET

UpSpd:

    INC     SPEED;

    MOV    A,SPEED

    CJNE    A,#MaxSpd,K1    ;到了最多的次数?

    DEC     SPEED ;是则减去1,保证下次仍为该值       

K1:

    AJMP    KEY_RET

DowSpd:

    DEC           SPEED

    MOV     A,SPEED

    CJNE    A,#MAXSPD,KEY_RET ;不等(未到最大值),返回

       MOV             SPEED,#MinSpd;         

KEY_RET:

    RET


KEY:    

……获取键值的程序

    RET


DjZd:      ;定时器T1用于电机转速控制

       PUSH     ACC

       PUSH     PSW

       MOV             A,Speed

       SUBB     A,#MinSpd     ;减基准数

       MOV             DPTR,#DjH

       MOVC    A,@A+DPTR

       MOV             TH1,A

       MOV             A,Speed

       SUBB     A,#MinSpd

       MOV             DPTR,#DjL

       MOVC    A,@A+DPTR

       MOV             TL1,A     

       MOV             A,DjCount

       CPL        A

       ORL              P1,A

       MOV             A,DjCount

       JNB        ACC.7,d_Next1

       JMP        d_Next2

d_Next1:

       MOV             DjCount,#11110111B

d_Next2:

       MOV             A,DjCount

       RL          A

       MOV             DjCount,A      ;回存

       ANL              P1,A

       POP        PSW

       POP        ACC

       RETI


DjH:       DB 76,82,89,95,100,106,110,115,119,123,12……

DjL: DB 0,236,86,73,212,0,214,96,163,165

……


DISP:     ;显示程序

       POP        PSW

       POP        ACC

……

       RETI

BitTab:    DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH

DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH

END

⌨️ 快捷键说明

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