步进电机角度控制(一)

上传人:博****1 文档编号:494871569 上传时间:2023-12-06 格式:DOCX 页数:13 大小:85.59KB
返回 下载 相关 举报
步进电机角度控制(一)_第1页
第1页 / 共13页
步进电机角度控制(一)_第2页
第2页 / 共13页
步进电机角度控制(一)_第3页
第3页 / 共13页
步进电机角度控制(一)_第4页
第4页 / 共13页
步进电机角度控制(一)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《步进电机角度控制(一)》由会员分享,可在线阅读,更多相关《步进电机角度控制(一)(13页珍藏版)》请在金锄头文库上搜索。

1、课程设计课程名称微型计算机控制技术题目名称步进电机角度控制(1)学生学院自动化学院专业班级自动化(4)班学号学生姓名指导教师2012年6月26系统设计说明1. 硬件设计本次设计要求通过键盘按键实现对步进电机的转动次数和每次转动的角度的控制,并通过数码管显示出来。本方案中通过按键对步进电机的转动角度进行设定,给各个按键设置不同的键值。按下按键时,给8255A一个信号设定步进电机下一步的动作。8086通过8255A的数据总线读取该信号,并作出反应,通过给8255A一系列的指令驱动其工作,从而驱动步进电机和LED2. 软件设计3. 显示模块设计说明:为使显示程序具有通用性和灵活性,在8086内设置一

2、个显示缓冲区,显示缓冲区的每个单元与LED的各位一一对应。当主程序需要显示,只需将要显示的字符送入显示缓冲区,然后调用显示子程序。显示子程序的任务则是逐一取出显示缓冲区中的字符、查字形表转换成相应字型码,然后通过字段口输出显示。显示模块是用四位七段数码管来显示转动次数和每次转动的角度。给八个按键设置不同的子程序,当按下按键时,根据事先设定好的各个按键对应的转动角度的值输出到数码管进行显示。步进电机模块设计说明:在此设计中,采用的是八拍步进电机。步进电机控制程序就是完成环形分配器的任务,从而控制电动机的转动,以达到控制转动角度和位移的目的。控制模型可以以立即数的形式一一给出。对于步进电机模块的程

3、序设计采用循环程序设计方法。先把转动的次数和角度的控制模型存放在内存单元中,然后再逐一从单元中取出控制模块并输出。首先启动,按下按键选择步进电机的角度,然后读入转动的控制模型驱动步进电机转动。程序设计流程图走90度(显示角度)3秒后再次进入三、心得体会这是大学最后一次的单片机课程设计了,这一次我抽到的是86,用C语言去设计的。从中我发现相对汇编语言,C语言有很多优点。经过不断地去编程加载,我复习了C语言编程,同时懂得如何在单片机上实现C语言编程。数码管,键盘和异步电动机,是三个不一样的模块,从实现的过程中,巩固了很多知识。最重要的是,发现问题,去寻找问题的缘由,从而解决。四、主要参考文献计算机

4、控制技术实验指导书,李传芳等编。51单片机C语言教程,郭天祥等编。电子工业出版社。微型计算机原理及应用,何小敏等编。机械工业出版社。任务一:编程控制步进电机,顺时针方向行走180度(角度显示在七段LED上)3秒后行走45度(显示角度)3秒后行循环。程序代码:STACKSEGMENTSTACKDW256DUP()STACKENDSDATASEGMENTTABLE1DB10H,30H,20H,60H,40H,0C0H,80H,90HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMAIN:MOVAL,81H,OUT63

5、H,ALMOVAH,30HMOVBX,0FF00HMOVDX,01HCALLDISPA0:MOVCX,0008HMOVSI,OFFSETTABLE1A1:MOVAL,SIOUT60H,ALCALLDALLYINCSIDECAHJNZL1CALLDALLCMPBX,0FFHJNZAMOVAH,30HXORBX,0FFFFHMOVDX,01HJMPL1A:CMPBX,OFFOOHJNZA8MOVAH,0CHXORBX,0FF00HMOVDX,02HCALLDISPJMPL1A8:MOVAH,18HXORBX,0FFHMOVDX,03HCALLDISPL1:LOOPA1JMPA0DISP:CMPDX

6、,01HJNZD1MOVAL,0EFHOUT62H,ALMOVAL,0FCHOUT61H,ALCALLTIMEMOVAL,0DFHOUT62H,ALMOVAL,0FEHOUT61H,ALCALLTIMEMOVAL,0BFHOUT62H,ALMOVAL,60HOUT61H,ALCALLTIMERETD1:CMPDX,02HJNZD2MOVAL,0EFHOUT62H,ALMOVAL,0B6HOUT61H,ALCALLTIMEMOVAL,0DFHOUT62H,ALMOVAL,66HOUT61H,ALCALLTIMERETD2:MOVAL,0FEHTIME:TIME1:TIME2 :DALLY:A4:

7、OUT 62H,ALMOV AL,0FCHOUT 61H,ALCALL TIMEMOV AL,0DFHOUT 62H,ALMOV AL,0F6HOUT 61H,ALCALL TIMERETPUSH AXPUSH CXMOV AX,0010HDEC AXJNZ TIME2LOOP TIME1POP CXPOP AXRETPUSH CXMOV CX,0100HPUSH AXPOP AXLOOP A4POP CXRET显不在七段LED上显不出来。PUSHCXMOVCX,0002HT1:MOVAX,0010HT2:DECAXJNZT2LOOPT1POPCXPOPAXRETDALL:PUSHCXPUSH

8、AXMOVCX,0300HA6:MOVAX,056CHA7:DECAXCALLDISPJNZA7LOOPA6POPAXPOPCXRETCODEENDSENDSTART任务二:完成A/D转换实验并把转换结果DALLY1:PUSHAXMOV AL,0FEHOUT 62H,ALCALL TIMEMOV AL,0FFHOUT 62H,ALPOP AXMOV BX,OFFSET TAB1PUSH AXAND AX,00F0HSHR AL,4ADD BX,AXMOV AL,BXOUT 61H,ALMOV AL,0DFHOUT 62H,ALCALL TIMEMOV AL,0FFHOUT 62H,ALPOP

9、AXJMP STARTTIME: PUSH AXPUSH CXMOV CX,0020HT1:MOV AX,0030HT2:DEC AXJNZ T2LOOP T1程序代码:STACKSEGMENTSTACKDW64DUP()STACKENDSDATASEGMENTTAB1DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0FEH,0F6H,0EFH,3EH,9CH,7AH,9EH,8EHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,ALOUT00H,ALCALLDALLYINAL,00HMOVBX,

10、OFFSETTAB1PUSHAXMOVAL,80HOUT63H,ALPOPAXPUSHAXANDAX,000FHADDBX,AXMOVAL,BXOUT61H,ALPOPCXPOPAXRETDALLY:PUSHCXPUSHAXMOVCX,0004HA5:MOVAX,005cHA6:DECAXJNZA6LOOPA5POPAXPOPCXRETCODEENDSENDSTART任务三:实现:(1)定义键盘按键:3个功能键:设置SET清零CLR开始START(2)显示器上三位显示每次行走的角度;(3)通过键盘按键,设置步进电机行走的最大角度值:按SET键后,使用键盘设置角度,再按一次STARTt入;按CL

11、R清零返回原位。(4)转动电位器启动步进电机跟随转机也回原位。步进电机角度能显示分辨率为15度。程序代码:#include#definepa0x60#definepb0x61#definepc0x62#definecom0x63#defineuintunsignedint#defineucharunsignedcharucharduan尸0xfc,0x60,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xef,0x3e,0x9c,0x7a,0x9e,0x8eucharwei=0xef,0xdf,0xbf,0x7f;ucharmoto尸0x90,0x80,0xc0,0x

12、40,0x60,0x20,0x30,0x10;ucharbuff=0,0,0,0;intflag=1;intdushu,max=0;Voiddelay(intt)Inta,b;For(a=t;a0;a-)动,到位后停止;电位器回原位步进电For(b=110;b0:b-);Void dis(int a,int b,int c,int d)Outp(pc,wei3);Outp(pb,duana);Depaly(15)Outp(pc,wei2);Outp(pb,duanb);Depaly(15)Outp(pc,wei1);Outp(pb,duanc);Depaly(15)Outp(pc,wei0);

13、Outp(pb,duand);Depaly(15)Void keyscan1()Uchar temp,i;Outp(pc,0x7f);Temp=inp(pc);Temp=temp&0x0c;If(temp=0x08)dushu=1;Buff0=buff0+1;If(buff09)buff0=0;If(temp=0x04)dushu=5;Buff1=buff1+1;If(buff19)buff1=0;Outp(pc,0xbf);Temp=inp(pc);If(temp=0x88)dushu=2;flag=3;If(temp=0x04)dushu=6;Buff2=buff2+1;If(buff29)buff2=0;Outp(pc,0xdf);Temp=inp(pc);Temp=temp&0x0c;If(temp=0x08)dushu=3;If(temp=0x04)dushu=7;flag=1;Outp(pc,0xef);Temp=inp(pc);Temp=temp&0x0c;If(temp=0x08)dushu=4;flag=2;If(temp=0x04)dushu=8;Buff3=buff3+1;If(buff39)buff3=0;delay(150);Voidkeyscan()Uchartemp;Outp(pc,0x00

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 市场营销

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号