前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计分享|基于单片机的步进电机(汇编)

设计分享|基于单片机的步进电机(汇编)

作者头像
电子工程师成长日记
发布2022-07-27 19:03:15
6920
发布2022-07-27 19:03:15
举报
文章被收录于专栏:电子工程师成长日记
具体实现功能

具体功能:

设置三个按键,第一个按键按下电机正转,第二个按键按下电机反转,第三个按键按下电机停止。

设计介绍

单片机介绍

51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。

设计思路

文献研究法:搜集整理相关单片机智能手环系统相关研究资料,认真阅读文献,为研究做准备;

调查研究法:通过调查、分析、具体试用等方法,发现单片机智能手环系统的现状、存在问题和解决办法;

比较分析法:比较不同单片机智能手环系统的具体原理,以及同一类传感器性能的区别,分析单片机智能手环系统的研究现状与发展前景;

软硬件设计法:通过软硬件设计实现具体硬件实物,最后测试各项功能是否满足要求。

设计内容

01

仿真图

本设计利用protues8.7软件实现仿真设计,具体如图。

Protues也是在单片机仿真设计中常用的设计软件之一,通过设计出硬件电路图,及写入驱动程序,就能在不实现硬件的情况进行电路调试。另外,protues还能实现PCB的设计,在仿真中也可以与KEIL实现联调,便于程序的调试,且支持多种平台,使用简单便捷。

02

程序

本设计由汇编语言编写,具体如下:

代码语言:javascript
复制
 K1 EQU P0.0 
       K2 EQU P0.1
       K3 EQU P0.2
       ORG 0000H
       LJMP MAIN
       ORG 0100H
MAIN:MOV SP,50H
STOP:MOV P1,#0FFH  ;步进电机停转
LOOP:JNB K1,MZZ2   ;是否K1按下,是则转正转模块
      JNB K2,MFZ2   ;是否K2按下,是则转反转模块
      JNB K3,STOP1  ;是否K3按下,是则转步进电机停转
      JMP LOOP      ;循环
STOP1:ACALL DELAY  ;按K3键,消除抖动
      JNB K3,$     ;K3放开否?
      ACALL DELAY  ; 放开消除抖动
      JMP  STOP    ; 步进电机停转
MZZ2:ACALL DELAY  ;按K1键,消除抖动
      JNB K1,$     ;K1放开否?
      ACALL DELAY  ; 放开消除抖动
      JMP  MZZ    ; 转步进电机正转模块
MFZ2:ACALL DELAY  ;按K2键,消除抖动
      JNB K2,$     ;K2放开否?
      ACALL DELAY  ; 放开消除抖动
      JMP  MFZ    ; 转步进电机反转模块
MZZ: MOV R0,#00H  ;置表初值
MZZ1:MOV A,R0    
     MOV DPTR,#TABLE ;表指针
     MOVC A,@A+DPTR  ;取表代码
     JZ MZZ  ;是否取到结束码?
     MOV P1,A       ;从P1输出,正转
     JNB K3,STOP1   ; 是否K3按下,是则转步进电机停转
     JNB K2,MFZ2    ; 是否K2按下,是则转反转模块
     ACALL DELAY    ; 步进电机转速
     INC  R0        ;取下一个码
     JMP  MZZ1      
     RET;步进电机反转模块程序如下所示。
MFZ:MOV R0,#05    ; 反转到TABLE表初值
MFZ1:MOV A,R0    
     MOV DPTR,#TABLE ;表指针
     MOVC A,@A+DPTR  ;取表代码
     JZ  MFZ         ;是否取到结束码?
     MOV P1,A       ;从P1输出,反转
     JNB K3,STOP1   ; 是否K3按下,是则转步进电机停转
     JNB K1,MZZ2    ; 是否K1按下,是则转正转模块
     ACALL DELAY    ; 步进电机转速
     INC  R0        ;取下一个码
     JMP  MFZ1      
     RET
DELAY:MOV R5,#40  ;延时20ms
DEL1:MOV R6,#248
     DJNZ R6,$
     DJNZ R5,DEL1
     RET 
;;控制代码表:
TABLE:DB 0FCH,0F9H,0F3H,0F6H;;正转
      DB 00H ;               ;正转结束码
      DB 0F7H,0F3H,0FBH,09H;;反转
      DB 0FDH,0FCH,0FEH,0F6H;
      DB 00H;                ;反转结束码
      END                   ;程序结束
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子工程师成长日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档