步进电机控制实验
步进电机实验报告册(3篇)

第1篇一、实验目的1. 熟悉步进电机的工作原理和特性。
2. 掌握步进电机的驱动方式及其控制方法。
3. 学会使用常用实验设备进行步进电机的调试和测试。
4. 了解步进电机在不同应用场景下的性能表现。
二、实验设备1. 步进电机:选型为双极性四线步进电机,型号为NEMA 17。
2. 驱动器:选型为A4988步进电机驱动器。
3. 控制器:选型为Arduino Uno开发板。
4. 电源:选型为12V 5A直流电源。
5. 连接线、连接器、电阻等实验配件。
三、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机。
它具有以下特点:1. 转动精度高,步距角可调。
2. 响应速度快,控制精度高。
3. 结构简单,易于安装和维护。
4. 工作可靠,寿命长。
步进电机的工作原理是:通过控制驱动器输出脉冲信号,使步进电机内部的线圈依次通电,从而产生步进运动。
四、实验步骤1. 搭建实验电路(1)将步进电机连接到驱动器上,确保电机线序正确。
(2)将驱动器连接到Arduino Uno开发板上,使用连接线连接相应的引脚。
(3)连接电源,确保电源电压与驱动器要求的电压一致。
2. 编写控制程序(1)使用Arduino IDE编写程序,实现步进电机的正转、反转、调速等功能。
(2)通过串口监视器观察程序运行情况,调试程序。
3. 调试步进电机(1)测试步进电机的正转、反转功能,确保电机转动方向正确。
(2)调整步进电机的转速,观察电机运行状态,确保转速可调。
(3)测试步进电机的步距角,确保步进精度。
4. 实验数据分析(1)记录步进电机的正转、反转、调速等性能参数。
(2)分析步进电机的运行状态,评估其性能。
五、实验结果与分析1. 正转、反转测试步进电机正转、反转功能正常,转动方向正确。
2. 调速测试步进电机转速可调,调节范围在1-1000步/秒之间。
3. 步距角测试步进电机的步距角为1.8度,与理论值相符。
4. 实验数据分析步进电机的性能指标符合预期,可满足实验要求。
步进电控制实验报告

一、实验目的1. 理解步进电机的工作原理及其应用领域。
2. 掌握单片机控制步进电机的技术方法。
3. 熟悉步进电机的驱动电路设计。
4. 通过实验验证步进电机控制系统的性能。
二、实验原理步进电机是一种将电脉冲信号转换为角位移的电机,具有精度高、响应快、控制简单等优点。
其工作原理是:当输入一定频率的脉冲信号时,步进电机按照一定的步距角转动。
步进电机的步距角与线圈匝数、绕组方式有关。
本实验采用单片机控制步进电机,通过编写程序实现步进电机的正转、反转、停止、转速调节等功能。
三、实验设备1. 单片机实验平台:包括51单片机、电源、按键、数码管等。
2. 步进电机驱动模块:用于驱动步进电机,包括驱动电路和步进电机本体。
3. 实验指导书。
四、实验步骤1. 搭建实验电路(1)连接单片机实验平台,包括电源、按键、数码管等。
(2)连接步进电机驱动模块,包括电源、控制线、步进电机本体等。
(3)检查电路连接是否正确,确保无误。
2. 编写控制程序(1)初始化单片机相关端口,包括P1口、定时器等。
(2)编写步进电机控制函数,包括正转、反转、停止、转速调节等功能。
(3)编写主函数,根据按键输入实现步进电机的控制。
3. 下载程序(1)将编写好的程序下载到单片机实验平台。
(2)检查程序是否下载成功。
4. 测试实验(1)观察数码管显示的转速挡次和转动方向。
(2)通过按键控制步进电机的正转、反转、停止和转速调节。
(3)观察步进电机的转动情况,验证控制程序的正确性。
五、实验结果与分析1. 实验结果(1)通过按键控制步进电机的正转、反转、停止和转速调节。
(2)数码管显示转速挡次和转动方向。
(3)步进电机按照设定的方向和转速转动。
2. 实验分析(1)通过实验验证了单片机控制步进电机的可行性。
(2)实验结果表明,控制程序能够实现步进电机的正转、反转、停止和转速调节等功能。
(3)实验过程中,需要对步进电机驱动模块进行合理设计,以确保步进电机的稳定运行。
步进电机控制接口实验

实验一 步进电机控制接口实验一、实验目的通过步进电机控制实验, 学习并行接口电路及其控制程序的设计原理与方法。
二、实验内容基本实验 控制四相步进电机以双八拍方式运行, 自己设置按键来控制电机的启停。
三、实验要求利用MFID 实验平台和步进电机驱动模块板进行硬件连接, 利用MF2KI 集成开发环境进行步进电机软件控制程序的设计、调试, 直到使步进电机正常运行。
四、实验原理1. 步进电机驱动模块板电路原理如图2.1.2所示。
模块板上包括接口的对象永磁式四相步进电机和驱动电路达林顿管TIP, 保护电路74LS373, 相序指示灯以及开关SW1和SW2等。
2.步进电机接口设计原理与方法的详细阐述, 参考计算机接口技术相关参考书。
图2.1.2 步进电机驱动模块电路原理框图五、实验步骤 步骤一: 硬件连接跳线设置: 模块电源L 区 JP8跳接。
单线连法如右图:A 相B 相C 相D 相OE#74LS373开关PA0 PA2 PA4 PA6 PC4 PC0 PC1按键开关T 区SW1 SW2排线接法如右图:步骤二: 将平台的电源开关拔到“内”的位置上。
在配套集成环境下进行硬件检测,来达到初始化芯片的目的。
步骤三: (演示实验步骤)打开集成环境在“演示实验”菜单下点开“基本接口实验”。
在“基本接口实验”中的“并行接口实验”中选择“步进电机”实验进行演示。
步骤四: (学生实验步骤)打开集成环境在“文件”菜单下学生可以选择新建自己的C++/ASM文件或者集成环境自带的C++/ASM参考程序进行调试、运行。
步骤五: 观看实验现象得出结论。
△步进电机接口控制流程图①△步进电机接口控制主程序:NAMA BUJINDIANJIDATA SEGMENTPSTA DB 05H,15H,14H,54H,50H,51H,41H,45H ;DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:CODEORG 100HBEGIN: MOV DX,303H ;初始化8255AMOV AL, 10000001B ;命令控制字OUT DX,AL ;送命令MOV AL,00001001B ;置PC4=1关闭74LS373OUT DX,ALL: MOV DX,302HIN AL,DXAND AL,00000010 ;查SW2按下?未按下, 等待 JNZ L ;按下后继续执行MOV DX,303H ;置PC4=0, 打开74LS37MOV AL,08HOUT DX,ALRELOAD: MOV SI,OFFSET PSTA ;设置相序表指针MOV CX,8 ;设8拍循环次数LOP: MOV DX,302HIN AL,DXAND AL,00000001 ;查SW1按下?未按下, 等待 JZ QUIT ;已按下, 退出MOV AL,[SI] ;未按下, 送相序代码到PA口 MOV DX,300HOUT DX,ALMOV DI,0AFHMOV BX,0FFFFH ;延时DELAY: DEC BXJNZ DELAYDEC DIJNZ DELAYINC SI ;相序表指针+1DEC CX ;循环次数-1JNZ LOP ;未到8次, 继续JMP RELOAD ;已到8次, 重新赋值QUIT: MOV DX,303H ;置PC4=1, 关闭74LS373MOV AL,09OUT DX,ALMOV AH,4CH ;程序退出, 带返回码结束INT 21HCODE ENDSEND START七、心得体会上机实验操作是一个把理论用于实践的很好机会。
步进电机控制实验报告

步进电机控制实验报告一、实验要求利用P0输出脉冲序列,74LS244输入开关量,开关K2-K8控制步进电机转换(分6挡),K0、K1控制步进电机转向。
必须要K2-K8中一开关和K0、K1中一开关同时为‘1’时步进电机才启动,其他情况步进电机不工作。
步进电机驱动原理是通过对它每线圈中的电流的顺序切换来使电机作步进式旋转。
驱动电路又脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。
微电脑控制步进电机最合适。
二、试验目的1、了解步进电机控制的基本原理。
2、掌握控制步进电机转动编程方法。
三、步进电机工作原理步进电机是将给定的电脉冲信号转变为角位移或线位移的开环控制元件。
给定一个电脉冲信号,步进电机转子就转过相应的角度,这个角度就称作该步进电机的步距角。
目前常用步进电机的步距角大多为1.8度(俗称一步)或0.9度(俗称半步)。
以步距角为0.9度的进步电机来说,当我们给步进电机一个电脉冲信号,步进电机就转过0.9度;给两个脉冲信号,步进电机就转过1.8度。
以此类推,连续给定脉冲信号,步进电机就可以连续运转。
由于电脉冲信号与步进电机转角存在的这种线性关系,使得步进电机在速度控制、位置控制等方面得到了广泛的应用。
步进电机的使用至少需要三个方面的配合,一是电脉冲信号发生器,它按照给定的设置重复为步进电机输送电脉冲信号,目前这种信号大多数由可编程控制器或单片机来完成;二是驱动器(信号放大器),它除了对电脉冲信号进行放大、驱动步进电机转动以外,还可以通过它改善步进电机的使用性能,事实上它在步进电机系统中起着重要的作用,一般一种步进电机可以根据不同的工况具有多种驱动器;三是步进电机,它有多种控制原理和型号,现在常用的有反应式、感应子式、混合式等。
步进电机的速度控制是通过输入的脉冲频率快慢实现的。
当发生脉冲的频率减小时,步进电机的速度就下降;当频率增加时,速度就加快。
还可以通过频率的改变而提高步进电机的速度或位置精度。
步进电机控制试验

实验6 步进电机控制试验一、实验目的1)、了解步进电机的工作原理。
2)、掌握步进电机的驱动及编程方法。
二、实验设备计算机,仿真器,EXP-II实验箱三、实验步骤1、将“步进电机”单元中的拨码开关S4的拨码开关1置“ON”。
2、连接好DSP开发系统,实验箱上电,运行CCS软件3、调入样例程序,运行。
4、观察实验结果,写实验报告5、程序实验操作说明可以看到步进电机先顺时针旋转,然后再逆时针旋转,“数字量输入输出单元”中的LED10-LED13在不停的闪烁。
用“Halt”暂停程序运行,将“delay_f”延时子程序中的i值由1000更改为8000,如下图所示。
该“delay_f”子程序控制步进电机的A、B、C、D相的延迟时间。
“Rebuild All”后,重新加载程序,运行程序。
可以观察到步进电机正转与反转的转速变慢;用“Halt”暂停程序运行,如下图,将“delay_f”循环中的i值还原为1000,将“delay_s”延时子程序中j的值由3000更改为10000,如下图所示。
该“delay_s”子程序控制步进电机的步与步之间的延迟时间。
“Rebuild All”后,重新加载程序,运行程序。
可以观察到步进电机正转与反转的转速变慢,而且步进电机的步进效果较明显。
关闭相关程序窗口,本实验结束。
四、实验说明:步进电机多为永磁感应式,有两相、四相、六相等多种,实验所用的电机为两相四拍式,通过对每相线圈中的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。
脉冲信号是有DSP的IO端口(地址8001H)的低四位提供。
位0对应“D”,位1对应“C”,位2对应“B”,位3对应“A”;如下图所示,电机每相电流为0.2A,相电压为5V,两相四拍的通电顺序如下表所示:。
控制步进电机实验报告(3篇)

第1篇一、实验目的1. 理解步进电机的工作原理及控制方法。
2. 掌握单片机与步进电机驱动模块的接口连接方法。
3. 学习使用C语言编写程序,实现对步进电机的正反转、转速和定位控制。
4. 通过实验,加深对单片机控制系统的理解。
二、实验原理步进电机是一种将电脉冲信号转换为角位移或线位移的电机,其特点是控制精度高、响应速度快、定位准确。
步进电机控制实验主要涉及以下几个方面:1. 步进电机驱动模块:常用的驱动模块有ULN2003、A4988等,它们可以将单片机的数字信号转换为步进电机的控制信号。
2. 单片机:单片机是整个控制系统的核心,负责接收按键输入、处理数据、控制步进电机驱动模块等。
3. 步进电机:步进电机分为单相、双相和三相等类型,本实验使用的是双相四线步进电机。
三、实验设备1. 单片机开发板:例如STC89C52、STM32等。
2. 步进电机驱动模块:例如ULN2003、A4988等。
3. 双相四线步进电机。
4. 按键。
5. 数码管。
6. 电阻、电容等元件。
7. 电源。
四、实验步骤1. 硬件连接(1)将步进电机驱动模块的输入端(IN1、IN2、IN3、IN4)分别连接到单片机的P1.0、P1.1、P1.2、P1.3口。
(2)将按键的输入端连接到单片机的P3.0口。
(3)将数码管的段选端连接到单片机的P2口。
(4)将步进电机驱动模块的电源端连接到电源。
(5)将步进电机连接到驱动模块的输出端。
2. 编写程序(1)初始化单片机I/O端口,设置P1口为输出端口,P3.0口为输入端口,P2口为输出端口。
(2)编写按键扫描函数,用于读取按键状态。
(3)编写步进电机控制函数,实现正反转、转速和定位控制。
(4)编写主函数,实现以下功能:a. 初始化数码管显示;b. 读取按键状态;c. 根据按键状态调用步进电机控制函数;d. 更新数码管显示。
3. 调试程序(1)将程序烧写到单片机中;(2)打开电源,观察数码管显示和步进电机运行状态;(3)根据需要调整程序,实现不同的控制效果。
步电机控制实验报告

一、实验目的1. 理解步进电机的工作原理和特性;2. 掌握步进电机的驱动电路设计;3. 学会使用步进电机驱动器;4. 实现步进电机的正反转、转速调节及位置控制。
二、实验器材1. 步进电机:NEMA 17 42BYG250-20042. 步进电机驱动器:A4988步进电机驱动模块3. 电源:12V 2A4. 连接导线5. 实验平台:Arduino Uno6. 实验软件:Arduino IDE三、实验原理步进电机是一种将电脉冲信号转换为角位移的电机,具有响应速度快、定位精度高、控制简单等优点。
步进电机的工作原理是:当输入一个电脉冲时,步进电机内部的转子就旋转一个固定的角度,这个角度称为步距角。
步进电机的步距角取决于其结构,常见的步距角有1.8°、0.9°等。
步进电机的驱动电路主要由电源、驱动模块和步进电机组成。
驱动模块负责将输入的脉冲信号转换为步进电机所需的电流,从而实现电机的转动。
四、实验步骤1. 步进电机驱动电路搭建(1)将步进电机驱动模块的VCC、GND、ENA、IN1、IN2、IN3、IN4分别连接到电源的12V、GND、GND、Arduino Uno的数字引脚2、3、4、5;(2)将步进电机的A、B、C、D分别连接到驱动模块的A、B、C、D;(3)连接电源和步进电机。
2. 步进电机控制程序编写(1)在Arduino IDE中创建一个新的项目,命名为“StepMotorControl”;(2)编写如下代码:```cpp#include <Stepper.h>const int stepsPerRevolution = 200; // 步进电机每转一周的步数Stepper myStepper(stepsPerRevolution, 2, 3, 4, 5);void setup() {myStepper.setSpeed(60); // 设置步进电机的转速,单位为步/秒}void loop() {myStepper.step(stepsPerRevolution); // 正转一周delay(1000);myStepper.step(-stepsPerRevolution); // 反转一周delay(1000);}```(3)将编写好的代码上传到Arduino Uno。
单片机实验 步进电机控制

实验七步进电机控制一、实验目的1、了解步进电机控制的基本原理2、掌握步进电机转动编程方法二、实验说明1.步进电机的基本原理:步进电机是一种静电脉冲信号转换成相应角位移或是线位移的电磁机械装置。
在没有超出负载的情况下,它能在一瞬间实现启动和停止。
步进电机的转动速度只取决于外加脉冲信号的频率和脉冲数,而不受负载变化的影响。
例如,给步进电机施加一个脉冲信号,步进电动机就会转过一个歩距角。
步进电机既能控制转动方向也能控制转动速度。
2.步进电机的驱动脉冲:步进电动机通过控制输入电流形成一个旋转磁场而工作,旋转磁场可以由1相励磁,2相励磁,3相励磁和5相励磁等方式产生。
本次实验使用时小型2相励磁步进电动机有两组励磁线圈是AB。
应用时只需要在两组线圈的4个端口分别输入规定的环形脉冲信号(通过控制单片A和B机的P0.0、P0.1、P0.2和P0.3这四个引脚的高低电平),就可以制定步进电动机的转动方向。
3.本次实验使用独立式键盘控制小型2相励磁步进电机,要求按下S1键,步进电机正传;按下S2键,步进电机反转;按下S3键,步进电机停转。
4.绘制仿真原理图时,步进电机选用“MOTOR-STEPPER”,功率放大集成电路选用“ULN2003A”,逻辑部件选用“74LS04”。
三、实验步骤1.先建立文件夹“ex7”,然后建立“ex7”工程项目,最后建立源程序文件“ex7.c”,输入如下源程序;//独立式键盘控制步进电机实验#include<reg51.h> //包含51单片机寄存器定义的头文件sbit S1=P1^4; //将S1位定义为P1.4引脚sbit S2=P1^5; //将S2位定义为P1.5引脚sbit S3=P1^6; //将S3位定义为P1.6引脚unsigned char keyval; //储存按键值unsigned char ID; //储存功能标号/*软件消抖延时(约50ms)*/void delay(void){unsigned char i,j;for(i=0;i<150;i++)for(j=0;j<100;j++);}/*步进电机转动延时,延时越长,转速越慢*/void motor_delay(void){unsigned int i;for(i=0;i<2000;i++);}/*步进电机正转*/void forward( ){P0=0xfc; //P0口低四位脉冲1100motor_delay();P0=0xf6; //P0口低四位脉冲0110motor_delay();P0=0xf3; //P0口低四位脉冲0011motor_delay();P0=0xf9; //P0口低四位脉冲1001motor_delay();}/*步进电机反转*/void backward(){P0=0xfc; //P0口低四位脉冲1100motor_delay();P0=0xf9; //P0口低四位脉冲1001motor_delay();P0=0xf3; //P0口低四位脉冲0011motor_delay();P0=0xf6; //P0口低四位脉冲0110motor_delay();}/*步进电机停转*/void stop(void){P0=0xff ; //停止输出脉冲}/*主函数*/void main(void){TMOD=0x01; //使用定时器T0的模式1EA=1; //开总中断ET0=1; //定时器T0中断允许TR0=1; //启动定时器T0TH0=(65536-500)/256; //定时器T0赋初值,每计数200次(217微秒)发送一次中断请求TL0=(65536-500)%256; //定时器T0赋初值keyval=0; //按键值初始化为0,什么也不做ID=0;while(1){switch(keyval) //根据按键值keyval选择待执行的功能{case 1:forward(); //按键S1按下,正转break;case 2:backward(); //按键S2按下,反转break;case 3:stop(); //按键S3按下,停转break;}}}/*定时器T0的中断服务子程序:键盘扫描程序*/void Time0_serve(void) interrupt 1 using 1{TR0=0; //关闭定时器T0if((P1&0xf0)!=0xf0) //第一次检测到有键按下{delay(); //延时一段时间再去检测if((P1&0xf0)!=0xf0) //确实有键按下{if(S1==0) //按键S1被按下keyval=1;if(S2==0) //按键S2被按下keyval=2;if(S3==0) //按键S3被按下keyval=3;}}TH0=(65536-200)/256; //定时器T0的高8位赋初值TL0=(65536-200)%256; //定时器T0的低8位赋初值TR0=1; //启动定时器T0}2.用Proteus软件仿真经过Keil软件编译通过后,可利用Proteus软件仿真。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
步进电机控制实验
一、实验目的:
了解步进电机工作原理,掌握用单片机的步进电机控制系统的硬件设计方法,熟悉步进电机驱动程序的设计与调试,提高单片机应用系统设计和调试水平。
二、实验容:
编写并调试出一个实验程序按下图所示控制步进电机旋转:
三、工作原理:
步进电机是工业过程控制及仪表中常用的控制元件之一,例如在机械装置中可以用丝杠把角度变为直线位移,也可以用步进电机带螺旋电位器,调节电压或电流,从而实现对执行机构的控制。
步进电机可以直接接收数字信号,不必进行数模转换,用起来非常方便。
步进电机还具有快速启停、精确步进和定位等特点,因而在数控机床、绘图仪、打印机以及光学仪器中得到广泛的应用。
步进电机实际上是一个数字/角度转换器,三相步进电机的结构原理如图所示。
从图中可以看出,电机的定子上有六个等分磁极,A、A′、B、B′、C、C ′,相邻的两个磁极之间夹角为60o,相对的两个磁极组成一相(A-A′,B-B′,C-C′),当某一绕组有电流通过时,该绕组相应的两个磁极形成N极和S极,每个磁极上各有五个均匀分布矩形小齿,电机的转子上有40个矩形小齿均匀地分布的圆周上,相邻两个齿之间夹角为9°。
当某一相绕组通电时,对应的磁极就产生磁场,并与转子形成磁路,如果这时定子的小齿和转子的小齿没有对齐,则在磁场的作用下,转子将转动一定的角度,使转子和定子的齿相互对齐。
由此可见,错齿是促使步进电机旋转的原因。
三相步进电机结构示意图
例如在三相三拍控制方式中,若A相通电,B、C相都不通电,在磁场作用下使转子齿和A相的定子齿对齐,我们以此作为初始状态。
设与A相磁极中心线对齐的转子的齿为0
号齿,由于B相磁极与A相磁极相差120°,不是9°的整数倍(120÷9=40/3),所以此时转子齿没有与B相定子的齿对应,只是第13号小齿靠近B相磁极的中心线,与中心线相差3°,如果此时突然变为B相通电,A、C相不通电,则B相磁极迫使13号转子齿与之对齐,转子就转动3°,这样使电机转了一步。
如果按照A→B→C的顺序轮流通电一周,则转子将动9°。
步进电机的运转是由脉冲信号控制的,传统方法是采用数字逻辑电路——环形脉冲分配器控制步进电机的步进。
下图为环形脉搏冲分配器的简化框图。
三相六拍环形脉搏冲分配器
1、运转方向控制。
如图所示,步进电机以三相六拍方式工作,若按A→AB→B→BC→C →CA→A次序通电为正转,则当按A→AC→C→CB→B→BA→A次序通电为反转。
2、运转速度的控制。
图中可以看出,当改变CP脉冲的周期时,ABC三相绕组高低电平的宽度将发生变化,这就导致通电和断电时速率发生了变化,使电机转速改变,所以调节CP脉冲的周期就可以控制步进电机的运转速度。
3、旋转的角度控制。
因为每输入一个CP脉冲使步进电机三相绕组状态变化一次,并相应地旋转一个角度,所以步进电机旋转的角度由输入的CP脉冲数确定。
单片机实验仪选用的是20BY-0型4相步进电机,其工作电压为4.5V,在双四拍运行方式时,其步距角为18O ,相直流电阻为55Ω,最大静电流为80Ma。
采用8031单片机控制步进电机的运转,按四相四拍方式在P1口输出控制代码,令其正转或反转。
因此P1口输出代码的变化周期T控制了电机的运转速度:n=60/T.N
式中:n ——步进电机的转速(转/分);
N ——步进电机旋转一周需输出的字节数;
T ——代码字节的输出变化周期。
设N=360°/ 18°=20,T=1.43ms,则步进电机的转速为2100转/分。
控制P1口输出的代码字节个数即控制了步进电机的旋转角度。
正方向: A B C D
反方向: A D C B
四、接线图案:
根据步进电机工作原理,使用8031的P1.0-P1.3分别驱动步进电机A、B、C、D相,用软件
控制P1口输出一脉冲序列,控制步进电机转速、方向、步距。
同时为能观察步进电机旋转状态,在A、B、C、D相输出到状态指示灯。
五、实验步骤:
1、“总线插孔”区的P1.0-P1.3孔接步进电机的BA-BD孔,“发光二极管组”的L0-L3孔接步进电机A、B、C、D孔。
P1.7孔连L7。
2、编写程序、编译程序。
用单步、全速断点、连续方式调试程序,观察数码管上数字变化,检查程序运行结果,观察步进电机的转动状态,连续运行时用示波器测试P1口的输出波形,排除软件错误,直至达到本实验的设计要求。
六、程序框图:
正反转步进子程序框图
七、思考问题:
若将步进电机A、B、C、D相分别接到P1.4 -- P1.7,软件功能与本实验要求一致,需要修改那几处程序?
八、实验程序:
ORG 0000H
STRT: MOV SP,#6FH ;初始化
MOV 20H,#0 ;状态寄存器清零
MOV P1,#0F1H ;正转A相通电
MLP: MOV R7,#64H ;R7为步计数器,正转100步
MOV 42H,#0C8H ;42H为延时计数器
MLP0: MOV R6,42H ;调用延时200MS子程序
MLP9: LCALL DEL
DJNZ R6,MLP9
DEC 42H
LCALL STEPS ;调用步进子程序
DJNZ R7,MLP0 ;以上为加速程序
MOV R7,#64H ;以下为恒速程序
MLP1: MOV R6,42H
MLPX: LCALL DEL
DJNZ R6,MLPX
LCALL STEPS
DJNZ R7,MLP1
MOV R7,#64H ;以下为减速程序
MLP2: MOV R6,42H
MLPY: LCALL DEL
DJNZ R6,MLPY
LCALL STEPS
INC 42H
DJNZ R7,MLP2
CPL 7
LJMP MLP
STEPS:INC 20H ;正反转步进子程序
ANL 20H,#83H
MOV A,20H
ANL A,#3
JB 7,STPSC
MOV DPTR,#FTAB
SJMP STPW
STPSC:MOV DPTR,#CTAB
STPW: MOVC A,A+DPTR
MOV P1,A
RET
FTAB: DB 0F3H,0F6H,0FCH,0F9H
CTAB: DB 79H,7cH,76H,73H
DEL: MOV R5,#0 ;延时子程序
DEL0: DJNZ R5,DEL0
RET
END ; “验证式”实验七* * 步进电控制机
ORG 0000H
STRT: MOV SP,#6FH ;初始化
MOV 20H,#0 ;状态寄存器清零
MOV P1,#0F1H ;正转A相通电
MLP: MOV R7,#64H ;R7为步计数器,正转100步MOV 42H,#0C8H ;42H为延时计数器
MLP0: MOV R6,42H ;调用延时200MS子程序
MLP9: LCALL DEL
DJNZ R6,MLP9
DEC 42H
LCALL STEPS ;调用步进子程序
DJNZ R7,MLP0 ;以上为加速程序
MOV R7,#64H ;以下为恒速程序
MLP1: MOV R6,42H
MLPX: LCALL DEL
DJNZ R6,MLPX
LCALL STEPS
DJNZ R7,MLP1
MOV R7,#64H ;以下为减速程序MLP2: MOV R6,42H
MLPY: LCALL DEL
DJNZ R6,MLPY
LCALL STEPS
INC 42H
DJNZ R7,MLP2
CPL 7
LJMP MLP
STEPS:INC 20H ;正反转步进子程序ANL 20H,#83H
MOV A,20H
ANL A,#3
JB 7,STPSC
MOV DPTR,#FTAB
SJMP STPW
STPSC:MOV DPTR,#CTAB
STPW: MOVC A,A+DPTR
MOV P1,A
RET
FTAB: DB 0F3H,0F6H,0FCH,0F9H
CTAB: DB 79H,7cH,76H,73H
DEL: MOV R5,#0 ;延时子程序
DEL0: DJNZ R5,DEL0
RET
END。