步进电机控制及其汇编程序.docx

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

综合实践报告之第二次大作业

题目:步进电机控制设计

说明:在工业电气自动化工程中,步进电机是一种常用的控制设备,它以脉冲信号控制电机的转速,在数控机床、仪器仪表、计算机外围设备以及其它自动设备中有广泛的应用。

步进电机是指一步步走的电动机,所谓“步”指转动角度,每步都会使电机转过一个固定的角度。步进电机有不同的种类,但其控制方法均相同,均以脉冲信号进行驱动,很适合使用单片机来进行控制。

本次大作业要求设计一个步进电机的控制局部。

采用2相制5线步进电机,其结构如下列图所示,线圈中心抽头X1与X2连接在一起;

步进电机采用1相激磁法,即在每一个瞬间只有一个线圈导通,其它线圈休息;

单片机与步进电机之间可采用ULN2003类的驱动IC;

要求:

查找资料,设计出步进电机的硬件连接电路图;

给出控制软件流程图;

用汇编语言写出控制软件的代码。

提示:本作业对电机的转动方向不做要求,在实际应用中,改变线圈激磁的顺序可以改变步进电机的转动方向,每送一次激磁信号后应经过一小段时间延时,让步进电机有足够的时间建立鼓励磁场及转动。可以使用单片机的P0.0~P0.3端口输出控制信号,经驱动IC传至步进电机。

电路图设计说明

此控制电路选用AT89S51型单片机作为驱动时序的输出控制器,其P0.1-P0.3输出作为两相四线步进电机的时序信号,经过驱动芯片ULN2003放大后输入到两相四线步进电机的输入端口;单片机P1.0-P1.2作为控制指令的输入按键K1-K3的输入端口,K1为电机正转按键,K2为电机正转按键,K3为电机停止按键,这三个按键均为高电平输入有效,按一下K1电机正转,按一下K2电机反转转,按一下K3电机停止。其硬件电路如图一:

控制程序流程图

由于ULN2003是非们输出电路所以P0.0-P0.3端口输出低电平才是有效驱动电平,其控制程序流程图如图二:

控制程序

K1?????BIT?P1.0K2?????BIT?P1.1K3?????BIT?P1.2

K_OLD??EQU?30HK_NEW??EQU?31H

;---------------------------------------------------------ORG?0000HJMP?MAINORG?0030H;---------------------------------------------------------

MAIN:MOV?SP,#60HMOV?P1,#00HMOV?P0,#0FFHMOV?K_OLD,#04H

MAIN1:MOVR2,#4;给R2赋值4循环移位次数CALL?K_SCAN???????????;键扫描MOV?A,K_NEWCJNE?A,#00H,MAIN2;是否有按键按下MOV?A,K_OLD???????;JMP?MAIN4

MAIN2:CALL?DELAY??????????????;延时示去抖动CALL?K_SCAN???????????;再次判断键是否按下MOV?A,K_NEWCJNE?A,#00H,MAIN3;再次判断键是否按下MOV?A,K_OLDJMP?MAIN4MAIN3:MOV?K_OLD,AMAIN4:JBACC.0,LOOP1????????;K1按下既P1.2-P1.0输入为001电机正转指令JBACC.1,LOOP2????????;K2按下既P1.2-P1.0输入为010电机反转指令JBACC.2,LOOP3????????;K3按下既P1.2-P1.0输入为110电机停止指令JMP?MAIN1

;电机正转控制时序

LOOP1:

MOVA,#0FEHLOPP1A:

MOV?P0,ACALLDELAY;延时

RLCA;左移1位

DJNZR2,LOPP1AJMP?MAIN1

;电机反转控制时序

LOOP2:

MOVA,#0F7HLOPP2A:

MOV?P0,ACALLDELAY;延时

RRCA;右移1位

DJNZR2,LOOP1AJMP?MAIN1

;电机停止控制时序

LOOP3:

MOVA,#0FFH

MOV?P0,A;P0.0-P0.3输出1111电机停止JMP?MAIN1

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

;K_SCAN:

;???????MOV?K_NEW,#00H

;???????MOV?A,P1;将P1端口的输入状态读入

;???????ANL?A,#07H;保存P1端口

文档评论(0)

181****7662 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档