收藏 分销(赏)

基于单片机的步进电机控制系统汇编及C语言程序各一个样本.doc

上传人:精**** 文档编号:4627081 上传时间:2024-10-08 格式:DOC 页数:26 大小:211.50KB 下载积分:10 金币
下载 相关 举报
基于单片机的步进电机控制系统汇编及C语言程序各一个样本.doc_第1页
第1页 / 共26页
基于单片机的步进电机控制系统汇编及C语言程序各一个样本.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 基于单片机的步进电机控制系统 前 言 步进电机是一种进行精确步进运动的机电执行元件, 它广泛应用于工业机械的数字控制, 为使系统的可靠性、 通用性、 可维护性以及性价比最优, 根据控制系统功能要求及步进电机应用环境, 确定了设计系统硬件和软件的功能划分, 从而实现了基于8051单片机的四相步进电机的开环控制系统。控制系统经过单片机存储器、 I/O接口、 中断、 键盘、 LED显示器的扩展、 步进电机的环形分频器、 驱动及保护电路、 人机接口电路、 中断系统及复位电路、 单电压驱动电路等的设计, 实现了四相步进电机的正反转, 急停等功能。为实现单片机控制步进电机系统在数控机床上的应用, 系统设计了两个外部中断, 以实现步进电机在某段时间内的重复正反转功能, 也即数控机床的刀架自动进给运动, 随着单片机技术的不断发展, 单片机在日用电子产品中的应用越来越广泛, 自六十年代初期以来, 步进电机的应用得到很大的提高。人们用它来驱动时钟和其它采用指针的仪器, 打印机、 绘图仪, 磁盘光盘驱动器、 各种自动控制阀、 各种工具, 还有机器人等机械装置。另外作为执行元件, 步进电机是机电一体化的关键产品之一, 被广泛应用在各种自动化控制系统中, 随着微电子和计算机技术的发展, 它的需要量与日俱增, 在各个国民经济领域都有应用。步进电机是机电数字控制系统中常见的执行元件, 由于其精度高、 体积小、 控制方便灵活, 因此在智能仪表和位置控制中得到了广泛的应用, 大规模集成电路的发展以及单片机技术的迅速普及, 为设计功能强, 价格低的步进电机控制驱动器提供了先进的技术和充分的资源。 1.步进电机原理及硬件和软件设计 1.1步进电机原理及控制技术 由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件, 它不能直接接到交直流电源上, 而必须使用专业设备----步进电机控制驱动器, 典型步进电机控制系统如图1所示: 控制器能够发出脉冲频率从几赫兹到几千赫兹能够连续变化的脉冲信号, 它为环形分配器提供脉冲序列, 环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后, 经过功率放大器的放大加到步进电机驱动电源的各项输入端, 以驱动步进电机的转动, 环形分配器主要有两大类: 一类是用计算机软件设计的方法实现环形分配器要求的功能, 一般称软环形分配器。另一类是用硬件构成的环形分配器, 一般称硬环形分配器。功率放大器主要对环形分配器的较小输出信号进行放大, 以达到驱动步进电机的目的, 步进电机的基本控制包括转向控制和速度控制两个方面。从结构上看, 步进电机分为三相单三拍、 三相双三拍和三相六拍3种, 其基本原理如下: (1) 换相顺序的控制 通电换相这一过程称为脉冲分配。例如, 三相步进电机在单三拍的工作方式下, 其各相通电顺序为A→B→C→A, 通电控制脉冲必须严格按照这一顺序分别控制A、 B、 C相的通断。三相双三拍的通电顺序为AB→BC→CA→AB, 三相六拍的通电顺序为A→AB→B→BC→C→CA→A。 (2) 步进电机的换向控制 如果给定工作方式正序换相通电, 步进电机正转。若步进电机的励磁方式为三相六拍, 即A→AB→B→BC→C→CA→A。如果按反序通电换相, 即A→AC→C→CB→B→BA→A, 则电机就反转。其它方式情况类似。 (3) 步进电机的速度控制 如果给步进电机发一个控制脉冲, 它就转一步, 再发一个脉冲, 它会再转一步。两个脉冲的间隔越短, 步进电机就转得越快。调整送给步进电机的脉冲频率, 就能够对步进电机进行调试。 (4) 步进电机的起停控制 步进电机由于其电气特性, 运转时会有步进感。为了使电机转动平滑, 减小振动, 可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波, 能够减小步进电机的步进角, 跳过电机运行的平稳性。在步进电机停转时, 为了防止因惯性而使电机轴产生顺滑, 则需采用合适的锁定波形, 产生锁定磁力矩, 锁定步进电机的转轴, 使步进电机转轴不能自由转动。 (5) 步进电机的加减速控制 在步进电机控制系统中, 经过实验发现, 如果信号变化太快, 步进电机由于惯性跟不上电信号的变化, 这时就会产生堵转和失步现象。所有步进电机在启动时, 必须有加速过程, 在停止时波形有减速过程。理想的加速曲线一般为指数曲线, 步进电机整个降速过程频率变化规律是整个加速过程频率变化规律的逆过程。选定的曲线比较符合步进电机升降过程的运行规律, 能充分利用步进电机的有效转矩, 快速响应性好, 缩短了升降速的时间, 并可防止失步和过冲现象。在一个实际的控制系统中, 要根据负载的情况来选择步进电机。步进电机能响应而不失步的最高步进频率称为”启动频率”, 于此类似”停止频率”是指系统控制信号突然关断, 步进电机不冲过目标位置的最高步进频率。电机的启动频率、 停止频率和输出转矩都要和负载的转动惯量相适应, 有了这些数据, 才能有效地对电机进行加减速控制。加速过程有突然施加的脉冲启动频率f0。步进电机的最高启动频率( 突跳频率) 一般为0.1KHz到3~4KHz, 而最高运行频率则能够达到N*102KHz, 以超过最高启动频率的频率直接启动, 会产生堵转和失步的现象。 f/Hz fa fb 0 t/s 图1 步进电机运行过程中频率变化曲线 在一般的应用中, 经过大量实践和重复验证, 频率如按直线上升或下降, 控制效果就能够满足常规的应用要求。用PLC实现步进电机的加P减速控制, 实践上就是控制发脉冲的频率。加速时, 使脉冲频率增高, 减速则相反。如果使用定时器来控制电机的速度, 加减速控制就是不断改变定时中断的设定值。速度从v1~v2变化, 如果是线性增加, 则按给定的斜率加P减速; 如果是突变, 则按阶梯加速处理。在此过程中要处理好两个问题: ①速度转换时间应尽量短。为了缩短速度转换的时间, 能够采用建立数据表的方法。结合各曲线段的频率和各段间的阶梯频率, 就能够建立一个连续的数据表, 并经过转换程序将其转换为定时初始表。经过在不同的阶段调用相应的定时初值, 就可控制电机的运行。定时初值的计算是在定时中断外实现的, 并不占用中断时间, 保证电机的高速运行。 ②保证控制速度的精确性。要从一个速度准确达到另一个速度, 就要建立一个校验机制, 以防超过或未达到所需速度。 (6) 步进电机的换向控制 步进电机换向时, 一定要在电机降速停止或降到突跳频率范围之内在换向, 以免产生较大的冲击而损坏电机。换向信号一定要在前一个方向的最后一个脉冲结束后以及下一个方向的第一个脉冲前发出。对于脉冲的设计主要要求其有一定的脉冲宽度、 脉冲序列的均匀度及高低电平方式。在某一高速下的正、 反向切换实质包含了降速→换向→加速3个过程。 步进电机有如下特点: ① 步进电机的角位移与输入脉冲数严格成正比, 因此当它转一转后, 没有累计误差, 具有良好的跟随性。 ② 由步进电机与驱动电路组成的开环数控系统, 既非常方便、 廉价, 也非常可靠。同时, 它也能够有角度反馈环节组成高性能的闭环数控系统。 ③ 步进电机的动态响应快, 易于启停、 正反转及变速。 ④ 速度可在相当宽的范围内平滑调节, 低速下仍能保证获得很大的转矩, 因此一般能够不用减速器而直接驱动负载。 ⑤ 步进电机只能经过脉冲电源供电才能运行, 它不能直接用交流电源或直流电源。 ⑥ 步进电机自身的噪声和振动比较大, 带惯性负载的能力强。 1.2总体设计方框图 总体设计方框图如图2所示。 1.3设计原理分析 1.3.1元器件介绍 ( 1) 步进电机 步进电机是数字控制电机, 它将脉冲信号转变成角位移, 即给一个脉冲信号, 步进电机就转动一个角度, 因此非常适合于单片机控制。步进电机区别于其它控制电机的最大特点是: 它是经过输入脉冲信号来进行控制的, 即电机的总转动角度由输入脉冲数决定, 而电机的转速由脉冲信号频率决定。 步进电机分三种: 永磁式( PM) , 反应式( VR) 和混合式(HB), 步进电机又称为脉冲电机, 是工业过程控制和仪表中一种能够快速启动, 反转和制动的执行 89C51 单片机 复位电路 键盘控制电路 ULN2803 启动电路 步进 电机 状态显示电路 电源及时钟电路 图2 总体设计方框图 元件, 其功用是将电脉冲转换为相应的角位移或直线位移, 由于开环下就能实现精确定位的特点, 使其在工业控制领域获得了广泛应用。步进电机的运转是由电脉冲信号控制的, 其角位移量或线位移量与脉冲数成正比, 每个一个脉冲, 步进电机就转动一个角度( 不距角) 或前进、 倒退一步。步进电机旋转的角度由输入的电脉冲数确定, 因此, 也有人称步进电机为数字/角度转换器。 ① 四相步进电机的工作原理 该设计采用了20BY-0型步进电机, 该电机为四相步进电机, 采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电, 就能使步进电机转动。当某一相绕组通电时, 对应的磁极产生磁场, 并与转子形成磁路, 这时, 如果定子和转子的小齿没有对齐, 在磁场的作用下, 由于磁通具有力图走磁阻最小路径的特点, 则转子将转动一定的角度, 使转子与定子的齿相互对齐, 由此可见, 错齿是促使电机旋转的原因。 ② 步进电机的静态指标及术语 相数: 产生不同队N、 S磁场的激磁线圈对数, 常见m表示。 拍数: 完成一个磁场周期性变化所需脉冲用n表示, 或指电机转过一个齿距角所需脉冲数, 以四相电机为例, 有四相四拍运行方式即AB→BC→CD→DA→AB,四相八拍运行方式即A→AB→B→BC→C→CD→D→DA→A。 步距角: 对应一个脉冲信号, 电机转子转过的角位移用θ表示。Θ=360度( 转子齿角运行拍数) , 以常规二、 四相, 转子齿角为50齿角电机为例。四相运行时步距角为θ=360度/( 50*4) =1.8度, 八拍运行时步距角为θ=360度/( 50*8) =0.9度。 定位转矩: 电机在不通电的状态下, 电机转子自身的锁定力矩( 由磁场齿形的谐波以及机械误差造成的) 。 静转矩: 电机在额定静态作业下, 电机不做旋转运动时, 电机转轴的锁定力矩。此力矩是衡量电机体积的标准, 与驱动电压及驱动电源等无关。虽然静态转矩与电磁激磁匝数成正比, 与定子和转子间的气隙有关。但过分采用减小气隙, 增加励磁匝数来提高静转矩是不可取的, 这样会造成电机的发热及机械噪音。 ③ 四相步进电机的脉冲分配规律 当前, 对步进电机的控制主要有分散器件组成的环形脉冲分配器、 软件环形脉冲分配器、 专用集成芯片环形脉冲分配器等。本设计利用单片机进行控制, 主要是利用软件进行环形脉冲分配。四相步进电机的工作方式为四相单四拍, 双四拍和四相八拍工作的方式。各种工作方式在电源通电时的时序 与波形分别如图1 a、 b、 c所示。本设计的电机工作方式为四相单四拍, 根据步进电机的工作的时序和波形图, 总结出其工作方式为四相单四拍时的脉冲分配规律, 四相双四拍的脉冲分配规律, 在每一种工作方式中, 脉冲的频率越高, 其转速就越快, 但脉冲频率高到一定程度, 步进电机跟不上频率的变化后电机会出现失步现象, 因此脉冲频率一定要控制在步进电机允许的范围内。 ( 2) 89C51单片机 Atmel公司生产的89C51单片机是一种低功耗/低电压‘高性能的8位单片机, 它采用CMOS和高密度非易失性存储技术, 而且其输出引脚和指令系统都与MCS-51兼容; 片内的Flash ROM允许在系统内改编程序或用常规的非易失性编程器来编程, 内部除CPU外, 还包括256字节RAM, 4个8位并行I/O口, 5个中断源, 2个中断优先级, 2个16位可编程定时计数器, 89C51单片机是一种功能强、 灵活性高且价格合理的单片机, 完全满足本系统设计需要。 1.3.2方案论证 从该系统的设计 要求可知, 该系统的输入量为速度和方向, 速度应该有增减变化, 一般见加减按钮控制速度, 这样只要2根口线, 再加上一根方向线盒一根启动信号线共需要4根输入线。系统的输出线与步进电机的绕组数有关。这里选 进电机, 该电机共有四相绕组, 工作电压为+5V, 能够个单片机共用一个电源。步进电机的四相绕组用P1口的P1.0~P1.3控制, 由于P1口驱动能力不够, 因而用一片2803增加驱动能力。用P0口控制第一数码管用于显示正反转, 用P2口控制第二个数码管用于显示转速等级。数码管采用共阳的。 1.3.3硬件设计 本设计的硬件电路只要包括控制电路、 最小系统、 驱动电路、 显示电路四大部分。最小系统只要是为了使单片机正常工作。控制电路只要由开关和按键组成, 由操作者根据相应的工作需要进行操作。显示电路主要是为了显示电机的工作状态和转速。驱动电路主要是对单片机输出的脉冲进行功率放大, 从而驱动电机转动。 ( 1) 控制电路 根据系统的控制要求, 控制输入部分设置了启动控制, 换向控制, 加速控制和减速控制按钮, 分别是K1、 K2、 S2、 S3, 控制电路如图4所示。经过K1、 K2状态变化来实现电机的启动和换向功能。当K1、 K2的状态变化时, 内部程序检测P1.0和P1.1的状态来调用相应的启动和换向程序, 发现系统的电机的启动和正反转控制。 根据步进电机的工作原理能够知道, 步进电机转速的控制主要是经过控制通入电机的脉冲频率, 从而控制电机的转速。对于单片机而言, 主要的方法有: 软件延时和定时中断在此电路中电机的转速控制主要是经过定时器的中断来实现的, 该电路控制电机加速度主要是经过S2、 S3的断开和闭合, 从而控制外部中断根据按键次数, 改变速度值存储区中的数据( 该数据为定时器的中断次数) , 这样就改变了步进电机的输出脉冲频率, 从而改变了电机的转速。 图4 控制电路原理图 ( 2) 最小系统 单片机最小系统或者称为最小应用系统, 素质用最少的元件组成的单片机能够工作的系统, 对51系列单片机来说, 最小系统一般应该包括: 单片机、 复位电路、 晶振电路。 复位电路: 使用了独立式键盘, 单片机的P1口键盘的接口。该设计要求只需4个键对步进电机的状态进行控制, 但考虑到对控制功能的扩展, 使用了6路独立式键盘。复位电路采用手动复位, 所谓手动复位, 是指经过接通一按钮开关, 使单片机进入复位状态, 晶振电路用30PF的电容和一12M晶体振荡器组成为整个电路提供时钟频率。如图5示。 晶振电路: 8051单片机的时钟信号一般见两种电路形式电路得到: 内部震荡方式和外部中断方式。在引脚XTAL1和XTAL2外部接晶振电路器( 简称晶振) 或陶瓷晶振器, 就构成了内部晶振方式。由于单片机内部有一个高增益反相放大器, 当外接晶振后, 就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如图5示。其电容值一般在5~30pf,晶振频率的典型值为12MHz,采用6MHz的情况也比较多。内部振荡方式所得的时钟信号比较稳定, 实用电路实用较多。 图5 复位及时钟振荡电路 ( 3) 驱动电路 经过ULN2803构成比较多的驱动电路, 电路图如图6所示。经过单片机的P1.0~P1.3输出脉冲到ULN2803的1B~4B口, 经信号放大后从1C~4C口分别输出到电机的A、 B、 C、 D相。 图6 步进电机驱动电路 ( 4) 显示电路 在该步进电机的控制器中, 电机能够正反转, 能够加速、 减速, 其中电机转速的等级分为七级, 为了方便知道电机的运行状态和电机的转速的等级, 这里设计了电机转速和电机的工作状态的显示电路。在显示电路中, 主要是利用了单片机的P0口和P2口。采用两个共阳数码管作显示。第一个数码管接的a、 b、 c、 d、 e、 f、 g、 h分别接P0.0~P0.7口, 用于显示电机正反转状态, 正转时显示”1”, 反转时显示”一”, 不转时显示”0”。第二个数码管的a、 b、 c、 d、 e、 f、 g、 h分别接P2.0~P2.7口, 用于显示电机的转速级别, 共七级, 即从1~7转速依次递增, ”0”表示转速为零。电路如图7所示。 图7 显示电路 ( 5) 总体电路图 把各个部分的电路图组合成总电路图, 如图8所示。 图8 总体电路图 1.3.4软件设计 经过分析能够看出, 实现系统功能能够采用多种方法, 由于随时有可能输入加速、 加速信号和方向信号, 因而采用中断方式效率最高, 这样总共要完成4个部分的工作才能满足课题要求, 即主程序部分、 定时器中断部分、 外部中断0和外部中断1部分, 其中主程序的主要功能是系统初始参数的设置及启动开关的检测, 若启动开关合上则系统开始工作, 反之系统停止工作; 定时器部分控制脉冲频率, 它决定了步进电机转速的快慢; 两个外部中断程序要做的工作都是为了完成改变速度这一功能。下面分析主程序与定时器中断程序及外部中断程序。 ( 1) 主程序设计 主程序中要完成的工作主要有系统初始值的设置、 系统状态的显示以及各种开关状态的检测判断等。其中系统初始状态的设置内容较多, 该系统中, 需要初始化定时器、 外部中断; 对P1口送初值以决定脉冲分配方式, 速度值存储区送初值决定步进电机的启动速度, 对方向值存储区送初值决定步进电机旋转方向等内容。若初始化P1=11H、 速度和方向初始值均设为0, 就意味着步进电机按四相单四拍运行, 系统上电后在没有操作的情况下, 步进电机不旋转, 方向值显示”0”, 速度值显示”0”, 主程序流程图如图9所示。 开 始 初 始 化 速度值为0? 启动开关为0? 停止计时器 显 示 启动计时器 延 时 停止计时器 图9 主程序流程图 Y N Y N ( 2) 定时中断设计 步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入电流, 步进电机才会旋转, 时间间隔越短, 速度就越快。在这个系统中, 这个时间间隔是用定时器重复中断一定次数产生的, 即调节时间间隔就是调节定时器的中断次数, 因而在定时器中断程序中, 要做的工作主要是判断电机的运行方向、 发下一个脉冲, 以及保存当前的各种状态。程序流程图如图10所示。 中断返回 T0中断入口 发速度脉冲 读方向指示 重送相关状态 恢复现场 保护现场 中断次数-1=0? N Y 图10 定时中断程序流程图 ( 3) 外部中断设计 外部中断所要完成的工作是根据按键次数, 改变速度值存储区中的数据( 该数据为定时器的中断次数) , 这样就改变了步进电机的输出脉冲频率, 也就是改变了电机的转速。速度增加按钮S2为INT0中断, 其程序流程为原数据, 当值等于7时, 不改变原数值返回, 小于7时, 数据加1后返回; 速度减少按钮S3, 当原数据不为0, 减1保存数据, 原数据为0则保持不变。程序流程图如图11所示。 外部中断入口 保护现场 延时去抖 中断返回 速度值±1 恢复现场 速度=上或限值? 按钮是否弹起? N N N Y Y 图11 外部中断程序流程图 1.3.5源程序( 汇编、 C语言程序各一个) 汇编程序如下: SPEED EQU 10H ;SPEED为转速等级标志, 共7级, 即1~7 FX EQU 11H ;FX为方向标志 COUNT EQU 12H ;COUNT中断次数标志 ORG 0000H AJMP MAIN ; 绝对转移 ORG 0003H ;外部中断0入口地址, 加速子程序 AJMP UP ORG 0013H ;外部中断1入口地址, 减速子程序 AJMP DOWN ORG 000BH ;定时器0中断入口地址, 控制中断次数来达到控制转速 AJMP ZDT0 ORG 0030H MAIN: MOV SP,#60H MOV TMOD,#01H ;工作于定时、 软件置位启动! 模式1( 16位计时器) MOV TH0,#0CFH MOV TL0,#2CH MOV COUNT,#01H SETB ET0 ;定时/计数器允许中断 CLR IT0 ;外部中断为电平触发方式, 低电平有效 CLR IT1 SETB EX0 ;外部允许中断 SETB EX1 SETB EA ;开总中断 MOV R1,#11H ; 四相单四拍运行, 共阳数码管方向显示8, 速度值显示0 MOV SPEED,#00H MOV FX,#00H XIANS: MOV A,SPEED MOV DPTR,#LED MOVC A,@A+DPTR ;查表获取等级对应数码管代码 MOV P2,A ;第二个数码管显示转速等级 MOV A,FX ;准备判断转向 CJNE A,#11H,ELS MOV P0, #0F9H ;第一个数码管显示1, 表示正转 AJMP QD ELS: CJNE A,#00H,ZHENG MOV P0,#0C0H ;第一个数码管显示0, 表示不转 AJMP QD ZHENG: MOV P0,#0BFH ;第一个数码管显示-, 表示反转 QD: JB P3.4,DD ;P3.4接启动开关K1, P3.4=1时启动 CLR TR0 ;停止定时/计数器 MOV P0,#0C0H ;第一个数码管显示0, 表示不转 MOV P2,#0C0H ;第二个数码管显示0, 表示转速为0 MOV SPEED,#00H ;重新赋初值 MOV FX,#00H AJMP QD DD: MOV A,SPEED JNZ GO ;A不等于0, 即初始速度不为零, 则转移到GO CLR TR0 ;停止定时/计数器 AJMP QD GO: SETB TR0 ;开启定时/计数器 ACALL DELAY AJMP XIANS DELAY: MOV R6,#10 ;延时子程序 DEL1: MOV R7,#250 HERE1: DJNZ R7, HERE1 DJNZ R6,DEL1 RET ;以下ZDT0为定时器中断程序 ZDT0: PUSH ACC PUSH DPH PUSH DPL MOV TH0,#0D8H MOV TL0,#0F0H DJNZ COUNT,EXIT JB P3.5,NIZHUAN ;查询方向标志,P3.5接换向开关K2 MOV FX,#11H NIZHUAN:MOV A,FX CJNE A,#11H,FZ ;若A不等于11, 即正转, 则转移到FZ MOV A,R1 ;R1记录上一次电机脉冲状态 MOV P1,A RR A ;循环右一位 MOV R1,A MOV P1,A AJMP RE FZ: MOV A,R1 MOV P1,A RL A ;循环左移一位 MOV P1,A MOV R1,A RE: MOV A,SPEED MOV DPTR,#TAB MOVC A,@A+DPTR MOV COUNT,A ;把转速级别赋给COUNT JB P3.5 ,FFX ; P3.5接换向开关K2, 即换向位, 若P3.5=1, 则跳到FFX MOV FX,#11H AJMP EXIT FFX: MOV FX,#0FEH ;只要FX不等于11H,就能够经过循环左移或右移进行换向 EXIT: POP DPL POP DPH POP ACC RETI ;以下UP为加速中断程序 UP: PUSH ACC ACALL DELAY ;延时防抖动 JB P3.2,UPEX ;P3.2为外部中断0位, 接增速开关S2, 低电平有效, 若P3.2=1, 则退出 MOV A,SPEED CJNE A,#7,SZ ;最大等级为7, 若A不等于7, 则转移到SZ AJMP UPEX ;若A=7,则退出 SZ: INC SPEED ;SPEED= SPEED+1 UPEX: POP ACC HERE2: JNB P3.2,HERE2 ;本条指令为防止开关S2按下去后弹不起, 导致一直产生中断 RETI ;以下DOWN为减速中断程序 DOWN: PUSH ACC ACALL DELAY JB P3.3,DEX ; P3.3为外部中断1位, 接减速开关S3, 低电平有效, 若P3.3=1, 则退出 MOV A,SPEED CJNE A,#0,SJ AJMP DEX SJ: DEC SPEED ;SPEED= SPEED-1 DEX: POP ACC HERE3: JNB P3.3,HERE3 RETI TAB: DB 0,60,40,35,30,28,25,21 ;经仿真, 小于21时, 由于脉冲太快, 会出现失步 ; 0 1 2 3 4 5 6 7 8 9 LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H END C语言程序如下: #include <reg51.h> #define uint unsigned int sbit k1=P3^4; //启动开关 sbit k2=P3^5; //换向开关 sbit s2=P3^2; //加速按钮 sbit s3=P3^3; //减速按钮 void isr_int0(void);//外部中断0中断服务函数声明 void isr_int1(void); void zd_t0ist(void); uint speed,count,r1,i,t,k; main() {k=0; t=0; r1=0x11 ; speed=0; count=1; TMOD=0x01; ET0=1;//定时器0 EA=1;//中断允许总开关 EX0=1;//外部中断0 EX1=1;//外部中断1 TH0=0xcf;//计数初值高8位 TL0=0x2c;//计数初值第8位 for(;;) {if(k1==0) {P0=0xff; P2=0xff; speed=0; TR0=0; } else { if(k2==0) P0=0xbf;//1011 1111 else P0=0xf9; //1111 1001 if(speed==0) {P2=0xc0; TR0=0; } else TR0=1; } } } void isr_int0(void) interrupt 0 { if(speed<7) speed=speed+1; while(s2==0) {for(i=0;i<10;i++);} } void isr_int1(void) interrupt 2 { if(speed>0) speed=speed-1; while(s3==0) {for(i=0;i<10;i++);} } void zd_t0ist(void) interrupt 1 { TH0=0xd8; TL0=0xf0; switch(speed) { case 0:P2=0xc0;count=0;break; case 1:P2=0xf9;count=60;break; case 2:P2=0xa4;count=40;break; case 3:P2=0xb0;count=35;break; case 4:P2=0x99;count=30;break; case 5:P2=0x92;count=28;break; case 6:P2=0x82;count=25;break; case 7:P2=0xf8;count=21;break; default :break; } if(t==0) t=count; if(t>0) t=t-1; if(k2==0) { if(t==0) { switch(k) { case 0:P1=0x01;break; case 1:P1=0x02;break; case 2:P1=0x04;break; case 3:P1=0x08;break; default :break; } k=k+1; if(k==4) k=0; } } else { if(t==0) { switch(k) { case 0:P1=0x08;break; case 1:P1=0x04;break; case 2:P1=0x02;break; case 3:P1=0x01;break; default :break; } k=k+1; if(k==4) k=0; } } } 2.总结 本设计经过分析步进电机结构、 工作原理, 查阅步进电机控制系统的相关科技文献, 遵循实用、 简单、 可靠和低成本的原则, 设计了一种既可用于精度要求不高, 但控制需完备的场合。对本次设计, 有以下结论: ( 1) 采用单片机为控制核心, 利用其强大的功能, 把键盘和显示电路有机的结合起来, 组成一个操作方便、 交互性强的控制系统。而且整个系统所包含的技术几乎包括了现本科学校控制专业所要求的知识, 有利于实践教学取得最大效果。 ( 2) 键盘电路和显示电路采用了动态扫描技术, 节约了单片机资源。 ( 3) 系统软件采用结构化设计, 具有易维护性, 根据用户新的要求, 对软件系统进行少量的修改, 使系统功能得到一定程度的提高。 3.结束语 本人深知自己做的工作还很不够, 由于软件和硬件的各方面原因, 系统的应用讨论不够, 精度还有待于进一步提高。由于时间的原因, 设备的原因, 实验做的不好不够, 相关验证性的数据、 信息不够丰富。能够肯定, 随着技术的不断发展, 步进电机的控制应用前景将越来越宽阔, 而其控制系统也将向着智能化和网络化的方向发展。本论文的研究和探讨还远远不够, 我们要在现在的基础上, 不断吸取新的技术和方法, 并将它们应用于本课题的研究上来, 进一步深化我们的研究深度, 争取有更多的收获。 4.参考文献 【1】张家生. 电机原理与拖动基础【M】. 北京: 北京邮电大学出版社, . 【2】马淑华, 王凤文, 张美金. 单片机原理与接口技术【M】.北京: 北京邮电大学出版社, . 【3】顾德英, 张健, 马淑华.计算机控制技术【M】. 北京: 北京邮电大学出版社, . 【4】华成英, 童诗白. 模拟电子技术基础【M】. 北京: 高等教育出版社, 【5】张靖武, 周灵彬. 单片机系统的PROTEUS设计与仿真【M】. 北京: 电子工业出版社,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服