欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    单片机汇编语言步进电机转速控制系统.doc

    • 资源ID:57992585       资源大小:103.50KB        全文页数:19页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机汇编语言步进电机转速控制系统.doc

    大连理工大学本科设计报告题目:步进电机转速控制系统设计课程名称: 单片机综合设计 学院系: 电子信息与电气工程学部 专 业: 班 级: 学 号: 学生姓名: 成 绩: 2021 年 7 月 20 日题目:步进电机转速控制系统设计1 设计要求1) 利用ZLG7290的键盘控制直流电机或步进电机的转速、转向;2) 也可以利用ADC模块与电位器配合,利用电位器控制转速;3) 利用ZLG7290的8位LED数码管显示电机转向、转速参数显示。2 设计分析及系统方案设计实验要求使用步进电机作为被控制对象,由ZLG7290做人机对话平台,利用单片机的P18位与P3局部口线构造系统。实验最终实现功能、设计思路以及方案设计如以下几个小节所述。2.1 系统设计实现功能根据设计要求、现有设备以及知识储藏,完成功能如下: 由按键S1S8实现转速切换,其中S1S4正转,S5S8反转 按键S16作为停顿键,按下S10后步进电机停顿转动,再按S1S16步进电机按照按键对应转速以及转向转动 按键S10作为复位键,当按下S10后,无论当前处于何种状态,系统恢复至初始态 8为LED数码管显示当前步进电机转速speed=0/1 14,转速前0表示正转,1表示反转 假设按下停顿键,数码管显示当前转速;假设按下复位键,数码管显示初始态speed=002.2 设计思路本次的设计是LED显示与步进电机相结合以及假设干功能键的组合的一种设计。根据之前学习的按键中断显示实验与定时器实验,使用INT0与INT1,INT0作为按键中断,INT1作为定时器。在主程序中实现LED初始显示、定时器计时初始、按键中断初始。INT0中断调用中断效劳子程序实现对按键键值的判断,并根据相应的按键值实现对应步进电机的变化,并显示该按键对应的转速。INT1定时器中断根据INT0的按键键值,对定时器设定相应的初值,实现步进电机按规定的转速转动。对于按键停顿,那么是利用中断优先级,当INT0的中断优先级高时,系统进入中断,此时INT1停顿计时,也就实现了步进电机的停顿,当改变定时器与按键中断的优先级时,即把INT0设为低优先级,INT1设为高优先级,步进电机重新开场转动。此时添加一个对INT0位地址的查询,假设有按键即正/反转的4档转速所对应的按键,步进电机开场重新转动。对于复位功能,那么同样是利用按键键值的判断,在对应键值下控制电机初始化。2.3 系统方案设计系统总设计方案框图如下所示:ZLG7290AT89C51UL2003按键输入LED显示图1.1 系统总框图3系统电路图见附录4 外围接口模块硬件电路功能描述本设计主要用到的器件是AT89C51、ZLG7290B与步进电机。4.1 AT89C51AT89C51的主要参数如下表所示:型号存储器定时器I/0串行口中断速度MH其它特点E²PROMROMRAM89C514K1282321624低电压AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。其引脚如图1.2所示。图1.2 单片机的引脚排列管脚说明如下:VCC:供电电压GND:接地P0口: 8位漏级开路双向I/O口,每脚可吸收8TTL门电流;P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流;P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。P3口也可作为AT89C51的一些特殊功能口,如下所示:RXD串行输入口TXD串行输出口/INT0外部中断0/INT1外部中断1T0记时器0外部输入T1记时器1外部输入/WR外部数据存储器写选通/RD外部数据存储器读选通P3口同时为闪烁编程与编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。4.2 ZLG7290B ZLG7290B是数码管动态显示驱动、键盘扫描管理芯片。接口采用I2C构造。内部存放器有13个单元00H-0DH:1系统存放器地址00H,第0位称作按键有效位,为1表示按键按下,为0表示没有按键操作,并且有按键按下的时候在ZLG7290B的/INT引脚会产生一个低电平的中断请求信号。2键值存放器地址01H,如果按下的是普通键,键值存放器就保存按键对应的兼职1-56。3)连击计数器02H,就是芯片为普通键提供的一种连击计数功能,当按下某一按键就可以产生连续的中断请求信号。4功能键值存放器地址03H,功能按键不产生键值,但是在按下与抬起都会产生中断请求信号。5命令存放器地址07H与08H,向命令存放器送入相关的控制命令可以实现段寻址,下载显示数据与控制闪烁等功能。6闪烁控制存放器地址0HCH,闪烁控制存放器决定闪烁的频率与占空比。7扫描位数存放器地址0DH,扫描位数存放器决定着ZLG7290B动态扫描显示的位数,取值0-7,对应的显示1-8位。8显示缓冲存放器地址10H-17H,八个显示缓冲存放器直接决定着数码管上显示的字形与显示的位置。ZLG7290B的引脚图如下:图1.3. ZLG7290B引脚逻辑图4.3 步进电机步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停顿的位置只取决于脉冲信号的频率与脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机那么转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。一步进电机的静态指标术语1、相数:产生不同对N、S磁场的激磁线圈对数。常用m表示。2、拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数。3、步距角:对应一个脉冲信号,电机转子转过的角位移用表示。二步进电机动态指标及术语:1、最大空载起动频率:电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。2、最大空载的运行频率:电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。3、电机正反转控制:当电机绕组通电时序为D-DC-C-CB-B-BA-A-AD时为正转,通电时序为AD-A-AB-B-BC-C-CD-D时为反转。如下所示的步进电机为一四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按适宜的时序通电,就能使步进电机步进转动。图1.4是该四相反响式步进电机工作原理示意图。图1.4 四相步进电机步进示意图5 主程序中主要变量定义变量名称RAM单元/存放器功能SDAPIIC数据总线SCLPIIC时钟线RSTIIC复位线BA步进电机驱动BB步进电机驱动BC步进电机驱动BD步进电机驱动WSLA70H取器件地址写RSLA71H取器件地址读DISDA20H源数据块首地址DISCON08H写入数据个数DATA_130H变量区首地址6 系统软件中各个子程序的功能描述子程序名称入口参数出口参数功能 描述INT_7290AA按键中断TI_INTA无定时器中断CFAR3、R4拆分,高4位存在R4中,低4位存在R3中DELAY无无步进电机相旋转邻角延时;按键抖动消除延时RDKEY无A读出键值SHOW无无将当前10H-17H的字形码输出WRNBYTR7,R0,R2,R3无通用的IIC通讯子程序多字节写操作RDADDR7,R0,R2,R3,R4R0指向的主器件内部数据块通用的IIC通讯子程序多字节读操作6 主程序程序流程图见附录7 程序清单第 - 2 - 页RST BA BB BC BD WSLA EQU 70HRSLA EQU 71HDISDA EQU 20HDISCON EQU 08HDATA_1 EQU 30HORG8000HLJMP8100HORG 8003HLJMP INT_7290;按键中断入口地址ORG 801BHLJMPTI_INT ;定时器中断入口地址ORG8100H;*主程序开场*;INT0实现按键中断,INT1用于定时器START:MOV SP,#60HCLR RST;复位 LCALL DELAY SETB RSTSETB EA SETB EX0 CLR IT0;开INT0中断SETB PX0; 高优先级MOVTMOD,#10H;定时器1设;为模式1 MOVTH1,#00HMOVTL1,#00HSETBET1;开INT1中断SETBTR1CLRASETBF0;初始标识位MOVR1,#10H;节拍初始 MOV R5,#08H;相序表MOV10H,#08H;D 正转 MOV11H,#0CH;DCMOV12H,#04H;C MOV13H,#06H;CB MOV14H,#02H;BMOV15H,#03H;BAMOV16H,#01H;AMOV17H,#09H;ADMOV 18H,#09H;AD反转MOV 19H,#01H;AMOV1AH,#03H;AB MOV1BH,#02H;BMOV1CH,#06H;BCMOV1DH,#04H;CMOV1EH,#0CH;CDMOV1FH,#08H;D;建立变量缓冲区30H37H;显示SPEED=00MOVDATA_1,#00HMOVDATA_1+1,#00HMOVDATA_1+2,#12HMOVDATA_1+3,#17HMOVDATA_1+4,#16HMOVDATA_1+5,#16HMOVDATA_1+6,#15HMOVDATA_1+7,#14H;通过查表建立显示缓冲区;20H27H;*MOVDPTR,#LEDSEGMOVR7,#DISCONMOVR0,#DISDAMOVR1,#DATA_1LOOP1:MOVA,R1MOVCA,A+DPTRMOVR0,AINCR1INCR0DJNZR7,LOOP1;写入数据;*LOOP:MOVR7,#DISCONMOVR2,#10HMOVR3,#WSLAMOVR0,#DISDALCALLWRNBYTLCALLDELAYSJMP$;等待中断;字形码LEDSEG:DB 0FCH,60H,0DAH,0F2HDB 66H,0B6H,0BEH,0E4HDB 0FEH,0F6H,0EEH,3EHDB 9CH,7AH,9EH,8EHDB 0FAH,1EH,12H,00HDB 0B6H,0CEH,0DEH,7AH;S P E D;选择相速INT1;* TI_INT:PUSHACCMOV A,29H;判断键值J0: CJNE A,#00H,J1MOVTH1,#00HMOVTL1,#00HSETBF0;F0高电平正转SJMP OUTPUT ;输出步进J1: CJNE A,#01H,J2MOVTH1,#00HMOVTL1,#00H;档1SETBF0SJMP OUTPUT J2: CJNE A,#02H,J3MOVTH1,#60HMOVTL1,#60H;档2;不同按键设置不同速度,;正反转各设四档SETBF0SJMP OUTPUTJ3: CJNE A,#03H,J4MOVTH1,#90HMOVTL1,#90H;档3SETBF0SJMP OUTPUTJ4: CJNE A,#04H,J5MOVTH1,#0D0HMOVTL1,#0D0H;档4SETBF0SJMP OUTPUTJ5: CJNE A,#05H,J6MOVTH1,#00HMOVTL1,#00H;档1CLRF0SJMP OUTPUTJ6: CJNE A,#06H,J7MOVTH1,#60HMOVTL1,#60H;档2CLRF0SJMP OUTPUTJ7: CJNE A,#07H,J8MOVTH1,#90HMOVTL1,#90H;档3CLRF0SJMP OUTPUT J8: MOVTH1,#0D0HMOVTL1,#0D0H;档4CLRF0SJMP OUTPUTOUTPUT:MOVA,P1;步进电机转ANLA,#0FH;取低四位MOVA,R1MOVP1,AINCR1DJNZR5,OUTJB F0,CWISE;判断正/反 MOV R1,#18H;反转 SJMP NUMCWISE:MOVR1,#10H;正转NUM: MOV R5,#08HOUT:POPACCRETI;*;拆分CF:PUSH02HPUSHDPHPUSHDPLMOVDPTR,#LEDSEGMOVR2,AANLA,#0FHMOVCA,A+DPTRMOVR3,A;存低4位MOVA,R2SWAPAANLA,#0FHMOVCA,A+DPTRMOVR4,A;存高4位POPDPLPOPDPHPOP02HRET;*;延时程序DELAY: PUSH 00H PUSH 01H MOV R0,#00HDELAY1: MOV R1,#00H DJNZ R1,$ DJNZ R0,DELAY1 POP 01H POP 00H RET; 7290中断INT_7290: PUSH 00H PUSH 02H PUSH 03H PUSH 04H PUSH 07H PUSH ACC PUSH PSWLCALLDELAY;按键消抖LCALLRDKEY;读键值 NOP;用于观察读入键值CJNEA,#10H,AKEY1PANDUAN:SETBPT1;标志位CLRPX0;交换优先级,用于停顿后再继续工作AKEY:JBP3.2,$;查询LCALLDELAYLCALLRDKEYCJNEA,#0AH,AKEY1SJMPPANDUANAKEY1:JCINPUT;此时为档速设定键SJMPRESTARTINPUT:CJNEA,#05H,NEXT ;判断正/反转NEXT:JNCWISELCALLCFMOV20H,R3MOV21H,R4MOV21H,#0FCH;0,正转表示SJMPOVERWISE:SUBBA,#04HLCALLCFMOV20H,R3MOV21H,R4MOV21H,#60H;1,反转表示SJMPOVERRESTART:LCALLCFMOV20H,R3MOV21H,R4OVER:LCALL SHOWSETB PX0;重新将INT0的优先级置高POP PSW POP ACC POP 07H POP 04H POP 03H POP 02H POP 00H RETI; 读键值RDKEY:MOVR0,#28HMOVR7,#04HMOVR2,#00HMOVR3,#WSLAMOVR4,#RSLALCALLRDADDMOVA,29HRET; 显示程序SHOW:MOV R7,#02H MOV R2,#10H MOV R3,#WSLA MOV R0,#DISDA LCALL WRNBYT LCALL DELAYRET;通用的I2C通讯子程序略 END8 系统调试运行结果说明、分析所出现得问题,设计体会与建议8.1 系统调试运行结果运行程序后,LED显示屏上显示“speed=00。按下对应按键后,LED显示屏与步进电机状态如下表所示。按键LED显示屏步进电机无初始化speed=00初始速度S1speed=01正转档1S2speed=02正转档2S3speed=03正转档3S4speed=04正转档4S5speed=11反转档1S6speed=12反转档2S7speed=13反转档3S8speed=14反转档4S10复位键speed=00初始速度S16停顿键speed=*当前步进电机转速与旋转方向停顿8.2 实验出现问题分析l 问题一:参加定时器后,LED显示屏无法正常显示l 解决方法:改变7290连线从P1.4P1.7至P3.2P3.5。单步调试,注意中断优先级的设定。等待中断的指令应为SJMP $l 问题二:7290中断键值读入后,键值被改变l 解决方法:在调用的子程序中,CF、RDKEY、TI_INT中对A进展保护。l 问题三:步进电机停顿后无法重启l 解决方法:在比拟停顿键的键值后,改变按键中断INT0与定时器中断INT1的优先级。定时器中断设为高优先级,按键中断设为低优先级。l 问题四:步进电机停顿后,LED显示屏上无法显示当前步进电机转速与旋转方向l 解决方法:当步进电机停顿后,调用拆分子程序,显示子程序显示当前步进电机转速与旋转方向。8.3 设计体会与建议本次设计时出现了许多小问题,在解决时需要仔细单步调试,观察各存放器存储数值的变化。程序里有外部中断与定时器中断,需要处理好优先级关系。单片机的综合设计实验涉及以前学过的多方面知识,是对个人能力一个很好的提高。期望以后能有更多的选题。9 结论及设计体会 本实验根本完成设计要求。在完成设计的过程中,遇到不少问题,一一解决后,收获颇深。单片机的语言与汇编语言很相似,因此借助以前的知识可以很快上手,但是51单片机使用更方便,应用也更广。许多知识只有实践后才能真正了解,作为工科生,多实践,在实践中多思考,善于发现。正如此次51单片机调试的过程,单步调试找出问题所在,分析原因,就能快速改正错误了。 参考文献MCS-51单片机应用实验教程 陈育斌 主编

    注意事项

    本文(单片机汇编语言步进电机转速控制系统.doc)为本站会员(美****子)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开