电路说明:
1. 键盘接P0口
2. 启动电路接P2口的P2.0~P2.3
3. 显示电路接P1口
程序清单:
   ORG  0000H
START:    MOV  30H,#00H        ; 清除键盘显示器RAM地址30H~32H
          MOV  31H,#00H
          MOV  32H,#00H
          MOV  P1,#00H         ; 显示00
          MOV  P2,#0FFH        ; 步进马达停止运转
          SETB  P3.0           ; P3.0  LED熄,表示正转
          MOV  21H,#05H        ; 正转至TABLE3 取码指针初值
     L1:  ACALL  KEY           ; 调用键盘扫描子程序
          MOV   20H,A          ; 键码值暂存入20H
          XRL  A,#0AH          ; 是否按"*"
          JZ   SET0            ; 是则启动步进电机
          MOV  A,20H           ; 取码值载入ACC
          XRL  A,#0BH          ; 是否按"#"
          JZ   START           ; 是则步进马达停止动转
          MOV  A,20H           ; 取码值勤载入20H
          XRL  A,#0CH          ; 是否按"A"
          JZ   CCW             ; 是则设定正反
          MOV  A,20H           ; 取码值暂存入场20H
          XCH  A,30H           ; 现按键值存入(30H)地址
          XCH  A,31H           ; 旧(30H)地址的值存入(31H)地址
          MOV  A,31H           ; 将(30H)\(31H)合并为两位数
          SWAP  A              ; 31H)为十位数
          ORL  A,30H           ; 加(30H)个位数
          MOV  32H,A           ; 存入(32H)地址
          MOV  P1,A            ; 输出至P1显示
          JMP  L1
;******************* 正返转设定程序 ***********************
CCW:      CPL  P3.0            ; 将p3.0反相,正反转换
          JB   P3.0,FOR        ; 检测P3.0=1?1为正转,0为反转
REV:      MOV  21H,#00H        ; 反转至TABLE3 的取码指针初值存入(21H)
          JMP  L1              ; 返回,继续进行键盘扫描
FOR:      MOV  21H,#05H        ; 正转至TABLE3的取码指针初值存入(21H)
          JMP  L1              ; 返回,继续进行键盘扫描
;************** 步进电机转动驱动控制程序 ******************
SET0:     MOV  A,32H           ; 载入显示器值
          CJNE A,#00H,SETX     ; 是否为00?是则表示未设定转数
          JMP  L1              ; 继续进行键盘扫描
SETX:     MOV  R3,#20          ; 一转为20步
SET1:     MOV  R0,21H          ; 载入取码指针值
SET2:     MOV  A,R0原文请找QQ324,9114
          MOV  DPTR,#TABLE3    ; 至TABLE3取码
          MOVC  A,@A+DPTR
          JZ   SET1            ; 是否取到"0"?
          MOV  P2,A            ; 输出至P2运转
          LCALL  DELAY         ; 延时时间决定转速
          INC  R0        毕业论文http://www.751com.cn/      ; 取下一步
          DJNZ  R3,SET2        ; 20步完?
          MOV  A,30H           ; 是,则载入显示的个位数
          CJNE   A,#00H,B1     ; 个位数是否为00?
          MOV  A,31H           ; 个位数为0,则载入十位数
          CJNE  A,#00H,B2       ; 十位数是否为0?
          JMP  START           ; 十位个位都为0,则停止运转,返回
B1:       DEC  30H             ; 个位数不为0,则个位数减1
          JMP  B3      
B2:       MOV  30H,#09H        ; 个位数为0,十位数不为0,则个位数为9
          DEC  31H             ; 十位数减1
          JMP  B3      
B3:       MOV  A,31H           ; 将十位数与个位数合并送32H,1988