4步进电机定位控制实验

合集下载

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

步进电机实验报告册(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. 步进电机:XX型号,XXV,XXA2. 单片机开发板:XX型号3. 驱动电路:包括电源、驱动芯片等三、实验原理步进电机是一种特殊的电动机,其转子通过电磁螺线管的工作原理实现转动。

步进电机的转子分为若干个极对,每个极对上都有一个螺线管,通过对这些螺线管施加电流,可以使转子转动。

单片机通过控制螺线管的电流,实现步进电机的控制。

四、实验步骤1. 连接电路:根据实验器材提供的电路图,将步进电机与单片机开发板相连接。

2. 编写程序:使用C语言编写单片机控制步进电机的程序。

程序中需要包括电机正转、反转、加速、减速等功能的实现。

3. 上传程序:将编写好的程序通过编程器上传到单片机开发板上。

4. 实验验证:通过按下开发板上的按键,观察步进电机的运动情况,验证程序的正确性。

五、实验结果与分析经过实验验证,编写的程序能够准确控制步进电机的运动。

按下不同的按键,电机可以实现正转、反转、加速、减速等功能。

通过调整程序中的参数,可以实现不同速度的控制效果。

实验结果表明,单片机控制步进电机具有较高的精确性和可靠性。

六、实验总结通过本次实验,我深入了解了步进电机的工作原理和控制方法,掌握了单片机控制步进电机的编程技巧。

实验中遇到了一些问题,如电路连接不正确、程序逻辑错误等,但通过仔细分析和排除,最终解决了这些问题。

通过实验,我不仅提高了对步进电机的理论认识,还锻炼了自己的动手实践能力和问题解决能力。

步进电机控制技术综合实验-指导书2013-10

步进电机控制技术综合实验-指导书2013-10

机械设计制造及其自动化专业实验——机电控制实验步进电机控制技术综合实验————可编程控制器控制滑台的速度、位置实验指导书重庆理工大学重庆汽车学院实践教学及技能培训中心2012年10月学生实验守则1.学生应按照实验教学计划和约定的时间,准时上实验课,不得迟到早退。

2.实验前认真阅读实验指导书,明确实验目的、步骤、原理,预习有关的理论知识,并接受实验教师的提问和检查。

3.进入实验室必须遵守实验室的规章制度。

不得高声喧哗和打闹,不准抽烟、随地吐痰和乱丢杂物。

4.做实验时必须严格遵守仪器设备的操作规程,爱护仪器设备,服从实验教师和技术人员指导。

未经许可不得动用与本实验无关的仪器设备及其它物品。

5.实验中要细心观察,认真记录各种试验数据。

不准敷衍,不准抄袭别组数据,不得擅自离开操作岗位。

6.实验时必须注意安全,防止人身和设备事故的发生。

若出现事故,应立即切断电源,及时向指导教师报告,并保护现场,不得自行处理。

7.实验完毕,应主动清理实验现场。

经指导教师检查仪器设备、工具、材料和实验记录后方可离开。

8.实验后要认真完成实验报告,包括分析结果、处理数据、绘制曲线及图表。

在规定时间内交指导教师批改。

9.在实验过程中,由于不慎造成仪器设备、器皿、工具损坏者,应写出损坏情况报告,并接受检查,由领导根据情况进行处理。

10.凡违反操作规程,擅自动用与本实验无关的仪器设备、私自拆卸仪器而造成事故和损失的,肇事者必须写出书面检查,视情节轻重和认识程度,按学院有关规定予以赔偿。

重庆理工大学说明1.同学可以登录学校的“实验选课系统”(从学校首页登陆:或从数字校园登录),自己进行实验项目的选择。

希望同学们能在每个实验项目开放的时间内尽早进行实验预约(预约时间必须比实验上课时间提前3天),因为学生数量比较多,如果某实验项目开放的时间内同学未能进行实验预约,则错过该实验项目的实验机会,补做就要在该实验项目下一次开放时进行。

2.如有什么问题,同学可以拨打电话62563127联系张君老师。

步进电机对测量角度的定位与控制

步进电机对测量角度的定位与控制

I N2 l
0UT,
CONs ULNl
『 『
位置偏离参考面 的上下两侧 , 则通过 控制 步进 电机的 旋转方式来实现调整要求 ] 。
图 3 驱 动 电路
F i g . 3 D r i v i n g c i r c u i t
3 逻辑程序设计与算法实现
步进电机是纯粹的数 字控 制 电动 机 , 是将 电脉 冲 信号转换成 角位移的执行元 件。步进 电机转子 的转 角 与输入 的电脉 冲数 成正 比 , 其 转速 与输入 的脉 冲频率 成正 比 , 而 电动 机 的旋 转 方 向则 由脉 冲的 分 配顺 序
决定 。
2 . 2 . 1 步 进 电 机 技 术 指 标
蓝线和黄线 、 橙线和粉线接控制脉冲输 出, 所以只需 要 4个输 出接 口。通 过 内部逻 辑程 序 的管脚分 配 , 选 用
的是驱 动 芯 片 的 前 4个 管 脚 , 输 出管脚 即 O U T ~ O U T 。红线接十 5 v的直流电源 。 2 . 2 步进 电机 工作原 理
3 . 1 逻辑程序设计
本设计选 用的步进 电机 型号为 2 4 B Y J 4 8 _ 5 V, 共有
4对磁极 即 4相 , 5根 线 依 次 为 红 、 橙( A) 、 黄( B ) 、
《自动化仪表》 第3 4卷第 2期 2 0 1 3年 2月
本设计 应用 V H D L作 为逻 辑程序 编辑语 言 . 在此
数据通过 R S - 2 3 2接 口异 步串行 进入 F P G A。通 过 F P G A内部逻辑 运算 和处 理 , 将 实 际测 量 角度 反馈 给 上 位机进行实时监 测。上位 机下 发定位 角度 , 将角 度 转换 的脉冲数通过脉 冲分配 器输 出 ; 再经 电机 驱动 芯 片的功率放大后给到 电机上 , 使 电机旋转 到设 定的 位 置, 并在 当前位置保持动态平衡 。

步进电机控制实训报告

步进电机控制实训报告

一、实训背景随着科技的飞速发展,步进电机在工业自动化、精密定位、医疗设备等领域得到了广泛的应用。

为了深入了解步进电机的原理和应用,提高自身的动手实践能力,我们进行了步进电机控制实训。

二、实训目标1. 理解步进电机的原理和工作方式。

2. 掌握步进电机的驱动方法和控制方法。

3. 学会使用单片机对步进电机进行编程和控制。

4. 提高团队协作能力和问题解决能力。

三、实训内容1. 步进电机原理步进电机是一种将电脉冲信号转换为角位移或线位移的执行元件。

其特点是响应速度快、定位精度高、控制简单。

步进电机每输入一个脉冲信号,就转动一个固定的角度,称为步距角。

步距角的大小取决于电机的结构,常见的步距角有1.8度、0.9度等。

2. 步进电机驱动步进电机的驱动通常采用步进电机驱动器。

驱动器将单片机输出的脉冲信号转换为驱动步进电机的电流信号,实现对步进电机的控制。

常见的驱动器有L298、A4988等。

3. 单片机控制本实训采用AT89C51单片机作为控制核心。

通过编写程序,控制单片机输出脉冲信号,实现对步进电机的正转、反转、停止、速度等控制。

4. 实训步骤(1)搭建步进电机驱动电路,连接单片机、步进电机、按键等外围设备。

(2)编写程序,实现以下功能:- 正转、反转控制;- 速度控制;- 停止控制;- 按键控制。

(3)使用Proteus仿真软件进行程序调试,验证程序的正确性。

(4)将程序烧录到单片机中,进行实际硬件测试。

四、实训结果与分析1. 正转、反转控制通过编写程序,实现了对步进电机的正转和反转控制。

在Proteus仿真软件中,可以观察到步进电机按照设定的方向转动。

2. 速度控制通过调整脉冲信号的频率,实现了对步进电机转速的控制。

在Proteus仿真软件中,可以观察到步进电机的转速随脉冲频率的变化而变化。

3. 停止控制通过编写程序,实现了对步进电机的停止控制。

在Proteus仿真软件中,可以观察到步进电机在停止信号后立即停止转动。

步进电机定位控制

步进电机定位控制

02
反应式步进电机
03
混合式步进电机
转子为软磁材料,结构简单、步 矩角小、精度较高,但动态性能 较差。
结合了永磁式和反应式的优点, 具有较高的精度和动态性能,但 结构复杂、成本较高。
步进电机的主要应用领域
01 数控机床:用于工件的精确加工和定位。
02 机器人:用于机器人的关节驱动和定位控 制。
03
自动化生产线:用于自动化生产线的物料 搬运和定位控制。
04
打印机、复印机等办公设备:用于纸张的 进给和定位控制。
02
CHAPTER
步进电机定位控制系统
定位控制系统的基本组成
控制器
用于接收输入的定位指令,并按照控制算法 生成驱动脉冲信号。
驱动器
将控制器输出的脉冲信号放大,驱动步进电 机转动。
步进电机
步进电机定位控制的软件实现
软件实现概述
软件实现是实现步进电机定位控制的 重要组成部分,主要包括脉冲发生、 运动控制和通信等功能。
脉冲发生
根据控制算法输出的控制信号,生成 相应的脉冲信号,驱动步进电机运动。
运动控制
实时监测步进电机的运动状态,根据 反馈信息调整控制信号,确保电机按 照预定轨迹运动。
通信功能
工作原理:步进电机内部通常由一组带有齿槽的转子构成,定子上有多相励磁绕组。当给定一个脉冲信号时,定子上的励磁 绕组会按一定的顺序通电,从而在转子上产生一个磁极,该磁极与定子上的齿槽对齐时,转子会转动一个步进角。步进角的 大小取决于转子的齿数和通电的相数。
步进电机的种类与特点
01
永磁式步进电机
结构简单、成本低、步矩角大, 但精度较低。
接受驱动器发出的脉冲信号,按照设定的步 数和方向转动。

三菱实用定位控制程序案例

三菱实用定位控制程序案例

三菱实用定位控制程序案例
首先,看这篇文章需要具备定位的基础知识,知道步进电机怎么通过脉冲去控制的。

下面是电机的示意图,plc通过Y0发脉冲,Y7控制电机的方向。

X2是正极限,X4是负极限,X3是原点回归。

控制由触摸屏去控制,控制的功能键如下
M0是手自动切换开关,M1是启动按钮,再自动状态下,按下M1,电机会走到位置1,再走到位置2,再走到位置3,再到4,再到5,然后回到第一步,不断循环。

M2
是停止的按钮,按下去后动作停止,M3是正转点动控制,M4是反转点动控制,M5是原点回归启动,按下原点回归,电机能够自动回到原点X3。

下面我们开始写程序,先写手动控制的程序,两个对应的M点分别控制输出正转和反转,把正反极限写入。

步进系统实验报告

步进系统实验报告

一、实验目的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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中国民航大学电气综合性课程设计报告项目名称基于单片机的步进电机分布式控制系统成员朱志聪121142440 蒋茅121142412陈冠良121142403 李想成121142415专业电气工程及其自动化班级121142D指导教师张长勇1、课设题目:基于单片机的步进电机分布式控制系统2、课设目的与要求:(1)实现步进电机的速度控制和正反转控制。

(2)实现步进电机定位,须包括加速、匀速、减速三个阶段。

(3)计算机通过串口远程控制步进电机并设置定位值3、课设背景:步进电机是国外发明的。

中国在文化大革命中已经生产和应用,例如江苏、浙江、北京、南京、四川都生产,而且都在各行业使用,驱动电路所有半导体器件都是完全国产化的,当时是全分立元器件构成的逻辑运算电路,还有电容耦合输入的计数器,触发器,环形分配器。

国外在大功率的工业设备驱动上,目前基本不使用大扭矩步进电动机,因为从驱动电路的成本,效率,噪音,加速度,绝对速度,系统惯量与最大扭矩比来比较,比较不划算,还是用直流电动机,加电动机编码器整体技术和经济指标高。

一些少数高级的应用,就用空心转杯电机,交流电机。

国外在小功率的场合,还使用步进电机,例如一些工业器材,工业生产装备,打印机,复印件,速印机,银行自动柜员机。

国外用许多现代的手段将步进电机排挤出驱动应用,除了前面提到的旋转编码器,打印机还使用光电编码带或感应编码带配合直流电动机,实现闭环直线位移控制。

4、课设的目和意义:步进电动机是用脉冲信号行控制,将转换成相应的角位移或线步进电动机是用脉冲信号行控制,将转换成相应的角位移或线的微电动机,它最突出的优点是可以在宽广频率范围内通过改变脉冲来实现调速,快起停、正反转控制及动等并且用其组成的开环系统既简单廉价又可行,因此在打印机等办公自动化设备以及各种控制装置众多领域有着极其广泛的应用。

随着微电子和计算机技术的发展,步进动需求量与日俱增随着微电子和计算机技术的发展,步进动需求量与日俱增研制步进电机驱动器及其控制系统具有十分重要的意义。

5、课设计划与安排:本课程设计有五周的时间,我们小组计划安排如下:第一周:自我学习51单片机,初步掌握51单片机的LED灯、数码管、LCD 屏幕、定时器、按键矩阵、步进电机等模块的控制。

第二周:编写要求(1)对应的程序,下载进行调试。

第三周:编写要求(2)对应的程序,下载进行调试。

第四周:编写要求(3)对应的程序,下载进行调试。

第五周:对程序进行总调试,把所有的程序组合起来,最后实现步进电机的分布式控制。

6、课设内容:(一)要求(1)的实现通过学习51单片机的定时、矩阵按键、步进电机模块,编写相应程序,实现步进电机加速、减速控制,正转、反转控制:①实验步骤:(程序设计)#include <reg52.h>sbit KEY_IN_1 = P2^4;sbit KEY_IN_2 = P2^5;sbit KEY_IN_3 = P2^6;sbit KEY_IN_4 = P2^7;sbit KEY_OUT_1 = P2^3;sbit KEY_OUT_2 = P2^2;sbit KEY_OUT_3 = P2^1;sbit KEY_OUT_4 = P2^0;unsigned char code KeyCodeMap[4][4] = { //矩阵按键编号到标准键盘键码的映射表{ 0x31, 0x32, 0x33, 0x26 }, //数字键1、数字键2、数字键3、向上键{ 0x34, 0x35, 0x36, 0x25 }, //数字键4、数字键5、数字键6、向左键{ 0x37, 0x38, 0x39, 0x28 }, //数字键7、数字键8、数字键9、向下键{ 0x30, 0x1B, 0x0D, 0x27 } //数字键0、ESC键、回车键、向右键};unsigned char KeySta[4][4] = { //全部矩阵按键的当前状态{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}};signed long beats = 0; //电机转动节拍总数unsigned int speed = 250;void KeyDriver();void delay(unsigned int i);void main(){EA = 1; //使能总中断TMOD = 0x01; //设置T0为模式1TH0 = 0xFC; //为T0赋初值0xFC67,定时1msTL0 = 0x67;ET0 = 1; //使能T0中断TR0 = 1; //启动T0while (1){KeyDriver(); //调用按键驱动函数}}/* 步进电机启动函数,angle-需转过的角度*/void StartMotor(signed long angle){//在计算前关闭中断,完成后再打开,以避免中断打断计算过程而造成错误EA = 0;beats = (angle * 4076) / 360; //实测为4076拍转动一圈EA = 1;}/* 步进电机停止函数*/void StopMotor(){EA = 0;beats = 0;EA = 1;}/* 按键动作函数,根据键码执行相应的操作,keycode-按键键码*/void KeyAction(unsigned char keycode){static bit dirMotor = 0; //电机转动方向if ((keycode>=0x30) && (keycode<=0x39)) //控制电机转动1-9圈{if (dirMotor == 0)StartMotor(360*(keycode-0x30));elseStartMotor(-360*(keycode-0x30));}else if (keycode == 0x26) //向上键,控制转动方向为正转{dirMotor = 0;}else if (keycode == 0x28) //向下键,控制转动方向为反转{dirMotor = 1;}else if (keycode == 0x25) //向左键,减速{speed = speed+50;}else if (keycode == 0x27) //向右键,加速{speed = speed-50;}else if (keycode == 0x1B) //Esc键,停止转动{StopMotor();}}/* 按键驱动函数,检测按键动作,调度相应动作函数,需在主循环中调用*/ void KeyDriver(){unsigned char i, j;static unsigned char backup[4][4] = { //按键值备份,保存前一次的值{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}};for (i=0; i<4; i++) //循环检测4*4的矩阵按键{for (j=0; j<4; j++){if (backup[i][j] != KeySta[i][j]) //检测按键动作{if (backup[i][j] != 0) //按键按下时执行动作{KeyAction(KeyCodeMap[i][j]); //调用按键动作函数}backup[i][j] = KeySta[i][j]; //刷新前一次的备份值}}}}/* 按键扫描函数,需在定时中断中调用,推荐调用间隔1ms */void KeyScan(){unsigned char i;static unsigned char keyout = 0; //矩阵按键扫描输出索引static unsigned char keybuf[4][4] = { //矩阵按键扫描缓冲区{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF},{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}};//将一行的4个按键值移入缓冲区keybuf[keyout][0] = (keybuf[keyout][0] << 1) | KEY_IN_1;keybuf[keyout][1] = (keybuf[keyout][1] << 1) | KEY_IN_2;keybuf[keyout][2] = (keybuf[keyout][2] << 1) | KEY_IN_3;keybuf[keyout][3] = (keybuf[keyout][3] << 1) | KEY_IN_4;//消抖后更新按键状态for (i=0; i<4; i++) //每行4个按键,所以循环4次{if ((keybuf[keyout][i] & 0x0F) == 0x00){ //连续4次扫描值为0,即4*4ms内都是按下状态时,可认为按键已稳定的按下KeySta[keyout][i] = 0;}else if ((keybuf[keyout][i] & 0x0F) == 0x0F){ //连续4次扫描值为1,即4*4ms内都是弹起状态时,可认为按键已稳定的弹起KeySta[keyout][i] = 1;}}//执行下一次的扫描输出keyout++; //输出索引递增keyout = keyout & 0x03; //索引值加到4即归零switch (keyout) //根据索引,释放当前输出引脚,拉低下次的输出引脚{case 0: KEY_OUT_4 = 1; KEY_OUT_1 = 0; break;case 1: KEY_OUT_1 = 1; KEY_OUT_2 = 0; break;case 2: KEY_OUT_2 = 1; KEY_OUT_3 = 0; break;case 3: KEY_OUT_3 = 1; KEY_OUT_4 = 0; break;default: break;}}/* 电机转动控制函数*/void TurnMotor(){unsigned char tmp; //临时变量static unsigned char index = 0; //节拍输出索引unsigned char code BeatCode[8] = { //步进电机节拍对应的IO控制代码0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6};if (beats != 0) //节拍数不为0则产生一个驱动节拍{if (beats > 0) //节拍数大于0时正转{index++; //正转时节拍输出索引递增index = index & 0x07; //用&操作实现到8归零beats--; //正转时节拍计数递减}else //节拍数小于0时反转{index--; //反转时节拍输出索引递减index = index & 0x07; //用&操作同样可以实现到-1时归7beats++; //反转时节拍计数递增}tmp = P1; //用tmp把P1口当前值暂存tmp = tmp & 0xF0; //用&操作清零低4位tmp = tmp | BeatCode[index]; //用|操作把节拍代码写到低4位P1 = tmp; //把低4位的节拍代码和高4位的原值送回P1 }else //节拍数为0则关闭电机所有的相{P1 = P1 | 0x0F;}}/* T0中断服务函数,用于按键扫描与电机转动控制*/void InterruptTimer0() interrupt 1{static bit div = 0;TH0 = 0xFC; //重新加载初值TL0 = 0x67;KeyScan(); //执行按键扫描//用一个静态bit变量实现二分频,即2ms定时,用于控制电机div = ~div;if (div == 1){ delay(speed);TurnMotor();}}void delay(unsigned int i){while(i--);②实验结果:我们借鉴了板子的内带按键、步进电机、定时器例程程序,重新进行编写,实现了步进电机的加减速控制和正反转控制,在学习板子的过程中,我们小组遇到的问题就是对C语言的不熟悉,起码有两年没有接触C语言程序了,程序的很多函数,语句不知道该怎么使用,一些C语言的规则也记得不太清了,在学习的过程中需要不断复习,上网查资料慢慢的才把C语言重新捡回来,经过一周的学习,我们也初步掌握了C语言程序与板子之间的正常单向通信,以及板子基本模块功能的实现,在编写程序过程中,我们常遇到的问题就是编写的程序下载到单片机后,和我们的预想情况不一样,如步进电机加减速定时函数的调用,经过的反复的修改,变量的定义错误,前置声明的缺少等,修改好程序后发现电机还是不能转,经过排查才发现,板子的跳线没有调好,在设计的过程中还遇到了很多其他的问题,如按键扫描不能正常工作,按键的状态备份没有设置好等等,经过了反复的排查修改才最后调试成功,通过这两星期的学习,我们小组对51单片机的部分功能有了进一步的认识。

相关文档
最新文档