A33基于51单片机汇编语言步进电机控制Proteus设计
作者:单片机仿真   类别:51单片机仿真    日期:2026-10-23 09:01:56    阅读:8 次   消耗积分:10 分

image.png

A33基于51单片机汇编语言步进电机控制Proteus设计

用51单片机汇编语言控制四相步进电机正反转:P1口低四位输出八拍励磁序列,P0.0、P0.1两个按键分别控制正转和反转,松手即停。核心是一张8字节的励磁表,指针在表里加一或减一,电机就正转或反转一步。

一、设计实现功能

本设计功能简介:使用51单片机和汇编语言设计一个步进电机正反转控制的proteus仿真,要求以下功能:

1、使用汇编语言编写程序。

2、P1口输出八拍励磁信号,驱动四相步进电机。

3、按P0.0正转、按P0.1反转,松开按键电机停止。

4、正转指针加一、反转指针减一,走完8拍自动回到起点。

二、资源汇总

1、仿真文件:Proteus工程,7.8和8.6两个版本都能直接打开。

2、程序文件:main.asm汇编源码,以及编译好的cx.hex。

3、修改日期小工具:购买资料后赠送,用于修改文件创建日期,下载地址在文章最后。

三、设计介绍

拿到压缩包之后先解压,没有解压软件的直接搜"压缩",下载解压软件后先解压文件,再运行仿真和程序。

图1 Proteus仿真总览

仿真原理图

步进电机的四相绕组接P1.0~P1.3,中间抽头接5V(共阳接法),某一相输出低电平,对应的绕组就通电。励磁表放在程序最后:

`asm
TAB1: DB 02H,06H,04H,0CH
DB 08H,09H,01H,03H
`

这8个字节是标准的八拍(半步)序列,按二进制拆开看就明白了:

步表值二进制通电相说明
102H0010B单相
206H0110B+C两相
304H0100C单相
40CH1100C+D两相
508H1000D单相
609H1001D+A两相
701H0001A单相
803H0011A+B两相

单相、两相交替,所以叫八拍;八拍走完电机转过一个齿距,步距角是四拍方式的一半,转动更平滑、抖动更小。

主程序是个"按键决定方向、查表输出、延时"的循环:

`asm
WAIT: MOV P1,R0 ;初始状态,03H(A+B两相通电)
MOV P0,#0FFH ;P0置输入态
JNB P0.0,POS ;P0.0按下→正转
JNB P0.1,NEG ;P0.1按下→反转
SJMP WAIT
`

正转分支查表取值、输出、INC R4,到8就回0;反转分支DEC R4,到0再从7开始。按键一直按着,程序就一直在KEY这个循环里推进指针,电机连续转;松手后P0读回全1,退回WAIT,电机停在最后一拍上保持通电,这是步进电机的特点——停转也有保持力矩。

转速由DELAY决定,这段延时的算法是三层嵌套:内层DJNZ R7,$跑256次共512个机器周期,中间层128次,外层5次,合计327680个机器周期,12MHz晶振下约0.33秒一步。这个速度肉眼能看清每一步,适合演示;实际使用要提速,把外层MOV R6,#5改成1,或者把中间层的MOV R5,#080H改小,转速立刻上来。

特别注意: P0口做输入必须先把端口写1(程序里的MOV P0,#0FFH),否则读回的一直是0,看起来像按键一直按着;电机只抖不转,先查四相线序有没有接对,把P1.0~P1.3按A、B、C、D顺序接到电机四端,错相会原地抖动;电机发烫,是长时间单相通电加保持电流,仿真里无所谓,实物要降流或加断电;转速调到很快时出现丢步,是延时小于电机响应时间,减速或者换用两相通电的整步方式会更稳;仿真里Proteus的步进电机要选MOTOR-STEPPER,接六线(四相+两个公共端),公共端接VCC。

四、日期修改

资料中提供修改日期的小工具,购买资料赠送修改文件创建日期的小工具,三个下载地址都在文章最后。

五、资料下载

付费后获取下载链接,直接下载到电脑上,然后解压即可!每个链接前面都配了二维码,手机扫码可以直接跳转。

/

版权所有,转载本站文章请注明出处:proteus单片机
上一篇:A32基于51单片机汇编语言上下限报警器Proteus设计
下一篇:A34基于51单片机汇编语言直流电机调速Proteus设计
${comment['nickname']}   ${comment['createtime']}
  
       
${comment.content}
${reply.nickname} 回复 ${comment.nickname}    ${reply.createtime}
     
  
回复内容:${reply.content}