高手们,帮一下忙!单片机、步进电机应用问题

作者&投稿:权梦 (若有异议请与网页底部的电邮联系)
单片机控制的步进电机驱动技术~

我这儿有一篇论文《步进电机工作原理与编程》不防去看看,4000多字,改改应该可以
网址:http://blog.csdn.net/woodstar123/archive/2006/10/15/1335186.aspx

单片机控制步进电机,学会了这个就可以做一个电动玩具小车了

步进电机的使用主要需要了解电机的节拍,通过IO口向驱动电路输出信号,控制达林顿管导通,比如电机的ABC三相连接P0.0,P0.1,P0.2口,输出1,达林顿管导通,如果是正转三相三拍工作,运行流程A,B,C,循环。程序类似:
SETB P0.0;
LCALL delay;调用延时
CLR P0.0;
SETB P0.1;
LCALL delay;
CLR P0.1;
SETB P0.2
LCALL delay;
CLR P0.2;

如果说按照P0.2 P0.1 P0.0顺序打开和关闭,电机就开始反转了。

如果是三相六拍的,工作步骤有点类似于
A,AB,B,BC,C,CA,(循环),
具体步距角可以看电机本身资料。

我这儿有一段程序,前段时间自己编写的。芯片是AT89C51的,步进电机是三相高速接线方式的。你有兴趣的话可以看看,希望能帮助你。
RS EQU P1.0
RW EQU P1.2
E EQU P1.1
LCD EQU P2
ORG 0000H
AJMP MAIN
ORG 0030H

MAIN: NOP
C0: SETB P1.4
NOP
NOP
NOP
NOP
NOP
NOP

JB P1.4,C1
AJMP C0

;ACALL WRITE_1

C1: ACALL SET1_LCD
ACALL SHOW1
CLR P0.3
AJMP L2
;LCD初始化程序
SET1_LCD:
MOV R5,#01H ;清屏
ACALL WRITE_1
MOV R5,#3CH ;两行显示,5*10点矩阵
ACALL WRITE_1
MOV R5, #06H ;输入模式为移动光标
ACALL WRITE_1
MOV R5,#0CH ;显示开关控制
ACALL WRITE_1
MOV R5,#02H ;光标归位
ACALL WRITE_1
RET

SHOW1:
MOV DPTR,#TAB1
MOV R1,#00H
A1: MOV A,R1
MOVC A,@A+DPTR
MOV R6,A
LCALL WRITE_D
INC R1
CJNE R1,#0AH,A1
RET
SHOW2:
MOV DPTR,#TAB2
MOV R1,#00H
A2: MOV A,R1
MOVC A,@A+DPTR
MOV LCD,A
MOV R6,A
LCALL WRITE_D
INC R1
CJNE R1,#0AH,A2
RET

;写数据子程序
WRITE_D: SETB RS
CLR RW
MOV LCD,R6
CLR E
ACALL CHECK_BF
SETB E
RET
;写命令子程序
WRITE_1: CLR RS
CLR RW
MOV LCD,R5
CLR E
ACALL CHECK_BF
SETB E
RET
;判断是否忙碌子程序
CHECK_BF:
MOV LCD,#0FFH ;此时不接受外来指令
CLR RS ;RS=0,选择指令寄存器
SETB RW ;RW=1,选择读模式
CLR E ;E=0,禁止读/写LCM

;ACALL DELAY10MS
;延时1微秒
SETB E ;E=1,允许读/写LCM
JB LCD.7,CHECK_BF ;忙碌循环等待
RET
DELAY10MS:
MOV R3,#0AH ;外循环10次
DL2: MOV R4,#0FAH ;内循环50次
DL1: NOP
NOP
DJNZ R4,DL1
DJNZ R3,DL2
RET

DELAY3S: MOV R3,#0FFH
DL3: MOV R4,#0FFH
DL5: MOV R5,#66H
DL6: DJNZ R5,DL6
DJNZ R4,DL5
DJNZ R3,DL3
RET

L2: MOV R1,#18H
L1: MOV R2,#82H
L0: MOV R3,#0C0H
L3: ACALL M2
SETB P1.3
JB P1.3,C2
SETB P1.5
JB P1.5,WBI1
DJNZ R3,L3
DJNZ R2,L0
DJNZ R1,L1 ;延时6秒
M20: MOV A,#036H
AJMP M0

C2: ACALL M4
;ACALL SET1_LCD
AJMP M9

M0:MOV R4,#10H ;电机加速时间参数
M12:SETB P0.5
ACALL M5
CLR P0.5
ACALL M5
DJNZ R4,M12
DEC A
CJNE A,#08H,M0
MOV A,#08H
AJMP M13 ;电机加速程序
RET

M5:MOV R7,A ;延时程序
M1: NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,M1
RET ;延时程序

M13:MOV R4,#0FFH ;电机加速时间参数
M14:SETB P0.5
ACALL M15
CLR P0.5
ACALL M15
SETB P0.5
DJNZ R4,M14
DEC A
CJNE A,#07H,M13
AJMP D0 ;电机加速程序
RET

WBI1: AJMP WBI

M15:MOV R7,A ;延时程序
M16:NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,M16
RET

D0: MOV R5,#2H
ACALL M4
D1: MOV R6,#083H
ACALL M4
D2: MOV R4,#0F0H
M6: ACALL M4
SETB P1.3
JB P1.3,C2
ACALL M4
SETB P1.5
JB P1.5,WBI
ACALL M4
DJNZ R4,M6
DJNZ R6,D2
ACALL M4
DJNZ R5,D1 ;延时18秒
AJMP L2 ;gaiguo

M4: SETB P0.5 ;电机稳定运行程序
ACALL M8
CLR P0.5
ACALL M8
SETB P0.5
RET

M8: MOV R7,#07H ;转速参数
M7: NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,M7
RET

M9: MOV A,#05H
M10:MOV R4,#02H ;电机减速时间参数
M17:SETB P0.5
ACALL M18
CLR P0.5
ACALL M18
DJNZ R4,M17
INC A
CJNE A,#0FFH,M10
;MOV A,#08H
AJMP M3 ;电机减速程序
RET

M18:MOV R7,A ;延时程序
M19:NOP
NOP
NOP
NOP
NOP
NOP
NOP

DJNZ R7,M19
RET

WBI:MOV R5,#058H
N1: MOV R6,#55H
N2: MOV R7,#7DH
N3: ACALL M2
SETB P1.5
JB P1.5,WBI
DJNZ R7,N3
DJNZ R6,N2
DJNZ R5,N1
AJMP M20

M2: SETB P0.5
RET

M3: SETB P0.5
ACALL SET1_LCD
ACALL SHOW2

TAB1: DB 53H,79H,73H,74H,65H,6DH,5FH,4FH,4EH,5FH
TAB2: DB 53H,79H,73H,74H,65H,6DH,5FH,4FH,46H,46H

END

步进电机很好玩吗?这么多人问有关这个的问题,小弟也学习学习,,


英语高手们,帮下忙吧~
将灌入模内的巧克力放入温度保持在5摄氏度的冰箱中冷藏定型,20分钟后,待巧克力固化以后即告完成。亲手制作的巧克力便出落得亭亭玉立。把模具翻倒在专业油纸上,巧克力轻松滑落 ,选择喜欢的包装盒,满载心意的浓情巧克力就完工喽 The easiest DIY chocolate steps:1, cuts.The chocolate raw materials (...

DIY电脑组装的高手们帮个忙,我想要组装一台广告公司平面设计专用的,出...
其他的呢看别人回答的 补充下 综合考虑吧 XFX讯景GTX260(GX-260X-AWF)参数 显卡核心 芯片厂商 纠错NVIDIA 显卡芯片 纠错Geforce GTX 260 核心代号 纠错GT200 显卡频率 核心频率 纠错576MHz 显存频率 纠错2000MHz 显存规格 显存类型 纠错GDDR3 显存容量 !!!896MB 显存位宽 !!!448bit 最高分辨率 纠错...

跪求:请大家帮一下忙哦,谁可以帮我搞一份;关于营销的方案急用希望大家帮...
我个人认为!现在的销售已经不单单是质量和服务的竞争!也不仅仅是广告和产品外观的竞争,应该更加体现在你的企业品牌和产品品牌的作用下!首先卖产品要让客户先了解你所在公司的背景!企业精神等.在从情感化的角度来引导消费者到精神层面!以精神来引导消费者!这是销售的最高无形资产!通过无形来贯穿有形!要...

几个问题,帮一下忙
送手电筒回来过桥也要化时间,所以要选一个跑得比较快的。一个很自然的想法就是,每次让跑得最快的A陪着另一个过桥,然后A快速地跑回来,再陪下一位过去,最后所有人就都可以过桥了。 让我们来算一下这要多长时间。为了方便起见,我们把旅行者出发的桥的这一边称为“此岸”,而把旅行者想要到达...

帮一下忙,,,作文600字
有一次,我们班同学俞科添的手不幸骨折了,捆着绷带来上学,老师您特地地为他找了个好座位,并安排几个同学照顾一下他,而且还叫同学们不要碰他的伤手。老师那关切的眼神,让我看在眼里敬在心里。一次又一次,好多好多的一次又一次。老师有一种笑,宽容的笑,慈祥的笑。老师有一种爱,鼓励的爱,...

大家可不可以帮一下忙啊?我们老师刘寒假作业的时候说全锡林浩特市的小学...
我说,那是不可能的,等待你把钱挣到手了,爸爸妈妈的牙还能啃得动青包米吗?等你有时间了,想带着爸爸妈妈去周游世界,他们还能上得去飞机吗?等你有……爸爸妈妈还……当我们静下心来好好的想一想时,对爸爸妈妈的孝心,其实不就是在我们平时的“滋润”中完成的吗?父亲节的时候,你给咱爸买...

电脑配置…修改…。看下怎麽装合适。高手们。帮下忙哈。
内存现在不用加的,4G非常够用了,以后再加也行,你要是用4G的,需要装WIN7(64位)旗舰版的,不然,你只能用到不到2G的内存!显卡是该换换了,你这个显卡是属于入门级别的显卡,不是很好 我给你个近期的显卡性能表,希望对你有帮助,你可以自己选择一下,本人推荐GTX550TI,这个显卡很火的 ...

这个挺难的 高手们 帮下忙啊 帮忙解释一下 每一句都要 ...thx...
include <stdio.h> \/\/包含标准输入输出头文件 include <conio.h> \/\/getch需要这个头文件 int leap (int year)\/\/leap函数:输入year输出1(是闰年),0(不是闰年){if(year%4==0&&year%100!=0||year%400==0)\/\/判断如果(year对4取余为0并且year对100取余不为0或者year对400取余为0)r...

拜托,电脑高手们帮帮我的忙吧!
点击下一步,选择一个恢复点,启动恢复程序。 4. 使用Recovery Console 如果Windows XP启动问题比较严重。你可以使用Windows XP CD启动系统,然后使用一个名为恢复控制台的工具。具体做法如下: 在故障电脑的CD-ROM驱动器中插入Windows XP CD,然后按[Ctrl][Alt][Delete]键重新启动计算机。一旦系统从CD上启动后,只要...

化学高手们,帮小妹个忙,多谢啦!
答案是AD,因为苯如果存在双键,可以使溴水褪色,而邻二溴苯就应该有两个结构,(连在相邻单键两个碳原子上及双键两个碳原子上)。虽然苯不存在单双键交替的结构,其中的键是一种介于单键与双键之间特殊的键,易取代难加成,但仍属于不饱和键,不代表不能加成,在特殊条件下能与H2 Cl2等物质加成。

东乌珠穆沁旗13176444828: 单片机控制的步进电机不转 -
红阙冻干: 如果是感觉到里面的转子在转动了,可是外面的外芯就是不转,可能是因为你的延时太短,造成步进电机扭转力小,转不动.可将 delay()延时增大.比如delay(50000).另外你的应该是四项电机,使用a->ab->b->bc->c->cd-d-da比较好,这样不禁分频比增加,步进电机的扭矩也增加了.相应uchar step_table[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};

东乌珠穆沁旗13176444828: 单片机控制步进电机的程序编写 -
红阙冻干: #include <REGX51.H> #define uchar unsigned char #define uint unsigned int sbit s1=P3^5; sbit s2=P3^6; sbit s3=P3^7; uchar keyval;void delayms(uchar z) { uchar i,j; for (i=z; i>0; i++) for(j=110;j>0; j++); } void delay() { uint k; for(k=0;k<2000;k++); } ...

东乌珠穆沁旗13176444828: 单片机用按键控制步进电机按下正转松开反转! 单片机按键按下时步进电机正转松开时反转,按第二个按 -
红阙冻干: 步进电机与流水灯程序差不多,例如右流水灯解释,从左至右流动就是正转,右至左流动就是反转了(这相当于切换数组),进入中断就是停止了(这个没有要求,停止方法也有其他),这程序相当简单.

东乌珠穆沁旗13176444828: 求单片机C语言高手以下是计算步进电机速度的程序,帮忙详细的解释一下越详细越好. -
红阙冻干: RunSpeed应该是延时时间,用来控制速度的,RunSpeed值越大,步进电机速度越低. SPEED[0]=(1000*6/RunSpeed/100)+48; SPEED[1]=1000*6/RunSpeed%100/10+48; SPEED[2]=1000*6/RunSpeed%10+48; 以上三个式子是求速度的百位,十位和个位,后面+48即加30H=48用来转换成ASCII码的.说的对,哥们就采纳下吧~~

东乌珠穆沁旗13176444828: 51单片机控制步进电机程序.在线等高分,请会写的高手大侠写出来. -
红阙冻干: 我上周刚做的这个实验 成功拉,给你参考一下吧 这可是我当时辛辛苦苦编出来的啊,不过我用的是L298驱动的 和ULN2003一样,你把它换成2003就行拉#include <AT89X51.H> unsigned char code table[]=; unsigned char temp,temp_old; ...

东乌珠穆沁旗13176444828: 求单片机控制步进电机简单的c程序
红阙冻干: 给你一段简单的程序代码,控制步进电机的,不过你要好好看看程序的编写,以适应你的硬件(主要是连线),你可以在实现这个的基础上实现你所说的目标,个人觉得你参考这个程序然后自己实现你所说的功能比较好: #include &lt;reg52.h&...

东乌珠穆沁旗13176444828: 单片机控制步进电机驱动器 -
红阙冻干: 你要看一下这个驱动器的信号是独立的还是共电源或共地.如果是独立的或共5V电源的,那么这样接没有问题,如果是共地的,那么需要反过来,CLK+ 和DIR+接IO口,负端接地.还有,你的驱动器有EN口,这是不是使能信号,看看说明书,或许有这个信号才能有效.

东乌珠穆沁旗13176444828: 求单片机控制步进电机正反转圈数程序....哪位高手教教我,在线等... -
红阙冻干: 你先定义正反向控制数组 void control() { if(温度>=25) do { 正转(圈数) }while(!(圈数=8)) if(温度do { 反转(圈数) }while(!(圈数=8)) } void display(uint temp) { 尽量避免浮点数运算 . 显示数码管要专门用一位显示一个点 } void main() { system_init() while(1) { control(); display(tem); } } 架构大概是这样了,你什么都没给,帮你写了 你还得改,还是自己参照原理图写吧.望采纳,并祝早日成功!

东乌珠穆沁旗13176444828: 大神们,求帮忙.单片机通电之后,步进电机自动转动90度,然后再反转回去.不用按键给信号. -
红阙冻干: 首先要弄清转90度是多少步,假设4相步进电机转100步 a=100; while(a{ P0=8; delayms(2);P0=4;delayms(2); P0=2; delayms(2); P0=1; delayms(2);a-=4;} a=100;while(a{P0=1; delayms(2);P0=2; delayms(2);…… }

东乌珠穆沁旗13176444828: 单片机控制步进电机的硬件电路图以及软件控制流程图 -
红阙冻干: 简单的两相步进电机驱动用L297加L298这两个芯片就很简单,百度一下就有很多成熟的电路图了,控制也很简单,使能,然后定时器输出一定频率方波即可,频率越快电机转动越快

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网