专题5 步进电机加减速运动控制
- 格式:pptx
- 大小:4.03 MB
- 文档页数:31
1.1 步进电机加减速控制原理步进电机驱动执行机构从一个位置向另一个位置移动时,要经历升速、恒速和减速过程。
当步进电机的运行频率低于其本身起动频率时,可以用运行频率直接起动并以此频率运行,需要停止时,可从运行频率直接降到零速。
当步进电机运行频率fb>fa(有载起动时的起动频率)时,若直接用fb频率起动会造成步进电机失步甚至堵转。
同样在fb频率下突然停止时,由于惯性作用,步进电机会发生过冲,影响定位精度。
如果非常缓慢的升降速,步进电机虽然不会产生失步和过冲现象,但影响了执行机构的工作效率。
所以对步进电机加减速要保证在不失步和过冲前提下,用最快的速度(或最短的时间)移动到指定位置。
步进电机常用的升降频控制方法有2种:直线升降频(图1)和指数曲线升降频(图2)。
指数曲线法具有较强的跟踪能力,但当速度变化较大时平衡性差。
直线法平稳性好,适用于速度变化较大的快速定位方式。
以恒定的加速度升降,规律简练,用软件实现比较简单,本文即采用此方法。
1.2 定位方案要保证系统的定位精度,脉冲当量即步进电机转一个步距角所移动的距离不能太大,而且步进电机的升降速要缓慢,以防止产生失步或过冲现象。
但这两个因素合在一起带来了一个突出问题:定位时间太长,影响执行机构的工作效率。
因此要获得高的定位速度,同时又要保证定位精度,可以把整个定位过程划分为两个阶段:粗定位阶段和精定位阶段。
粗定位阶段,采用较大的脉冲当量,如0.1mm/步或1mm/步,甚至更高。
精定位阶段,为了保证定位精度,换用较小的脉冲当量,如0.01mm/步。
虽然脉冲当量变小,但由于精定位行程很短(可定为全行程的五十分之一左右),并不会影响到定位速度。
为了实现此目的,机械方面可通过采用不同变速机构实现。
工业机床控制在工业自动化控制中占有重要位置,定位钻孔是常用工步。
设刀具或工作台欲从A点移至C点,已知AC=200mm,把AC划分为AB与BC 两段,AB=196mm,BC=4mm,AB段为粗定位行程,采用0.1mm/步的脉冲当量依据直线升降频规律快速移动,BC段为精定位行程,采用0.01mm/步的脉冲当量,以B点的低频恒速运动完成精确定位。
步进电机运动规律及速度控制方法姓名:吴良辰班级:10机设(2)学号:201010310206学期我们专业开设了机电传动控制这么课,它是机电一体化人才所需要知识结构的躯体,由于电力传动控制装置和机械设备是一个不可分割的整体,所以我么能从中了解到机电传动控制的一般知识,要掌握电机、电器、晶闸管等工作原理、特性、应用和选用的方法。
了解最新控制技术在机械设备中的应用。
在现代工业中,机电传动不仅包括拖动生产机械的电动机,而且还包括控制电动机的一整套控制,以满足生产过程自动化的要求。
也就是说,现代机电传动是和各种控制元件组成的自动控制系统联系在一起。
机电系统一般可分为图一所示的三个部分。
图1 机电传动控制在没上这门课之前,在我自己认为,电机就是那些就是高中学的那些直流电动机,就是通电线圈在磁场转动。
那是直流电动机了,慢慢的我接触了交流电动机,刚开始知道220V市电。
记得大一下学期,我们金工实习了,看到工训下面那么多的车床,铣床,钻床……由于要提供大的功率,所以主电机都是选用380V。
上完这门让我更详细了解他们内部的结构和工作原理。
还说明知识是慢慢积累的过程。
见的多学的多。
我明白了很多以前的疑惑。
看到电视机上那些智能机器人,他们的活动很自如,就像仿生肌肉一样。
尤其是日本的机器人。
它的机械臂很有可能是步进电机控制的,还有一种说法是液压与气压控制的。
我觉的两者都有。
很有幸大一时候进入了第二课堂,在里面学到东西,也接触了步进电机,我是在学51单片机那时候也买了一个,就觉得很神奇。
在加上前几天参加了江西省电子设计大赛,我就感觉到要是要选控制类的题目做,步进电机是不能少的。
所以步进电机是个好东西。
我在网上查了一下资料,上个世纪就出现了步进电机,它是一种可以自由回转的电磁铁,动作原理和今天的反应式步进电机没有什么区别,也是依靠气隙磁导的变化来产生电磁转矩。
很遗憾的是它是国外人发明的。
开始写正题了,上完这门课,那个步进电机是让我很痴迷的。
步进电机运动规律及速度控制方法该设计的关键是确定脉冲定时tn,脉冲时间间隔即脉冲周期Tn和脉冲频率fn。
假设从启动瞬时开始计算脉冲数,加速阶段的脉冲数为n,并设启动瞬时为计时起点,定时器初值为D1,定时器初值的减量为△。
从加速阶段的物理过程可知,第一个脉冲周期,即启动时的脉冲周期T1=D1/f0,t1=0。
由于定时器初值的修改,第2个脉冲周期T2=(D1-△)/f0=T1-△/f0,脉冲定时t2=T1,则第n个脉冲的周期为:Tn=T1-(n-1)△/f0(1)脉冲定时为:(2)脉冲频率为:1/fn=Tn=T1-(n-1)△/f0(3)上式分别显示了脉冲数n与脉冲频率fn和时间tn的关系。
令△/f0=δ,即加速阶段相邻两脉冲周期的减量,则上述公式简化为:tn=(n-1)T1-(n-2)(n-1)δ/2(4)1/fn=T1-(n-1)δ(5)联立(4)、(5),并简化fn与tn的关系,得出加速阶段的数学模型为:(6)其中,是常数,其值与定时器初值及定时器变化量有关,A=-δ,B=(2T1+δ)2,C=8δ。
加速阶段脉冲频率的变化为:(7)从(6)、(7)式可以看出,在加速阶段,脉冲频率不断升高,且加速度以二次函数增加。
这种加速方法对步进电机运行十分有利,因为启动时,加速度平缓,一旦步进电机具有一定的速度,加速度增加很快。
这样一方面使加速度平稳过渡,有利于提高机器的定位精度,另一方面可以缩短加速过程,提高快速性能。
PWM的主要目的是让电流是正弦波,也就是细分。
他的目的是减小步进电机的震动。
简单地说如果你是用哪种恒定的高电平来驱动步进电机,那么低速情况下,因为步进电机每次都是全速从前一个位置到达下一个位置,因此,实际上步进电机所花费的时间会明显小于你的换相的周期,因此电机会出现震动。
而PWM的目的就是让步进电机加速度别那么快,保证转子从老位置到新位置所花费的时间正好等于换相周期。
并且在这个期间转子的转动速度是基本上恒定的。
1 加减速控制算法1.1 加减速曲线本设计按照步进电机的动力学方程和矩频特性曲线推导出按指数曲线变化的升降速脉冲序列的分布规律,因为矩频特性是描述每一频率下的最大输出转矩,即在该频率下作为负载加给步进电机的最大转矩。
因此把矩频特性作为加速范围下可以达到(但不能超过)的最大输出转矩来拟订升降速脉冲序列的分布规律,就接近于最大转矩控制的最佳升降速规律。
这样能够使得频率增高时,保证输出最大的力矩,即能够对最大的力矩进行跟随,能充分的发挥步进电机的工作性能,使系统具有良好的动态特性。
由步进电机的动力学方程和矩频特性曲线,在忽略阻尼转矩的情况下,可推导出如下方程:式中,为转子转动惯量,K为假定输出转矩按直线变化时的斜率,τ为决定升速快慢的时间常数,在实际工作中由实验来确定。
fm为负载转矩下步进电机的最高连续运行频率,步进电机必须在低于该频率下运行才能保证不失步。
(1)式为步进电机的升速特性,由此方程可绘制出电机升速曲线。
(1)式表明驱动脉冲的频率f应随时间t作指数规律上升,这样就可以在较短的时间内使步进电机的转速上升至要求的运行速度。
鉴于大多数的步进电机的矩频特性都近似线性递减的,所以上述的控制规律为最佳。
1.2 加减速离散处理在本系统中,FPGA使用分频器的方式来控制步进电机的速度,升降速控制实际上是不断改变分频器初载值的大小。
指数曲线由于无法通过程序编制来实现,可以用阶梯曲线来逼近升速曲线,不一定每步都计算装载值。
如图l所示,纵坐标为频率,单位是步/秒,其实反映了转速的高低。
横坐标为时间,各段时间内走过的步数用N来表示,步数其实反映了行程。
图中标出理想升速曲线和实际升速曲线。
步进电机的升速过程可按以下步骤进行处理。
(1)若实际运行速度为fg,从(3.4)式中可算出升速时间为:(2)将升速段均匀地离散为n段即为阶梯升速的分档数,上升时间为tr,则每档速度保持时间为:程序执行过程中,对每档速度都要计算在这档速度应走的步数,然后以递减方式检查,即每走一步,每档步数减1。
步进电机的加减速控制一、引言随着科学技术的发展和微电子控制技术的应用,步进电机作为一种可以精确控制的电机,广泛应用在高精密加工机床,微型机器人控制,航天卫星等高科技领域。
二、步进电机的原理步进电机是一种控制用的特种电机,它无法像传统电机那样直接通过输入交流或直流电流使其运行,而是需要输入脉冲电流来控制电机的转动,所以步进电机又称为脉冲电机。
其功能是将脉冲电信号变换为相应的角位移或直线位移,即给一个脉冲电信号,电机就转动一个角度或前进一步。
按励磁方式可以分为反应式、永磁式和混合式三种类型,本设计中选用的是反应式步进电机,其结构如图 1 所示。
这是一台四相反应式步进电机的典型结构。
共有4 套定子控制绕组,绕在径向相对的两个磁极上的一套绕组为一相,也就是说定子上两个相对的大齿就是一个相,电机按照A —B —C —D — A 的顺序不断接通和断开控制绕组,转子就会一步一步的连续转动。
其转速取决与各控制绕组通电和断电的频率,即输入的脉冲频率。
旋转的方向则取决与各控制绕组轮流通电的顺序。
三、步进电机的驱动控制步进电机不能直接接到直流或交流电源上工作,必须使用专门的步进电机驱动控制器。
步进电机和步进电机驱动器构成步进电机驱动系统。
步进电机驱动系统的性能,不仅取决于步进电机自身的性能,也取决于步进电机驱动器的优劣。
步进电机的驱动方式有很多种,包括单电压驱动、双电压驱动、斩波驱动、细分驱动、集成电路驱动和双极性驱动。
本设计选用的是恒频脉宽调制细分驱动控制方式,这是在斩波恒流驱动的基础上的进一步改进,既可以使细分后的步距角均匀一致,又可以避免复杂的计算。
四、恒频脉宽调制细分电路的设计1、脉冲分配的实现在步进电机的单片机控制中,控制信号由单片机产生。
它的通电换相顺序严格按照步进电机的工作方式进行。
通常我们把通电换相这一过程称为脉冲分配。
本设计中选用8713 脉冲分配器芯片来进行通电换相控制。
2、系统控制电路设计步进电机控制系统主电路设计如图 2 所示。
步进电机加减速控制方法时间:2011-08-03 来源:未知编辑:电气自动化技术网点击: 1039次字体设置: 大中小[摘要]:步进电机只能够由数字信号控制运行的,当脉冲提供给驱动器时,在过于短的时间里,控制系统发出的脉冲数太多,也就是脉冲频率过高,将导致步进电机堵转。
要解决这个问题,必须采用加减速的办法。
就是说,在步进电机起步时,要给逐渐升高的脉冲频率,减速时的脉冲频率需要逐渐减低。
这就是我们常说的“加减速”方法。
[关键词]:步进电机数字信号驱动器步进电机只能够由数字信号控制运行的,当脉冲提供给驱动器时,在过于短的时间里,控制系统发出的脉冲数太多,也就是脉冲频率过高,将导致步进电机堵转。
要解决这个问题,必须采用加减速的办法。
就是说,在步进电机起步时,要给逐渐升高的脉冲频率,减速时的脉冲频率需要逐渐减低。
这就是我们常说的“加减速”方法。
步进电机转速度,是根据输入的脉冲信号的变化来改变的。
从理论上讲,给驱动器一个脉冲,步进电机就旋转一个步距角(细分时为一个细分步距角)。
实际上,如果脉冲信号变化太快,步进电机由于内部的反向电动势的阻尼作用,转子与定子之间的磁反应将跟随不上电信号的变化,将导致堵转和丢步。
所以步进电机在高速启动时,需要采用脉冲频率升速的方法,在停止时也要有降速过程,以保证实现步进电机精密定位控制。
加速和减速的原理是一样的。
下面就加速实例加以说明:加速过程,是由基础频率(低于步进电机的直接起动最高频率)与跳变频率(逐渐加快的频率)组成加速曲线(降速过程反之)。
跳变频率是指步进电机在基础频率上逐渐提高的频率,此频率不能太大,否则会产生堵转和丢步。
加减速曲线一般为指数曲线或经过修调的指数曲线,当然也可采用直线或正弦曲线等。
使用单片机或者PLC,都能够实现加减速控制。
对于不同负载、不同转速,需要选择合适的基础频率与跳变频率,才能够达到最佳控制效果。
指数曲线,在软件编程中,先算好时间常数存贮在计算机存贮器内,工作时指向选取。
步进电机梯形加减速实验实验原理步进电机是一种将电脉冲信号转换为角位移的电动机。
它以其精度高、定位准确和响应速度快等特点,在自动化控制系统中得到了广泛应用。
其中,步进电机梯形加减速实验是一种用于研究步进电机运动特性的实验方法。
步进电机梯形加减速实验的原理是通过调节电脉冲信号的频率和相序来控制步进电机的运动,实现不同速度下的加减速运动。
具体步骤如下:1.实验仪器准备:实验所需仪器包括步进电机、电流驱动器、控制器和计时仪等。
其中,电流驱动器用于提供电流给步进电机,控制器用于控制电流驱动器的工作状态,计时仪则用于测量步进电机的运动时间。
2.实验电路搭建:将电脉冲发生器的输出连接到控制器的输入口,控制器的输出口连接到电流驱动器的控制端口,电流驱动器的输出端口连接到步进电机的相线上。
同时,将电流驱动器的电源和步进电机的电源连接,确保实验电路可正常工作。
3.实验参数设置:根据实验要求,设置控制器的电流值、步进角度和加速度等参数。
其中,电流值决定步进电机的扭矩大小,步进角度决定电机每次接收到电脉冲后转动的角度,加速度则影响电机的加减速过程。
4.实验步骤控制:通过控制器调节电脉冲信号的频率和相序,可以实现对步进电机的控制。
通过改变电脉冲的频率和相序,可以控制步进电机的转动速度和运动方式。
在加减速实验中,可以通过逐步增加电脉冲的频率和相序,来实现步进电机的加速过程;通过逐步减小电脉冲的频率和相序,则可以实现步进电机的减速过程。
5.运动时间测量:通过将计时仪连接到步进电机上,可以测量电机在不同速度下的运动时间。
通过测量多次,可以得到步进电机的平均运动时间,并计算出电机的平均速度。
步进电机梯形加减速实验原理简单来说就是通过调节电脉冲信号的频率和相序来控制步进电机的转动速度和运动方式,从而实现不同速度下的加减速运动。
在实验中通过设置电流值、步进角度和加速度等参数,可以控制步进电机的性能。
通过测量电机的运动时间,可以得到步进电机的平均速度,并探究步进电机的运动特性。
不需要专门的延迟。
但是软件中应该做到使速度是连续的渐变,而不是突变。
类似物理里面我们分析的“上抛物体”的运动一样:先按匀减速运动,速度减到零后就变成反方向的匀加速运动了。
不要有从某个速度“突变”为静止,或由静止“突变”为某个速度的操作。
这种“突变”自然会产生冲击振动。
至于这个“匀加速度”、“匀减速度”的加速度大小,则可以根据步进电机的性能和负载的惯性大小来确定。
通常,步进电机都会给出一个“最大力矩”的参数。
根据这个最大力矩,和负载的惯性(包括步进电机的转子和传动机构的惯性在内)大小,可以计算出加速度不应该超过多少。
实际设计时,还应该比最大允许值再留出相当的余地。
当然,我上面说的“速度”、“加速度”都是一个连续的理论值,实际的步进电机是一步一步离散的操作的,和理论规律总会有差别。
但是只要这种“量化误差”不超过一定限度,就可以有满意的效果了。
最理想的是,这个误差的累计值不超过0.5步。
也就是说,假如按照上述“匀加速”、“匀减速”的理论计算,在时刻t的时候应该走到x步(有小数)的位置,而真实的执行效果是:走到的位置总是等于x的四舍五入取整的值。
这是最理想的。
如果算法设计不好,这个累积误差可能会大些。
但最坏的情况下,这个误差的累计值不要超过半个相位周期。
例如,您的脉冲分配如果是“四相八拍制”,那么,累积误差就必须小于4步。
超出的话,就会发生步进电机的“失步”。
上面说的道理,对于采用不采用“细分”,道理是一样的。
只是采用细分后的每一个“步”(“细步”)比原来小了,容易做到比较均匀。
例如上面说的“四相八拍制累积误差就必须小于4步”,如果采用了“16细分”,那么只要小于64“细步”就可以,显然软件里处理起来更容易一些。
但是,只要软件考虑设计仔细一些,不采用细分也是可以做到的。
【看了“广州一丁”兄的回答后,再补充说明一点】上面“广州一丁”兄说的“减速时间长点,加速时间同时也长点”,就相当于我这里说的“匀加速运动”和“匀减速运动”段中,加速度的绝对值再小一些。
步进电机加减速控制规律
李晓菲;胡泓;王炜;程云涛
【期刊名称】《机电产品开发与创新》
【年(卷),期】2006(19)1
【摘要】对于需要步进电机快速定位的系统来说,一个合理的加减速过程是非常重要的.作者通过对系统的理论分析以及相关实验,提出一种基于单片机的简化后的指数型加减速曲线控制方法.该方法既可以提高快速性,又可以保证系统的定位精度.【总页数】3页(P122-123,128)
【作者】李晓菲;胡泓;王炜;程云涛
【作者单位】哈尔滨工业大学,深圳研究生院,广东,深圳,518055;哈尔滨工业大学,深圳研究生院,广东,深圳,518055;深圳迈瑞生物医疗仪器有限公司,广东,深圳,518005;哈尔滨工业大学,深圳研究生院,广东,深圳,518055
【正文语种】中文
【中图分类】TM383.6
【相关文献】
1.加速度连续可变的加减速控制规律研究 [J], 许良元;桂贵生;彭丹丹
2.1种单片机实现步进电机的加、减速控制 [J], 孙蓓;张志义;张学文
3.步进电机正弦曲线加减速控制算法研究 [J], 白栋;黄伟
4.步进电机加减速曲线优化设计与仿真 [J], 王磊;吕东澔
5.步进电机S型加减速算法改善研究 [J], 刘锦杭
因版权原因,仅展示原文概要,查看原文内容请购买。
比较几种步进电机加减速控制方案加减速算法是运动控制中的关键技术之一,也是实现高速、高效率的关键因素之一。
在工业控制中,一方面要求加工的过程平滑、稳定,柔性冲击小;另一方面需要响应时间快,反应迅速。
在保证控制精度的前提下来提高加工效率,实现机械运动平滑稳定,是目前工业加工中一直要解决的关键问题。
当前运动控制系统中常用的加减速算法主要有:梯形曲线加减速、S形曲线加减速、指数曲线加减速、抛物线曲线加减速等。
1、“梯形”加减速定义:指按直线方式(从启动速度到目标速度的加减速),以一定的比例进行加速/减速图1:“梯形”加减速速度及加速度曲线计算公式:优缺点: 梯形曲线其特点是算法简便,占用时少、响应快、效率高,实现方便。
但匀加速和匀减速阶段不符合步进电机速度变化规律,在变速和匀速转折点不能平滑过渡。
所以这种算法主要应用在对升降速过程要求不高的场合。
“指数形”加减速定义:指按指数函数方式进行加减速。
图2:“指数型”加减速速度及加速度曲线计算公式:优缺点:指数曲线克服了梯形加减速的速度不平稳问题,运动精度得到了提高,但初始加速度大,容易引起机械部件的冲击,在加减速的起点仍然存在加减速突变,限制了加速度的提高。
“S形”加减速定义:加速/减速开始时速度比较缓慢,然后逐渐加快。
在加速/减速接近结束时速度再次减慢下来,从而使移动较为稳定。
S 字加减速的类型有Sin 曲线、2次曲线、循环曲线、3 次曲线图3:“S型”加减速速度及加速度曲线计算公式:优缺点:S曲线加减速是一种柔性程序较好的控制策略,能让电机性能得到充分的发挥,冲击振动小,但是实现过程比较复杂,计算量相对较大,并且加减速效率不高。
加减速控制评价指标1、机械运动轨迹及位置误差应该尽量的小2、机械运动过程平稳、抖动小,且响应迅速3、加减速算法应该尽量简单,便于实现,能够满足控制的实时性要求梯形加减速速度曲线采用“梯形”加减速算法,在运动过程中分成以下四个状态:空闲状态,加速状态,匀速状态与减速状态。
自动门控制的步进电机正反转和加速减速C程序步进电机的正反转和加速减速是实现自动门控制的关键功能。
通过编写C程序,我们可以实现对步进电机的控制,使其按照设定的方向旋转,并可以进行加速和减速操作。
步进电机正反转步进电机的正反转是通过控制电机的相序来实现的。
下面是一个简单的C程序示例,用于控制步进电机的正反转:include <stdio.h>int main() {// 定义电机的相序int sequence[] = {1, 2, 4, 8};int direction = 1; // 1表示正转,-1表示反转// 正转if (direction == 1) {for (int i = 0; i < 4; i++) {printf("Phase: %d\n", sequence[i]);// 在这里控制步进电机的相序输出}}// 反转else if (direction == -1) {for (int i = 3; i >= 0; i--) {printf("Phase: %d\n", sequence[i]);// 在这里控制步进电机的相序输出}}return 0;}在以上示例代码中,我们通过设置`sequence`数组来表示电机的相序,其中`sequence[0]`表示第一相,`sequence[1]`表示第二相,以此类推。
通过循环遍历数组中的元素,并控制步进电机相序的输出,从而实现步进电机的正反转。
步进电机加速减速步进电机的加速减速是通过逐渐改变电机的驱动信号频率来实现的。
下面是一个简单的C程序示例,用于控制步进电机的加速减速:include <stdio.h>include <unistd.h>int main() {// 定义电机的相序int sequence[] = {1, 2, 4, 8};int delay = 1000; // 初始延时时间,单位为毫秒int minDelay = 100; // 最小延时时间,单位为毫秒// 加速for (int i = 0; i < 4; i++) {printf("Phase: %d\n", sequence[i]);// 在这里控制步进电机的相序输出usleep(delay); // 延时if (delay > minDelay) {delay -= 100; // 减小延时时间,实现加速}}// 延时一段时间// 减速for (int i = 3; i >= 0; i--) {printf("Phase: %d\n", sequence[i]);// 在这里控制步进电机的相序输出usleep(delay); // 延时if (delay < 1000) {delay += 100; // 增加延时时间,实现减速}}return 0;}在以上示例代码中,我们通过循环遍历数组中的元素,并控制步进电机相序的输出,并通过调用`usleep`函数来实现延时,从而控制步进电机的转速。
控制步进电机正反转的加减速程序程序#include#define KeyPort P1#define DataPort P0 //定义数据端口程序中遇到DataPort 则用P0 替换sbit LATCH1=P2^4;//定义锁存使能端口段锁存sbit LATCH2=P0^0;// 位锁存unsigned char code dofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]; //存储显示值的全局变量sbit A1=P2^0; //定义步进电机连接端口sbit B1=P2^1;sbit C1=P2^2;sbit D1=P2^3;#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//DA相通电,其他相断电#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电unsigned char Speed=1;bit StopFlag;void Display(unsigned char FirstBit,unsigned char Num);void Init_Timer0(void);unsigned char KeyScan(void);/*------------------------------------------------uS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编,大致延时长度如下 T=tx2+5 uS------------------------------------------------*/void DelayUs2x(unsigned char t){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数 unsigned char t,无返回值unsigned char 是定义无符号字符变量,其值的范围是0~255 这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/void DelayMs(unsigned char t){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------主函数------------------------------------------------*/main(){unsigned int i=512;//旋转一周时间unsigned int n=0;unsigned char num,vo,v;Init_Timer0();Coil_OFF;while(1) //正向{num=KeyScan(); //循环调用按键扫描if(num==1)//第一个按键,速度等级增加{if(Speed<15)Speed=Speed+2;//+8}if(num==2)//第二个按键,速度等级减小{if(Speed>1)Speed=Speed-2;//-8}if(num==3)//第三个按键,电机停转{Coil_OFFStopFlag=1;}if(num==4)//第四个按键,电机启动{StopFlag=0;TR0=1;}if(num==5)//第五个按键,电机反转{TR0=0;TR1=1;}if(num==6)//第六个按键,电机正传{TR0=1;TR1=0;}vo=(0.25*(20-Speed)*64*32)/1000;v=60/vo;TempData[0]=dofly_DuanMa[v/10]; //分解显示信息,如要显示68,则68/10=6 68%10=8TempData[1]=dofly_DuanMa[v%10];}}/*------------------------------------------------显示函数,用于动态扫描数码管输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示如输入0表示从第一个显示。