




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机控制步进电机的系统毕业论文目 录1 绪论11.1技术概述11.2本课题的背景和意义31.3本设计完成的工作32 单片机控制步进电机系统简介42.1单片机系统概述42.2AT89S52功能概述42.2.1引脚功能说明:42.2.2时钟振荡器72.3步进电机概述73 常用软件基础知识93.1C语言程序设计概述93.1.1C语言出现的历史背景93.1.2C语言的特点103.2Keil编译器软件简介133.2.1使用Keil软件建立一个工程133.3STC-ISP软件介绍173.3.1程序烧写过程:184 系统概述及设计204.1整体结构204.2系统作用204.3系统应用205 硬件设计225.1硬件设计原则225.2MCU最小系统电路设计225.2.1复位电路设计235.2.2时钟电路设计235.2.3上拉电阻的作用245.3L298N驱动电路设计245.3.1L298N芯片简介245.3.2MAX-232电路设计255.3.3MAX-232 芯片简介255.4 键盘的电路设计265.4.1 键盘的特性265.4.2 按键的确认265.4.3 键盘的工作方式266 软件设计286.1程序模块286.1.1中断模块29结论31致谢32参考文献33附录A 资料翻译34A.1英文资料34A.2中文译文43附录B 程序源码50附录C 系统总体电路图54附录D 实物图55II沈阳理工大学学士学位论文1 绪论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。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则“相数”将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。保持转矩:是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为衡量步进电机最重要的参数之一。比如,当人们说2 Nm的步进电机,在没有特殊说明的情况下是指保持转矩为2 Nm的步进电机。步进电机的一些特点:a.一般步进电机的精度为步进角的3%-5%,且不累积。b.步进电机外表允许的最高温度。c.步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在130C以上,有的甚至高达200C以上,所以步进电机外表温度80C-90C完全正常。d.步进电机的力矩会随转速的升高而下降。e.当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。f.步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。介绍步进电机的一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。g.步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。因此,微电脑控制步进电机最适合。本文以永磁式步进电机为例,来介绍如何用MCS-51 系列单片机控制步进电机。1.2 本课题的背景和意义步进电机可以对旋转角度和转动速度进行高精度控制。步进电机作为控制执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统和精密机械等领域。例如,在仪器仪表,机床设备以及计算机的外围设备中(如打印机和绘图仪等),凡需要对转角进行精确控制的情况下,使用步进电机最为理想。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。上个世纪就出现了步进电动机,它是一种可以自由回转的电磁铁,动作原理和今天的反应式步进电动机没有什么区别,也是依靠气隙磁导的变化来产生电磁转矩。在本世纪初,由于资本主义列强争夺殖民地,造船工业发展很快,同时也使得步进电动机的技术得到了长足的进步。到了80年代后,由于廉价的微型计算机以多功能的姿态出现,步进电动机的控制方式更加灵活多样。原来的步进电机控制系统采用分立元件或者集成电路组成的控制回路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路。计算机则通过软件来控制步进电机,更好地挖掘出电动机的潜力。因此,用计算机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋势。现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段,反应式步进电机获得最多的应用。1.3 本设计完成的工作本次毕业设计是单片机控制步进电机方面的应用。这个设计最终目的是设计出一个可以控制步进电机旋转的系统。本次设计主要实现了以下几个功能:(1) 使用一个5V直流电源供电。(2) 设计一个外围驱动电路来驱动步进电机旋转。(3) 加入按键来控制步进电机旋转所要求的数据。(4) 最后编写软件部分,将程序输入单片机并运行系统,使系统工作。2 单片机控制步进电机系统简介2.1 单片机系统概述随着材料科学、工艺技术、计算机技术的发展与进步,电路系统向着集成度极高的方向发展。CPU的生产制造技术,也朝着综合性、技术性、实用性发展。如CPU的运算位数从4位、8位到32位机的发展,运算速度从8 MHz、32 MHz到1.6 GHz。可以说是日新月异的发展着。其中单片机在控制系统中的应用是越来越普遍了。单片机控制系统是以单片机(CPU)为核心部件,扩展一些外部接口和设备,组成单片机工业控制机,主要用于工业过程控制。要进行单片机系统设计首先必须具有一定的硬件基础知识;其次,需要具有一定的软件设计能力,能够根据系统的要求,灵活地设计出所需要的程序;第三,具有综合运用知识的能力。最后,还必须掌握生产过程的工艺性能及被测参数的测量方法,以及被控对象的动、静态特性,有时甚至要求给出被控对象的数学模型。2.2 AT89S52功能概述AT89S52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes的可反复擦写的只读程序存储器PEROM和128bytes的随机存取数据存储器,器件采用公司的高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和FLASH存储单元,功能强大。此单片机可为您提供许多高性价比的应用场合。AT89S52提供以下标准功能:8K字节FLASH闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个向量两级中断结构,一个全双工串行通讯口,内置一个精密比较器,片内振荡器及时钟电路,同时AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的工作模式,空闲方式停止CPU的工作,但允许RAM,定时计数器,串行通信及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作,并禁止其它所有部件工作直到下一个硬件复位。2.2.1 引脚功能说明:MCS-51是标准的40脚双列直插式集成电路芯片,引脚排列请参见图2.1.图2.1 AT89S52的引脚图VCC:电源电压; GND:地;P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写1可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FLASH编程时,P0口接受指令字节,而在程序效验时,输出指令字节,效验时,要求外接上拉电阻。P1口:P1口是一个带有内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动 (吸收或输出电流)4个TTL逻辑门电路。对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉底时会输出一个电流。FLASH编程和程序效验期间,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口线外,更重要的用途是他的第二个功能,如下表所示:表2.1 P3口AT89C2051特殊功能端口引脚功能特性P3.0RXD(串行口输入)P3.1TXD(并行口输入)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时计数外部输入0)P3.5T1(定时计数外部输入0)P3.6(外部数据存储器写选通)P3.7(外部数据存储器读选通) P3口还接收一些用于FLASH闪速存储器编程和程序效验的控制信号。RST:复位输入。其引脚一旦变成两个机器周期以上的高电平,所有的I/O口都将复位到1状态,当振荡器正在工作时,持续两个机器周期以上高电平便可完成复位,每个机器周期为12个振荡时钟周期。EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(0000HFFFFH),EA端必须保持低电平接地,需注意的是:如果加密位LB1被编程,复位是内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VPP。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器输出端2.2.2 时钟振荡器AT89S52中有一个用于构成内部振荡器的高增益反向放大器,引脚XTAL1和 XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈器件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图2.2。外接石英晶体或陶瓷振荡器及电容 C1,C2接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低,振荡器工作的稳定性,起振得难易程度及温度稳定性,如果使用石英晶体,推荐电容使用30PF10PF,而如使用陶瓷振荡器建议选择40PF10PF。 图2.2 时钟振荡电路2.3 步进电机概述步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。步进电机有几个显著特点:1、 步进电机可以直接接受数字信号,而无需模/数变换;2、步进电机具有快速启/停控制能力,可在瞬间实现启动和停止;3、步进电机具有高精度的特点,步距角在0.3690度之间;4、定位准确;现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5度 或15度;反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。感应子式步进电机与传统的反应式步进电机相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。感应子式步进电机某种程度上可以看作是低速同步电机。一个四相电机可以作四相运行,也可以作二相运行。(必须采用双极电压驱动),而反应式电机则不能如此。3 常用软件基础知识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开发成功的,是用汇编语言写的。后来,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 上运行的程序,则称为是可移植的。所有的高级语言都支持数据类型的概念。一个数据类型定义了一个变量的取值范围和可在其上操作的一组运算。常见的数据类型是整型、字符型和实数型。虽然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的优点,而是想指出,它没有被设计成为程序员的理想语言。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语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用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文件加入到工程中,其他文件以#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,视开发板上具体型号而定),单击“确定”。图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。在打开的对话框中,选择刚存的文件路径和对应的扩展名。这样,程序就添加进了这个工程。图3.6 添加文件到工程中下一步,就开始编译刚输入进去的代码。点击工具栏中的按钮。接着,Keil会打出下面的提示:Build target Target 1assembling led.asm.linking.Program Size: data=8.0 xdata=0 code=100first - 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”按图示,将箭头所指的多选框勾上,点“确定”。现在再点击重新编译,系统提示:“creating hex file from first.”。便会在工程所在文件夹里生成HEX文件。图3.7 生成HEX文件3.3 STC-ISP软件介绍这里采用的单片机程序烧写软件,是网友姚永平编写的“Easy 51Pro v2.0”。这个软件是完全开源的,在这里也要感谢姚永平先生。这个软件在网上流传很广,因为其下载线制作简单。被很多单片机爱好者采用。此软件使用时还需要一个单片机下载线来把程序下载到单片机里,单片机下载线原理图(如图 3.8所示)图3.8 下载线原理图3.3.1 程序烧写过程:先从网站上下载到STC-ISP的软件包,解压后,打开其中“软件”文件夹,运行其中的STC-ISP.exe,出现如下界面(如图3.9所示)。图3.9 选单片机接下来插好下载线,接通开发板电源。在左上角的芯片型号选择列表框中选择对应的芯片型号,单击检测器件,如果软件提示检测到器件,则硬件电路没有问题,接下来就开始往单片机里烧写程序了,单击“打开文件”出现所示对话框。将文件类型设为HEX,选择建立工程的路径,找到Keil编译生成的HEX文件如图3.10所示。之后,再点下“自动完成”,这样,程序就烧写完成了。图3.10 打开文件4 系统概述及设计4.1 整体结构此控制系统的硬件主要组成:51系列单片机、L298N、直流电压源、键盘等。整体结构如图4.1所示本系统总体设计思路是:由键盘发出电平信号,单片机接受并转换成控制信号发送给L298N。L298N主要作用连接步进电机从而驱动步进电机。在系统中按键的作用是控制整个系统的。直流电压源中断键盘步进电机L298N控制信号AT89S52直流电压源图4.1 系统总体框图4.2 系统作用本控制系统主要作用是通过单片机来控制步进电机旋转,想要实现这一功能必须要对单片机软件部分和硬件设计有很多的了解,软件部分主要是通过C语言编译而硬件部分是由单片机、L298N、直流电压源、键盘等。完成硬件和软件的设计就能够实现并控制步进电机旋转。4.3 系统应用基于单片机实现步进电机控制也是目前重要的一种手段,步进电机本身就是离散型自动化执行元件,所以它特别适合采用单片机及嵌入式系统控制。单片机有更大的灵活性,更易实现复杂的控制策略。随着微处理器技术的飞速发展,单片机的性价比越来越高,利用单片机实现步进电机控制将形成趋势。5 硬件设计5.1 硬件设计原则本系统设计一共有3部分组成,分别有MCU最小系统设计、L298N驱动电路设计和键盘的电路设计。通过这3部分的结合来控制和显示步进电机的旋转,系统设计中有一些部分要注意,首先要了解单片机的工作原理,在L298N驱动电路设计中要在驱动步进电机的同时还要保护好L298N。电源部分是要将输入进来的电压转化为单片机工作电压(单片机工作电压为5V)。以下部分是对电路的主要组成部分进行介绍讲解。5.2 MCU最小系统电路设计51单片机的最小系统也叫MCU最小系统,也就是能让单片机正常工作的最少配置,可以看出,在一个最小系统中,仅仅有一片单片机+时钟电路+复位电路+下载程序接口。有了下面这么多电路,一个单片机系统就有了大脑和五脏,也就是有了生命,但还少五官和四肢,换句话说,他还不可以和外界沟通。如图5.1所示。图5.1 单片机最小系统5.2.1 复位电路设计复位电路总体分为:上电复位、按键复位两种。上电复位主要是一个是在系统加电的时候,能够使单片机正常复位,并开始从0000H处开始执行程序,而按键复位主要是在调试过程中,需要有一个复位按键,能够方便的在运行时实现复位。这个复位电路的原理很简单,就是利用RC电路的充电时间,使得RST端能够保持在高电平一段时间。一般取经验值R=10K,C=10uF,Rs=200。RST在高电平复位,低电平时正常工作10F电容和10K电阻组成一个RC延时电路,为单片机提供上电复位,加入10F电容目的是不会让两边电压发生突变。200的电阻是使电容C19的放电电流不至于太大。本系统就是采用此种复位方式,其电路图如图5.2所示。图5.2 复位电路5.2.2 时钟电路设计在这个最小系统中,采用的是最常用的内部时钟方式,一般情况下,单片机选用的是12MHz晶振(在此频率上,T1可以很容易的产生9600的波特率供串口使用)。再由两只瓷片电容构成并联谐振电路,接在放大器的反馈回路中。事实上对外接电容并没有严格的要求,典型值选用20PF-30PF的电容。本电路中使用1个30 PF的电容,它的主要作用是为单片机提供工作时钟。如图5.3所示。图5.3 时钟电路5.2.3 上拉电阻的作用P0口没有上拉电阻,故作为普通IO口用的时候,须加上拉电阻。P2口内部存在上拉电阻,但因为其用作矩阵键盘,为了得到较高的可靠性,故将其也再加上外部上拉。一般上拉电阻取值为1K-10K。阻值越小,能提供的上拉能力也越强,但功耗也会随之上升。5.3 L298N驱动电路设计这部分电路作用是驱动步进电机的,电路中用到了8个续流二极管,它们的作用是给电机提供回流通路,同时也起到一个保护L298N的安全。C4和C3的作用是滤波。如图5.4所示。图5.4 L298N驱动电路5.3.1 L298N芯片简介L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。L298N采用由达林顿管组成的H型PWM电路。PWM电路由四个大功率晶体管组成H桥电路构成,四个晶体管分为两组,交替导通和截止,用单片机控制达林顿管使之工作在开关状态,根据调整输入控脉冲的占空比,精确调整电动机转速。这种电路由于管子工作只在饱合和截止状态下,效率非常高。H型电路使实现转速和方向的控制的简单化,且电子开关的速度很快,稳定性也极强,是一种广泛采用的PWN调整技术。L298N是双H桥高电压大电流集成电路。每个H桥的下侧桥臂晶体管发射极连在一起,其输出脚(SENSEA和SENSEB)用来连接电流检测电阻。Vss接逻辑控制的电源。Vs为电机驱动电源。IN1-IN4输入引脚为标准TTL 逻辑电平信号,用来控制H桥的开与关即实现电机的正反转,ENA、ENB引脚则为使能控制端,用来输入PWM信号实现电机调速。5.3.2 MAX-232电路设计因为MCS-51单片机输入、输出电平为TTL电平,而PC机配置的是RS-232C标准接口,二者的电气规范不同,所以要加电平转换电路。给出了采用MAX-232芯片的PC机和单片机串行通信接口电路,与PC机相连采用9芯标准插座。 图5.5 MAX232电路5.3.3 MAX-232 芯片简介MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5V单电源供电。内部结构基本可分三个部分(如图5.5):第一部分是电荷泵电路。由1、2、3、4、5、6脚构成。功能是产生+12V和-12V两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R0IN)、12脚(R0OUT)、11脚(T0IN)、14脚(T0OUT)为第一数据通道。8脚(R1IN)、9脚(R1OUT)、10脚(T1IN)、7脚(T1OUT)为第二数据通道。TTL/CMOS数据从T0IN、T1IN输入转换成RS-232数据从T0OUT、T1OUT送到电脑DP9插头;DP9插头的RS-232数据从R0IN、R1IN输入转换成TTL/CMOS数据后从R0OUT、R1OUT输出。第三部分是供电。15脚GND、16脚VCC(+5V)。5.4 键盘的电路设计键盘是单片机十分重要的输入设备,是实现人机对话的纽带。键盘是由一组规则排列的按键组成,一个按键实际上就是一个开关元件,即键盘是一组规则排列的开关。根据按键结构、原理的不同,主要分两类:一类是触点式开关按键,如机械开关等;另一类是无触点开关案件,如磁感应按键等。前者造价低,后者寿命长。目前,单片机应用系统中最常见的触点式开关按键。本系统中运用的正是这种开关按键。5.4.1 键盘的特性键盘是由一组按键开关组成的。通常,按键所用的开关为机械弹性开关,这种开关一般为常开型。平时(按键不按下时),按键的触点是断开状态,按键被按下时,他们才闭合。由于机械触点的弹性作用,一个按键开关从开始按上至接触稳定要经过一定的弹跳时间,即在这段时间里连续产生了多个脉冲,在断开时也不会一下子断开,存在同样的问题,按键开关在闭合及断开的瞬间,均伴随有一连串的抖动。抖动时间的长短由按键的机械特性决定,一般为5ms10ms,而按键的稳定闭合期的长短则是由操作人员的按键动作决定的,一般为十分之几秒的时间。此种抖动在对步进电机的控制时会产生一定的影响,为消除这种抖动,在软件设计时会设计一个去抖动模块来加以解决。5.4.2 按键的确认按键的确认就是判别按键是否闭合,反映在电压上就是和按键相连的引脚呈现出高电平或低电平。如果高电平表示断开,那么低电平则表示闭合,所以通过检测电平的高低状态,便可以确认按键是否按下。本次设计中,在键盘的部分采用四个按键,分别控制步进电机的转动方向、加速、减速、启动停止。5.4.3 键盘的工作方式键盘的工作方式有3种,即程序控制扫描、定时扫描和中断扫描方式。1、程序控制扫描方式程序控制扫描方式是指单片机在空闲时,才调用键盘扫描程序,并反复的扫描键盘,直到用户从键盘上输入命令或数据,而在执行键入命令或处理键入数据过程中,CPU将不再影响键入要求,直到CPU重新扫描键盘为止。具体过程如下:(1)判别有无按键按下;(2)键扫描取得闭合键的行、列值;(3)用计算法得到键值;(4)判断闭合键是否释放,如果没有释放则等待;如果闭合键释放,将闭合键的键号保存,并转去执行闭合键的功能;(5)返回;2、定时扫描方式定时扫描方式就是每隔一定时间对键盘扫描一次,它利用单片机内部的定时器产生一定时间的定时,当定时时间到就产生定时器溢出中断,CPU响应中断后对键盘进行扫描,并在有键按下时识别出该键执行响应的键功能程序。3、中断扫描方式键盘工作在程序控制扫描方式时,当无键按下时,CPU要不间断的扫描键盘直到有按键按下为止。如果CPU要处理的事情很多,这种工作方式就不能适应。定时扫描方式只要定时时间到,CPU就去扫描键盘,工作效率有了一定的提高。由此可见,这两种方式常使CPU处于空扫描的状态,而中断扫描方式下,CPU可以一直处理自己的工作,直到有键闭合时发出中断申请,CPU响应中断,执行响应的中断服务,才对键进行处理,从而提高了CPU的工作效率。本设计键盘使用的是简单的程序控制扫描方式。6 软件设计6.1 程序模块整个系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年烟草设备维修工新员工岗位专业知识笔试题目及答案
- 2025年乘务人员考试题库及答案
- 药用植物学与生药学测试题及答案
- 高校经济合同模板(3篇)
- 综评面试题库及答案书
- 安全输液考试题及答案
- 高粱地种植合同模板(3篇)
- 大连淘宝店铺产品生命周期管理代运营协议
- 2025国家公务员面试题及答案
- 体育公司与个人运动员参赛合同
- 幽门螺杆菌治疗进展
- 金属热处理工(中级工)职业技能认定考试题库(含答案)
- 导尿术操作并发症及处理规范
- 电磁学(赵凯华-陈熙谋-)-第二版-课后答案1
- 塔吊临近建筑物的安全防护方案
- 老年安宁疗护病区设置标准
- 人工智能训练师理论知识考核要素细目表四级
- 全国职业院校技能大赛高职组(服装创意设计与工艺赛项)备赛试题库(含答案)
- 2024年医疗质量安全核心制度及病历书写规范考核试题及答案
- 学前儿童产生问题行为的原因分析
- 成人重症患者人工气道湿化护理专家共识 解读
评论
0/150
提交评论