单片机课程设计报告完美版.doc_第1页
单片机课程设计报告完美版.doc_第2页
单片机课程设计报告完美版.doc_第3页
单片机课程设计报告完美版.doc_第4页
单片机课程设计报告完美版.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

课程设计题目:单片机控制步进电机的设计 姓名: 专业: 电气自动化技术 学号: 2011 年10 月27日1、 设计题目的背景 1.步进电机的原理步进电机的驱动原理是通过它每相线圈的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲来控制,所以调节脉冲的频率便可改变步进电机的转速,微控制器最适合控制步进电机。另外,由于电机的转动惯量的存在,其转动速度还受驱动功率的影响,当脉冲的频率大于某一值(本实验为f.100hz)时,电机便不再转动。实验电机共有四个相位(A,B,C,D),按转动步骤可分单4拍(A-B-C-D-A),双4拍(AB-BC-CD-DA-AB)和单双8拍(A-AB-B-BC-C-CD-D-DA-A). 2.应用领域、步进电机主要用于一些有定位要求的场合。例如:线切割的工作台拖动,植毛机工作台(毛孔定位),包装机(定长度)。基本上涉及到定位的场合都用得到。 、广泛应用于ATM机、喷绘机、刻字机、写真机、喷涂设备、医疗仪器及设备、计算机外设及海量存储设备、精密仪器、工业控制系统、办公自动化、机器人等领域。特别适合要求运行平稳、低噪音、响应快、使用寿命长、高输出扭矩的应用场合。3.步进电机在电脑绣花机等纺织机械设备中有着广泛的应用,这类步进电机的特点是保持转矩不高,频繁启动反应速度快、运转噪音低、运行平稳、控制性能好、整机成本低。目前用于电脑绣花机的步进电机多数为五相混合式步进电机,目的是通过采用高相数的步进电机来减小步矩角和提高控制精度,但是采用该种方式获得的性能上的提高是有限的而且成本也相对较高。采用细分驱动技术可以大大改善步进电机的运行品质,减少转矩波动,抑制振荡,降低噪音,提高步矩分辨率。若采用反应式步进电机,在性能明显提高的同时还能大大降低产品的成本。、凡需要对转角进行精确控制的情况下,使用步进电机最为理想。2、 设计原理1.设计的目的、了解步进电机的基本原理,掌握步进电机的转动编程方法。、了结影响电机转速的因素有哪些。三、电路设计 1.单片机型号的选择 8031片内不带程序存储器ROM,使用时用户需外接程序存储器和一片逻辑电路373,外接的程序存储器多为EPROM的2764系列,用户若想对写入到EPROM的程序进行修改,必须使用一种特殊的紫外线灯将其照射擦除,之后再写入,写入到程序存储器的程序代码没有什么保密性可言。51的优点是有乘法和除法指令,给变成带来了方便,其内部的硬件到软件有一套完整的布尔处理器,51系列在片内RAM区开辟了一个双重功能的地址区间16个字节,单元地址20H2FH,即可做字节处理又可做位处理,使用极为灵活。51单片机价格更便宜。市场上51系列单片机种类较多。综上,所以选择80C51单片机。 2.硬件电路设计、实验原理图如下:、8279键盘LED控制器键盘&LED80C51单片机控制4、 软件设计 1.程序框图NYNYNNNN0-需要刷新显示标志1-步进电机未转动过标志1-转动方向标志(1:表示顺时针方向)33H-下次送给步进电机值5-步进电机转速初始化8255(PC口输出)初始化8253(计数器T0设置在模式2状态,BCD码计数,CLK0/210)初始化8259(允许8253中断)初始化8253中断向量初始化显示缓冲区:(数码管第8位:0,顺时针方向;5、7位消隐;6位:转速;1、2、3、4位:0,表示连续转动,其他值表示需要转动的步数)调用显示子程序有键按下需要刷新显示标志=10-需要刷新显示标志调用步数调整子程序关中断(终止步进电机转动)数码管的1、2、3位-2、3、4位键值送给数码管的第一位调用改变转向子程序键值9键值=0AH调用增速子程序调用减速子程序调用启动步进电机子程序Y键值=0BH键值=0CH键值=0DH开始YYY改变方向子程序:YYNNY开始转动方向标志=091H-下次送给步进电机值下次送给步进电机值循环右移二次1-转动方向标志0-送给数码管的第7位步进电机未转动过标志33H-下次送给步进电机值下次送给步进电机值循环左移二次0-转动方向标志1-送给数码管的第7位步进电机未转动过标志返回启动步进电机子程序:YNY开始0-步进电机未转动过标志取转动步数取转速对应的延时值(转速延时)初始转速延时1=初始转速延时转速延时需要刷新显示标志转动步数减一1-1转动步数=0时关中断清中断标志开始下次送给步进电机值循环左移一次1-1返回下次送给步进电机值-8255的PC口(控制步进电机转动一步)Y 2.完整程序;EXTRNCODE(INIT8279,SCAN_KEY,Display8)MAIN_CODESEGMENTCODEMAIN_BITSEGMENTBITMAIN_DATASEGMENTDATASTACKSEGMENTIDATA;PUBLICINIT8279,SCAN_KEY,Display8CMD_8279XDATA0bF01HDATA_8279XDATA0bF00HRSEGMAIN_DATAStepControl:DS1buffer:DS8SpeedNo:DS1StepDelay:DS1StartStepDelay:DS1StartStepDelay1:DS1RSEGMAIN_BITbFirst:DBIT1bClockwise:DBIT1bNeedDisplay: DBIT1RSEGSTACKDS20HCSEGAT0000HLJMPSTARCSEGAT000BHLJMPTIMER0RSEGMAIN_CODESTAR:MOVSP,#STACK-1ACALL INIT8279SETBbFirst SETB bClockwiseMOVStepControl,#33HMOV SpeedNo,#5MOVTMOD,#02HMOVTH0,#55MOVTL0,#55MOVIE,#82HMOVBuffer+7,#0MOVbuffer+6,#0MOVbuffer+5,#0MOVbuffer+4,#0MOVbuffer+3,#10HMOVbuffer+2,SpeedNoMOVbuffer+1,#10HMOVbuffer,#0STAR2:MOVR0,#bufferACALLDisplay8STAR3:ACALLScan_KeyJCSTAR5JNBbNeedDisplay,STAR3CLRbNeedDisplayACALLStep_SUB_1SJMPSTAR2STAR5:CLRTR0CJNEA,#10,$+3JNCSTAR1MOVbuffer+4,buffer+5MOVbuffer+5,buffer+6MOVbuffer+6,buffer+7MOVBuffer+7,ASJMPSTAR2STAR1:CJNEA,#14,$+3JNCSTAR3MOVDPTR,#DriverTabCLRCSUBBA,#10RLAJMPA+DPTRDriverTab:SJMPDirectionSJMPSpeed_upSJMPSpeed_DownSJMPExecDirection:CPLbClockwiseJBbClockwise,ClockwiseMOVbuffer,#1AntiClockwise:JNBbFirst,AntiClockwise1MOVStepControl,#91HSJMPDirection1AntiClockwise1:MOVA,StepControlRRARRAMOVStepControl,ASJMPDirection1Clockwise:MOVbuffer,#0JNBbFirst,Clockwise1MOVStepControl,#33HSJMPDirection1Clockwise1:MOVA,StepControlRLARLAMOVStepControl,ADirection1: SJMP STAR2Speed_up: MOV A,SpeedNo CJNEA,#11,Speed_up1 SJMPspeed_up2Speed_up1:INCSpeedNo MOVbuffer+2,SpeedNoSpeed_up2:SJMPSTAR2Speed_Down:MOVA,SpeedNo JZSpeed_Down1 DECSpeedNo MOVbuffer+2,SpeedNoSpeed_Down1:SJMPSTAR2Exec:CLRbFirst ACALLTakeStepCount MOVDPTR,#StepDelayTab MOVA,SpeedNo MOVCA,A+DPTR MOVStepDelay,A CJNEA,#50,$+3 JNCExec1 MOVA,#50Exec1:MOVStartStepDelay,A MOVStartStepDelay1,A SETBTR0 AJMPSTAR2StepDelayTab:DB250,125,83,62,50,42,36,32,28,25,22,21TIMER0:PUSHACC DJNZStartStepDelay,TIMER0_1 MOVA,StartStepDelay1 CJNEA,StepDelay,TIMER0_5 SJMPTIMER0_2TIMER0_5:DECA MOVStartStepDelay1,ATIMER0_2:MOVStartStepDelay,A MOVA,StepControl CPLA MOVP1,A CPLA JBbClockwise,TIMER0_3 RRA SJMPTIMER0_4TIMER0_3:RLATIMER0_4:MOVStepControl,A MOVA,R6 ORLA,R7 JZTIMER0_1 SETBbNeedDisplay DJNZR7,TIMER0_1 DJNZR6,TIMER0_1 CLRTR0TIMER0_1:POPACC RETIStep_SUB_1:MOVR5,#4 MOVR0,#buffer+7Step_SUB_1_1:MOVA,R0 DECR0 JNZStep_SUB_1_2 MOVR0,#9 DECR0 DJNZR5,Step_SUB_1_1Step_SUB_1_2:RETTakeStepCount: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 RETTakeStepCount1:INCR6 RETINIT8279: MOVA,#34HMOVXDPTR,ACLRAMOVDPTR,#CMD_8279MOVXDPTR,AINIT8279_1: CALLCLEARMOVA,#90HMOVXDPTR,ARETCLEAR:MOVA,#0DEHMOVDPTR,#CMD_8279MOVXDPTR,AWAIT1:MOVXA,DPTRJBACC.7,WAIT1RETSCAN_KEY:MOVDPTR,#CMD_8279MOVXA,DPTRREAD_FIFO:ANLA,#7JZNO_KEYREAD:MOVA,#40HMOVXDPTR,AMOVDPTR,#DATA_8279MOVXA,DPTRACALLKEY_NUMSETBCSCAN_KEY1: RETNO_KEY:CLRCSJMPSCAN_KEY1KEY_NUM:ANLA,#3FHRETWRITE_DATA:MOVDPTR,#DATA_8279MOVXDPTR,ARETLED_TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB080H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFHRETDisplay8:PUSH07HMOVDPTR,#LED_TABMOVP2,#HIGH(CMD_8279)MOVR1,#LOW(CMD_8279)MOVA,#90H MOVXR1,A;第一位开始显示 MOVR1,#LOW(DATA_8279) MOVR7,#8Display81:MOVA,R0MOVCA,A+DPTRMOVXR1,AINCR0DJNZR7,Display81POP07HRET END5、 结语1、运行情况:首次运行时电机不会旋转,在加入子程序时,电机只能做单方向简单旋转,当加入子程序(INIT8279:到LED_TAB:)电机才能做正反转方向的转动,且能加减速。2、改进建议:但运行时,键盘操作指示灯不亮,加入bNeedDi

温馨提示

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

评论

0/150

提交评论