步进电机转速控制Word格式.docx
《步进电机转速控制Word格式.docx》由会员分享,可在线阅读,更多相关《步进电机转速控制Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
P3=Rev_Change;
elseP3=Ffw_Change;
voidMotor_Control()
ad_display();
if(receivebuf[0]>
receivebuf[1])
if(sub<
1)
motor_rev(10);
elseif((sub>
=1)&
&
(sub<
=3))
motor_rev(5);
3)&
(sub<
=5))
motor_rev
(1);
elseif(receivebuf[0]<
motor_ffw(10);
motor_ffw(5);
motor_ffw
(1);
elseP3=0xf0;
/*********************************************
定时中断服务程序
**********************************************/
voidtimer1_int(void)interrupt3
TH1=0xdc;
TL1=0x00;
ms10_count++;
ms30_count--;
其中sub=abs(receivebuf[0]-receivebuf[1]);
ad_display函数得出AD两个通道receivebuf[0]和receivebuf[1]的值,根据这两个值的差去控制步进电机转速。
用定时器1控制转速,可是电压值在LCD上显示是有差的,但步进电机就是不转!
这是为啥呢?
UID
129693
帖子
3
精华
0
积分
阅读权限
10
在线时间
1小时
注册时间
2010-11-27
最后登录
2011-3-18
查看详细资料
TOP
8051
管理员
版主
∙个人空间
∙发短消息
∙加为好友
∙当前离线
2#大中小发表于2011-3-210:
22
只看该作者
;
/********************************************************************************
*
标题:
xl系列单片机实验仪演示程序LCD1602显示步进电机控制器速度方向圈数可调*
文件:
lcd1602dj.asm
*
日期:
2006-1-5
版本:
3.0(试验通过版)可用xl600-xl1000单片机综合试验仪试验
*
邮箱:
sxj1974@
网站:
********************************************************************************
描述:
LCD1602显示步进电机控制器速度方向圈数可调
K1-启动与停止步进电机运行;
K2-设定步进电机运行圈数(1-20圈)
K3-设定步进电机转动方向;
K4-设定步进电机运行速度
步进电机的转速控制分16档,数字越小,转速越快。
7.5度步进电机;
周期7.5×
4=30度,电机转动一圈需12个周期?
资源:
p1.0-p1.3接反向器74ls14,输出后接步进电机p3.7接小喇叭提供按键音
p1.4-p1.7接端口按键:
lcd1602插入实验仪
*【版权】Copyright(C)深圳市学林电子有限公司
*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
【技术支持】请访问
官方论坛
********************************************************************************/
K1
EQU
P1.4
K1键
K2
P1.5
K2键
K3
P1.6
K3键
K4
P1.7
K4键
BA
P1.0
步进电机A端
BB
P1.1
步进电机B端
BC
P1.2
步进电机C端
BD
P1.3
步进电机D端
BEEP
P3.7
;
蜂鸣器
RS
EQU
P2.0
RW
P2.1
EN
P2.2
LCD_X
2FH
RATE
32H
转速档次
D_BUF1
33H
显示缓存1
D_BUF2
34H
显示缓存2
TEMP
35H
临时过渡
TURN_NUM
36H
存放运行圈数
CYCLE
37H
存放周期数
--------------------------------------------
ORG
0000H
JMP
MAIN
000BH
INTT0
0080H
---------------------------------------------
MAIN:
MOV
SP,#60H
ACALL
SET_LCD
显示启动画面
R4,#0FH
MAIN1:
R5,#25
延时5S
CALL
DELAY2
DJNZ
R4,MAIN1
SET_LCD0
CLR
20H.0
转速设置加减标记
SETB
20H.1
正转、逆转标记
20H.2
圈数设置加减标记
20H.3
运行与停止标记
20H.4
R0,#00H
R1,#00H
MAIN2:
TURN_NUM,#5
默认转5圈
A,TURN_NUM
LCD_X,#04H
DATA_CONV
显示圈数
SET_LCD1
显示STOP
R2,TURN_NUM
CYCLE,#12
12个周期,电机转一圈。
RATE,#08H
预设为中速
A,RATE
LCD_X,#0DH
ACALLDATA_CONV
显示转速比例
P1,#0F0H
TMOD,#01H
TL0,#33H
TH0,#0F5H
EA
ET0
M_LOOP:
A,CYCLE
CJNEA,#00H,LOOP0
CYCLE,#12
DEC
R2
A,R2
LCD_X,#04H
显示剩余圈数
DATA_CONV
CJNE
R2,#00H,LOOP0
TR0
R2,TURN_NUM
重新送圈数
SETB20H.3
STOP
SET_LCD1
LOOP0:
JB
20H.1,LOOP0A
SET_LCDR
<
LOOP0B
LOOP0A:
SET_LCDF
>
LOOP0B:
K1,LOOP1
JNB
20H.3,LOOP0C
SET_LCD2
RUNNING
TR0
启动步进电机运行
停止运行标记
BEEP_BL
LOOP1
LOOP0C:
停止步进电机运行
启动运行标记
M_LOOP
LOOP1:
K2,LOOP2
20H.2,LOOP1B
A,TURN_NUM
增加圈数
INCA
TURN_NUM,A
显示设定圈数
A,#20,LOOP1A
20H.2
LOOP1A:
LOOP2
LOOP1B:
减少圈数
DECA
A,#01H,LOOP2
SETB20H.2
LOOP2:
K3,LOOP3
换向
STOP标志
CPL
换向标志
20H.1,LOOP2A
根据换向标志来显示转动方向
SET_LCDR
LOOP2B
LOOP2A:
SET_LCDF
LOOP2B:
CALLBEEP_BL
换向后,从设定值开始运行
LOOP3:
K4,LOOP4
20H.4
在运行过程调整速率时,要使步进电机先停止转动
20H.0,LOOP5
mov
temp,CYCLE
A,RATE
减速过程
RATE,A
ACALLDATA_CONV
A,#10H,LOOP4
20H.0
LOOP4:
LOOP5:
加速过程
A,#01H,LOOP6
SETB20H.0
LOOP6:
步进电机正转走一步子程序
FFW:
A,R0
DPTR,#TABLE_F
MOVC
A,@A+DPTR
A,#00H,FFW1
CYCLE
每8步为一个周期
FFW2
FFW1:
P1,A
INC
R0
FFW2:
RET
步进电机逆转走一步子程序
REV:
DPTR,#TABLE_R
A,#00H,REV1
REV2
REV1:
REV2:
中断服务子程序
中断定时2ms
20H.1=1正转,20H.1=0反转
INTT0:
PUSH
ACC
CLR
MOV
SETB
JNB
20H.4,INTT0B
K4键按下时,停止步进电机运行
INC
R3
B,R3
中断次数来调整延时时间的长短
CJNE
A,B,INTT0