(精品论文)微机课程设计——电机的控制 课程设计_第1页
(精品论文)微机课程设计——电机的控制 课程设计_第2页
(精品论文)微机课程设计——电机的控制 课程设计_第3页
(精品论文)微机课程设计——电机的控制 课程设计_第4页
(精品论文)微机课程设计——电机的控制 课程设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

微机课程设计电机的控制 一、项目设计内容与要求1.设计内容利用电机平台上的步进电机和直流电机,实现步进电机的转角控制和直流电机速度的控制。2.设计要求(1)步进电机的转角控制可以通过调整电机的转过的步数来实现。一次转过的步数和方向可用按键设定。还可以用按键控制步进电机一步一步的转动,要分正反转。转过的步数要显示在发光二极管上。(2)直流电机的转速是根据用数模转换电路的输入数据变化,要求用发光二极管显示转速数据值。(3)可以用按键或开关输入相应的转速控制数据。二、电路连接图 三、各模块的设计1.键盘模块本程序的键盘功能的设计采用扫描法实现,各个键的键值由扫描法得到。各个键的键值如下表所示:程序流程图: 2.直流电机的转速控制模块设计思路:直流电机的转速是根据用数模转换电路的输入数据变化,可以把键盘按下的数字键的键值送入数模转换电路(DAC0832的208H),按下不同的按键就实现转速的控制。要求用发光二极管显示转速数据值,可以直接把按键的键值送B口显示,本程序把旧键值左移四位送CH,新键值BH加上CH存BH并送发光二极管显示,再送数字进208口处理.此模块实现的功能也即数字键要处理的功能,作为键盘模块的子程序使用。程序流程图:3. 步进电机控制模块设计思路:本设计采用的是四相步进电机,步进电机用直流+12V电压,每项电流为0.20A,电机线圈由A、B、C、D四相组成。驱动方式为四相单四拍方式,按ABCDA次序通电为正转;按ADCBA次序通电为反转。正向单步转可用一个寄存器来标志给哪相通电,如CL=0,A通电;CL=1,B通电;CL=2,C通电;CL=3,D通电。反转单步走则类似。这个模块作为键盘主程序的子程序使用,使用键盘的第三行为功能键,操作步进电机的正反转,数字键送入NUM的值则控制电机的步数。功能键说明:“+”控制步进电机正向转NUM步“-“控制步进电机反向转NUM步“,”控制步进电机正向单步走“.”控制步进电机反向单步走正向走NUM步的程序流程图:(反向走NUM步的省略)正向单步走程序流程图:(反向单步的省略)四、源程序代码:CODE SEGMENT ASSUME CS:CODE,DS:CODESTART: MOV CH,00h ;键值左移4位存CH用,先初始化MOV CL,00h ;控制步进电机单步走用作标志 MOV DX,203H ;置8255A控制口地址 MOV AL,90H ;A口输入,C口输出 OUT DX,ALLOOP1: MOV DX,202H ;8255A的C口 MOV AH,00000110B MOV AL,00000110B ;键盘第一行 OUT DX,AL MOV DX,200h ;8255A的A口 IN AL,DX ;获取列码 CMP AL,0FFH JNE LOOP2 ;有键按下 MOV DX,202H ;列码全1无键按下扫描第二行 MOV AH,00000101B MOV AL,00000101B OUT DX,AL MOV DX,200h IN AL,DX CMP AL,0FFH JNE LOOP2 MOV DX,202H ;第三行 MOV AH,00000011B MOV AL,00000011B OUT DX,AL MOV DX,200h IN AL,DX CMP AL,0FFH JNE LOOP2 JMP LOOP1LOOP2: CALL Delay ;消除抖动 IN AL,DX CMP AL,0FFH JE LOOP1 MOV BL,0FEH ;确定有键按下则求列值 MOV BH,0 ;BH存键值LOOP3: CMP AL,BL ;扫描列值 JE ONE CMP BH,7 ;所有列码都扫描完 JE LOOP1 ;重新检测按键 INC BH ROL BL,1 ;列码循环左移一位 JMP LOOP3ONE: CMP AH,00000110B ;第一行按键 JE ONE2 CMP AH,00000101B ;第二行按键 JE TWO2 CMP AH,00000011B ;第三行功能键 JE THREE2 CALL JUMP JMP wait1ONE2: CALL First ;调用第一行处理程序 JMP wait1TWO2: CALL Second ;调用第二行处理程序 JMP wait1THREE2:CALL Third ;调用第三行处理程序wait1: MOV DX,200hwait2: IN AL,DX CMP AL,0FFh JNE wait2 ;等待按键 JMP LOOP1ORG 200HNUM DB ? ;存步进电机步数First PROC NEAR MOV DX,203H ; 开控制口 MOV AL,90h ;A口输入,C口输出 OUT DX,AL CMP CH,0 ;第一次执行按键 JZ CH0 ; ADD BH,CH ;显示八位,CH0: MOV DX,201H ;B口 MOV AL,BH ;键值送AL OUT DX,AL ;在二极管上显示BH即输入的键值 MOV DX,208H ;打开D/A OUT DX,AL ;控制直流电机转速 MOV NUM,AL ;步进电机转的步数 MOV CL,4 SAL BH,CL; BH值左移四位 MOV CH,BH ;BH值送CH MOV CL,0 ;CL清零,不影响步进电机单步走 RETFirst ENDP Second PROC NEAR ADD BH,8h ;扫描第二行 MOV DX,203H MOV AL,90h OUT DX,AL CMP CH,0 ; JZ CH1 ADD BH,CHCH1: MOV DX,201H ;8255A的B口输出 MOV AL,BH OUT DX,AL ;输出键盘的值 MOV DX,208H OUT DX,AL MOV NUM,AL ;步进电机步数 MOV CL,4 SAL BH,CL ;左移4位 MOV CH,BH MOV CL,0 RETSecond ENDPThird PROC NEAR ADD BH,10H ;扫描第三行 MOV DX,203H ;设置方式控制字 MOV AL,90H OUT DX,AL MOV DX,201H ;二极管显示为全0;B口 MOV AL,00h ; OUT DX,AL CMP BH,13H ;比较键值13H为”+” JZ DONE2 ;正转 CMP BH,12H ;12H为”-” JZ DONE3 ;反转 CMP BH,11H ;11H为”,” JZ DONE4 ;正向一步一步转 CMP BH,10H ;10H 为”.” JZ DONE5 ;反向一步一步转 RETThird ENDP DONE2: CALL PROGRAM1DONE3:CALL PROGRAM2DONE4:CALL PROGRAM3DONE5:CALL PROGRAM4 Delay PROC NEAR ; 键盘 延时子程序 PUSH CX MOV CX,1800HNEXT: DEC CX JNE NEXT POP CX RETDelay ENDP Delay2 PROC NEAR ;电机 延时子程序 PUSH CX MOV CX,5000HNEXT2: DEC CX JNE NEXT2 POP CX RETDelay2 ENDPJUMP PROC NEAR RETJUMP ENDPPROGRAM1 PROC NEAR ;正向连续转 PUSH CX MOV DX,203H MOV AL,90H OUT DX,AL MOV DX,202H; C口 MOV CL,NUM ;电机步数ZHENG: MOV AL,10H ;正向 OUT DX,AL ;给A相通电 CALL Delay2 DEC CL ;计算已进步数 JZ DONE1 ;步数已完成,返回 MOV AL,20H ;输出第二拍模型 OUT DX,AL ;给B相通电 CALL Delay2 ;延迟; DEC CL JZ DONE1 MOV AL,40H ;输出第三拍模型 OUT DX,AL ;给C相通电 CALL Delay2 DEC CL JZ DONE1 MOV AL,80H ;输出第四拍 OUT DX,AL ;给D相通电 CALL Delay2 DEC CL JZ DONE1 MOV AL,10H ;回到原点 OUT DX,AL CALL Delay2 DEC CL JNZ ZHENG ;ABCDA循环通电 JMP LOOP1 POP CX RETPROGRAM1 ENDPDONE1:JMP LOOP1PROGRAM2 PROC NEAR ;反向连续转 PUSH CX MOV DX,203H MOV AL,90H OUT DX,AL MOV DX,202H ;C口 MOV CL,NUM ;设置转的步数FAN: MOV AL,10H ;反向转动 OUT DX,AL ;给A通电 CALL Delay2 DEC CL JZ DONE1 MOV AL,80H ;给D通电 OUT DX,AL CALL Delay2 DEC CL JZ DONE1 MOV AL,40H ;给C通电 OUT DX,AL CALL Delay2 DEC CL JZ DONE1 MOV AL,20H ;给B通电 OUT DX,AL CALL Delay2 DEC CL JZ DONE1 MOV AL,10H ;给A通电 OUT DX,AL CALL Delay2 DEC CL JNZ FAN ;ADCBA通电 JMP LOOP1 POP CX RETPROGRAM2 ENDPPROGRAM3 PROC NEAR ;正向单步走 MOV DX,203H MOV AL,90H OUT DX,AL MOV DX,202H ;C口 CMP CL,00H ;第一次按,给A通电转一步 JZ AA1; CMP CL,01H ;CL=1,B通电 JZ BB1 CMP CL,02H ;CL=2,C通电 JZ CC1 CMP CL,03H ;CL=3,D通电 JZ DD1 JMP LOOP1 ;检测键盘AA1: MOV AL,10H OUT DX,AL CALL Delay2 INC CL ;自动加一,CL为01H JNZ DONEBB1: MOV AL,20H OUT DX,AL CALL Delay2 INC CL JNZ DONECC1: MOV AL,40H OUT DX,AL CALL Delay2 INC CL JNZ DONE DD1: MOV AL,80H OUT DX,AL CALL Delay2 MOV CL,00H ;JZ DONE JMP LOOP1 PROGRAM3 ENDPPROGRAM4 PROC NEAR ;反向单步走 MOV DX,203H MOV AL,90H OUT DX,AL MOV DX,202H ;MOV CL,0 CMP CL,00H ;CL=0,A通电 JZ AA2 CMP CL,01H ;CL=1,D通电 JZ DD2 CMP CL,02H ;CL=2,C 通电 JZ CC2 CMP CL,03H ;CL=3,B 通电 JZ BB2 JMP LOOP1 ;检测键盘AA2: MOV AL,10H OUT DX,AL CALL Delay2 INC CL JNZ DONEDD2: MOV AL,80H OUT DX,AL CALL Delay2 INC CL JNZ DONECC2: MOV AL,40H OUT DX,AL CALL Delay2 INC CL JNZ DONE BB2: MOV AL,20H OUT DX,AL CALL Delay2 MOV CL,00H ;CL重新置0 ;JZ DONE JMP LOOP1PROGRAM4 ENDPDONE: JMP LOOP1 ;扫描键盘CODE ENDSEND START 五、设计的问题及难点刚开始在实现键盘扫描功能时遇到比较多的问题,如怎么根据行码和列码来判断到底是哪个键被按下,以及键值该如何处理,数字键和功能键又怎么区分等等,在询问同学和老师的过程中了解到了实现的一些方法。在实现直流电机控制速度的时候也遇到了不少问题,起先连怎么把数据送入DAC0832转换处理都不知道,后来到图书馆查阅点资料才理解了。在这里把旧键

温馨提示

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

评论

0/150

提交评论