步进电机系统设计实验报告
- 格式:doc
- 大小:528.50 KB
- 文档页数:12
第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. 实验数据分析步进电机的性能指标符合预期,可满足实验要求。
专业课程设计Ⅰ题目一步进电机控制系统设计院系:动化学院专业班级:智能0801班小组成员:指导教师:王曙光日期:2011.05.23-2011.06.03目录1课程设计描述 (2)2.课程设计具体要求 (3)3.主要元器件 (3)4.基本原理阐述 (3)4.1 步进电机的工作原理 (3)4.2 步进电机的启停控制 (3)4.3 步进电机的转向控制 (4)4.4 步进电机的速度控制 (4)4.5 步进电机的换向控制 (4)5.实验方案 (4)5.1 控制系统的硬件设计 (4)5.2 电路设计 (5)5.3 系统软件设计 (5)5.3.1主程序图 (5)5.3.2显示子程序 (6)5.3.3键盘扫描子程序 (7)5.4源程序 (7)6.设计中的问题分析 (11)7.参考资料 (12)8.实验总结 .................................... 错误!未定义书签。
1课程设计描述:设计一个以8051单片机作为主控制器的步进电机控制器,实现对步进电机的转速、转向的控制和显示。
2. 课程设计具体要求:(1)可通过按键设置步进电机的转向(正/反转)、转速(增/减速);(2)可通过按键设置步进电机的励磁方式(单/双相);(3)可通过数码管将步进电机的转速显示出来;(4)设计电路,编写程序,软件硬件仿真、调试。
3.主要元器件:实验板(中号)、STC89C51、电容(30pFⅹ2、10uFⅹ2)、数码管(共阳、四位一体)、晶振(12MHz)、小按键(5个)、步进电机(25BY)、ULN2003等4.基本原理阐述:4.1 步进电机的工作原理步进电机由定子和转子两部分组成,下面以两相反应式步进电机为例说明步进电机工作原理。
两相步进电机的定子上有两对磁极,按N、S、N、S分配,每两个相对的磁极组成一队。
每对磁极都缠有同一个绕组,形成一相。
转子是由软磁材料制成的,其外表面均匀分布着小齿,他们大小相同,间距相等。
一、实验目的1. 了解步进电动机的工作原理和驱动方式。
2. 掌握步进电动机的驱动电路设计方法。
3. 熟悉步进电动机的控制程序编写和调试方法。
4. 掌握步进电动机的速度和方向控制方法。
二、实验器材1. 步进电动机一台2. 步进驱动器一台3. 单片机实验板一块4. 电源模块一块5. 连接线若干6. 示波器一台7. 电脑一台三、实验原理步进电动机是一种将电脉冲信号转换为角位移或线位移的电机,其特点是输出角位移与输入脉冲数成正比,转速与脉冲频率成正比。
步进电动机的驱动电路主要由驱动器和控制电路组成。
驱动器负责将单片机输出的脉冲信号转换为步进电动机所需的驱动信号,而控制电路则负责生成步进电动机所需的脉冲信号。
四、实验步骤1. 步进电动机驱动电路设计(1)根据步进电动机的型号和规格,选择合适的驱动器。
(2)设计驱动电路原理图,包括驱动器、单片机、电源模块等。
(3)焊接驱动电路,并检查无误。
2. 步进电动机控制程序编写(1)编写步进电动机控制程序,包括初始化、脉冲生成、速度和方向控制等模块。
(2)通过示波器观察脉冲信号的波形,确保脉冲信号符合步进电动机的要求。
(3)调试程序,确保步进电动机能够按照预期运行。
3. 步进电动机速度和方向控制(1)通过调整脉冲频率控制步进电动机的转速。
(2)通过改变脉冲信号的顺序控制步进电动机的转动方向。
(3)观察步进电动机在不同速度和方向下的运行情况,分析控制效果。
五、实验结果与分析1. 步进电动机驱动电路设计成功,步进电动机能够按照预期运行。
2. 步进电动机控制程序编写成功,能够实现速度和方向控制。
3. 通过调整脉冲频率,步进电动机的转速在0-300转/分钟范围内可调。
4. 通过改变脉冲信号的顺序,步进电动机的转动方向可在正转和反转之间切换。
5. 实验结果表明,步进电动机的速度和方向控制方法可行,控制效果良好。
六、实验总结本次实验成功地实现了步进电动机的驱动电路设计、控制程序编写和速度、方向控制。
第1篇一、实验目的1. 了解步进电机的工作原理和驱动方式。
2. 掌握步进电机的控制方法,包括正反转、速度调节和方向控制。
3. 通过实验验证步进电机的性能和稳定性。
二、实验原理步进电机是一种将电脉冲信号转换为角位移的电动机,其特点是控制精度高、响应速度快、易于控制。
步进电机的工作原理基于电磁感应原理,通过控制电流的通断,使电机绕组产生磁场,从而驱动转子旋转。
三、实验仪器与设备1. 步进电机实验平台2. 电脑3. 步进电机驱动器4. 步进电机5. 电源6. 接线端子四、实验内容1. 步进电机驱动电路搭建2. 步进电机正反转控制3. 步进电机速度调节4. 步进电机方向控制5. 步进电机性能测试五、实验步骤1. 步进电机驱动电路搭建(1)将步进电机驱动器与电脑连接,并确保电源连接正常。
(2)根据步进电机驱动器的说明书,将步进电机、电源和连接端子连接到相应的接口。
(3)检查电路连接是否正确,确保无误。
2. 步进电机正反转控制(1)编写程序实现步进电机正反转控制。
(2)在电脑上运行程序,观察步进电机正反转是否正常。
3. 步进电机速度调节(1)编写程序实现步进电机速度调节。
(2)在电脑上运行程序,调整速度参数,观察步进电机转速是否改变。
4. 步进电机方向控制(1)编写程序实现步进电机方向控制。
(2)在电脑上运行程序,观察步进电机旋转方向是否改变。
5. 步进电机性能测试(1)测试步进电机的空载转速和负载转速。
(2)测试步进电机的步距角和定位精度。
(3)测试步进电机的稳定性。
六、实验结果与分析1. 步进电机正反转控制实验结果显示,步进电机正反转控制正常,转速和方向可调。
2. 步进电机速度调节实验结果显示,步进电机速度调节正常,转速可调。
3. 步进电机方向控制实验结果显示,步进电机方向控制正常,旋转方向可调。
4. 步进电机性能测试(1)空载转速:步进电机空载转速为300转/分钟。
(2)负载转速:步进电机负载转速为200转/分钟。
步进电机实验报告1. 引言步进电机作为一种常见的电机类型,具有精确控制、低成本和小体积的优点,被广泛应用于工业自动化、仪器仪表、机器人等领域。
本实验旨在通过实际搭建步进电机控制电路和编写控制程序,学习步进电机的基本原理和驱动方法,并了解步进电机在实际应用中的特点和限制。
2. 实验材料•步进电机•步进电机驱动器•Arduino开发板•连接线•电源3. 实验原理步进电机是一种将电脉冲信号转化为角度和位置控制的电机。
它由定子和转子组成,定子由多组线圈组成,周围布有磁体,转子则由多个磁极组成。
步进电机通过逐步通电给定子线圈,从而产生磁场,吸引转子上的磁极,实现旋转运动。
步进电机有两种基本驱动方式:单相和双相驱动。
单相驱动是最简单的驱动方式,通过依次使两组线圈依次通电,以产生旋转的磁场。
双相驱动则是将线圈分成两组,可以同时通电,从而提高步进电机的转速和扭矩。
4. 实验步骤4.1 搭建电路首先,将步进电机驱动器连接到Arduino开发板上。
具体连接方式可以参考步进电机驱动器和Arduino开发板的接口定义。
然后,将步进电机连接到步进电机驱动器上。
根据步进电机和驱动器的规格说明,将步进电机的线圈分别连接到驱动器的相应端口上。
最后,将电源连接到步进电机驱动器上,确保步进电机可以获得足够的电源供应。
4.2 编写控制程序使用Arduino开发环境编写控制程序。
控制程序可以通过Arduino的GPIO口向步进电机驱动器发送相应的电平信号,控制步进电机的旋转。
具体的控制方式和步进电机驱动器的驱动方式有关,可以参考驱动器的说明文档。
4.3 运行实验上传控制程序到Arduino开发板上,并运行程序。
通过改变控制程序发送的电平信号,观察步进电机的旋转情况。
可以尝试不同的控制模式,比如单相驱动和双相驱动,观察步进电机的旋转速度和扭矩的变化。
5. 实验结果与分析通过实验观察步进电机的旋转情况,根据实际应用需求,可以得出以下结论:1.步进电机可以通过电脉冲信号精确控制旋转角度和位置,适用于需要精确定位的应用场景。
第1篇一、引言随着自动化技术的不断发展,步进系统作为一种常用的自动化控制元件,在工业生产、精密机械、机器人等领域得到了广泛应用。
为了更好地理解步进系统的原理和应用,我们组织了一次步进系统的实践课程。
本文将详细记录本次实践的过程、结果以及心得体会。
二、实践背景与目标1. 实践背景步进系统是一种能够将电脉冲信号转换为角位移或直线位移的执行机构。
它具有控制精度高、反应速度快、易于控制等优点。
在本次实践活动中,我们将通过搭建步进电机驱动电路,实现对步进电机的精确控制,从而了解步进系统的基本原理和应用。
2. 实践目标(1)掌握步进电机的工作原理;(2)了解步进电机驱动电路的设计方法;(3)学会使用步进电机控制器;(4)实现步进电机的精确控制。
三、实践过程1. 步进电机驱动电路搭建(1)材料准备:步进电机、驱动芯片、电源、连接线等;(2)电路设计:根据步进电机的规格,选择合适的驱动芯片和电源,设计驱动电路;(3)电路搭建:按照电路图,连接各个元件,确保电路连接正确;(4)电路测试:通电测试,检查电路是否正常工作。
2. 步进电机控制器使用(1)控制器介绍:了解步进电机控制器的功能、接口和参数设置;(2)控制器编程:使用编程软件,编写控制程序,实现对步进电机的控制;(3)程序调试:调试程序,确保步进电机按照预期运行。
3. 步进电机精确控制实现(1)控制方式:通过调整控制脉冲的频率和数量,实现对步进电机转速和位移的控制;(2)实验验证:通过实验,验证步进电机在不同控制参数下的运行情况;(3)结果分析:分析实验结果,总结步进电机控制的关键因素。
四、实践结果与分析1. 实践结果(1)成功搭建了步进电机驱动电路;(2)掌握了步进电机控制器的基本使用方法;(3)实现了步进电机的精确控制。
2. 结果分析(1)步进电机驱动电路的搭建过程中,需要注意元件的选择和电路的连接,确保电路的正常工作;(2)步进电机控制器的编程需要熟悉编程软件和控制器接口,合理设置参数,才能实现精确控制;(3)步进电机的精确控制需要根据实际需求调整控制参数,以达到最佳效果。
一、实验目的1. 理解步进电机的工作原理及驱动方式;2. 掌握步进电机控制系统设计方法;3. 熟悉步进电机控制程序编写及调试;4. 学会步进电机在不同应用场景下的应用。
二、实验环境1. 实验设备:步进电机驱动器、步进电机、PLC编程软件、计算机;2. 实验软件:PLC编程软件(如Siemens Step 7、Allen-Bradley RSLogix等);3. 实验环境:实验室。
三、实验内容1. 步进电机驱动原理及驱动方式;2. 步进电机控制系统设计;3. 步进电机控制程序编写及调试;4. 步进电机在不同应用场景下的应用。
四、实验步骤1. 步进电机驱动原理及驱动方式(1)步进电机的工作原理:步进电机是一种将电脉冲信号转换为角位移的电动机,其角位移与脉冲数成正比。
步进电机主要由转子、定子和脉冲发生器组成。
转子由永磁体和线圈组成,定子由铁芯和线圈组成。
(2)步进电机的驱动方式:步进电机的驱动方式主要有两种,即相激式和步进驱动器驱动式。
2. 步进电机控制系统设计(1)控制系统硬件设计:根据实验需求,选择合适的步进电机驱动器和步进电机。
将驱动器与PLC连接,通过PLC输出控制信号。
(2)控制系统软件设计:编写步进电机控制程序,实现步进电机的启动、停止、正转、反转、速度调节等功能。
3. 步进电机控制程序编写及调试(1)编写步进电机控制程序:使用PLC编程软件编写步进电机控制程序,实现以下功能:- 启动/停止控制;- 正转/反转控制;- 速度调节控制;- 定位控制。
(2)调试步进电机控制程序:将编写好的步进电机控制程序下载到PLC中,进行调试,确保程序正常运行。
4. 步进电机在不同应用场景下的应用(1)步进电机在工业自动化领域的应用:步进电机在工业自动化领域有广泛的应用,如数控机床、机器人、自动化生产线等。
(2)步进电机在办公自动化领域的应用:步进电机在办公自动化领域也有广泛应用,如打印机、复印机、扫描仪等。
北京工业大学电子课程设计报告(数电部分)题目:步进电机一、设计题目步进电机控制电路二、设计任务和设计要求1.设计任务:本课题要求设计一个步进电机的控制电路,该电路能对步进电机的运行状态进行控制.2.设计技术指标及设计要求:基本要求:(1)。
能控制步进电机正转和反转及运行速度,并由LED显示运行状态。
(步进电机工作方式可为单四拍或双四拍).A.单四拍方式,通电顺序为A—B—C—D—AB.双四拍方式,通电顺序为AB—BC-CD-DA-AB(2)。
测量步进电机的步距角。
(通过实测步进电机旋转一周所需要的脉冲数,推算出步进电机的步距角)。
扩展要求:设计步进电机的工作方式为四相八拍。
C.四相八拍方式,通电顺序为A—AB—B—BC—C—CD—D-DA—A(4).参考元器件:步进电机,发光二极管,续流二极管IN4004,复合三极管TIP122;5Ω(1W)电阻,其它电容、电阻若干.三、设计框架首先我们先设计一个脉冲发生电路,我们选择用ne555设计这个脉冲发生电路,用于提供我们整个电路的时钟信号,然后将这个时钟置于74ls161芯片的时钟端,使161处于计数状态,然后161会在输出端产生0000到1111的序列,这里我们只用前三个端口,然后经过一定的组合将这三个端口接到74ls138译码器的输入端口,使译码器处于工作状态然后列真值表,确定A、B、C、D四相的逻辑表达式,并按照表达式进行组合,最后将A、B、C、D 四相分别连接驱动电路,接上电机。
我们首先形成一个脉冲发生电路,如图所示:这个脉冲电路用于提供整个电路的时钟信号。
由于我们还要实现步进电机的变速,有此电路的频率公式f=1/[ln2(R1+2R2)C] 和q=(R1+R2)/(R1+2R2),可知,我们只需改变R1的电阻大小即可.这样会对时钟频率产生影响,从而改变电机的转速。
接下来是环形脉冲分配电路。
首先我们写出我们需要的真值表,然后计算出逻辑表达式,最后根据逻辑表达式进行电路的连接。
步进电机驱动系统设计报告1. 引言步进电机是一种常用的控制设备,它能够以离散的步进角度旋转,并且能够保持稳定位置。
本报告旨在介绍我们设计的步进电机驱动系统,包括硬件设计、软件开发和性能测试。
2. 硬件设计步进电机驱动系统的硬件设计包括供电电路、控制电路和电机驱动电路。
2.1 供电电路供电电路负责为整个系统提供电源。
我们选择了12V直流电源作为系统的供电电源,以保证电机稳定运行。
2.2 控制电路控制电路用于接收用户的控制指令,并将其转化为电机驱动信号。
我们采用了微处理器进行控制电路的设计,利用其IO口和相关外围电路实现与电机驱动电路的连接。
2.3 电机驱动电路电机驱动电路通过给定特定的电流和方向信号,控制步进电机的转动。
我们采用了步进电机驱动芯片进行电机驱动电路的设计,驱动芯片能够根据输入信号的变化,控制电机按照给定的步进角度旋转。
3. 软件开发软件开发包括电机控制程序的编写和电机控制界面的设计。
3.1 电机控制程序电机控制程序根据用户的输入指令,通过控制电路向电机驱动电路发送正确的信号,从而控制电机转动。
我们采用了C语言进行程序编写,结合控制电路的IO 口进行控制信号的生成。
3.2 电机控制界面电机控制界面是用户与系统进行交互的接口。
我们设计了一个简单的图形用户界面,用户可以通过该界面设置电机的运行参数,包括步进角度、转速等。
4. 性能测试为了验证步进电机驱动系统的性能,我们进行了一系列的性能测试。
4.1 步进角度测试我们通过设置不同的旋转角度,测试步进电机在给定角度下的准确度。
测试结果显示,步进电机能够非常稳定地按照给定角度旋转。
4.2 转速测试转速测试用于检验步进电机在不同速度下的运行情况。
实验结果表明,步进电机能够在不同速度下保持平稳运行,并且具有较高的转速稳定性。
4.3 负载能力测试负载能力测试用于测试步进电机在不同负载情况下的运行情况。
我们通过增加外加负载,测试了步进电机在不同负载下的转速和转矩。
专业课程设计Ⅰ题目一步进电机控制系统设计院系:动化学院专业班级:智能0801班小组成员:指导教师:王曙光日期:2011.05.23-2011.06.03目录1课程设计描述 (2)2.课程设计具体要求 (3)3.主要元器件 (3)4.基本原理阐述 (3)4.1 步进电机的工作原理 (3)4.2 步进电机的启停控制 (3)4.3 步进电机的转向控制 (4)4.4 步进电机的速度控制 (4)4.5 步进电机的换向控制 (4)5.实验方案 (4)5.1 控制系统的硬件设计 (4)5.2 电路设计 (5)5.3 系统软件设计 (5)5.3.1主程序图 (5)5.3.2显示子程序 (6)5.3.3键盘扫描子程序 (7)5.4源程序 (7)6.设计中的问题分析 (11)7.参考资料 (12)8.实验总结 .................................... 错误!未定义书签。
1课程设计描述:设计一个以8051单片机作为主控制器的步进电机控制器,实现对步进电机的转速、转向的控制和显示。
2. 课程设计具体要求:(1)可通过按键设置步进电机的转向(正/反转)、转速(增/减速);(2)可通过按键设置步进电机的励磁方式(单/双相);(3)可通过数码管将步进电机的转速显示出来;(4)设计电路,编写程序,软件硬件仿真、调试。
3.主要元器件:实验板(中号)、STC89C51、电容(30pFⅹ2、10uFⅹ2)、数码管(共阳、四位一体)、晶振(12MHz)、小按键(5个)、步进电机(25BY)、ULN2003等4.基本原理阐述:4.1 步进电机的工作原理步进电机由定子和转子两部分组成,下面以两相反应式步进电机为例说明步进电机工作原理。
两相步进电机的定子上有两对磁极,按N、S、N、S分配,每两个相对的磁极组成一队。
每对磁极都缠有同一个绕组,形成一相。
转子是由软磁材料制成的,其外表面均匀分布着小齿,他们大小相同,间距相等。
这些小齿与定子磁极上的小齿的锯齿相同,形状相似。
如果按下表的时序给步机绕组通电,步进电机将产生转动,改变相序通电,步进电机的转向将反相,停止发送脉冲,步进电机将停止运转。
图一步进电机结构通电相序4.2 步进电机的启停控制步进电机由于其电气特性,运转时会有步进感 ,即振动感。
为了使电机转动平滑 ,减小振动 ,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波 ,可以减小步进电机的步进角 ,提高电机运行的平稳性。
在步进电机停转时 ,为了防止因惯性而使电机轴产生顺滑 ,则需采用合适的锁定波形 ,产生锁定磁力矩 ,锁定步进电机的转轴 ,使步进电机的转轴不能自由转动。
4.3 步进电机的转向控制如果给定工作方式正序换相通电 ,步进电机正转。
若步进电机的励磁方式为三相六拍 ,即 A-AB-B-BC-C-CA。
如果按反序通电换相 ,即则电机就反转。
其他方式情况类似。
4.4 步进电机的速度控制如果给步进电机发一个控制脉冲 ,它就转一步 ,再发一个脉冲 ,它会再转一步。
2 个脉冲的间隔越短 ,步进电机就转得越快。
调整送给步进电机的脉冲频率 ,就可以对步进电机进行调速。
4.5 步进电机的换向控制步进电机换向时 ,一定要在电机减速停止或降到突跳频率范围之内再换向 ,以免产生较大的冲击而损坏电机。
换向信号一定要在前一个方向的最后一个脉冲结束后以及下一个方向的第1 个脉冲前发出。
对于脉冲的设计主要要求要有一定的脉冲宽度(一般不小于5μs)、脉冲序列的均匀度及高低电平方式。
在某一高速下的正、反向切换实质包含了减速→换向→加速3 个过程。
5.实验方案(含硬件结构图和电路图及说明、软件流程、源程序与注释等)5,1控制系统的硬件设计基于单片机的步进电机控制方案如下图二所示图二单片机控制步进电机原理图5.2 电路设计设计电路如图三所示图三单片机控制步进电机原理图5.3 系统软件设计本设计应用的是C语言进行编程,系统程序的总体设计思路是:利用单片机对键盘进行扫描,根据按键的状态来设置相应的状态位,然后根据各状态位的值输出相应的控制信号,进而实现对步进电动机的启动、停止、正反转、加速以及减速的控制,并把系统的运行状态在显示电路中显示出来。
5.3.1主程序图5.3.2显示子程序5.3.3键盘扫描子程序5.4源程序#include "stdio.h"#include "reg51.h"#define uchar unsigned char#define uint unsigned int#define databus P0/****************************位变量和全局变量的定义****************************/bit start_flag;//步进电机启动标志位,0代表关闭电机,1时代表启动电机bit one_two_flag;//单双相励磁标志位,0代表单相,1代表双相bit for_rev_flag;//正反向转动标志位,0代表正向,1代表反向uint time_speed;uint speed;code uchar foward_two[4]={0xf3,0xf6,0xfc,0xf9};//双相正转code unsigned char reverse_two[4]={0xf9,0xfc,0xf6,0xf3}; //双相反转code unsigned char foward_one[4]={0xf1,0xf2,0xf4,0xf8};//单相正转code unsigned char reverse_one[4]={0xf8,0xf4,0xf2,0xf1};//单相反转//code unsigned char foward_mix[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};//混合正转//code unsigned char reverse_mix[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};//混合反转code uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x3f,0x83,0xc6,0xa1,0x86,0x8e};//数码管显示字符sbit speed_up=P2^4;//增速控制位sbit speed_down=P2^5;//减速控制位sbit for_rev=P2^6;//正反向选择控制位sbit one_two=P2^7;//单双相控制位sbit on_off=P3^0;//电机启动控制位uint speed;uchar aa=1;/******************************子函数的申明******************************/void initia(void){start_flag=0;//默认关闭电机one_two_flag=0;//默认单相励磁for_rev_flag=0;//默认正向转动speed=0;//默认速度为零time_speed=300;//默认时间为300msTMOD=0x11;TH0=(65536-20000)/256; //用于led显示定时刷新TL0=(65536-20000)%256;TH1=(65536-8000)/256; //用于定时扫描键盘TL1=(35536-8000)%256;EA=1;ET0=1;TR0=1;ET1=1;TR1=1;}void delay_1ms(void)//1ms的延时子程序{uchar i;for(i=201;i>0;i--);}void delay_nms(uint n)//n ms延时子程序{uint i;for(i=0;i<n;i++)delay_1ms();}void speed_calculate(void)//转速计算子函数{speed=60000/(12*time_speed);}void button_scan(void) //键盘扫描子程序,通过定时扫描,增加键盘的灵敏度{if(on_off==0){delay_nms(8);if(on_off==0)start_flag=!start_flag;}if(one_two==0){delay_nms(8);if(one_two==0)one_two_flag=!one_two_flag;}if(for_rev==0){delay_nms(8);if(for_rev==0)for_rev_flag=!for_rev_flag;}if(speed_up==0){delay_nms(1);if(speed_up==0)time_speed=time_speed-4;}if(speed_down==0){delay_nms(1);if(for_rev==0) ;time_speed=time_speed+4;}}void led_display(void) //led数码管显示子程序{uint i=speed;P2=0xf0;delay_nms(2);databus=table[i%10];delay_nms(2);P2=0xf8;delay_nms(2);i=i/10;if(speed){P2=0xf0;delay_nms(2);databus=table[i%10];P2=0xf4;i=i/10;delay_nms(2);}if(speed){P2=0xf0;delay_nms(2);databus=table[i%10];P2=0xf2;i=i/10;delay_nms(2);}if(speed){P2=0xf0;delay_nms(2);databus=table[i%10];P2=0xf1;i=i/10;delay_nms(2);}}void step_mot_run(void)//步进电机运行控制子函数{if(start_flag){uchar i;for(i=0;i<4;i++){if(one_two_flag)if(for_rev_flag) {P1=reverse_two[i];delay_nms(time_speed);}else {P1=foward_two[i];delay_nms(time_speed);}elseif(for_rev_flag) {P1=reverse_one[i];delay_nms(time_speed);}else {P1=foward_one[i];delay_nms(time_speed);}speed_calculate();}}else speed=0;}void main(void){initia();while(1){step_mot_run();}}void timer0() interrupt 1{TH0=(65536-20000)/256;TL0=(65536-20000)%256;aa++;if(aa==2){aa=1;led_display();}}void timer1() interrupt 3{TH0=(65536-8000)/256;TL0=(65536-8000)%256;button_scan();}6.设计中的问题分析1)设计电路不能自启动。