您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 步进电机课程设计实验报告
小型步进电机课程设计实验报告1/28小型步进电机课程设计实验报告指导老师:姓名:学号:专业班级:时间:15周——17周小型步进电机课程设计实验报告2/28目录1课题名称及要求32设计思想和实施方案32.1键盘模块32.2数码管显示模块42.3步进电机模块42.4硬件电路原理图及分解63典型程序模块及典型编程技巧分析93.1键盘模块及程序分析93.2数码管显示模块及程序分析133.3步进电机模块及程序分析154课程设计中遇到的问题及解决方案185程序清单和程序注释216收获和体会267参考文献27小型步进电机课程设计实验报告3/281、课题名称及要求设计题7:小型步进电机控制系统设计(限1-2人)设计要求:(1)、分别用C语言和汇编语言编程完成硬件接口功能设计;(2)、基于80x86微机接口硬件电路设计调试;(3)、控制功能要求:小键盘给定分段速度,数码管显示当前步进电机启动与停止、方向、速度信息;(4)、具有本地与远程(串行方式下)功能。2、设计思想和实施方案使用硬件:8086,8255,74LS273地址锁存器,74LS138译码器,ULN2003A驱动电路,共阴数码管,步进电机本次实验主要是通过4×4小键盘,控制小型步进电机的启动,停止,暂停,以及方向,并且给定分段速度,控制步进电机的速度。同时四个数码管实时显示当前步进电机的启动与停止、方向、速度信息。根据分析,本系统可以大致分成三大主要模块,1键盘控制模块2数码管显示模块3步进电机模块2.1键盘模块(图1键盘简图)启动/暂停停止复位方向控制:正向/反向速度控制1档到4档0412小型步进电机课程设计实验报告4/28方向控制(正向/反向):控制步进电机运行方向,无论电机处于运行或停止状态每按下一次,电机转动方向反向;启动/暂停:控制电机运行与否。电机转动时按下,电机暂停,当前电机运行参数不变,再次按下时,电机继续按暂停前参数运行;速度控制:无论电机处于任何状态,均可设定电机档位。档位分为四档,从一档到四档,速度依次增加,并且循环。2.2数码管显示模块四个数码管显示步进电机的运行状态。1号数码管:S——停止E——运行P——暂停2号数码管:——(连接符,无特别含义)3号数码管:A——反向运行C——正向运行4号数码管:1——1档2——2档3——3档4——4档例:左图表示表示电动机正向2档速度运行右图表示电动机停止状态2.3步进电机模块首先了解步进电机的原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收小型步进电机课程设计实验报告5/28到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。根据步进电机的控制绕组的多少,可以将步进电机分为三相,四相,五相,本系统采用的是四相。步进电机的励磁顺序如下表:小型步进电机课程设计实验报告6/28步进电机控制端口输出值:步进电机的驱动原理是通过对每组线圈的电流的顺序切换来使步进电机做步进式切换旋转。切换通过输出的脉冲信号提供的,所以调节脉冲信号频率就可以改变步进电机的速度。改变各脉冲信号的先后顺序就可以改变电机的转向。2.4硬件电路原理图及分解小型步进电机课程设计实验报告7/28小型步进电机课程设计实验报告8/28小型步进电机课程设计实验报告9/28显示模块,四个共阴数码管4×4键盘8086CPU,三片74LS273地址锁存缓冲器,一片8255,一片74LS138译码器小型步进电机课程设计实验报告10/28各端口地址IOY0EQU0C400H;片选IOY0对应的端口始地址MY8255_AEQUIOY0+00H*4;8255的A口地址MY8255_BEQUIOY0+01H*4;8255的B口地址MY8255_CEQUIOY0+02H*4;8255的C口地址MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址3典型程序模块及典型编程技巧分析。3.1键盘模块及程序分析首先设置三个标志位运行状态标志位[SI][SI]=0时,表示停止状态;[SI]=1时,表示运行状态;[SI]=2时,表示暂停状态方向标志位[SI+4][SI+4]=3时,表示方向为逆时针;[SI+4]=4时,表示方向为顺时针;档位标识为[SI+6][SI+6]=5时,表示档位为1档;[SI+6]=6时,表示档位为2档;[SI+6]=7时,表示档位为3档;[SI+6]=8时,表示档位为4档。在汇编程序中,键盘模块包括了键盘扫描,其中嵌套了按键扫描,键值保存以及数码管清屏与显示(数码管清屏与显示,我们将在数码显示模块中仔细分析,先分析键盘扫描部分)驱动电路及步进电机小型步进电机课程设计实验报告11/28键盘扫描程序为4×4按键给定数值的第一行0,1,2,3,第二行4,5,6,7第三行8,9,A,B第四行C,D,E,F以下是键盘扫描的流程图方向键?原方向逆[SI+4]=4原方向顺[SI+4]=3刷新显示停止恢复?启动/暂停?键?档位键?[SI]=1?[SI]=2[SI]=1刷新显示刷新显示个标志位复位刷新显示判断档位刷新显示刷新显示结束开始YYYYYNNNNN小型步进电机课程设计实验报告12/28键盘扫描主程序KEYSCANPROCNEARBEGIN:CALLDIS;显示刷新CALLCLEAR;清屏CALLCCSCAN;扫描按键JNZGETKEY1;有键按下则跳置GETKEY1JMPGOBACK1GETKEY1:CALLDIS;显示刷新CALLDALLYCALLDALLYCALLCLEAR;清屏CALLCCSCAN;再次扫描按键JNZGETKEY2;有键按下则跳置GETKEY2JMPBEGIN;否则跳回开始继续循环GETKEY2:MOVCH,0FEHMOVCL,00H;设置当前检测的是第几列COLUM:MOVAL,CH;选取一列,将X1~X4中一个置0MOVDX,MY8255_AOUTDX,ALMOVDX,MY8255_C;读Y1~Y4,用于判断是哪一行按键闭合INAL,DXL1:TESTAL,01H;是否为第1行JNZL2;不是则继续判断MOVAL,00H;设置第1行第1列的对应的键值JMPKCODEBEGIN1:JMPBEGINL2:TESTAL,02H;是否为第2行JNZL3;不是则继续判断MOVAL,04H;设置第2行第1列的对应的键值JMPKCODEL3:TESTAL,04H;是否为第3行JNZL4;不是则继续判断MOVAL,08H;设置第3行第1列的对应的键值JMPKCODEL4:TESTAL,08H;是否为第4行JNZNEXT;不是则继续判断MOVAL,0CH;设置第4行第1列的对应的键值KCODE:ADDAL,CL;将第1列的值加上当前列数,确定按键值CALLPUTBUF;保存按键值PUSHAXKON:CALLDIS;显示刷新CALLCLEAR;清屏小型步进电机课程设计实验报告13/28CALLCCSCAN;扫描按键,判断按键是否弹起JNZKON;未弹起则继续循环等待弹起POPAXNEXT:INCCL;当前检测的列数递增MOVAL,CHTESTAL,08H;检测是否扫描到第4列JZBEGIN1ROLAL,1;没检测到第4列则准备检测下一列MOVCH,ALJMPCOLUMGOBACK1:RETKEYSCANENDP在键盘扫描中关键的两个子程序:按键扫描,和键值保存按键扫描程序CCSCANPROCNEAR;扫描是否有按键闭合子程序MOVAL,00HMOVDX,MY8255_A;将4列全选通,X1~X4置0OUTDX,ALMOVDX,MY8255_CINAL,DX;读Y1~Y4NOTALANDAL,0FH;取出Y1~Y4的反值RETCCSCANENDP其中,如果有按键按下,子程序返回后AL将不等于零,否则为零,在按键按键主程序中判断。键值保存程序PUTBUFPROCNEAR;保存键值子程序MOVSI,3000HCMPAL,00H;判断0键是否按下JNZMODEDIR:CMP[SI+4],03H;方向位若为3,即逆时针,按下键后,变为4JZDIR1MOV[SI+4],03H;若为4,则变回3JMPLASTDIR1:MOV[SI+4],04HJMPLASTMODE:CMPAL,01H;判断1键是否按下JNZSTOPCMP[SI],01H;1键位启动/暂停键,若为启动,按下后则为暂停小型步进电机课程设计实验报告14/28JZMODE1MOV[SI],01H;反之,则为启动JMPLASTMODE1:MOV[SI],02H;JMPLASTSTOP:CMPAL,02H;2键位停止复位键,若按下,步进电机停止运行,标志位复位JNZGRD1MOV[SI],00HMOV[SI+4],04HMOV[SI+6],05HGRD1:CMPAL,04H;4键为档位键,按下后,档位标识将加1JZSPEEDUPSPEEDUP::由于档位最高只为4,所以档位高于4后,要自动会1MOVAL,[SI+6]CMPAL,08HJZBACKINCALMOV[SI+6],ALJMPGOBACKBACK:MOV[SI+6],05HLAST:CALLCLEARCALLCCSCANGOBACK:RETPUTBUFENDP3.2数码管显示模块及程序分析(该模块包括数码管清零以及数码管显示,我们着重是数码管显示)DTABLE1中存放数码管的编码。DTABLE1DB6DH,79H,73H,77H,39H,06H,5BH,4FH,66H,40H这十个分别表示的数码管显示是S,E,P,A,C,1,2,3,4,—。同时在汇编语言中,我们用[SI][SI+2][SI+4][SI+6]中分别存放四个数码管应显示的编码在DTABLE1中对应的位置。小型步进电机课程设计实验报告15/28数码管显示程序DISPROCNEAR;显示键值子程序PUSHAXPUSHSIMOVSI,3006H;初始设置从速度开始,然后依次方向,—,状态MOVDL,0F7H;初始设置选中最后一个数码管MOVAL,DLAGAIN:PUSHDXMOVDX,MY8255_AOUTDX,AL;设置X1~X4,选通一个数码管MOVAL,[SI];取出缓冲区中存放键值MOVBX,OFFSETDTABLE1ANDAX,00FFHADDBX,AXMOVAL,[BX]MOVDX,MY8255_BOUTDX,AL;写入数码管A~DpCALLDALLYDECSIDECSI;取下一个键值POPDX开始[SI+N]的数值给第(N+2)/2数码管N=N-2是否为最后一个数码管结束YN小型步进电机课程设计实验报告16/28MOVAL,DLTESTAL,01H;判断是否显示完?JZOUT1;显示完,返回RORAL,1MOVDL,ALJMPAGAIN;未显示完,跳回继续OUT1:POPSIPOPAXRETDISENDP3.3步进电机模块及程序分析由步进电机原理可知,改变步进电机的步序,从步序1到步序8,就可以使步进电机顺时针旋转,若从步序8到步序1就可以逆时针顺转。当我们改变步序转换的时间时,即改变脉冲频率,步进电机的转动速度也随之而改变。我们用[S+8]来计算步序。顺时针步序DTABLE3DB10H,30H,20H,60H,40H,0C0H,80H,90H逆时针步序DTABLE4DB90H,80H,0C0H,40H,60H,20H,30H,10H小型步进电机课程设计实验报告17/28步进电机运行程序KAISHI:CALLKEYSCAN;先进行键盘扫描KAISHI1:MOVSI,3000HCMP[SI],01HJZFANGXIANG;若启动,则开始判断方向开始启动?键盘扫描取顺时针步序顺时针?取逆时针步序[SI]=8?1档运行2档?3档?1档?2档运行
本文标题:步进电机课程设计实验报告
链接地址:https://www.777doc.com/doc-2307465 .html