单片机步进电机课程设计.docx
- 文档编号:10985237
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:16
- 大小:190.79KB
单片机步进电机课程设计.docx
《单片机步进电机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机步进电机课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
单片机步进电机课程设计
课程设计
题目:
单片机控制步进电机的设计
姓名:
专业:
学号:
2011年10月22日
单片机控制步进电机的设计
一、设计题目的背景
1、步进电机的原理
步进电动机又称为脉冲电动机,是数字控制系统的一种执行元件,其功用是将脉冲信号变换为相应的角位移或直线位移,既给一个脉冲电信号,电动机就转动一个角度或前进一步,根据结构和工作原理,步进电动机分为:
永磁式、混合式、反应式。
单片机在应用系统中应用较多是反应式步进电动机,反应式步进电动机具有步进频率高、频率相应快等优点。
步进电动机的控制原理是通过它每相线圈的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲控制,所以调节脉冲的频率便可改变步进电机的转速,微控制器最适合控制步进电机。
此次设计步进电机共有四个相位(A、B、C、D),按转动步骤分为单四拍(A、B、C、D、A)
四相双四拍:
电机正转(AB、BC、CD、DA、AB)
电机反转(DA、AB、BC、CD、DA)
单双8拍(A、AB、B、BC、C、CD、D、DA、A)
2、应用领域
目前,我国以较多地将步进电动机用于机械加工的数字程序控制机床中,在绘图机、轧钢机的自动控制,自动记录仪表和数模变换等方面也得到很多应用。
二、设计原理
1、设计目的
(1)了解步进电机的基本原理,掌握步进电机的转动编程方法
(2)了解影响电机转速的因素有哪些
三、电路设计
1、单片机的选型
现在普遍的用的是80C31和80C51,80C51的EA加上高低电平,决定单片机访问内部或外部的程序存储器,EA高电平时,访问内部程序存储器,但当程序计数器(PC)值超过0FFH时单片机自动转向外部程序存储器。
当EA为低电平时,不管单片机有无内部存储器,只访问外部存储器。
80C31没有内部存储器,所以EA必须接地,这样单片机只能选择外部程序存储器。
所以80C51性能比较好。
2、硬件电路图
四软件设计
1、程序框图
改变方向子程序:
启动步进电机子程序:
增速子程序:
减速子程序:
2、完整的程序
;EXTRNCODE(INIT8279,SCAN_KEY,Display8)
MAIN_CODESEGMENTCODE
MAIN_BITSEGMENTBIT
MAIN_DATASEGMENTDATA
STACKSEGMENTIDATA
;PUBLICINIT8279,SCAN_KEY,Display8
CMD_8279XDATA0bF01H
DATA_8279XDATA0bF00H
RSEGMAIN_DATA
StepControl:
DS1
buffer:
DS8
SpeedNo:
DS1
StepDelay:
DS1
StartStepDelay:
DS1
StartStepDelay1:
DS1
RSEGMAIN_BIT
bFirst:
DBIT1
bClockwise:
DBIT1
bNeedDisplay:
DBIT1
RSEGSTACK
DS20H
CSEGAT0000H
LJMPSTAR
CSEGAT000BH
LJMPTIMER0
RSEGMAIN_CODE
STAR:
MOVSP,#STACK-1
ACALLINIT8279
SETBbFirst
SETBbClockwise
MOVStepControl,#33H
MOVSpeedNo,#5
MOVTMOD,#02H
MOVTH0,#55
MOVTL0,#55
MOVIE,#82H
MOVBuffer+7,#0
MOVbuffer+6,#0
MOVbuffer+5,#0
MOVbuffer+4,#0
MOVbuffer+3,#10H
MOVbuffer+2,SpeedNo
MOVbuffer+1,#10H
MOVbuffer,#0
STAR2:
MOVR0,#buffer
ACALLDisplay8
STAR3:
ACALLScan_Key
JCSTAR5
JNBbNeedDisplay,STAR3
CLRbNeedDisplay
ACALLStep_SUB_1
SJMPSTAR2
STAR5:
CLRTR0
CJNEA,#10,$+3
JNCSTAR1
MOVbuffer+4,buffer+5
MOVbuffer+5,buffer+6
MOVbuffer+6,buffer+7
MOVBuffer+7,A
SJMPSTAR2
STAR1:
CJNEA,#14,$+3
JNCSTAR3
MOVDPTR,#DriverTab
CLRC
SUBBA,#10
RLA
JMP@A+DPTR
DriverTab:
SJMPDirection
SJMPSpeed_up
SJMPSpeed_Down
SJMPExec
Direction:
CPLbClockwise
JBbClockwise,Clockwise
MOVbuffer,#1
AntiClockwise:
JNBbFirst,AntiClockwise1
MOVStepControl,#91H
SJMPDirection1
AntiClockwise1:
MOVA,StepControl
RRA
RRA
MOVStepControl,A
SJMPDirection1
Clockwise:
MOVbuffer,#0
JNBbFirst,Clockwise1
MOVStepControl,#33H
SJMPDirection1
Clockwise1:
MOVA,StepControl
RLA
RLA
MOVStepControl,A
Direction1:
SJMPSTAR2
Speed_up:
MOVA,SpeedNo
CJNEA,#11,Speed_up1
SJMPspeed_up2
Speed_up1:
INCSpeedNo
MOVbuffer+2,SpeedNo
Speed_up2:
SJMPSTAR2
Speed_Down:
MOVA,SpeedNo
JZSpeed_Down1
DECSpeedNo
MOVbuffer+2,SpeedNo
Speed_Down1:
SJMPSTAR2
Exec:
CLRbFirst
ACALLTakeStepCount
MOVDPTR,#StepDelayTab
MOVA,SpeedNo
MOVCA,@A+DPTR
MOVStepDelay,A
CJNEA,#50,$+3
JNCExec1
MOVA,#50
Exec1:
MOVStartStepDelay,A
MOVStartStepDelay1,A
SETBTR0
AJMPSTAR2
StepDelayTab:
DB250,125,83,62,50,42,36,32,28,25,22,21
TIMER0:
PUSHACC
DJNZStartStepDelay,TIMER0_1
MOVA,StartStepDelay1
CJNEA,StepDelay,TIMER0_5
SJMPTIMER0_2
TIMER0_5:
DECA
MOVStartStepDelay1,A
TIMER0_2:
MOVStartStepDelay,A
MOVA,StepControl
CPLA
MOVP1,A
CPLA
JBbClockwise,TIMER0_3
RRA
SJMPTIMER0_4
TIMER0_3:
RLA
TIMER0_4:
MOVStepControl,A
MOVA,R6
ORLA,R7
JZTIMER0_1
SETBbNeedDisplay
DJNZR7,TIMER0_1
DJNZR6,TIMER0_1
CLRTR0
TIMER0_1:
POPACC
RETI
Step_SUB_1:
MOVR5,#4
MOVR0,#buffer+7
Step_SUB_1_1:
MOVA,@R0
DEC@R0
JNZStep_SUB_1_2
MOV@R0,#9
DECR0
DJNZR5,Step_SUB_1_1
Step_SUB_1_2:
RET
TakeStepCount:
MOVA,buffer+4
MOVB,#10
MULAB
ADDA,buffer+5
MOVB,#10
MULAB
ADDA,buffer+6
MOVR7,A
MOVA,B
ADDCA,#0
MOVB,#10
MULAB
XCHA,R7
MOVB,#10
MULAB
XCHA,B
ADDA,R7
XCHA,B
ADDA,buffer+7
MOVR7,A
MOVA,B
ADDCA,#0
MOVR6,A
CJNER7,#0,TakeStepCount1
RET
TakeStepCount1:
INCR6
RET
INIT8279:
MOVA,#34H
MOVX@DPTR,A
CLRA
MOVDPTR,#CMD_8279
MOVX@DPTR,A
INIT8279_1:
CALLCLEAR
MOVA,#90H
MOVX@DPTR,A
RET
CLEAR:
MOVA,#0DEH
MOVDPTR,#CMD_8279
MOVX@DPTR,A
WAIT1:
MOVXA,@DPTR
JBACC.7,WAIT1
RET
SCAN_KEY:
MOVDPTR,#CMD_8279
MOVXA,@DPTR
READ_FIFO:
ANLA,#7
JZNO_KEY
READ:
MOVA,#40H
MOVX@DPTR,A
MOVDPTR,#DATA_8279
MOVXA,@DPTR
ACALLKEY_NUM
SETBC
SCAN_KEY1:
RET
NO_KEY:
CLRC
SJMPSCAN_KEY1
KEY_NUM:
ANLA,#3FH
RET
WRITE_DATA:
MOVDPTR,#DATA_8279
MOVX@DPTR,A
RET
LED_TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB080H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
RET
Display8:
PUSH07H
MOVDPTR,#LED_TAB
MOVP2,#HIGH(CMD_8279)
MOVR1,#LOW(CMD_8279)
MOVA,#90H
MOVX@R1,A;第一位开始显示
MOVR1,#LOW(DATA_8279)
MOVR7,#8
Display81:
MOVA,@R0
MOVCA,@A+DPTR
MOVX@R1,A
INCR0
DJNZR7,Display81
POP07H
RET
END
五、结语
利用G5区的键盘可以控制步进电机的正反转,调节转速,连续转动或转动指定步数;相应的数据都会显示在数码管上。
G5区的键盘A可以控制步进电机的正反转,当数码管的最高位为0为正转,为1时是反转。
B、C可以调节转速,C可将转速往上调,B可将转速往下调。
本设计系统各种芯片选型都是市场上常用的芯片,价格便宜,资源开放。
例如步进电机驱动电路由功率放大芯片ULN2003进行电流电压的放大,最高耐压50V,输出可以在高负载电流并行运行;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。
此次设计从整体布局,系统设计直到最后完成,每个流程下来,都带给我很多新的东西,再次用到Protel99se,使我对此软件又加深了运用。
我还学会了无底纹的截图法,使截的图更加的清晰。
这次设计我从图书馆、上网查阅了相关的资料,使我对单片机有进一步的了解,对步进电机有一定的认识。
此次设计的不足之处是有的芯片找的不太合适,画得有点乱,键盘显示的程序不好用,
让我在以后的设计更加谨慎,尽量做的尽善尽美。
六、参考文献
[1]陈隆昌、阎治安、刘新正编著.控制电机西安电子科技大学出版社,西安,2010
[2]杨居义.单片机课程设计指导.清华大学出版社,北.京,2009
【3】张小林、崔浩.51系列单片机常用模块设计查询手册.清华大学出版社,北京,2010
【4】张文灼.单片机应用技术.机械工业出版社,北京,2009
【5】林春泉.单片机原理及应用.机械工业出版社,北京,2009
.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 步进 电机 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)