《课程设计(论文)基于AT89C51单片机的步进电机控制系统设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于AT89C51单片机的步进电机控制系统设计.doc(38页珍藏版)》请在三一办公上搜索。
1、摘 要 近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。本次课程设计是用单片机来控制步进电机的定位和正反旋转。步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。整个系统有89C51单片机控制系统,L298驱动电路,4*4的键盘控制电路,LED显示电路。用89C51单片机控制两相四线步进电机,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲的相序来改变步进电机的转动方向,从而达到
2、的控制正反转的目的。本系统采用单片机AT89C51为中心器件来控制步进电机,系统实用性强。关键字:单片机 ;步进电机;脉冲; 步距角目 录1 前言. 32 步进电机工作原理. 42.1两相步进电机结构.42.2两相步进电机的原理 .42.3两相步进电机的供电方式.53 硬件系统设计.63.1系统总体设计框图.63.2单片机系统.63.3时钟信号控制电路.73.4电源电路.83.5驱动电路.83.6显示电路.93.7 4*4键盘电路.94 软件系统设计.104.1主程序流程图及源代码.104.2扫描键盘流程图及源代码. .114.3 LED显示流程图及源代码.125 开发系统简介. .145.1
3、 WAVE6000编译器简介.145.2 protues仿真平台简介.146 仿真结果及分析.167 课程设计总结.19附录.201 前言本次课程设计是以步进电机控制和驱动为要求,用单片机来控制步进电机的定位和正反旋转圈数的显示。步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。步进电机是机电控制中一种常用的执行机构通常电机
4、的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。步进电机是一种通过电脉冲信号控制想绕组电流实现定角转动的机电元件,与其它类型电机相比具有易于开环精确控制、无积累误差等优点,在众多领域中获得广泛运用。本文介绍了两相四线混合式步进电机的工作原理及其模型,怎样驱动,使其按照要求进行运转。2 步进电机工作原理2.1两相步进电机结构 图2.1 两相步进电机结构图电动机轴向结构如图2.1所示。转子被分为完全对称的两段,一段转子的磁力线沿转子表面呈放射形进入定子铁心,称为N极转子;另一段转子的
5、磁力线经过定子铁心沿定子表面穿过气隙回归到转子中去,称为S极转子。图中虚线闭和回路为磁力线的行走路线。相应地定子也被分为两段,其上装有A、B两相对称绕组.同时,沿转子轴在两段转子中间安装一块永磁铁,形成转子的N、S极性。从轴向看过去,两段转子齿中心线彼此错开半个转子齿距。2.2两相步进电机的原理图2.2 两相步进电机如图 2.2所示两相步进电机实物图。通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子的一对磁场方向与定子的磁场方向一致。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比。
6、改变绕组通电的顺序,电机就会反转。所以可用控制脉冲数量、电动机各相绕组的通电顺序来控制步进电机的转动。2.3 两相步进电机的供电方式两相四线的步进电机,有两个绕组:A,B。在半步供电方式时,电机的通电方式采用顺序八拍一个循环给两相绕组供电为: 八拍,半步:(+A)(+B)-(+B)-(-A)(+B)-(-A)-(-A)(-B)-(-B)-(+A)(-B)-(+A)-。两相混合式步进电动机还有一种供电方式为双4拍整步方式,即采用通电次序两相,四拍:(+A)(+B)-(-A)(+B)-(-A)(-B)-(+A)(-B)。3 硬件电路设计3.1 系统总体设计框图根据设计要求设计了如图3.1图所示系统
7、总体设计框图,步进电机是较早实用的典型的机电一体化组件。步进电机本体、步进电机驱动器和控制器构成步进电机系统不可分割的三大部分其设计框图。 图3.1系统总体设计框图3.2 单片机系统如图3.2电路中采用的是Atmel公司的AT89C51型号的单片机,其内部结构结构如图3.2所示。64KB总线扩展控制器可编程I/O可编程全双工串行口振荡器和时序OSC程序存储器4KB Flash ROM256字节 RAM/SFR216位定时器/计数器80C51CPU 图 3.2 89C51内部结构图按照图3.2它具有如下一些特点:(1)集成度高。AT89C51为40脚封装,内部有4K字节的ROM,128字节的RA
8、M,四个8位并行口,一个全双工的串行口,二个16位定时器计数器,一个功能很强的中央处理器以及内部晶体振荡电路。(2)系统结构简单。一片Ar89C51即可构成一个小型的控制系统。该芯片扩充能力强,具有对64K外部程序存储器和64K外部数据存储器的寻址能力。两个单片机间还可进行通讯,可以构成双CPU系统。可靠性高。AT89C51能在常温下工作,大部分总线在芯片内部不易受干扰,系统简单,体积小,容易采取屏蔽措施,因此有较高的可靠性。(3)处理功能强,速度快。AT89C51具有丰富的指令系统,除加减指令外,还有字节的乘除运算指令,具有对128个控制位的位操作指令,因此特别适用于控制要求。CPU时钟高达
9、12MHz,机器周期只有1微秒,多数指令为一个机器周期或两个机器周期,所以运算速度快,可使系统有较强的功能和较高的响应。3.3 时钟信号控制电路 如图3.3所示,89C51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自激振荡器。电容C1和C2通常取30pF左右,可以稳定频率并对振荡频率有微调作用。振荡脉冲频率为0到24。振荡信号从XTAL2端输入到片内的时钟发生器上。 图 3.3 时钟信号控制电路3.4 电源电路 如图3.4所示为电源电路,在电子电路中,通常都需要电压稳定的直流稳压电源供电,小功率
10、的稳压电源是由电源变压器、整流电路、滤波电路和稳压电路等四部分组成。它的指标是输入电压为220V/50HZ交流电;输出电压分别为+12V/1A,-12V/1A,+5V/1A,-5V/1A,+5V/3A及一组可调正电压,本次电路系统多用到+5V/1A的电源,通过具体的调节可以得到稳定的需求电压。 图 3.4 电源电路3.5 驱动电路如图3.5所示,驱动电路用L298来驱动步进电机,L298可以驱动两个两相电机,和一个四相电机,输出电压最大可达到+50V,可以通过电源来调节输出电压,可直接用单片机IO输出信号。图 3.5 驱动电路3.6 显示电路 如图3.6所示,步进电机的数字显示是通过四个七段数
11、码显示,断选由P0口接上上拉电阻输出。位选有P1口高四位控制,通过查断码表,每个数码管可显示0-9的数。 图3.6 数码管显示电路3.7 4*4键盘电路本次设计要对电机进行定位和显示圈数,需要用到多个按键,因此选用了4*4的键盘8个端口由P2口控制,如图3.7所示。 图3.7 4*4键盘电路4 软件系统设计4.1 主程序流程图及源代码 如图4.1是主程序流程图,初始化程序后,将寄存器R7的5、6、7三位做为功能标志位,当检测到哪一位为1时立即转向相应的程序执行。根据指令要知道电机是要正转还是反转从R7=?来进行控制步进电机的正反转,然后调用显示程序显示圈数,如此进行旋转和显示。图4.1主程序流
12、程图主程序源代码如下START:SETB 20H ;主程序 CJNE R7,#1,L1 ;判断正反转 CLR 20H LCALL ZZ ;ZZ进入正转 SETB 20HL1:CJNE R7,#2,L2 CLR 20H LCALL FF ;FF进入反转 SETB 20HL2:LCALL LEDNNT3:JMP START4.2 扫描键盘流程图及源代码如图4.2所示为扫描键盘的程序流程图,由中断进入,去除抖动,判断确定有无按键按下,开始扫描键盘得键号,判别按键是否释放,将扫描的键号保存并返回,继续执行其它的指令。 中断抖动扫描键盘得键号键释放键号入累加器返回主程序YN 图4.2扫描键盘流程图键盘程
13、序源代码如下KEYH:MOV A,01H ;列键盘扫描 JNB ACC.0,D0 JNB ACC.1,D1 JNB ACC.2,D2 JNB ACC.3,D3 SETB EX1 RETIKEYL: MOV DPTR,#JS ;行键盘扫描 CLR EX1 MOV 70H,R0 MOV 71H,R1 MOV 72H,R3 MOV A,P2 MOV P2,#0FH MOV 01H,P2 MOV P2,#0F0H JNB ACC.4,E1 JNB ACC.5,E2 JNB ACC.6,E3 JNB ACC.7,E4 SETB EX1 RETI4.3 LED显示流程图 如图4.3所示为LED显示程序流程
14、图,开始扫描一个数码管,要显示那个数码管是由位选决定的,要显示的数字是根据P0口输出的信号决定的,P0口输出信号时扫描七段显示管,依据P0口的信号,然后查七段断码表可以得到相应的数字,当第一个数码管显示完后,延时一段时间,扫描下一个数码管知道四个数码管显示完后。图4.3 LED显示流程图LED流程图源代码如下LED:MOV DPTR,#TAB ;初始化 SETB P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV A,43H MOVC A,A+DPTR MOV P0,A LCALL TT5开发系统简介5.1 WAVE6000编译器的简介 Wave6000是一款功能强大的优秀
15、的单片机程序编辑、调试、仿真中文Windows软件。该软件可以配有MCS51系列、80C196系列和8088系列编译功能,程序采用了机器码。汇编、C语言等三种语言。利用该软件进行单片机软件的编辑调试和模拟仿真,结合一台写码器,就可进行低投入的单片机的开发工作。实验程序采用多种语言适应不同的语言适应不同层次的学生需要。高级语言编写应用程序,是一种时代的需要,通过应用高级语言的汇编和实验们可以更好的掌握。的它可以对C语言和汇编语言进行编译检查,利用它可以很好的进行编程设计,通过运行可以生成.HEX文件,被89c51用于仿真。其工作界面如图5.1所示。 图 5.1 WAVE6000编译器5.2 Pr
16、otues仿真平台简介Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐,Protues是一个能仿真模拟和数字电路,特别是能够仿真单片机、ARM、DSP、FPGA等的软件,它还能和KEIL软件在同一台机子实现联调Protues可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表
17、、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。 它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。 课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTUES提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生
18、实践精神、创造精神的平台。因此在不具备实验前可以利用protues进行仿真的检查。其仿真的界面如图5.2所示。 图5.2 protues仿真平台6 仿真结果及分析如图6.1所示,打开.asm文件,进行编译,无误后,点击工具栏中的运行工具,就得到了图中的真确运行。 图6.1 wave调试源代码载入WAVE运行后生成的.HEX文件准备调试如图6.2所示 图6.2 89C51调用.HEX文件调入文件后,开始调试硬件电路,点击运行,电路接通,电路正常显示如图6.3 图6.3 protues调试硬件电路从键盘输入9,按正转,电机正转,运行正常如图6.4 图6.4 输入圈数9的显示如图6.5当电机转过2圈
19、数时候按暂停,电机停转,数码管显示数字7。数码管从9变到7正好转过2圈,结果正确。 图6.5 电机转过2圈的结果如图6.6 按反转键,电机反转3圈,数码管显示数字4,结果正确 图6.6 电机反转过3圈调试完毕,通过键盘输入数电机按照给定的要求进行正确运转,数码管真确显示圈数。所得的结论与理论的相符合,调试成功。7 课程设计总结本次课程设计采用AT89C51单片机对两相四线步进电机进行控制,通过改变相序可以改变电机的转向,通过输入一定得圈数对步进电机进行定位,所通过的圈数由4个LED进行显示。数据输入键和控制按键是由4*4的键盘组成。通过调试和运行,得到了正确的结果。开始接到任务时候感觉不知道从
20、哪儿开始,后面通过从网上找了相关的资料后开始对我们的课程设计有所了解,然后慢慢的进行,从发现问题到慢慢的去解决问题,慢慢的感觉自己好像懂得的多了一些,感觉问题一步步的得到了解决。但是我在学习的过程中也发现了不少的问题,也花了不少的时间。有时候遇到的困难一下子很难发现和解决,那时候真想放弃,但最后还是坚持了下来,不动就去问,到处问到处找,感觉这也很有趣,一种学习的乐趣。虽然这次课程设计做的不是很好。但是还是通过了自己的努力。通过对本次的课程设计,不但了解了怎样设计课程设计的方法更重要的是将书本上的知识用到了现实中,更加深刻的了解了89C51单片机的用法,以及端口的相应的功能和接线。8 参考文献
21、1 张迎新.单片机初级教程-单片机基础M. 北京航空航天大学出版社. 2000:78-88 2 李朝青.单片机原理及接口技术M.北京航空航天大学出版社.2006:97-112.3 毕绍新. 步进电机驱动控制的应用研究M.天津大学出版社.2003 :56-72 附录 程序表 ORG 0000H LJMP MAIN ORG 0013H LJMP KEYL ORG 0030HMAIN:MOV SP,#60H MOV R0,#00H MOV R1,#00H MOV R3,#40 MOV 72H,#40 MOV P2,#0F0H CLR P3.4 CLR 06H CLR P1.0 CLR P1.1 CL
22、R P1.2 CLR P1.3 MOV 43H,#00H MOV 42H,#00H MOV 41H,#00H MOV 40H,#00H MOV R7,#00H SETB EA SETB IT1 SETB EX1START:SETB 20H ;主程序 CJNE R7,#1,L1 CLR 20H LCALL ZZ SETB 20HL1:CJNE R7,#2,L2 CLR 20H LCALL FF SETB 20HL2:LCALL LEDNNT3:JMP STARTLED:MOV DPTR,#TAB ;初始化 SETB P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV A,43
23、H MOVC A,A+DPTR MOV P0,A LCALL TT CLR P1.4 SETB P1.5 CLR P1.6 CLR P1.7 MOV A,42H MOVC A,A+DPTR MOV P0,A LCALL TT CLR P1.4 CLR P1.5 SETB P1.6 CLR P1.7 MOV A,41H MOVC A,A+DPTR MOV P0,A LCALL TT CLR P1.4 CLR P1.5 CLR P1.6 SETB P1.7 MOV A,40H MOVC A,A+DPTR MOV P0,A LCALL TT CLR P1.7 RETKEYL: MOV DPTR,#J
24、S CLR EX1 MOV 70H,R0 MOV 71H,R1 MOV 72H,R3 MOV A,P2 MOV P2,#0FH MOV 01H,P2 MOV P2,#0F0H JNB ACC.4,E1 JNB ACC.5,E2 JNB ACC.6,E3 JNB ACC.7,E4 SETB EX1 RETIE1: MOV 20H,#0 LJMP KEYHE2: MOV 20H,#4 LJMP KEYHE3: MOV 20H,#8 LJMP KEYHE4: MOV 20H,#12 LJMP KEYHKEYH:MOV A,01H ;键盘程序 JNB ACC.0,D0 JNB ACC.1,D1 JNB
25、 ACC.2,D2 JNB ACC.3,D3 SETB EX1 RETID0: MOV A,#0 ADD A,20H MOV B,#3 MUL AB JMP A+DPTRD1: MOV A,#1 ADD A,20H MOV B,#03H MUL AB JMP A+DPTRD2: MOV A,#2 ADD A,20H MOV B,#3 MUL AB JMP A+DPTRD3: MOV A,#3 ADD A,20H MOV B,#3 MUL AB JMP A+DPTRJS: LJMP LOOP1 LJMP LOOP2 LJMP LOOP3 LJMP LOOP10 LJMP LOOP4 LJMP L
26、OOP5 LJMP LOOP6 LJMP LOOP11 LJMP LOOP7 LJMP LOOP8 LJMP LOOP9 LJMP LOOP15 LJMP LOOP0 LJMP LOOP12 LJMP LOOP13 LJMP LOOP14LOOP0:JB 20H,SS0 LJMP WXSS0: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#0 LJMP RRTLOOP1:JB 20H,SS1 LJMP WXSS1: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#1 LJMP RRTLOOP2:JB 20H,
27、SS2 LJMP WXSS2: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#2 LJMP RRTLOOP3:JB 20H,SS3 LJMP WXSS3: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#3 LJMP RRTLOOP4:JB 20H,SS4 LJMP WXSS4: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#4 LJMP RRTLOOP5:JB 20H,SS5 LJMP WXSS5: MOV 43H,42H MOV 42H,41H MOV 41H,
28、40H MOV 40H,#5 LJMP RRTLOOP6:JB 20H,SS6 LJMP WXSS6: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#6 LJMP RRTLOOP7:JB 20H,SS7 LJMP WXSS7: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#7 LJMP RRTLOOP8:JB 20H,SS8 LJMP WXSS8: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#8 LJMP RRTLOOP9:JB 20H,SS9 LJMP WXS
29、S9: MOV 43H,42H MOV 42H,41H MOV 41H,40H MOV 40H,#9 LJMP RRTLOOP10:MOV A,43H MOV B,#10 MUL AB ADD A,42H MOV R0,A MOV A,41H MOV B,#10 MUL AB ADD A,40H MOV R1,A MOV R3,#40 SETB P3.4 SETB 06H MOV R7,#1 MOV 73H,R7 SETB EX1 RETILOOP11:MOV A,43H MOV B,#10 MUL AB ADD A,42H MOV R0,A MOV A,41H MOV B,#10 MUL A
30、B ADD A,40H MOV R1,A MOV R3,#40 SETB P3.4 SETB 06H MOV R7,#2 MOV 73H,R7 SETB EX1 RETILOOP12:CLR 06H SETB EX1 MOV R0,70H MOV R1,71H MOV R3,72H MOV R7,73H RETILOOP13:SETB P3.4 SETB 06H MOV R0,70H MOV R1,71H MOV R3,72H CJNE R0,#00H,GP1 CJNE R1,#00H,GP2 LJMP GPGP1: INC R3 LJMP GPGP2: DEC R1GP: MOV R7,73
31、H SETB EX1 RETILOOP14:MOV SP,#60H MOV R0,#00H MOV R1,#00H MOV R3,#40 MOV 72H,#40 MOV P2,#0F0H CLR P3.4 CLR 06H CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 MOV 43H,#00H MOV 42H,#00H MOV 41H,#00H MOV 40H,#00H MOV R7,#00H SETB EA SETB IT1 SETB EX1 SETB EX1 RETILOOP15:JB 20H,SS10 LJMP WXSS10: MOV 40H,#00H MOV 4
32、1H,#00H MOV 42H,#00H MOV 43H,#00H SETB EX1 RETIRRT: SETB EX1 CLR P3.4 CLR 06H RETIWX: MOV R0,70H MOV R1,71H MOV R3,72H MOV R7,73H SETB 06H RETIZZ: CJNE R0,#00H,FORWCYCLE ;正转圈,步程序NEXT2:CJNE R1,#00H,STEP LCALL SC MOV R0,#00H MOV R1,#00H MOV R3,#40 MOV 72H,#40 MOV P2,#0F0H CLR P3.4 CLR 06H MOV 43H,#00H
33、 MOV 42H,#00H MOV 41H,#00H MOV 40H,#00H MOV R7,#00H SETB EA SETB IT1 SETB EX1 RETFORWCYCLE:MOV R3,72HNEXTFORSTEP:LCALL FORWSTEP DEC R3 JB 06H,NT2 CLR P3.4 RETNT2: CJNE R3,#00H,NEXTFORSTEP MOV 72H,#40 DEC R0 LJMP ZZSTEP: LCALL FORWSTEP ;正转一步子程序 JB 06H,NT1 CLR P3.4 RETNT1: DEC R1 LJMP NEXT2FORWSTEP:JB
34、 06H,NT LCALL SC MOV R7,#0 RETNT: SETB P1.0 CLR P1.1 SETB P1.2 CLR P1.3 LCALL SC SETB P1.0 CLR P1.1 CLR P1.2 CLR P1.3 LCALL SC SETB P1.0 CLR P1.1 CLR P1.2 SETB P1.3 LCALL SC SETB P1.3 CLR P1.0 CLR P1.1 CLR P1.2 LCALL SC CLR P1.0 SETB P1.1 CLR P1.2 SETB P1.3 LCALL SC CLR P1.0 SETB P1.1 CLR P1.2 CLR P1.3 LCALL SC CLR P1.0 SETB P1.1 SETB P1.2 CLR P1.3 LCALL SC CLR P1.0 CLR P1.1 SETB P1.2 CLR P1.3 LCALL SC RETFF: CJNE R0,#00H,BACKWCYCLE ;反转圈,步程序NEXT4:CJNE R1,#00H,STEP1 LCALL SC MOV R0,#00H MOV R1,#00H MOV R3,#4