大学毕业设计方案程序控制步进电机.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学毕业 设计 方案 程序控制 步进 电机
- 资源描述:
-
题 目: 简易步进电机控制 步进电机控制 摘要:本设计采用ATMEL公司DIP-40封装AT89S52单片机实现对四相步进电机手动和按键控制。由单片机产生脉冲信号通过度派后分解出相应四相脉冲,分解出四相脉冲经驱动电路功率放大后驱动步进电机转动。转速调节和状态变化由按键进行选取,此过程由程序直接进行控制。通过键盘扫描把选取信息反馈给单片机,单片机依照反馈信息做出相应判断并变化输出脉冲频率或转动状态信号。电机转动不同状态由液晶LCD1602显示出来。而设计扩展某些可以通过红外信号发射由另一块单片机和红外线LED完毕,用红外万能接受头接受红外信号,可以实现对电机控制进行红外遥控。 核心字:四相步进电机 单片机 功率放大 LCD1602 目录 步进电机控制 …………………………………………………………………1 摘要 ……………………………………………………………………………1 核心字 …………………………………………………………………………1 前言 ………………………………………………………………………………3 1系统总体方案设计及硬件设计……………………………………………4 1.1步进电机……………………………………………………………………4 1.1.1 步进电机种类 ………………………………………………………4 1.1.2 步进电机特点 ………………………………………………………4 1.1.3 步进电机原理 ………………………………………………………5 1.2 控制系统电路设计…………………………………………………………7 1.3 液晶显示LCD1602…………………………………………………………7 1.4 AT89S52核心部件及系统SCH原理图……………………………………9 1.5 LNA驱动………………………………………………………………10 2软件设计及调试………………………………………………………………13 2.1程序流程 …………………………………………………………………13 2.2软件设计及调试 …………………………………………………………14 3 扩展功能阐明…………………………………………………………………15 4设计总结 ………………………………………………………………………16 5 设计源程序……………………………………………………………………16 6 附录 ……………………………………………………………………………21 参照文献 …………………………………………………………………………22 附2:系统原理图及实物图 …………………………………………………23 前言 步进电机广泛应用于对精度规定比较高运动控制系统中,如机器人、打印机、软盘驱动器、绘图仪、机械阀门控制器等。当前,对步进电机控制重要有由分散器件构成环形脉冲分派器、软件环形脉冲分派器、专用集成芯片环形脉冲分派器等。分散器件构成环形脉冲分派器体积比较大,同步由于分散器件延时,其可靠性大大减少;软件环形分派器要占用主机运营时间,减少了速度;专用集成芯片环形脉冲分派器集成度高、可靠性好,但其适应性受到限制,同步开发周期长、需求费用较高。步进电机是微特电机一种,其作为执行元件,是机电一体化核心产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术发展,步进电机需求量与日俱增,在各个国民经济领域均有应用。同步步进电动机是一种将脉冲信号变换成相应角位移(或线位移)电磁装置,是一种特殊电动机。普通电动机都是持续转动,而步进电动机则有定位和运转两种基本状态,当有脉冲输入肘步进电动机一步一步地转动,每给它一种脉冲信号,它就转过一定角度。步进电动机角位移量和输入脉冲个数严格成正比,在时间上与输入脉冲同步,因而只要控制输入脉冲数量、频率及电动机绕组通电相序,便可获得所需转角、转速及转动方向。在没有脉冲输入时,在绕组电源勉励下气隙磁场能使转子保持原有位置于定位状态。步进电机以广泛应用在生产实践各个领域。它最大应用是在数控机床制造中,由于步进电机不需要A/D转换,可以直接将数字脉冲信号转化成为角位移,因此被以为是抱负数控机床执行元件。初期步进电机输出转矩比较小,无法满足需要,在使用中和液压扭矩放大器一同构成液压脉冲马达。随着步进电动机技术发展,步进电动机已经可以单独在系统上进行使用,成为了不可代替执行元件。除了在数控机床上应用,步进电机也可以并用在其她机械上,例如作为自动送料机中马达,作为通用软盘驱动器马达,也可以应用在打印机和绘图仪中。随着着不同数字化技术发展以及步进电机自身技术提高,步进电机将会在更多领域得到应用。 1系统总体方案设计及硬件设计 本设计系统中重要环绕AT89S52以实现四相步进电机转动控制(步进电机正转、反转以及转动速度)以及液晶LCD1602显示为目: 1.1步进电机 步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一种脉冲信号,步进电机就转动一种角度,因而非常适合于单片机控制。步进电机可分为反映式步进电机(VR)、永磁式步进电机(PM)和混合式步进电机(HB)。 步进电机区别于其她控制电机最大特点是,它是通过输入脉冲信号来进行控制,即电机总转动角度由输入脉冲数决定,而电机转速由脉冲信号频率决定。 步进电机驱动电路依照控制信号工作,控制信号由单片机产生。其基本原理作用如下: (1)控制换相顺序 通电换相这一过程称为脉冲分派。例如:混合式步进电机工作方式,其各相通电顺序为A-B-C-D,通电控制脉冲必要严格按照这一顺序分别控制A,B,C,D相通断,这就是所谓脉冲环形分派器。(2)控制步进电机转向 如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。(3)控制步进电机速度 如果给步进电机发一种控制脉冲,它就转一步,再发一种脉冲,它会再转一步。两个脉冲间隔越短,步进电机就转得越快。 1.1.1 步进电机种类 步进电机分永磁式(PM)、反映式(VR)、和混合式(HB)三种。永磁式步进普通为两相,转矩和体积较小,步进角普通为7.5度 或15度;反映式步进普通为三相,可实现大转矩输出,步进角普通为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被裁减;混合式步进是指混合了永磁式和反映式长处。它又分为两相和五相:两相步进角普通为1.8度而五相步进角普通为 0.72度。这种步进电机应用最为广泛。 1.1.2 步进电机特点 1.精度高 普通步进电机精度为步进角3-5%,且不累积。可在辽阔频率范畴内通过变化脉冲频率来实现调速,迅速起停、正反 转控制及制动等,这是步进电动机最突出长处 2.过载性好 其转速不受负载大小影响,不像普通电机,当负载加大时就会浮现速度下降状况,因此步进电机使用在对速度和位置均有严格规定场合; 3.控制以便 步进电机是以“步”为单位旋转,数字特性比较明显,这样就给计算机控制带来了很大以便,反过来,计算机浮现也为步进电机开辟了更为辽阔使用市场; 4.整机构造简朴 老式机械速度和位置控制构造比较复杂,调节困难,使用步进电机后,使得整机构造变得简朴和紧凑。 1.1.3 步进电机原理 图1是一种四相可变磁阻型步进电机构造示意图。这种电机定子上有八个凸齿,每一种齿上有一种线圈。线圈绕组连接方式,是对称齿上两个线圈进行反相连接,如图中所示。八个齿构成四对,因此称为四相步进电机。 图1 它工作过程是这样:当有一相绕组被勉励时,磁通从正相齿,通过软铁芯转子,并以最短途径流向负相齿,而其她六个凸齿并无磁通。为使磁通途径最短,在磁场力作用下,转子被逼迫移动,使近来一对齿与被勉励一相对准。在图1(a)中A相是被勉励,转子上大箭头所指向那个齿,与正向A齿对准。从这个位置再对B相进行勉励,如图1中(b),转子向反时针转过15°。若是D相被勉励,如图1中(c),则转子为顺时针转过15°。下一步是C相被勉励。由于C相有两种也许性:A—B—C—D或A—D—C—B。一种为反时针转动;另一种为顺时针转动。但每步都使转子转动15°。电机步长(步距角)是步进电机重要性能指标之一,不同应用场合,对步长大小规定不同。变化控制绕组数(相数)或极数(转子齿数),可以变化步长大小。它们之间互有关系,可由下式计算: Lθ=360 P×N 式中:Lθ为步长;P为相数;N为转子齿数。在图1中,步长为15°,表达电机转一圈需要24步。 四相步进电机,采用单极性直流电源供电。只要对步进电机各相绕组按适当时序通电,就能使步进电机步进转动。图1是该四相反映式步进电机工作原理示意图。 图2 四相步进电机步进示意图 开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同步,转子1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和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方向转动。 四相步进电机按照通电顺序不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍步距角相等,但单四拍转动力矩小。八拍工作方式步距角是单四拍与双四拍一半,因而,八拍工作方式既可以保持较高转动力矩又可以提高控制精度。 单四拍、双四拍与八拍工作方式电源通电时序与波形分别如图3.a、b、c所示: a. 单四拍 b. 双四拍 c八拍 图3.步进电机工作时序波形图 对步进电机四个绕组依次实现如下方式循环通电控制: 单四拍运营:正转A-B-C-D;反转D-C-B-A 双四拍运营:正转AB-BC-CD-DA;反转DC-CB-BA-AD 单双八拍运营:正转A-AB-B-BC-C-CD-D-DA 1.2 控制系统电路设计 步进电机控制设计采用AT89S52单片机作为控制机构核心(如图4)。通过对键盘输入与操作实现对步进电机控制。当电源开通时候,步进电机就会按照默认设立转速方式转动。步进电机正反转及转速由按键控制选取,当按键按下,步进电机实现正转或反转及加速或减速状态。 AT89S52 单片机 独立按键键盘 步进电机驱动 LCD1602显示 扬声器(扩展) 红外发射电路(扩展) 时钟和复位电路 图7 控制系统 1.3 液晶显示LCD1602 液晶LCD-1602阐明: 1.简介 工业字符型液晶,可以同步显示16x02即32个字符。(16列2行) 注:为了表达以便 ,后文皆以1表达高电平,0表达低电平。 2.管脚功能 1602采用原则16脚接口,其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示屏对比度调节端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一种10K电位器调节对比度)。 第4脚:RS为寄存器选取,高电平1时选取数据寄存器、低电平0时选取指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 3.操作控制 操作控制表 3.1操作 读状态 写指令 读数据 写数据 3.2输入 RS=0,RW=1,E=1 RS=0,RW=0, D0-7=指令码,E=H脉冲 RS=1,RW=1,E=1 RS=1,RW=0, D0-7=数据,E=H脉冲 注:关于E=H脉冲——开始时初始化E为0,然后置E为1,脉冲不不大于0.5us,下降沿有效。 4.字符集 1602液晶模块内部字符发生存储器(CGROM)已经存储了160个不同点阵字符图形,这些字符有:阿拉伯数字、英文字母大小写、惯用符号、和日文假名等,每一种字符均有一种固定代码,例如大写英文字母“A”代码是01000001B(41H),显示时模块把地址41H中点阵字符图形显示出来,咱们就能看到字母“A”。 由于1602辨认是ASCII码,实验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。 如下是160216进制ASCII码表地址: 读时候,先读左边那列,再读上面那行,如:感叹号!ASCII为0x21,字母BASCII为0x42(前面加0x表达十六进制)。 [编辑本段]指令集 1602通过D0-D78位数据端传播数据和指令。 显示模式设立: (初始化) 0011 0000 [0x38] 设立16×2显示,5×7点阵,8位数据接口; 显示开关及光标设立: (初始化) 0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效) 0000 01NS N=1(读或写一种字符后地址指针加1 &光标加1), N=0(读或写一种字符后地址指针减1 &光标减1), S=1 且 N=1 (当写一种字符后,整屏显示左移) s=0 当写一种字符后,整屏显示不移动 数据指针设立: 数据首地址为80H,因此数据地址为80H+地址码(0-27H,40-67H) 其她设立: (01H(显示清屏,数据指针=0,所有 显示=0);02H(显示回车,数据指针=0)。 图8 液晶LCD1602 1.4 AT89S52核心部件及系统SCH原理图 AT89S52单片机功能特性描述: AT89S52 是美国 ATMEL 公司生产低功耗、高性能 CMOS 8 位单片机,片内含 8k bytes 可系统编程 Flash 只读程序 存储器,器件采用 ATMEL 公司高密度、非易失性存储技术生产,兼容原则 8051 指令系统及引脚。它集 Flash 程序存储器 既可在线编程(ISP)也可用老式办法进行编程及通用 8 位微解决器于单片芯片中,ATMEL 公司功能强大,低价位 AT89S51 单片机可以提供许多高性价比应用场合,可灵活应用于各种控制领域。AT89S52是一种低功耗、高性能CMOS8位微控制器,具备8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上Flash容许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有机灵 8 位 CPU 和在系统可编程Flash,使得 AT89S52为众多嵌入式控制应用系统提供高灵活、超有效解决方案。AT89S52具备如下原则功能: 8k字节Flash,256字节RAM32 位 I/O 口线,看门狗定期器,2 个数据指针,三个 16 位定期器/计数器,一种6向量 2级中断构造,全双工串行口片内晶振及时钟电路。此外,AT89S52 可降至 0Hz 静态逻辑操作,支持2种软件可选取节电模式。空闲模式下,CPU停止工作,容许RAM、定期器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一种中断或硬件复位为止。 图9 SCH原理框图 1.5 LNA驱动 ULN内部构造和功能 ULN是集成达林顿管IC,内部还集成了一种消线圈反电动势二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,合用于TTL COMS,由达林顿管构成驱动电路。 ULN是集成达林顿管IC,内部还集成了一种消线圈反电动势二极管,它输出端容许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。顾客输出口外接负载可依照以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。普通单片机驱动ULN时,上拉2K电阻较为适当,同步,COM引脚应当悬空或接电源。 ULN是一种非门电路,包括7个单元,但独每个单元驱动电流最大可达350mA.资料最后有引用电路,9脚可以悬空。 例如1脚输入,16脚输出,你负载接在VCC与16脚之间,不用9脚。 uln作用: ULN是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。 输入5VTTL电平,输出可达500mA/50V。 ULN是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管构成。 该电路特点如下:ULN每一对达林顿都串联一种2.7K基极电阻,在5V工作电压下它能与TTL和CMOS电路 直接相连,可以直接解决原先需要原则逻辑缓冲器。 ULN 是高压大电流达林顿晶体管阵列系列产品,具备电流增益高、工作电压高、温度范畴宽、带负载能力强等特点,适应于各类规定高速大功率驱动系统。 图10 ULNA引脚图及功能 ULN 是高耐压、大电流、内部由七个硅NPN 达林顿管构成驱动芯片。 经常在如下电路中使用,作为: 1、显示驱动 2、继电器驱动 3、照明灯驱动 4、电磁阀驱动 5、伺服电机、步进电机驱动等电路中。 ULN 每一对达林顿都串联一种2.7K 基极电阻,在5V 工作电压下它 能与TTL 和CMOS 电路直接相连,可以直接解决原先需要原则逻辑缓冲器来解决数据。 ULN 工作电压高,工作电流大,灌电流可达500mA,并且可以在关态时承受 50V 电压,输出还可以在高负载电流并行运营。 ULN 封装采用DIP—16 或SOP—16 ULNA在各种控制电路中惯用它作为驱动继电器芯片,其芯片内部做了一种消线圈反电动势二极管。ULN输出端容许通过IC 电流200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。输出电流大,故可以直接驱动继电器或固体继电器(SSR)等外接控制器件,也可直接驱动低压灯泡。 ULN可以驱动7个继电器,具备高电压输出特性,并带有共阴极续流二极管使器件可用于开关型感性负载。每对达林顿管额定集电极电流是500mA,达林顿对管还可并联使用以达到更高输出电流能力。 ULNA中每对达林顿管基极都串联有一种2.7kΩ电阻,可直接与TTL或5V CMOS器件连接。 ULN可以并联使用,在相应OC输出管脚上串联几种欧姆均流电阻后再并联使用,防止阵列电流不平衡。 2. 在输入口输入高电平时﹐输出口为低电平﹐但是在输入端输入低电平时﹐输出端怎么还是低电平? ULNA输出构造是集电极开路,因此要在输出端接一种上拉电阻,在输入低电平时候输出才是高电平。在驱动负载时候,电流是由电源通过负载灌入ULNA。 图11 ULNA驱动电路图 ULN普通用来驱动大电流装置,如继电器,LED灯等,在驱动继电器这种装置时,COM端最佳接上电源,以用来泄放继电器线圈反向电动势。 显示电路重要涉及大型LED数码管BSI20-1(共阳极,数字净高12 cm)和高电压大电流驱动器ULN,大型LED数码管每段是由各种LED发光二极管串并联而成,因而导通电流大、导通压降高。ULN是高压大电流达林顿晶体管阵列电路,她具备7个独立反相驱动器,每个驱动器输出灌电流可达500 mA,导通时输出电压约1 V,截止时输出电压可达50 V。ULN1~7脚为信号输入脚,依次相应输出端为16~10脚,8脚为接地端。当驱动电源电压为+12 V时,若规定数码管每段导通电流为40 mA,则每段限流电阻为50Ω。则一块ULN正好驱动一种LED数码管7段。大数码管采用共阳极接法,低电平有效。锁存器输出电平经NPN三极管9014反相后,再由ULN放大后推动大数码管显示。 2 软件设计及调试 2.1 程序流程 LCD初始 工作方式设立 显示状态设立 清屏 输入方式设立 返回 LCD初始化 光标定位 显示字符 结束 开始 图12 LCD初始化流程图 图13 液晶显示控制程序流程图 开始 LCD初始化 LCD1602显示字设定 定期器初值设定(设定按键) 判断LCD与否可写入 LCD液晶显示 单片机P0.1-P0.3延时脉冲斩波输出 返回 定期器T0定期中断按键 定期器T1定期中断按键 外部T0计数中断按键 外部T1计数中断按键 P2.3=1 P1=0x01清屏 P2.3=0 P1=0x01清屏 RunSpeed-2 RunSpeed+2 DoSpeed液晶显示速度计算后清屏 返回 C51库调用 C语言各函数设立及定义 图14 程序总流程 2.2 软件设计及调试 软件设计:依照规定,可以将程序分为如下几种部份: (1) 键盘输入程序设计 本系统使用键盘较少且比较特殊,因而采用独立式键盘(定期器定期内部T0、T1中断及外部计数T0、T1中断)接口设计。独立式键盘合用于按键数量较少场合。独立键盘工作原理:通过上拉电阻接到+5V上。无按键,处在高电平状态,有键按下电平为低。在消除抖动影响上是可以采用了软件消抖办法:在第一次检测到有键按下时,执行一段延时子程序后(约10ms),再确认电平与否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应解决工作,消除了抖动影响。 (2) 步进电机运营步数控制程序 此方案采用单相和双相交差通电解决方式。此办法具备运营速度稳定,运营步数精确无误等长处。 调试:本电路经调试符合题目规定,各项技术指标均达到设计目。详细操作控制办法如下: (1)步进电机正转既此时液晶显示CW:RUN STATE:CW 。 (2)步进电机反转即液晶显示:RUN STATE:CCW 。 (3)步进电机加速按键:步进电机转速加快且显示转速加大 (4)步进电机减速按键:液晶显示速度变小 电机转速减慢。 3 扩展功能阐明 通过红外信号发射由另一块单片机和红外线LED完毕,用红外万能接受头接受红外信号,可以实现对电机控制进行红外遥控。 本电路设计涉及max232接口通信电路,可以通过串口线直接与电脑相连接。可运用PC机强大功能编写PC软件来控制、验证、改进控制系统性能。运用以有单片机系统,作为下位机,选用一台微机作为上位机,可以用VB 语言编写一种系统软件,这样可以基于PC控制系统提高电机控制功能。由于联动插补算法较复杂,有大量浮点运算,对实时性规定又较高,选用PC来完毕插补运算和数值运算。同步可运用丰富PC软件来改进控制系统图形显示、动态仿真、编程和诊断功能。这样更有助于操作,大大提高步进电机运营可靠性。此外电路中还增长了与电机同步脉冲输出和方向控制电路(OC输出),可以以便与专用步进电机驱动器相联接。 4 设计总结 步进电机可在辽阔频率范畴内通过变化脉冲频率来实现调速,迅速起停、正反 转控制及制动等,这是步进电动机最突出长处。步进电机性能在很大限度上取决于步进电机控制系统,而步进电机控制系统由步进电机控制器、驱动器、系统软件等几某些构成,控制系统每一某些对步进电机运营性能息息有关。一台好步进电机控制器就能体现出步进机在控制方面上优越性能。因此我选取这样毕业设计课题,并且能通过本次设计来提高自己软件编制和硬件电路设计能力。在我完毕这次毕业设计过程中,当看到自己将专业知识用于解决实际问题时,那份成就感和喜悦感是难以形容。但是,在实际编程以及调试程序过程中,我发现自己所应当学太多太多。光靠自己在课本上所学过这点知识是远远不够,真正地结识到了工作就是学习道理。采用此设计步进电机驱动系统,在驱动二相或四相混合式步进电机时运动平稳,速度快,噪音低,控制精高,并且可选整步半步驱动。外观采用铝镁合金,散热性好,价格低廉,可广泛应用于需要驱动电流不大于2A混合式两相或四相步进电机系统中。 5 设计源程序 (清单) #include "reg51.h" int delay(); //判断LCD与否可以写入即忙否(P1.7) void inti_lcd(); //液晶LCD1602初始化 void show_lcd(int);//液晶读显示 void cmd_wr(); //LCD写控制程序 void ShowState(); //LCD状态显示即速度显示 void clock(unsigned int Delay) ; //延时程序 void DoSpeed(); //计算速度 void motor_CCW(); //电机正转 void motor_CW(); //电机反转 void key(); //固定档位按键 #define uchar unsigned char //无符号字符定义 uchar code CW[4]={0x01,0x02,0x04,0x08}; //正转表 uchar code CCW[4]={0x08,0x04,0x02,0x01}; //反转表 #define RIGHT_RUN 1 //正转值 #define LEFT_RUN 0 //反转值 sbit RS=0xA0; sbit RW=0xA1; sbit E=0xA2; //LCD1602RS RW E脚分别接于P2.0 P2.1 P2.2 sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit P2_3=P2^3; sbit P1_7=P1^7; sbit P3_0=P3^0; //单片机管脚定义 #define sfr P1=0x90; #define sfr P0=0x80; //寄存器定义 char SpeedChar[]="SPEED(n/min):"; char StateChar[]="RUN STATE:"; char STATE_CW[]="CW"; char STATE_CCW[]="CCW"; //显示数组 char SPEED[3]="050"; //初始速度设定 unsigned int RunSpeed=50; //初始速度值 unsigned char RunState=RIGHT_RUN; //运营状态 main() //主程序 { /*定期器设立*/ TMOD=0x66; //定期器0,1都为计数方式;方式2; EA=1; //开总中断启动 TH0=0xff; //定期器T0初值FFH; TL0=0xff; ET0=1; //T0中断启动 TR0=1; //定期器T0启动 TH1=0xff; //定期器T1初值FFH; TL1=0xff; ET1=1; TR1=1; //T1中断启动 IT0=1; //脉冲方式 EX0=1; //开外部中断0:加速 IT1=1; //脉冲方式 EX1=1; //开外部中断1:减速 inti_lcd(); DoSpeed(); ShowState(); while(1) { if(P2_3==1) motor_CW();//电机正转 else if(P2_3==0) motor_CCW();//电机反转 } } /*步进电机正转 /********************************************************/ void motor_CW() { uchar i; { for (i=0;i<4;i++) //一种周期转30度 { P0 = CW[i]; //取数 clock(RunSpeed); // 脉冲延时 } } } /*步进电机反转 /********************************************************/ void motor_CCW() { uchar j; { for (j=0;j<4;j++) //一种周期转30度 { P0 =CCW[j]; //取数据 clock(RunSpeed); // 脉冲延时 } } } //定期器0中断程序:正转 void t_0(void) interrupt 1 { RunState=RIGHT_RUN; P2_3=1; P1=0x01; //清屏 cmd_wr(); ShowState(); } //定期器1中断:反转 void t_1(void) interrupt 3 { RunState=LEFT_RUN; P2_3=0; P1=0x01; cmd_wr(); ShowState(); } //中断0:加速程序 void SpeedUp() interrupt 0 { if(RunSpeed>=12) RunSpeed=RunSpeed-2; DoSpeed(); P1=0x01; cmd_wr(); ShowState(); } //中断1:减速程序 void SpeedDowm() interrupt 2 { if(RunSpeed<=100) RunSpeed=RunSpeed+2; DoSpeed(); P1=0x01; cmd_wr(); ShowState(); } void key() { if(P3_0==0) RunSpeed=70; DoSpeed(); P1=0x01; cmd_wr(); ShowState(); } int delay() //判断LCD与否忙 { int a; start: RS=0; RW=1; E=0; for(a=0;a<2;a++); E=1; P1=0xff; if(P1_7==0) return 0; else goto start; } void inti_lcd() //设立LCD方式 { P1=0x38; //液晶模式设立 cmd_wr(); //写命令 delay(); P1=0x01; //清除 cmd_wr(); delay(); P1=0x0f; //光标,显示启动 cmd_wr(); delay(); P1=0x06; cmd_wr(); delay(); P1=0x0c; cmd_wr(); delay(); } void cmd_wr() //写控制字 { RS=0; RW=0; E=0; E=1; } void show_lcd(int i) //LCD显示子程序 { P1=i; //将数据经P1口送入液晶显示 RS=1; RW=0; E=0; E=1; } void ShowState() //显示状态与速度 { int i=0; while(SpeedChar[i]!='\0') { delay(); show_lcd(SpeedChar[i]); i++; } delay(); P1=0x80 | 0x0d; cmd_wr(); i=0; while(SPEED[i]!='\0') { delay(); show_lcd(SPEED[i]); i++; } delay(); P1=0xC0; cmd_wr(); i=0; while(StateChar[i]!='\0') { delay(); show_lcd(StateChar[i]); i++; } delay(); P1=0xC0 | 0x0A; cmd_wr(); i=0; if(RunState==RIGHT_RUN) while(STATE_CW[i]!='\0') { delay(); show_lcd(STATE_CW[i]); i++; } else while(STATE_CCW[i]!='\0') { delay(); show_lcd(STATE_CCW[i]); i++; } } void clock(unsigned int Delay) //1ms延时程序 { unsigned int i; for(;Delay>0;Delay--) for(i=0;i<124;i++); } void DoSpeed() //液晶上速度显示计算 { SPEED[0]=(1000*6/RunSpeed/100)+48; SPEED[1]=1000*6/RunSpeed%100/10+4展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




大学毕业设计方案程序控制步进电机.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2826156.html