导航:首页 > 操作系统 > 单片机步进电机正反转

单片机步进电机正反转

发布时间:2022-01-12 03:07:46

单片机步进电机的,就是那个控制正转反转的代码怎么来的

这个看不懂。
用89S52的计数器2,设置为可编程时钟输出控制伺服或步进电机特方便
12M的晶振
振荡频率/(4*(65536-初装值))

汇编代码:
MOV C9H,#00000010B ;定时器2设为时钟输出
MOV CAH,#F9H ;T2寄存器低8位装入初值
MOV CBH,#FFH ;T2寄存器高8位装入初值
MOV C8H,#00000100B ;开定时计数器T2
运行此代码P1.0口输出500k方波
改变初装值改变速度
关闭脉冲输出命令,电机停止转动
MOV C8H,#00000000B ;关定时计数器T2

加入停止开关和运转指示灯

MOV C9H,#00000010B ;定时器2设为时钟输出
MOV CAH,#F9H ;T2寄存器低8位装入初值
MOV CBH,#FFH ;T2寄存器高8位装入初值
MOV C8H,#00000100B ;开定时计数器T2
CLR P1.3 ;开指示灯
1: JB P1.5,1;检测停止按键
MOV C8H,#00H ;关定时计数器T2
SETB P1.3 ;关指示灯

加入启动、停止、方向转化开关和运转指示灯
;P1.0运行脉冲信号输出
;P1.1方向信号
;P1.2(脱机使能信号)不明白你要干什么用
;P1.3运转指示灯
;P1.4启动按键开关
;P1.5停止按键开关
;P1.6方向按键开关
变初装值 0000H—FFFFH输出频率50HZ—3MHZ之间自由设定

MOV C9H,#00000010B ;定时器2设为时钟输出
MOV CAH,#F9H ;T2寄存器低8位装入初值
MOV CBH,#FFH ;T2寄存器高8位装入初值
KGJC:
JNB P1.4,KS;检测启动按键
JNB P1.5,TZ;检测停止按键
JNB P1.6,HX;检测方向按键
AJMP KGJC
TZ:MOV C8H,#00H ;关定时计数器T2
SETB P1.3 ;关指示灯
AJMP KGJC
KS:MOV C8H,#03H ;开定时计数器T2
CLR P1.3 ;开指示灯
AJMP KGJC

㈡ 步进电机正反转的单片机程序问题

到我的文库里去下一个,你只需要在加个定时器T0/T1就行了

㈢ Proteus的51单片机控制步进电机,实现电机正反转

Proteus的51单片机控制步进电机,一般是控制其相序分配的顺逆从而控制正反转,一般而言,步进电机相序分配可以做成一个数组比如step[]={0x03,0x06,0x0c,0x09},这样来说可以假设P0口是步进电机控制口,那么可以按如下方式来控制:
while(1)
{
for(i=0;i<4;i++)
{
if(fx==1)P0=step[i]; //正向
else P0=step[3-i]; //反向
delay(x); //x大小决定电机速度。

㈣ 单片机怎样实现步进电机的正反转c程序

不用按键的话,用个简单的延时程序,时间到了然后取反就可以了。这个主要是对51端口的控制,很简单的,自己试着写一下。写出来的东西才是自己的!

㈤ 高分求51单片机驱动步进电机正反转程序

假如用P0口的P0.0,P0.2控制A'B相,使能用P0.3,p0口不控制其他的了吧
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar []={0x0}

{

}
先给你个视频教程,我有时间再给你编写,不好意思了http://v.youku.com/v_show/id_XMTkyNDMyNTEy.html

㈥ 单片机控制步进电机正反转,步进电机42步进电机 驱动tb6560

用TPC8-8TD可以直接输出信号到步进电机驱动器,实现步进电机的自动控制。采用表格设置汉字显示方式设置需要的运行功能。下图是接线原理图:

这个控制比单片机方便多了,10分钟即可设置一套基本的步进动作的控制。

㈦ 51单片机,步进电机怎么实现循环正反转

以下程序是我在实验中自己编写的,几乎全部都有详细注释,相信学过单片机的同学完全可以轻易读懂。
读者可进行一些修改,比如我使用的都是跳转指令,在进入加减速循环中读者完全可以改成调用指令。电机速度也可修改为无上下限。
并且判断按键过程也可有自己的方法,我的判断按下松开可能会比较麻烦。
数表中我设置的是每个脉冲转过9°,大家也可按照实际需要修改自己的数表。
这个程序我是参考了《单片机实用系统设计与仿真经典实例》(主编:周景润 刘晓霞)的P25,读者有兴趣可以去图书馆借阅此书。

ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV 30H,#05H ;加减速速度控制,控制延时循环次数(初值)
MOV DPTR,#TAB1 ;查表法对P2赋值
MOV R0,#03H ;P2初值
MOV R4,#00H ;查表指针值
MOV P2,R0 ;赋值
WAIT: MOV P0,#0FFH ;P0需先输出一个1才可输入
JNB P0.0,SONG3 ;检测按键是否按下,SONG的意思是按键是否松开,否则程序会混乱
JNB P0.1,SONG4 ;程序中SONG均是上述意思
SJMP WAIT ;如果不按键就不启动
SONG3: JB P0.0,ZHENG ;进入正转
SJMP SONG3 ;
SONG4: JB P0.1,FAN ;进入反转
SJMP SONG4 ;
ZHENG: MOV R4,#01H ;开始查表
LOOP1: JB P0.1,YUNXING1 ;检测是否要反转,如果未按反转键就正常运行
SONG1: JNB P0.1,FAN ;按下反转松开后进入反转
SJMP SONG1 ;
YUNXING1:MOV A,R4 ;查表
MOVC A,@A+DPTR ;
MOV P2,A ;
ACALL DELAY ;进入延时程序控制电机速度
JB P0.3,COOL1 ;检测是否按下减速按键,如果未按下再检测是否按下加速按键
SONG5: JNB P0.3,DOWN1 ;按下后进入延时程序中修改循环次数
SJMP SONG5 ;
COOL1: JB P0.2,NOMAL1 ;检测是否按下加速按键,未按下就正常运行
SONG6: JNB P0.2,UP1 ;按下加速键进入延时程序中修改循环次数
SJMP SONG6 ;
NOMAL1: INC R4 ;查下一个数据
CJNE R4,#09H ,LOOP1;表中数据查完一遍后将R4值复位,如未查完就不复位R4
SJMP ZHENG ;使正转循环
FAN: MOV R4,#07H ;反转R4初值
LOOP2: JB P0.0,YUNXING2 ;检测是否按下正转按键,如未按下正常运行反转程序
SONG2: JNB P0.0,ZHENG ;按下正转后松开按键进入正转程序
SJMP SONG2 ;
YUNXING2:MOV A,R4 ;开始查表
MOVC A,@A+DPTR ;
MOV P2,A ;
ACALL DELAY ;进入延时程序控制电机速度
JB P0.3,COOL2 ;检测是否按下减速按键如未按下就检测是否按下加速按键
SONG7: JNB P0.3,DOWN2 ;按下后进入延时程序中修改循环次数
SJMP SONG7 ;
COOL2: JB P0.2,NOMAL2 ;检测是否按下加速按键,未按下就正常运行
SONG8: JNB P0.2,UP2 ;按下后进入延时程序中修改循环次数
SJMP SONG8 ;
NOMAL2: DEC R4 ;循环查表
CJNE R4,#00H,LOOP2 ;数据查完一遍后复位重新查
SJMP FAN ;反转循环
DELAY: MOV R6,#05H ;
DD1: MOV R5,#080H ;
DD2: MOV R7,#05H ;
DD3: DJNZ R7,DD3 ;
DJNZ R5,DD2 ;
DJNZ R6,DD1 ;固定延时
DJNZ R1,DELAY ;通过改变延时程序的循环次数来控制电机速度
SPEED: MOV R1,30H ;每次循环都将速度值放在R1中
SJMP BACK ;
DOWN1: INC 30H ;速度减,因为循环次数+1
CJNE R1,#10H,NOMAL1;速度下限10,如果不到10可继续减速
MOV 30H,#10H ;如果达到下限,无法减速,始终是10
SJMP NOMAL1 ;返回正转循环中
UP1: DEC 30H ;速度加,因为循环次数-1
CJNE R1,#01H,NOMAL1;速度上限1,如果不到1可继续加速
MOV 30H,#01H ;如果速度到达上限,不可再加速,始终是1
SJMP NOMAL1 ;返回正转循环
DOWN2: INC 30H ;速度减,因为循环次数+1
CJNE R1,#10H,NOMAL2;速度下限10,如果不到10可继续减速
MOV 30H,#10H ;如果达到下限,无法减速,始终是10
SJMP NOMAL2 ;返回反转循环中
UP2: DEC 30H ;速度加,因为循环次数-1
CJNE R1,#01H,NOMAL2;速度上限1,如果不到1可继续加速
MOV 30H,#01H ;如果速度到达上限,不可再加速,始终是1
SJMP NOMAL2 ;返回反转循环中
BACK: RET ;延时子程序返回
TAB1: DB 00H,02H,06H,04H
DB 0CH,08H,09H,01H,03H ;控制各项通电顺序的数值表
END ;结束

㈧ 单片机控制步进电机正反转程序

#includeunsignedchari[]={0x00,0x01,0x02,0x04,0x08};voiddelay(unsignedints){while(s--);}main(){while(1){unsignedchara;for(a=1;a0;a--){P2=i[a];delay(50000);}}}记得给好评吆、、、

㈨ 单片机中的五线四相步进电机可以通过编程,实现正反转么

当然可以,abcd顺序加电控制是正转的话,adcb顺序加电就是反转了。任何步进电机都是如此控制正反转的。

㈩ 51单片机控制步进电机正反转原理

单片机控制步进电机正反转原理,五一单片机的控制步进电机的正反转是是根据你的需要空控制

阅读全文

与单片机步进电机正反转相关的资料

热点内容
求知课堂python2020 浏览:260
kafka删除topic命令 浏览:759
phpsql单引号 浏览:86
英雄联盟压缩壁纸 浏览:452
办公app需要什么服务器 浏览:628
安卓服务器怎么获得 浏览:808
空调压缩机冷媒的作用 浏览:781
淘宝app是以什么为利的 浏览:657
java提取图片文字 浏览:924
我的世界手机版指令复制命令 浏览:35
java判断字符串为数字 浏览:926
androidrpc框架 浏览:490
云服务器essd和ssd 浏览:524
家用网关的加密方式 浏览:3
怎么从ppt导出pdf文件 浏览:973
换汽车空调压缩机轴承 浏览:845
平板怎么登录安卓端 浏览:197
图像拼接计算法 浏览:257
怎么打开饥荒服务器的本地文件夹 浏览:293
usb扫描枪编程 浏览:675