步进电机完整毕业论文_第1页
步进电机完整毕业论文_第2页
步进电机完整毕业论文_第3页
步进电机完整毕业论文_第4页
步进电机完整毕业论文_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳理工大学学士学位论文I摘 要本文介绍了单片机控制步进电机的系统。在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用。步进电机是机电控制中一种常用的执行机构, 其原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。本系统的硬件组成主要有:51 系列单片机、L298N 驱动电路、直流电压源等。同时对系统设计中所用到的一些软件都进行了介绍。本系统用 51 系列单片机和 L298N 电机驱动芯片并加入了键盘来控制步进电机实现转向、转速等。系统中使用的是永磁式二相步进电机,相应的驱动和控制电路对于其整体性能起着非常重要的作用。经系统调试,能够很好的控制步进电机的正反转、加减速、急停,从而达到预期目的。整个系统具有结构简单、可靠性高、成本低和实用性强等特点,具有较高的通用性和应用推广价值。关键词:51 系列单片机;L298N 驱动电路;正反转;急停沈阳理工大学学士学位论文IIAbstractThis paper, we introduces a stepper motor system which controlled by SCM. In the Electrical era today, Motor has been playing a very important role in the modernization of production and life. Stepper motor is a common used implementing agency in motor control. The principle is by switching the coil current and the order in its each phase to make a step-by-step rotary motor. The hardware of the system including: 51 series SCM, L298N driving circuit, DC voltage source , etc. At the same time some of the software that used in system designing are introduced. The system used 51 SCM and L298N motor drive chip and joined the keyboard to control the stepper motor to achieve the direction and speed of rotation, etc. A Permanent Magnet two-phase stepper motor is used in the system. The corresponding drive and control circuit plays a very important role to its overall performance. Though system testing, it can be very convenient to control the stepper motor, such as acceleration , deceleration, exigency stop so as to achieve the desired objectives. The whole system is simple in structure with characteristics of high reliability, low cost and practicality which has a higher universal characteristic and the promotional and applied value.Keywords: 51 SCM; L298N driving circuit; Positive and reversal rotation; Exigency沈阳理工大学学士学位论文III目 录1 绪论 11.1 技术概述 .11.2 本课题的背景和意义 .21.3 本设计完成的工作 .32 单片机控制步进电机系统简介 42.1 单片机系统概述 .42.2 AT89C51 功能概述 42.2.1 引脚功能说明 52.2.2 时钟振荡器 72.3 步进电机概述 .73 常用软件基础知识 93.1 C 语言程序设计概述 .93.1.1 C 语言出现的历史背景 93.1.2 C 语言的特点 103.2 Keil 编译器软件简介 .123.2.1 使用 Keil 软件建立一个工程 .133.2.2 使用 Debug 进行调试 .173.3 STC-ISP 软件介绍 .193.3.1 程序烧写过程 194 系统概述及设计 224.1 整体结构 .224.2 系统作用 .224.3 系统应用 .225 硬件设计 235.1 硬件设计原则 .235.2 MCU 最小系统电路设计 .235.2.1 复位电路设计 245.2.2 时钟电路设计 245.2.3 上拉电阻的作用 255.3 L298N 驱动电路设计 255.3.1 L298N 芯片简介 .265.3.2 MAX-232 电路设计 265.3.3 MAX-232 芯片简介 .265.4 键盘的电路设计 275.4.1 键盘的特性 275.4.2 按键的确认 275.4.3 键盘的工作方式 285.5 电源电路设计 296 软件设计 306.1 程序模块 .30沈阳理工大学学士学位论文IV6.1.1 中断模块 306.1.2 延时模块 32结论 33致谢 34参考文献 35附录 A 资料翻译 36A.1 英文资料 .36A.2 中文译文 .45附录 B 程序源码 52附录 C 系统总体电路图 57附录 D 实物图 .58沈阳理工大学学士学位论文01 绪论1.1 技术概述在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用。无论是在工农业生产还是在日常生活中的家用电器,都大量地使用着各种各样的电动机。因此对电动机的控制变得越来越重要了。电动机的控制技术的发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术、微机应用技术的最新发展成就。正是这些技术的进步使电动机控制技术化。步进电机是机电控制中一种常用的执行机构,其原理是通过对它每相线圈中的电流和顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速。通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的。同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的,现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM),混合式步进电机(HB)和单相式步进电机等。永磁式步进电机一般为两相,转矩和体积较小,步进角一般为 7.50;反应式步进电机一般为三相,可实现大转矩输出,步进角一般为 1.50,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8“而五相步进角一般为 0.720。这种步进电机的应用最为广泛。步进电机的一些基本参数:电机固有步距角:它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如 86BYG250A 型电机给出的值为 0.90/1.80(表示半步工作时为 0.90、整步工作时为 1.80),这个步距角可以称之为“电机固有步距角”,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。步进电机的相数:是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为 0.90/1.80、三相的为 0.750/1.50、五相的为 0.360/0.720。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则“相数”将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。沈阳理工大学学士学位论文1保持转矩 :是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为衡量步进电机最重要的参数之一。比如,当人们说 2 N m 的步进电机,在没有特A殊说明的情况下是指保持转矩为 2 N m 的步进电机。A步进电机的一些特点:a. 一般步进电机的精度为步进角的 3%-5%,且不累积。b.步进电机外表允许的最高温度。c.步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在 130 C 以上,有的甚至高达 200 C 以上,所以步进电机外表温度80 C-90 C 完全正常。d.步进电机的力矩会随转速的升高而下降。e.当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。f.步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。介绍步进电机的一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速) 。g.步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。因此,微电脑控制步进电机最适合。本文以永磁式步进电机为例,来介绍如何用MCS-51 系列单片机控制步进电机。1.2 本课题的背景和意义步进电机可以对旋转角度和转动速度进行高精度控制。步进电机作为控制执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统和精密机械等领域。沈阳理工大学学士学位论文2例如,在仪器仪表,机床设备以及计算机的外围设备中(如打印机和绘图仪等),凡需要对转角进行精确控制的情况下,使用步进电机最为理想。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。上个世纪就出现了步进电动机,它是一种可以自由回转的电磁铁,动作原理和今天的反应式步进电动机没有什么区别,也是依靠气隙磁导的变化来产生电磁转矩。在本世纪初,由于资本主义列强争夺殖民地,造船工业发展很快,同时也使得步进电动机的技术得到了长足的进步。到了 80 年代后,由于廉价的微型计算机以多功能的姿态出现,步进电动机的控制方式更加灵活多样。原来的步进电机控制系统采用分立元件或者集成电路组成的控制回路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路。计算机则通过软件来控制步进电机,更好地挖掘出电动机的潜力。因此,用计算机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋势。现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段,反应式步进电机获得最多的应用。1.3 本设计完成的工作本次毕业设计是单片机控制步进电机方面的应用。这个设计最终目的是设计出一个可以控制步进电机旋转的系统。本次设计主要实现了以下几个功能:(1) 设计一个稳压电源将输入电压稳压到适合单片机工作的 5V 电源。(2) 设计一个外围驱动电路来驱动步进电机旋转。(3) 加入按键来控制步进电机旋转所要求的数据。(4) 最后编写软件部分,将程序输入单片机并运行系统,使系统工作。沈阳理工大学学士学位论文32 单片机控制步进电机系统简介2.1 单片机系统概述随着材料科学、工艺技术、计算机技术的发展与进步,电路系统向着集成度极高的方向发展。CPU 的生产制造技术,也朝着综合性、技术性、实用性发展。如 CPU 的运算位数从 4 位、8 位 到 32 位机的发展,运算速度从 8 MHz、32 MHz到 1.6 GHz。可以说是日新月异的发展着。其中单片机在控制系统中的应用是越来越普遍了。单片机控制系统是以单片机(CPU)为核心部件,扩展一些外部接口和设备,组成单片机工业控制机,主要用于工业过程控制。要进行单片机系统设计首先必须具有一定的硬件基础知识;其次,需要具有一定的软件设计能力,能够根据系统的要求,灵活地设计出所需要的程序;第三,具有综合运用知识的能力。最后,还必须掌握生产过程的工艺性能及被测参数的测量方法,以及被控对象的动、静态特性,有时甚至要求给出被控对象的数学模型。2.2 AT89C51 功能概述AT89C51 是美国 ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含4K bytes 的可反复擦写的只读程序存储器 PEROM 和 128bytes 的随机存取数据存储器,器件采用公司的高密度,非易失性存储技术生产,兼容标准 MCS-51 指令系统,片内置通用 8 位中央处理器和 FLASH 存储单元,功能强大。此单片机可为您提供许多高性价比的应用场合。AT89C51 提供以下标准功能:4K 字节 FLASH 闪速存储器,128 字节内部RAM,32 个 I/O 口线,两个 16 位定时/计数器,一个向量两级中断结构,一个全双工串行通讯口,内置一个精密比较器,片内振荡器及时钟电路,同时 AT89C51 可降至0Hz 的静态逻辑操作,并支持两种软件可选的工作模式,空闲方式停止 CPU 的工作,但允许 RAM,定时计数器,串行通信及中断系统继续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作,并禁止其它所有部件工作直到下一个硬件复位。沈阳理工大学学士学位论文42.2.1 引脚功能说明:MCS-51 是标准的 40 脚双列直插式集成电路芯片,引脚排列请参见图 2.1:图 2.1 AT89C51 的引脚图VCC:电源电压; GND:地;P0 口:P0 口是一组 8 位漏极开路型双向 I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路,对端口写 1 可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。在 FLASH 编程时, P0 口接受指令字节,而在程序效验时,输出指令字节,效验时,要求外接上拉电阻。P1 口:P1 口是一个带有内部上拉电阻的 8 位双向 I/O 口,P1 的输出缓冲级可驱动 (吸收或输出电流)4 个 TTL 逻辑门电路。对端口写 1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉底时会输出一个电流。沈阳理工大学学士学位论文5FLASH 编程和程序效验期间,P1 接收低 8 位地址。P2 口:P2 口是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可驱动 (吸收或输出电流)4 个 TTL 逻辑们电路。对端口写 1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉底时会输出一个电流。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVXDPTR指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行MOVXRI)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中 R2 寄存器的内容),在整个访问期间不改变。FLASH 编程或效验时, P2 亦接收高位地址和其它控制信号。P3 口:P3 口是一个带有内部上拉电阻的 8 位双向 I/O 口,P3 的输出缓冲级可驱动 (吸收或输出电流)4 个 TTL 逻辑们电路。对端口写 1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉底时会输出一个电流。P3 口除了作为一般的 I/O 口线外,更重要的用途是他的第二个功能,如下表所示:表 1 P3 口 AT89C2051 特殊功能端口引脚 功能特性P3.0 RXD(串行口输入)P3.1 TXD(并行口输入)P3.2 INT0(外部中断 0)P3.3 INT1(外部中断 1)P3.4 T0(定时计数外部输入 0)P3.5 T1(定时计数外部输入 0)P3.6 (外部数据存储器写选通)WRP3.7 (外部数据存储器读选通)DP3 口还接收一些用于 FLASH 闪速存储器编程和程序效验的控制信号。RST:复位输入。其引脚一旦变成两个机器周期以上的高电平,所有的 I/O 口都将复位到 1 状态,当振荡器正在工作时,持续两个机器周期以上高电平便可完成复位,每个机器周期为 12 个振荡时钟周期。沈阳理工大学学士学位论文6EA/VPP:外部访问允许,欲使 CPU 仅访问外部程序存储器(0000HFFFFH),EA 端必须保持低电平接地,需注意的是:如果加密位 LB1 被编程,复位是内部会锁存 EA 端状态。如 EA 端为高电平(接 VCC 端),CPU 则执行内部程序存储器中的指令。FLASH 存储器编程时,该引脚加上+12V 的编程允许电源 VPP,当然这必须是该器件是使用 12V 编程电压 VPP。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器输出端2.2.2 时钟振荡器AT89C51 中有一个用于构成内部振荡器的高增益反向放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈器件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图 2.2。外接石英晶体或陶瓷振荡器及电容 C1,C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1,C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低,振荡器工作的稳定性,起振得难易程度及温度稳定性,如果使用石英晶体,推荐电容使用 30PF10PF,而如使用陶瓷振荡器建议选择 40PF10PF。图 2.2 时钟振荡电路2.3 步进电机概述步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,沈阳理工大学学士学位论文7即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。步进电机有几个显著特点:1、 步进电机可以直接接受数字信号,而无需模/数变换 ;2、 步进电机具有快速启/停控制能力,可在瞬间实现启动和停止;3 、 步进电机具有高精度的特点,步距角在 0.3690 度之间;4 、 定位准确;现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。永磁式步进电机一般为两相,转矩和体积较小,步进角一般为 7.5 度 或 15 度;反应式步进电机一般为三相,可实现大转矩输出,步进角一般为 1.5 度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。感应子式步进电机与传统的反应式步进电机相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。感应子式步进电机某种程度上可以看作是低速同步电机。一个四相电机可以作四相运行,也可以作二相运行。(必须采用双极电压驱动),而反应式电机则不能如此。沈阳理工大学学士学位论文83 常用软件基础知识3.1 C 语言程序设计概述3.1.1 C 语言出现的历史背景C 语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。C 语言是在 B 语言的基础上发展起来的,它的根源可以追溯到 ALGOL60。1960年出现的 ALGOL60 是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963 年英国的剑桥大学推出了 CPL (combined programming language)语言。CPL 语言在 ALGOL60 的基础上接近硬件一些,但规模比较大,难以实现。 1967 年英国剑桥大学的 Matin Richard 对 CPL 语言做了简化,推出了 BCPL(basic combined programming language)语言。1970 年美国贝尔实验室的 Ken Thompson 以 BCPL 语言为基础, 又做了进一步简化,设计出了很简单的而且很接近硬件的 B 语言(取 BCPL 的第一个字母),并用 B 语言写了第一个 UNIX 操作系统,在 PDP 7 上实现。1971 年在PDP 11/20 上实现了 B 语言,并写了 UNIX 操作系统。但 B 语言过于简单,功能有限。1972 年至 1973 年间,贝尔实验室的 D.M.Ritchie 在 B 语言的基础上设计出了 C语言( 取 BCPL 的第二个字母 )。C 语言既保持了 BCPL 和 B 语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等)。最初的 C 语言只是为描述和实现 UNIX 操作系统提供一种工作语言而设计的。1973 年,K.Thompson 和 D.M.Ritchie两人合作把 UNIX 的 90%以上用 C 改写,即 UNIX 第 5 版。原来的 UNIX 操作系统是1969 年由美国的贝尔实验室的 K.Thompson 和 D.M.Ritchie 开发成功的,是用汇编语言写的。1972 年至 1973 年间,贝尔实验室的 D.M.Ritchie 在 B 语言的基础上设计出了 C 语言(取 BCPL 的第二个字母 )。C 语言既保持了 BCPL 和 B 语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等)。最初的 C 语言只是为描述和实现UNIX 操作系统提供一种工作语言而设计的。1973 年,K.Thompson 和 D.M.Ritchie 两人合作把 UNIX 的 90%以上用 C 改写,即 UNIX 第 5 版。原来的 UNIX 操作系统是1969 年由美国的贝尔实验室的 K.Thompson 和 D.M.Ritchie 开发成功的,是用汇编语言写的。沈阳理工大学学士学位论文9后来,C 语言多次做了改进,但主要还是在贝尔实验室内部使用。直到 1975 年UNIX 第 6 版公布后,C 语言的突出优点才引起人们的普遍注意。1977 年出现了不依赖于具体机器的 C 语言编译文本可移植 C 语言编译程序,使 C 移植到其他机器时所需做的工作大大简化了,这也推动了 UNIX 操作系统迅速地在各种机器上实现。例如 VAX、 AT&T 等计算机系统都相继开发了 UNIX。随着 UNIX 的日益广泛使用,C语言也迅速得到推广。C 语言和 UNIX 可以说是一对孪生兄弟,在发展过程中相辅相成。1978 年以后,C 语言已先后移植到大、中、小、微型机上,已独立于 UNIX 和PDP 了。现在 C 语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一。以 1978 年发表的 UNIX 第 7 版中的 C 编译程序为基础,Brian W.Kernighan 和 Dennis M.Ritchie (合称 K&R)合著了影响深远的名著The C Programming Language,这本书中介绍的 C 语言成为后来广泛使用的 C 语言版本的基础,它被称为标准 C。1983 年,美国国家标准化协会(ANSI)根据 C 语言问世以来各种版本对 C 的发展和扩充,制定了新的标准,称为 ANSI C。 ANSI C 比原来的标准 C 有了很大的发展。K & R 在 1988年修改了他们的经典著作The C Programming Language,按照 ANSI C 标准重新写了该书。1987 年,ANSI 又公布了新标准87 ANSIC。1990 年,国际标准化组织 ISO(International Standard Organization) 接受 87 ANSI C为 ISO C 的标准 (ISO 98991990)。目前流行的 C 编译系统都是以它为基础的。本书的叙述基本上以 ANSI C 为基础。目前广泛流行的各种版本 C 语言编译系统虽然基本部分是相同的,但也有一些不同。在微型机上使用的有 Microsoft C、Turbo C、Quick C、BORLAND C 等,它们的不同版本又略有差异。因此,应了解所用的计算机系统所配置的 C 编译系统的特点和规定。3.1.2 C 语言的特点C 语言通常称为中级计算机语言。中级语言并没有贬义,不意味着它功能差、难以使用、或者比 B A S I C、P a s c a l 那样的高级语言原始,也不意味着它与汇编语言相似,会给使用者带来类似的麻烦。C 语言之所以被称为中级语言,是因为它把高级语言的成分同汇编语言的功能结合起来了。作为中级语言,C 允许对位、字节和地址这些计算机功能中的基本成分进行操作。C 语言程序非常容易移植。可移植性表示为某种计算机写的软件可以用到另一种机器上去。举例来说,如果为苹果机写的一个程序能够方便地改为可以在 IBM PC 上运行的程序,则称为是可移植的。所有的高级语言都支持数据类型的概念。一个数据类型沈阳理工大学学士学位论文10定义了一个变量的取值范围和可在其上操作的一组运算。常见的数据类型是整型、字符型和实数型。虽然 C 语言有五种基本数据类型,但与 P a s c a l 或 A d a 相比,它却不是强类型语言。C 程序允许几乎所有的类型转换。例如,字符型和整型数据能够自由地混合在大多数表达式中进行运算。这在强类型高级语言中是不允许的。C 语言的另一个重要特点是它仅有 3 2 个关键字,这些关键字就是构成 C 语言的命令。和 IBM PC 的 B A S I C 相比,后者包含的关键字达 1 5 9 个之多。C 语言是结构化语言。虽然从严格的学术观点上看,C 语言是块结构(b l o c k - s t r u c t u r e d)语言,但是它还是常被称为结构化语言。这是因为它在结构上类似于 A L G O L、P a s c a l 和 M o d u l a - 2(从技术上讲,块结构语言允许在过程和函数中定义过程或函数。用这种方法,全局和局部的概念可以通过“作用域” 规则加以扩展,“作用域”管理变量和过程的 “可见性”。因为 C 语言不允许在函数中定义函数,所以不能称之为通常意义上的块结构语言)。结构化语言的显著特征是代码和数据的分离。这种语言能够把执行某个特殊任务的指令和数据从程序的其余部分分离出去、隐藏起来。获得隔离的一个方法是调用使用局部(临时)变量的子程序。通过使用局部变量,我们能够写出对程序其它部分没有副作用的子程序。这使得编写共享代码段的程序变得十分简单。如果开发了一些分离很好的函数,在引用时我们仅需要知道函数做什么,不必知道它如何做。切记:过度使用全局变量(可以被全部程序访问的变量)会由于意外的副作用而在程序中引入错误。结构化语言比非结构化语言更易于程序设计,用结构化语言编写的程序的清晰性使得它们更易于维护。这已是人们普遍接受的观点了。C 语言的主要结构成分是函数C 的独立子程序。在 C 语言中,函数是一种构件(程序块),是完成程序功能的基本构件。函数允许一个程序的诸多任务被分别定义和编码,使程序模块化。可以确信,一个好的函数不仅能正确工作且不会对程序的其它部分产生副作用。C 语言是程序员的语言。也许你会问“所有的计算机语言不都是程序员使用的吗?”,回答是断然的 “否”。我们考虑典型的非程序员的语言 C O B O L 和 B A S I C。C O B O L 的设计使程序员难以改变所编写代码的可靠性,甚至不能提高代码的编写速度。然而 C O B O L 设计者的本意却是打算使非程序员能读程序(这是不大可能的事)。注意,这并不是攻击 C O B O L 的优点,而是想指出,它没有被设计成为程序员的沈阳理工大学学士学位论文11理想语言。BASIC 的主要目的是允许非专业程序员在计算机上编程解决比较简单的问题。与其形成鲜明对照的是 C 语言,由于程序生成、修改和现场测试自始至终均由真正的程序员进行,因而它实现了程序员的期望:很少限制、很少强求、块结构、独立的函数以及紧凑的关键字集合。用 C 语言编程,程序员可以获得高效机器代码,其效率几乎接近汇编语言代码。C 语言被程序员广泛使用的另一个原因是可以用它代替汇编语言。汇编语言使用的汇编指令,是能够在计算机上直接执行的二进制机器码的符号表示。汇编语言的每个操作都对应为计算机执行的单一指令。虽然汇编语言给予程序员达到最大灵活性和最高效率的潜力,但开发和调试汇编语言程序的困难是难以忍受的。非结构性使得汇编语言程序难于阅读、改进和维护。也许更重要的是,汇编语言程序不能在使用不同C P U 的机器间移植。最初,C 语言被用于系统程序设计。一个“系统程序 ”是一大类程序的一部分,这一大类构成了计算机操作系统及实用程序。通常被称为系统程序的有:1、 操作系统;2、 翻译程序; 3、 编辑程序;4、 汇编程序;5、 编译程序;6、 数据库管理程序;随着 C 语言的普及,加之其可移植性和高效率,许多程序员用它设计各类程序。几乎所有的计算机上都有 C 语言编译程序,这使我们可以很少改动甚至不加改动地将为一种机器写的 C 语言源程序在另一种机器上编译执行。可移植性节省了时间和财力。C 语言不仅在速度和结构上有它的优势,而且每个 C 语言系统都提供了专门的函数库,程序员可以根据不同需要对其进行剪裁,以适应各种程序的设计。由于它允许(更准确地说是鼓励)分别编译,所以 C 语言可使程序员方便地管理大型项目,最大限度地减少重复劳动。3.2 Keil 编译器软件简介Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易沈阳理工大学学士学位论文12学易用。用过汇编语言后再使用 C 来开发,体会更加深刻。Keil C51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到 Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍 Keil C51 开发系统各部分功能和使用。图 3.1 C51 工具包整体结构图Keil C51 单片机软件开发系统的整体结构 C51 工具包的整体结构,如图 3.1 所示,其中 uVision 与 Ishell 分别是 C51 for Windows 和 for DOS 的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用 IDE 本身或其它编辑器编辑 C 或汇编源文件。然后分别由 C51 及 A51 编译器编译生成目标文件(.OBJ)。目标文件可由 LIB51 创建生成库文件,也可以与库文件一起经 L51 连接定位生成绝对目标文件(.ABS)。ABS 文件由 OH51 转换成标准的 Hex 文件,以供调试器 dScope51或 tScope51 使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如 EPROM 中。3.2.1 使用 Keil 软件建立一个工程Keil 是目前进行 51 单片机开发最常用的编译软件。关于 Keil 的使用,有很多的资料介绍,这里只介绍其整个编译过程,在最短时间内开始使用 Easy 51DP-2 开发板。对于 Keil 更详细的介绍,可以参考一些专门书籍资料。在 Keil 里,每一个完整的程序,都是以一个工程的形式建立的。一个工程里可以有一个或多个*.c 文件和*.h 文件,但只可以有一个 main()函数。一般的做法是将包含 main()函数的 C 文件加入到工程中,沈阳理工大学学士学位论文13其他文件以#include 头文件的形式加到这个 C 文件里。这样,在编译的时候,其他的文件会被自动的导入到工程里来。打开 Keil 软件后,出现(图 3.2)所示界面。当然,如果 Keil 在上次关闭时有打开的工程,再一次打开时它会自动加载上一次的工程文件。图 3.2 Keil 软件主界面首先点击 Project-New Project(Project-Open Project为打开一个已经存在的工程),如图 3.3 所示。图 3.3 Keil 软件打开新工程界面点开后,在出现的对话框中选择工程存在路径,单击“保存”后,出现(如图 3.4所示)界面。在此界面上选择电路板上所用的单片机型号:Atmel AT89S51(或者是AT89S52,视开发板上具体型号而定),单击“确定 ”。沈阳理工大学学士学位论文14图 3.4 选择电路板上所用的单片机型号设置完成后,软件会提示“是否将 8051 上电初始化程序添加入工程?”如图 3.5所示,这个一般选择“否”。(关于 STARTUP.A51 的相关内容可查阅相应资料)图 3.5 是否将 8051 上电初始化程序添加入工程这样,就建立了一个空的 51 工程。接下来的事,就是在这个工程里面加入自己的程序代码。点击 ,或者 File-New,便建立了一个空的文本框。现在,就可以开始在里面输入你的代码了。保存时注意:如果是用 C 语言写的程序,则将文本保存成*.c,如果是用汇编写的程序,则将文本存成*.asm。到目前为步,我们已经建立了一个工程,也写了一个程序代码。但现在还不能开始编译。因为还没有将程序代码添加到工程里面去。下一步就是将写完的程序添加到工程里面,如图 3.6 所示,在左边 Project Workspace 里的 Source Group 1 上右击,选择 Add Files to Group Source Group 1。在沈阳理工大学学士学位论文15打开的对话框中,选择刚存的文件路径和对应的扩展名。这样,程序就添加进了这个工程。图 3.6 添加文件到工程中下一步,就开始编译刚输入进去的代码。点击工具栏中的 按钮。接着,Keil 会打出下面的提示:Build target Target 1assembling led.asm.linking.Program Size: data=8.0 xdata=0 code=100“first“ - 0 Error(s), 0 Warning(s).其中“first“ - 0 Error(s), 0 Warning(s).”说明现在的工程编译通过,0 个错误和 0个警告。建立工程的时候,默认是不生成 HEX 文件的,得在编译做如下设置:单击,或者在 Project Workspace 里 Target 1 上右击,选择“Options for Target Target 1”。出现如图 3.7 所示对话框,选择“Output”按图示,将箭头所指的多选框勾上,点“确定”。沈阳理工大学学士学位论文16现在再点击 重新编译,系统提示:“creating hex file from “first“.”。便会在工程所在文件夹里生成 HEX 文件。图 3.7 生成 HEX 文件3.2.2 使用 Debug 进行调试Keil 有很强大的调试功能,可以显示 C 程序的反汇编代码、可以计算代码运行的时间、可以显示程序中某一变量的值能用好这个调试工具对编写单片机程序会有很大的帮助。同样的,在这里,只对 Debug 进行简单应用介绍,更详细的使用方法可以参看相关书籍资料。沈阳理工大学学士学位论文17图 3.8 调试前设置窗口首先,单击 ,弹出如图 3.8 所示对话框,在 Target 页面上设置对应的晶振频率。其他不用作修改。设置完成后,单击 ,进入调试界面(如图 3.9 所示)。图 39 Keil 调试界面点击 中对应的工具按钮则可以开始调试。沈阳理工大学学士学位论文18另外,“View ”下的三个工具在调试中会经常用到如.图 3.10 所示,“Disassembly Window”显示 C 文件的反汇编程序;“Watch & Call Stack Window”可以显示程序中某一变量的值;“Memory Window ”可以显示内存中某一地址的值。图 3.10 三个常用的调试工具3.3 STC-ISP 软件介绍这里采用的单片机程序烧写软件,是网友姚永平编写的“Easy 51Pro v2.0”。这个软件是完全开源的,在这里也要感谢姚永平先生。这个软件在网上流传很广,因为其下载线制作简单。被很多单片机爱好者采用。此软件使用时还需要一个单片机下载线来把程序下载到单片机里,单片机下载线原理图(如图 3.11 所示)图 3.11 下载线原理图3.3.1 程序烧写过程:先从网站上下载到 STC-ISP 的软件包,解压后,打开其中 “软件”文件夹,运行其中的 STC-ISP.exe,出现如下界面(如图 3.12 所示)。沈阳理工大学学士学位论文19图 3.12 选单片机接下来插好下载线,接通开发板电源。在左上角的芯片型号选择列表框中选择对应的芯片型号,单击检测器件,如果软件提示检测到器件,则硬件电路没有问题,接下来就开始往单片机里烧写程序了,单击“打开文件”出现所示对话框。将文件类型设为 HEX,选择建立工程的路径,找到 Keil 编译生成的 HEX 文件如图 3.13 所示。之后,再点下“自动完成”,这样,程序就烧写完成了。沈阳理工大学学士学位论文20图 3.13 打开文件沈阳理工大学学士学位论文214 系统概述及设计4.1 整体结构此控制系统的硬件主要组成:51 系列单片机、L298N、直流电压源、键盘等。整体结构如图 4.1 所示本系统总体设计思路是:由键盘发出电平信号,单片机接受并转换成控制信号发送给 L298N。L298N 主要作用连接步进电机从而驱动步进电机。在系统中按键的作用是控制整个系统的。图 4.1 系统总体框图4.2 系统作用本控制系统主要作用是通过单片机来控制步进电机旋转,想要实现这一功能必须要对单片机软件部分和硬件设计有很多的了解,软件部分主要是通过 C 语言编译而硬件部分是由单片机、L298N、直流电压源、键盘等。完成硬件和软件的设计就能够实现并控制步进电机旋转。4.3 系统应用基于单片机实现步进电机控制也是目前重要的一种手段,步进电机本身就是离散型自动化执行元件,所以它特别适合采用单片机及嵌入式系统控制。单片机有更大的灵活性,更易实现复杂的控制策略。随着微处理器技术的飞速发展,单片机的性价比越来越高,利用单片机实现步进电机控制将形成趋势。键盘 AT89C51 控制信号 L298N 步进电机中断直流电压源直流电压源沈阳理工大学学士学位论文225 硬件设计5.1 硬件设计原则本系统设计一共有 4 部分组成,分别有 MCU 最小系统设计、L298N 驱动电路设计、键盘的电路设计和电源电路设计。通过这 4 部分的结合来控制和显示步进电机的旋转,系统设计中有一些部分要注意,首先要了解单片机的工作原理,在 L298N 驱动电路设计中要在驱动步进电机的同时还要保护好 L298N。电源部分是要将输入进来的电压转化为单片机工作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论