《基于单片机的步进电机控制系统大学论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的步进电机控制系统大学论文.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 日期:2016 年 8 月 20日 设计名称: 电气应用系统设计 题 目: 基于单片机系统的步进电机驱动 年 级: 2013 级 学生姓名: 金川杰 学 号: 3120130806124 专 业: 电气工程及其自动化 指导教师: 王光宇 电气工程及其自动化电气与电子信息学院电气应用系统设计报告西华大学电气与电子信息学院电气应用系统设计报告 基于单片机系统的步进电机驱动摘 要:本文介绍了基于80C52单片机的步进电机控制系统的设计。分别概括的介绍了单片机和步进电机以及步进电机的各种驱动方案;对一款四相步进电机以及80C52单片机的功能参数和一种驱动方式的特点,以及选择其原因进行了必要的说明;对
2、基于80C52单片机的步进电机控制系统的原理进行了介绍;根据80C52单片机和步进电机的原理以及特点和参数选择了其他元器件,结合驱动芯片ULN2003A,建立了相应的电路图;进行了必要的电路分析说明,并将这个电路图制作成型,使其工作,实现加速,减速,正转,反转等功能。关键词:步进电机;AT89C52单片机;ULN2003A驱动。Abstract: This paper introduces the design of the stepper motor control system based on 80C52 MCU. Respectively generalize the MCU and
3、step into motor and step into the motor drive scheme; a four phase stepper motor and 80C52 microcontroller function parameters and a drive mode characteristics, and choice of the reasons for the necessary explanation; the 80C52 microcontroller based stepper motor control system principle are introdu
4、ced; based on 80C52 microcontroller and step into motor principle and characteristics and parameters select other components, the combination of the driving chip uln2003a, establish the corresponding circuit diagram; the necessary circuit analysis and the circuit diagram of the forming, the work, th
5、e function of acceleration and deceleration.Keywords: AT89C52 MCU; ULN2003A driver.目录1 前言11.1课题的背景11.2 发展概况11.3 课题主要内容12 步进电机的基本原理与参数、分类和选择22.1 步进电机的基本原理与参数22.2 步进电机的特点22.3步进电机分类32.4四相混合式步进电机的工作原理及工作方式32.5步进电机具体型号的选择43 步进电机驱动系统及驱动接口选择43.1集成功率驱动接口及驱动芯片的选择54 驱动系统硬件组成及具体驱动方案分析74.1 关于80C52单片机的介绍74.2驱动系统
6、总体结构94.3驱动系统的驱动原理94.3.1步进电机的控制信号104.3.2控制信号功率的放大104.3.3单片机控制信号的输出115 电路板焊接部分125.1 电烙铁的选择125.2 焊锡的选用125.3 焊剂的选用125.4 焊接前的准备工作125.5 焊接方法126 结论14参考文献15附录116附录221 II1 前言1.1课题的背景步进电机是现代数字控制技术中最早出现的执行部件,其特点是可以将数字脉冲控制信号直接转换为一定数值的机械角位移,并且能够自动产生定位转矩使转轴锁定。如果在机械结构中再配以滚珠丝杠,那步进电机的高精度转角就可以转换为高精度直线位移,这在以精度为要求的现代机械
7、控制中是极其重要的一点。 随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个经济领域都有应用。步进电机作为一种控制用的特种电机,其优点是结构简单、运行可靠、控制方便。尤其是步距值不受电压、温度的变化的影响、误差不会长期积累的特点,给实际的应用带来了很大的方便。研究步进电机的控制方法,对提高控制精度和响应速度、节约能源等都具有重要意义。为此,本文设计了一段步进电机驱动程序,可以实现对步进电机转动速度等级的调节,并用数码管显示。 1.2 发展概况 虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使
8、用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 目前,生产步进电机的厂家的确不少,但具有专业技术人员,能够自行开发,研制的厂家却非常少,连最基本的设备都没有。仅仅处于一种盲目的仿制阶段。这就给户在产品选型、使用中造成许多麻烦。鉴于上述情况,本文决定以四相混合式步进电机为例叙述其基本工作原理及设计简单的驱动程序。望能对广大用户在选型使用时有所帮助。 1.3 课题主要内容 本课题将分析步进电机的工作原理,并简单介绍其各种驱动方式。使用单片机以软件方式配合有关芯片和电路元件驱动步进电机,通过C语言编程方法,对步进电机的转速与方向进行控制,使其在一定范围下运行。在Kei
9、l中编程并调试,Proteus中进行仿真,并很好地模拟出实验结果。 最后,烧写代码,在硬件上进行验证并调试,保证软件仿真与硬件的效果相同,满足课程设计的要求,达到设计的目的。2 步进电机的基本原理与参数、分类和选择2.1 步进电机的基本原理与参数 电机基本原理:步进电机是一种将电脉冲转化为角位移的执行机构,当步进电机接收到一个脉冲信号,它就按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的。同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 电机固有步距角:它表示控制系统每发
10、一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0.9/1.8(表示半步工作时为0.9 整步工作时为1.8)这个步距角可以称之为“电机固有步距角”它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 步进电机的相数:是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9/1.8、三相的为0.75/1.5、五相的为0.36/0.72。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则“相数”将变得没有意义,用户
11、只需在驱动器上改变细分数,就可以改变步距角。 保持转矩:是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说的情况下是指保持转矩为2N.m的步进电机。2.2 步进电机的特点 1一般步进电机的精度为步进角的3%-5%,且不累积。 2步进电机的力矩会随转速的升高而下降。 3当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作
12、用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。 4步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。 步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。2.3步进电机分类 目前常用的有三种步进电动机:反应式(Variable Reluctance,VR)、永磁式(Permanent Magnet,PM)和混
13、合式(Hybrid Stepping,HS)。 反应式:定子上有绕组、转子由软磁材料组成。结构简单、成本低、步距角小,可达1.2、但动态性能差、效率低、发热大,可靠性难保证。 永磁式:永磁式步进电机的转子用永磁材料制成,转子的极数与定子的极数相同。其特点是动态性能好、输出力矩大,但这种电机精度差,步矩角大(一般为7.5或15)。 混合式:混合式步进电机综合了反应式和永磁式的优点,其定子上有多相绕组、转子上采用永磁材料,转子和定子上均有多个小齿以提高步矩精度。其特点是输出力矩大、动态性能好,步距角小,但结构复杂、成本相对较高。按定子上绕组来分,共有二相、三相和五相等系列。最受欢迎的是两相混合式步
14、进电机,约占97%以上的市场份额,其原因是性价比高,配上细分驱动器后效果良好。该种电机的基本步距角为1.8/步,配上半步驱动器后,步距角减少为0.9,配上细分驱动器后其步距角可细分达256倍(0.007/微步)。由于摩擦力和制造精度等原因,实际控制精度略低。同一步进电机可配不同细分的驱动器以改变精度和效果。 综合步进电机的以上参数特点以及各种步进电机的优缺点,本课题选用四相混合式(感应子式)步进电机 2.4四相混合式步进电机的工作原理及工作方式 如图2-1。开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号
15、齿就和D、A相绕组磁极产生错齿。当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。如图2-1所示: 图2-1 四相步进电机步工作进示意图 四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控
16、制精度。 单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2-2a、b、c所示: a. 单四拍 b. 双四拍 c.八拍 图2-2 步进电机工作时序波形图 2.5步进电机具体型号的选择 首先基于安全的考量:不使用大功率高电压的步进电机,步进电机的输入电压应该小于安全电压,所以该课程涉及的步进电机应该是小功率低电压的。 此外考虑到实验室材料和驱动功率大小等实际条件,以及连线的方便与否。最终选择型号为28BYJ-48的四相五线步进电机。该步进电机的主要参数为: 1额定电压:5VDC 2直流电阻:2007%(25) 3减速比:1/64 4步距角:5.625/64 5驱动方式:4相8拍 6牵入转
17、矩:350mN.m(120Hz) 7打滑扭力:800-1300mN.m 8温升:50K(5VDC 工作频率:120Hz) 9噪音:小于35dB(120Hz) 10绝对耐压:600VAC/1s 3 步进电机驱动系统及驱动接口选择步进电动机不能直接接到工频交流或直流电源上工作,而必须使用专用的步进电动机驱动器,如图3-1所示,它由脉冲发生控制单元、功率驱动单元、保护单元等组成。图中点划线所包围的二个单元可以用微机控制来实现。驱动单元与步进电动机直接耦合,也可理解成步进电动机微机控制器的功率接口,这里对步进电机各种驱动接口进行简单的介绍。如图3-1所示: 图3-1 步进电动机驱动控制系统 3.1集成
18、功率驱动接口及驱动芯片的选择 由于单片机的输出功率很小,无法驱动步进电机,所以一般要经过功率放大器来实现步进电机的控制。功率放大器主要用两种:一种是分离式功率放大器,主要用MOS管实现,适用于大功率,效率高,但价格比较贵。另一种是集成式功率放大器,试用小功率器件,价格便宜,控制简单。目前市场已有多种用于小功率步进电动机的集成功率驱动接口电路可供选用。例如集成H桥式驱动器L298芯片,集成达林顿管ULN2003A极电极开路驱动芯片等。由于ULN2003A具有电流增益高、工作电压高、温度范围宽、带负载能力强,而且集成有续流二极管等特点,以及其对单片机的专用性。本课题选择ULN2003A驱动芯片如图
19、所示: 图3-6 ULN2003逻辑图 图3-7 ULN2003内部电路图 由图3-6、图3-7可知,ULN2003A其本质是一个基于三极管的非门电路芯片。在驱动过程中,ULN2003起到将控制信号功率放大和信号反相的作用。进而稳定地将步进电机的控制信号平稳有效地送给步进电机,确保步进电机的正常运转。 采用集成芯片驱动比较方便,毕竟这是小功率的器件,同时ULN2003可以承受很高的电压,如12V远远满足该设计所要求的最低电压。此外ULN2003的驱动功率满足步进电机的最小收入功率,最重要的是:该驱动芯片可以很方便与单片机IO连接,能直接用TTL电平实现步进电机的控制,而不需要额外的元件辅助。基
20、本的控制原理是:当单片机的IO输出高电平给ULN2003的输入引脚时,此时ULN2003的内部达林顿管导通,使得外界的电流通过ULN2003之后再流过步进电机,当单片机输出低电平给ULN2003时,此时其内部的达林顿管关闭,外界的电流无法通过ULN2003而无法通过步进电机,则此时步进电机停止转动。只要按照一定的顺序给ULN2003不断输入高低电平,那么步进电机就会转通起来。 4 驱动系统硬件组成及具体驱动方案分析 4.1 关于80C52单片机的介绍 单片机以其体积小、功能齐全、价格低廉、可靠性高等优点,在各个领域都获得了广泛的应用。即使非电子计算机专业人员,通过学习一些专业基础知识以后也能依
21、靠自己的技术力量,来开发所希望的单片机应用系统。故在本次设计中采用了其中的低功耗型80C52单片机。 该系列单片机是采用高性能的静态80C52设计,由先进CMOS工艺制造,并带有非易失性Flash程序存储器,全部支持12时钟和6时钟操作,P89C51X2和P89C52X2/54X2/58X2 分别包含128 字节和256 字节RAM、32 条I/O 口线、3 个16 位定时/计数器、6 输入4 优先级嵌套中断结构、1 个串行I/O 口、可用于多机通信 I/O 扩展或全双工UART以及片内振荡器和时钟电路。可实现两个由软件选择的节电模式空闲模式和掉电模式,空闲模式冻结CPU,但RAM定时器、串口
22、和中断系统仍然工作;掉电模式保存RAM的内容,但是冻结振荡器,导致所有其它的片内功能停止工作。 其主要结构组成如下: 1中央处理器(CPU) 2内部数据存储器(内部RAM) 3内部程序存储器(内部ROM) 4定时器/计数器 5并行I/O口6串行口 7时钟电路 8中断系统 9外接晶体引脚 图4-1 80C52单片机管脚图 图4-2 80C52单片机工作系统图 单片机管脚如图4-1所示,下面对其各个管脚进行必要的说明。 P0、P1、P2、P3口的电平与CMOS和TTL电平兼容。 P0口的每一位口线可以驱动8个LSTTL负载。在作为通用I/O口时,由于输出驱动电是开漏方式,由集电极开路(OC门)电路
23、或漏极开路电路驱动时需外接上拉电阻;当作为地址/数据总线使用时,口线输出不是开漏的,无须外接上拉电阻。 P1、P2、P3口的每一位能驱动4个LSTTL负载。它们的输出驱动电路设有内部上拉电阻,所以可以方便地由集电极开路(OC门)电路或漏极开路电路所驱动,而无须外接上拉电阻。 当CPU不对P3口进行字节或位寻址时,内部硬件自动将口锁存器的Q端置1。这时,P3口作为第二功能使用。 P3.0 :RXD(串行口输入); P3.1 :TXD(串行口输出); P3.2 :外部中断0输入; P3.3 :外部中断1输入; P3.4 :T0(定时器0的外部输入); P3.5 :T1(定时器1的外部输出); P3
24、.6 :(片外数据存储器“写”选通控制输出); P3.7 :(片外数据存储器“读”选通控制输出)。 EA/VPP:访问程序存储器控制信号,当其为低电平时,对ROM的读操作限定在外部的程序存储器,当其为高电平时,对ROM的读操作是从内部存储器开始的,并可延至外部程序存储器。 ALE/PROG:编程脉冲 PSEN:外部程序存储器读选通信号,在读外部ROM时PSEN是低电平有效,以实现对ROM 的读操作。 RST/VPD:复位信号,当输入信号延续2个周期以上的高电平有效,用以完成单片机复位初始化操作。 XTAL : 时钟晶振输入端。 4.2驱动系统总体结构 图4-3 驱动系统硬件结构 由图4-3可知
25、,本系统通过计算机设定步进电机的运行速度,将这些参数和控制程序通过数据串口烧录到单片机中。按钮和单片机的控制信号通过驱动电路,输入至步进电机,控制步进电机的速度。电源和变压整流电路为单片机和驱动芯片的正常工作提供安全稳定的直流高电平。 4.3驱动系统的驱动原理 为了方便阐述,本节按照步进电机输入信号要求,控制信号功率的放大,单片机控制信号的输出和编程的顺序分析其工作过程。 4.3.1步进电机的控制信号 图4-4 28BYJ-48型步进电机接线指示图 表4-1步进电机输入信号分布表连线序号导线颜色 分配顺序12345红+4橙+3黄+2粉+1蓝+ 如图4-4所示,28BYJ48型步进电机接内部共有
26、四相线圈,其中Vcc端共接在一起,为红线。四相线圈的控制信号输入端按顺序依次为蓝、粉、黄、橙。为方便编程与描述,本文采用单片机的双四拍运行时序,则其通电线圈按照时序依次为:蓝粉、粉黄、黄橙、橙蓝。其输入信号分布如表4-1所示。以此时序,按照一定的频率,步进电机就可稳定地转动。 4.3.2控制信号功率的放大 单片机不能直接驱动步进电机,这是由于单片机I/O接口输出功率很小,输出信号不稳定。因此就必须在单片机I/O接口下方接功率驱动单元。按照前文所述,本文选择具有信号放大,信号反相功能的ULN2003A驱动芯片。 图4-5 ULN2003电路图(含负载) 由图4-5所示,ULN2003A本质为达林
27、顿管,其中Q1,Q2,R2,R3本质为以放大倍15数被加大的三极管。因此,当输入信号为高电平时,三极管导通,这时负载左端,即芯片的信号输出端为低电平,因此ULN2003A为反相输出。 此时负载中有电流产生。在本文中,负载即为步进电机的某一相线圈,所以当输入信号为高电平时,与之相连的步进电机线圈中有电流产生;当输入信号为低平时,负载左端即信号输出端为高电平,负载中无电流产生,即与之相连的步进电机线圈不工作。 又因为达林顿管放大倍数为两个三极管放大倍数之积,达到比较可观的功率放大作用。综上,将单片机四个I/O接口连接至ULN2003A输入接口,就将控制步进电机的信号放大反相。使得步进电机正常工作。
28、 4.3.3单片机控制信号的输出 考虑到步进电机正常工作所需要的时序分布以及ULN2003A的反相所用,单片机的输出信号以及相应的输出端口如表4-2所示。为了实际电路中连线方便,信号输出端口为P1.0,P1.1,P1.2,P1.3口。 表4-2单片机输出信号分布表输入接口对应导线颜色 分配顺序一二三四P1.3橙0011P1.2黄0110P1.1粉1100P1.0蓝1011对应16进制数0xF30xF60xFc0xF95 电路板焊接部分5.1 电烙铁的选择焊接的主要工具是电烙铁。常用的除有内热式与外热式电烙铁外,还有吸锡电烙铁与恒温电烙铁。目前,市售的多为内热式电烙铁,常用规格有 20W,40W
29、,70W几种。选哪一种电烙铁,这要根据具体的焊接对象来决定。如果你装制半导体收音机或其它小型电子元件,那么应该选20W的电烙铁,因为它具有发热快,耗电省,体积小和重量轻等特点。如果你装制电视机或维修较大型的家用电器时,要选用功率大一点的,如40W的电烙铁。电烙铁的功率选择一定要确当,过大会烫坏晶体管或其它怕热元件,过小往往会焊不牢元件,表面上看焊牢拉,实际上很容易产生假焊或虚焊现象。电烙铁的烙铁头一般是用紫铜制作的,常用的烙铁头有直型和弯型两种。新的电烙铁或刚换上的烙铁头刃口表面有一层氧化层,因此上不了锡,使用时,先用砂纸将烙铁头刃口表面氧化层打磨掉,然后给电烙铁通电加热一段时间后,在打磨干净
30、的地方涂上一层松香,再涂上一层锡,这过程叫上锡。5.2 焊锡的选用焊接时常用的焊料是焊锡,最适用的是市场上供应的一种叫焊锡丝的焊料,它的熔点低,导电性好,并存一定的强度,内部事先填了松香,焊接起来十分方便,最适合电子线路的制作。5.3 焊剂的选用焊剂在焊接时起防止表面氧化的助焊作用。常用的焊剂是松香,它是中性的,不会腐蚀电路元件和烙铁头。还有一种焊剂是焊油,又叫焊锡膏,助焊效果比松香好,但带一点腐蚀性,一般焊好元件后将焊油擦干净。5.4 焊接前的准备工作首先将印刷电路板的表面进行处理,用一张细砂纸将印刷电路板上的铜泊表面磨光亮,用水洗干净,涂上一层松香酒精溶液后就可以进行了。松香酒精比例为1:
31、2。经过表面处理过的印刷电路板 既能保证焊接质量,又能提高焊接速度。5.5 焊接方法先将准备好的元件插入印刷电路板规定好的位置上,在元件与印刷电路板铜箔的连接点上,涂上少许焊剂,待电烙铁加热后用烙铁头的刃口上些适量的焊锡,上的焊锡多少要根据焊点的大小来决定。焊接时,要将烙铁头的刃口接触焊点与元件引线,根据焊点的形状作一定的移动,使流动的焊锡布满焊点并渗入被焊物的缝隙,接触时间大约在3-5秒左右,然后拿开电烙铁。拿开电烙铁的时间,方向和速度,决定了焊接的质量与外观的正确的方法是,在将要离开焊点时,快速的将电烙铁往回带一下,后迅速离开焊点,这样焊出的焊点既光亮,圆滑,又不出毛刺。在焊接时,焊接时间
32、不要太长,免得把元件烫坏,但亦不要太短,造成假焊或虚焊。焊接结束后,用列子夹住被焊元件适当用力拉拨一下,检查元件是否被焊牢。如果发现有松动现象,必须重新进行焊接。实物如图6-1所示:图6-1 实物图6 结论 数字电子技术已取得很大成就,数字电子技术应用越来越广泛。在动力方面,由于传统电机为模拟电子范畴,并不能直接与以计算机为代表的数字电子设备直接配合使用。需AD,DA转化装置,加大了控制成本和技术难度。但是步进电机作为一种数字动力元件的出现,则大大的改善了此情况。由于步进电机可以直接被计算机控制,使其具有可以将数字脉冲控制信号直接转换为一定数值的机械角位移,并且能够自动产生定位转矩使转轴锁定的
33、性能特点,大大提高了电机的控制精度。而单片机作为一种简单可靠,且低功耗,性能稳定的计算机。这就使得单片机驱动步进电机这一应用收到更广泛的关注,本文在此选择较为简单的单片机和步进电机及相应的芯片,组成简单的步进电机驱动系统。做简单的论述,主要工作如下: 1了解步进电机参数,特点。研究其工作原理,以及使用中的具体注意事项。 2了解单片机的工作原理,掌握其基于C语言的编程方法,以及最小系统的组成。 3搜集步进电机的驱动方案,对驱动方案进行比较,选取合适的驱动方式。 4按照选取的驱动方式,选取相应的元器件,画出电路图,在Keil中编程并用Proteus进行仿真,很好地模拟出实际结果。根据电路图焊接出相
34、应的实际电路,排除故障,完成了相应的功能。 由于小组成员能力有限,而且受到实验设备的限制,本设计还存在着电路较为简单,缺少独立的供电电源等问题和不足。下一步需要在电路上加独立供电模块以及电机暂停按钮以及转向的控制和速度精确的液晶显示,将系统电路改进。并且加上一定的保护外壳,使其更加人性化,方便使用。 参考文献 1 王晓明,电动机的单片机控制M. 北京:北京航空航天大学出版社,2002 2 黄俊,王兆安.电力电子技术M. 北京:机械工业出版社,2003.110-123 3 胡寿松,自动控制原理M. 北京:国防工业出版社,2004.231-246 4 丛君丽,基于单片机控制的步进电机高低压驱动系统
35、设计M,电力电子技术2008.02-031 5 张毅刚,单片机原理及应用M. 北京:高等教育出版社,2006.159-178 6 胡汉才,单片机原理及其接口技术M. 北京:清华大学出版社,1996:396-397附录1#include #define cheat_eye_time 5 #define Key_Active_Level 0 #define motor_slow_speed 100#define motor_fast_speed 3unsigned char motor_status,motor_step_speed=30;unsigned int step;#define mot
36、or_driver_level 1#define motor_stop_level 0#define Motor_Driver_Port P1#define Display_Port P0#define Disply_lock_Port P2 sbit key1=P32;sbit key2=P33;sbit key3=P34;sbit key4=P35; unsigned char key_new_value,key_old_value;unsigned char key_change_fly;unsigned char code lock=0xe0,0xd0,0xb0,0x70;/unsig
37、ned char code negative= /共阴极/0x3f,0x06,0x5b,0x4f,/0x66,0x6d,0x7d,0x07,/0x7f,0x6f,0x77,0x7c,/0x39,0x5e,0x79,0x71;unsigned char code active=/数码管是共阳极0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;unsigned char code motor_step1=0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09 ;un
38、signed char code motor_step2=0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08 ;void motor_driver(void);unsigned char keyscan(void);void key_deal(unsigned char key);void delayms(unsigned int);void display(unsigned char postion,unsigned char num);void display_number(unsigned int dat);void main() while(1) key_n
39、ew_value=keyscan(); if(key_new_value) if(key_new_value!=key_old_value)/按键功能发生切换 step=0/原先电机的步数数据清空 key_old_value=key_new_value; /更新按键状态 key_deal(key_old_value); unsigned char keyscan(void) unsigned char key_value; if(key1=Key_Active_Level) delayms(10); if(key1=Key_Active_Level) key_value=0x01; if(ke
40、y2=Key_Active_Level) delayms(10); if(key2=Key_Active_Level) key_value=0x02; if(key3=Key_Active_Level) delayms(10); if(key3=Key_Active_Level) key_value=0x03; if(key4=Key_Active_Level) delayms(10); if(key4=Key_Active_Level) key_value=0x04; return key_value;void display(unsigned char postion,unsigned c
41、har num) switch (postion) case 1: Disply_lock_Port=lock0; break;case 2: Disply_lock_Port=lock1; break; case 3: Disply_lock_Port=lock2; break;case 4: Disply_lock_Port=lock3; break; Display_Port=activenum;void display_number(unsigned int dat) unsigned int qian,bai,shi,ge; qian=dat/1000; bai=dat/100%10; shi=dat/10%10; ge=dat%10; display(4,qian); delayms(cheat_eye_time); displa