步进电机控制系统.docx
《步进电机控制系统.docx》由会员分享,可在线阅读,更多相关《步进电机控制系统.docx(18页珍藏版)》请在冰豆网上搜索。
步进电机控制系统
学生课程设计(论文)
题目:
步进电机控制系统
学生姓名:
学号:
所在院(系):
专业:
班级:
指导教师:
职称:
2008年6月30日
攀枝花学院教务处制
摘要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
本课程设计是建立在zsMCU实验板基础之上的篮球24秒计时系统,系统由单片机最小系统、键盘、七段码LED显示组成。
本系统采用单片机AT89C51为中心器件来设计篮球24秒计时器器,系统实用性强、操作简单、具有很高的市场价值。
系统所有功能的实现均依靠单片机实现。
用户通过将编写好的C语言程序经汇编后下载到单片机中以实现24秒倒计时,中途暂停,恢复继续计时,24--0秒之间任意时刻可以归24,每次倒计时到0秒发出一声蜂鸣并且归零等功能。
关键词:
AT89C51单片机;七段码LED;汇编语言程序;步进机;proteus仿真软件;
目录
摘要II
1、绪论3
1.1前言3
1.2单片机发展概述3
2、AT89C51单片机结构功能4
2.1单片机的主要功能4
2.2芯片引脚描述5
2.2.1主电源引脚VCC和VSS5
2.2.2外接晶体引脚XTAL1和XTAL25
2.2.3控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP6
2.3MSC-51硬件结构7
3、步进电机的设计方案8
3.1步进电机控制系统及其功能介绍8
3.2电路图Proteus仿真电路图:
11
3.3程序流程图12
3.4程序清单12
4、心得体会18
5、参考文献19
1、绪论
1.1前言
科技的进步需要技术不断的提升。
一块大而复杂的模拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。
而现在,只需要一块几厘米见方的单片机,写入简单的程序,就可以使您以前的电路简单很多。
相信您在使用并掌握了单片机技术后,不管在您今后开发或是工作上,一定会带来意想不到的惊喜。
1.2单片机发展概述
我国开始使用单片机是在1982年,短短五年时间里发展极为迅速。
1986年在上海召开了全国首届单片机开发与应用交流会,有的地区还成立了单片微型计算机应用协会,那是全国形成的第一次高潮。
截止今日,单片机应用技术飞速发展,我们上因特网输入一个“单片机”的搜索,将会看到上万个介绍单片机的网站,这还不包括国外的。
与它相应的专业杂志现在也有很多,比如由单片机界的权威何立民主编的《单片机与嵌入式系统应用》杂志现以风靡电子界,单片机人才的需求量位居第一。
单片机,亦称单片微电脑或单片微型计算机。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。
微计算机(单片机)在这种情况下诞生了。
纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
以前没有单片机时,这些东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。
在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。
这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了。
所以,它的魔力不仅是在现在,在将来将会有更多的人来接受它、使用它。
据统计,我国的单片机年容量已达1到3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。
特别是沿海地区的玩具厂等生产产品多数用到单片机,并不断地辐射向内地。
所以,学习单片机在我国是有着广阔前景的。
2、AT89C51单片机结构功能
2.1单片机的主要功能
AT89C5151系列单片机是高性能8位单片机。
主要有8031、8051、8751等机型,它们的指令系统与芯片引脚完全兼容,仅片内ROM不同。
51系列主要功能有:
1、8位CPU
2、片内带振荡器,振荡频率fosc范围为1.2-12MHz
3、128个字节的片内数据存储器
4、4K字节的程序存储器(8031无)
5、程序存储器的寻址范围为64K(0000H-FFFFH)
6、片外数据存储器的寻址范围为64K
7、21个字节专用寄存器
8、4个8位并行I/O接口:
P0、P1、P2、P3
9、1个全双工串行I/O接口,可多机通信
10、2个16位定时器/计数器
11、中断系统有5个中断源,可编程为两个优先级
12、111条指令、含乘法指令和除法指令
13、有强的位寻址、位处理能力
14、片内采用单总线结构
15、用单一+5V电源
2.2芯片引脚描述
HMOS制造工艺的AT89C51单片机都采用40引脚的直插封装(DIP方式),制造工艺为CHMOS的80C51/80C31芯片除采用DIP封装方式外,还采用方型封装工艺,引脚排列如图。
其中方型封装的CHMOS芯片有44只引脚,但其中4只引脚(标有NC的引脚1、12、23、34)是不使用的。
在以后的讨论中,除有特殊说明以外,所述内容皆适用于CHMOS芯片。
如图2.1,是AT89C51的引脚图。
在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚。
下面按其引脚功能分为四部分叙述这40条引脚的功能。
图2.1AT89C51单片机芯片引脚图
2.2.1主电源引脚VCC和VSS
VCC——(40脚)接+5V电压;
VSS——(20脚)接地;
2.2.2外接晶体引脚XTAL1和XTAL2
XTAL1(19脚)接外部晶体的一个引脚。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。
当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。
2.2.3控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
2.2.3.1RST/VPD(9脚):
当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。
推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。
VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。
当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。
2.2.3.2ALE/PROG(30脚):
当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。
因此,它可用作对外输出的时钟,或用于定时目的。
然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。
对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。
2.2.3.3PSEN(29脚):
此脚的输出是外部程序存储器的读选通信号。
在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。
2.2.3.4EA/VPP(引脚):
当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。
当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。
对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。
对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。
2.2.3.5输入/输出(I/O)引脚P0、P1、P2、P3(共32根):
①P0口(39脚至32脚):
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
②P1口(1脚至8脚):
是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P1口能驱动(吸收或输出电流)4个LS型的TTL负载。
对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。
对EPROM编程和程序验证时,它接收低8位地址。
③P2口(21脚至28脚):
是准双向8位I/O口。
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
在对EPROM编程和程序验证期间,它接收高8位地址。
P2可以驱动(吸收或输出电流)4个LS型的TTL负载。
④P3口(10脚至17脚):
是准双向8位I/O口,在AT89C51中,这8个引脚还用于专门功能,是复用双功能口。
P3能驱动(吸收或输出电流)4个LS型的TTL负载。
作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。
作为第二功能使用时,各引脚的定义如表所示。
值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
下表2.1是各口的第二功能定义
表2.1P3口的第二功能
引脚
线第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入
P3.6
WR(外部数据存储器写脉冲)
P3.7
RD(外部数据存储器读脉冲)
2.3MSC-51硬件结构
AT89C51系列内部结构框图如下图2.3.1所示:
图2.3.1MCS-51硬件电路
含有运算器、控制器、片内存储器、4个I/O接口、串行接口、定时器/计数器、中断系统、振荡器等功能部件,SP堆栈指针寄存器、PSW程序状态字、DPTR数据指针、B寄存器。
AT89C51系列单片机是在一块芯片上集成了CPU,RAM,ROM、定时器/计数器和多功能I/O口等基本功能部件的一台计算机。
单片机必须配备部分外围元件才能使用,其系统核心是单片机芯片,今后的课程将围绕8051芯片讲解单片机原理和应用。
3、步进电机的设计方案
3.1步进电机控制系统及其功能介绍
步进电动机驱动电路
步进电动机简称步进电机,可在开环条件下十分方便地将数字系统的脉冲数转变成与其相对应的角位移或线位移,因而是控制系统中常用的自动化执行元件。
现对执行机构的控制。
步进电机可以直接接收数字信号,不必进行数模转换,用起来非常方便。
步进电机还具有快速启停、精确步进和定位等特点,因而在数控机床、绘图仪、打印机以及光学仪器中得到广泛的应用。
步进电机实际上是一个数字/角度转换器,三相步进电机的结构原理如图所示。
从图中可以看出,电机的定子上有六个等分磁极,A、A′、B、B′、C、C′,相邻的两个磁极之间夹角为60°,相对的两个磁极组成一相(A-A′,B-B′,C-C′),当某一绕组有电流通过时,该绕组相应的两个磁极形成N极和S极,每个磁极上各有五个均匀分布矩形小齿,电机的转子上有40个矩形小齿均匀地分布的圆周上,相邻两个齿之间夹角为9°。
当某一相绕组通电时,对应的磁极就产生磁场,并与转子形成磁路,如果这时定子的小齿和转子的小齿没有对齐,则在磁场的作用下,转子将转动一定的角度,使转子和定子的齿相互对齐。
由此可见,错齿是促使步进电机旋转的原因。
三相步进电机结构示意图
例如在三相三拍控制方式中,若A相通电,B、C相都不通电,在磁场作用下使转子齿和A相的定子齿对齐,我们以此作为初始状态。
设与A相磁极中心线对齐的转子的齿为0号齿,由于B相磁极与A相磁极相差120°,不是9°的整数倍(120÷9=40/3),所以此时转子齿没有与B相定子的齿对应,只是第13号小齿靠近B相磁极的中心线,与中心线相差3°,如果此时突然变为B相通电,A、C相不通电,则B相磁极迫使13号转子齿与之对齐,转子就转动3°,这样使电机转了一步。
如果按照A→B→C的顺序轮流通电一周,则转子将动9°。
步进电机的运转是由脉冲信号控制的,传统方法是采用数字逻辑电路——环形脉冲分配器控制步进电机的步进。
下图为环形脉搏冲分配器的简化框图。
三相六拍环形脉搏冲分配器
①运转方向控制。
如图所示,步进电机以三相六拍方式工作,若按A→AB→B→BC→C→CA→A次序通电为正转,则当按A→AC→C→CB→B→BA→A次序通电为反转。
②运转速度的控制。
图中可以看出,当改变CP脉冲的周期时,ABC三相绕组高低电平的宽度将发生变化,这就导至通电和断电时速率发生了变化,使电机转速改变,
所以调节CP脉冲的周期就可以控制步进电机的运转速度。
③旋转的角度控制。
因为每输入一个CP脉冲使步进电机三相绕组状态变化一次,并相应地旋转一个角度,所以步进电机旋转的角度由输入的CP脉冲数确定。
超想-3000TB实验仪选用的是20BY-0型4相步进电机,其工作电压为4.5V,在双四拍运行方式时,其步距角为18O,相直流电阻为55Ω,最大静电流为80Ma。
采用8031单片机控制步进电机的运转,按四相四拍方式在P1口输出控制代码,令其正转或反转。
因此P1口输出代码的变化周期T控制了电机的运转速度:
n=60/T.N
式中:
n——步进电机的转速(转/分);
N——步进电机旋转一周需输出的字节数;
T——代码字节的输出变化周期。
设N=360°/18°=20,T=1.43ms,则步进电机的转速为2100转/分。
`控制P1口输出的代码字节个数即控制了步进电机的旋转角度。
正方向:
ABCD
反方向:
ADCB
根据步进电机工作原理,使用89C51的P1.0-P1.3分别驱动步进电机A、B、C、D相,用软件控制P1口输出一脉冲序列,控制步进电机转速、方向、步距。
同时为能观察步进电机旋转状态,在A、B、C、D相输出到状态指示灯。
(由于缺少步进电机所以在P1口接LED灯显示电机运动状况)
(1)“总线插孔”区的P1.0-P1.3孔接步进电机的BA-BD孔,“发光二极管组”的L0-L3孔接步进电机A、B、C、D孔。
(2)对P1口依次写入03h,09h,0ch,06h,则应使步进电机正转四步。
对P1口依次写入03h、06h、0ch、09h,则应使步进电机反转四步。
(3)用P3.4(正转)、P3.5(反转)和P3.6(停止)
(4)转动的速度是由外部中断“0”设定,假设初始由外部中断“0”设定50H为N,则每次延时M=N*248微妙。
(5)外部中断“1”,通过外部中断“1”调用LED灯显示则可以显示当前电机是正转还是反转。
3.2电路图Proteus仿真电路图:
3.3程序流程图
3.4程序清单
ORG00H
AJMPMAIN
ORG03H
AJMPINT00
ORG13H
AJMPINT01
ORG0030H
MAIN:
MOVIE,#10000101B
MOVTCON,#00000101B
MOVIP,00000101B
CLR2FH
MOVSP,#6FH;初始化
CLR50H
CLR52H
MOVA,#06
MOV52H,A
CLRA
MOVA,#56
MOV51H,A
CLRA
MOV00H,A
CLR50H
STOP:
ORLP1,#0FFH;步进电机停止
LOOP:
JNBP3.4,FOR2;如果p3.4按下正转
JNBP3.5,REV2;如果p3.5按下反转
JNBP3.6,STOP1;如果p3.6按下停止
JMPLOOP;反复监测键盘
FOR:
MOVR0,#00H;正转到tab取码指针初值
FOR1:
MOVA,R0;取码
MOVDPTR,#TABLE;
MOVCA,@A+DPTR;
JZFOR;是否到了结束码00h
CPLA;把acc反向
MOVP1,A;输出到p1开始正转
JNBP3.6,STOP1;如果p3.6按下停止
JNBP3.5,REV2;如果p3.5按下反转
CALLDELAY;转动的速度
INCR0;取下一个码
JMPFOR1;继续正转
REV:
MOVR0,#05H;反转到tab取码指针初值
REV1:
MOVA,R0
MOVDPTR,#TABLE;取码
MOVCA,@A+DPTR
JZREV;是否到了结束码00h
CPLA;把acc反向
MOVP1,A;输出到p1开始反转
JNBP3.6,STOP1;如果p3.6按下停止
JNBP3.5,REV2;如果p3.5按下反转
CALLDELAY;转动的速度
INCR0;取下一个码
JMPREV1;继续反转
STOP1:
CALLDELAY;按p3.6的消除抖动
JNBP3.6,$;p3.6放开否?
CALLDELAY;放开消除抖动
SETB2FH.3
JMPSTOP
FOR2:
CALLDELAY;按p3.4的消除抖动
JNBP3.4,$;p3.4放开否?
CALLDELAY;放开消除抖动
SETB2FH.2
JMPFOR
REV2:
CALLDELAY;按p3.5的消除抖动
JNBP3.5,$;p3.5放开否?
CALLDELAY;放开消除抖动
CLR2FH.2;设标志
JMPREV
DELAY:
MOVA,50H
MOVR1,A;步进电机的转速
D1:
MOVR2,#248
DJNZR2,$
DJNZR1,D1
RET
TABLE:
DB03H,09H,0CH,06H;正转表
DB00;正转结束
DB03H,06H,0CH,09H;反转
DB00;反转结束
INT00:
PUSHPSW;中断服务程序0设定速度
PUSHACC
SETBRS0
CLRRS1
INC50H
CALLST
POPACC
POPPSW
RETI
ST:
MOVR3,50H;显示程序
MOVA,R3
MOVB,#100
DIVAB
DAA
MOVR0,A;存百位
MOVA,B
MOVB,#10
DIVAB
DAA
MOVR1,A;存十位
MOVDPTR,#TAB
SS:
MOVA,R0;显示百位
MOVCA,@A+DPTR
MOVR2,A
MOVP2,#01H
MOVP0,R2
ACALLDEL4;调用延时?
MOVA,R1;显示十位
MOVCA,@A+DPTR
MOVP2,#02H
MOVP0,A
ACALLDEL4;调用延时
MOVA,B;显示个位
DAA
MOVCA,@A+DPTR
MOVP2,#04H
MOVP0,A
ACALLDEL4;调用延时
DJNZ51H,ST
MOVP0,#00H
MOVP2,#0FH
RET
DEL4:
MOVR5,#05H;延时子程序
D11:
MOVR4,#0FFH
DEL3:
DJNZR4,DEL3
DJNZR5,D11
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
INT01:
PUSHPSW;中断服务程序1显示方向
PUSHACC
JB2FH.2,SS1
JB2FH.3,SS3
JMPSS2
LO3:
POPACC
POPPSW
RETI
SS1:
MOVA,#0BFH;显示正转
MOVR2,A
MOVP2,#01H
MOVP0,R2
ACALLDEL5;调用延时
MOVA,#0BFH
MOVP2,#02H
MOVP0,A
ACALLDEL5;调用延时
MOVA,#0BFH
MOVP2,#04H
MOVP0,A
ACALLDEL5;调用延时
MOVA,#0C0H
MOVP2,#08H
MOVP0,A
ACALLDEL5
DJNZ52H,SS1
JMPLO3
SS2:
MOVA,#0BFH;显示反转
MOVR2,A
MOVP2,#08H
MOVP0,R2
ACALLDEL5;调用延时
MOVA,#0BFH
MOVP2,#04H
MOVP0,A
ACALLDEL5;调用延时
MOVA,#0BFH
MOVP2,#02H
MOVP0,A
ACALLDEL5;调用延时
MOVA,#0C0H
MOVP2,#01H
MOVP0,A
ACALLDEL5
DJNZ52H,SS2
JMPLO3
SS3:
MOVP2,#0FH;显示停止
MOVP0,#00H
ACALLDEL5
DJNZ52H,SS3
JMPLO3
DEL5:
MOVR5,#08FH;显示延时子程序
D111:
MOVR4,#0FFH
DEL31:
DJNZR4,DEL31
DJNZR5,D111
RET
END
4、心得体会
单片机课程设计对于对单片机的学习、应用有着十分重要的作用。
通过两周的课程设计,我可以把平时所学应用于实践,并且进一步巩固了我的相关知识。
通过对“步进机”的设计,我对步进机有了更多的了解,这更加激发了我的学习兴趣。
单片机的种类很多,但基本功能都相同。
单片机有着十分强大的功能,可以利用它做各种各样的事情,这一次设计,同学们做了很多题目,用它实现不同的功能,足见其功能之强大。
对单片机的使用,主要是利用汇编语言或者C语言对