STC89C52RC控制MG995舵机循环转,总是一给电就只动一下
我把循环向左,中间,向右转的程序烧写到STC89C52RC,但是一通电,电机只动了一个很小的角度,好像只要给电就会这样动一下,
根本没有按照程序转动啊,我的晶振是11MHZ,我换成20MHZ的也不行,舵机是MG995 13kg扭力的,是我的程序有问题?还是什么地方不对?
我还是个菜鸟,希望大家帮忙看看我的程序,谢谢!
提供我买的舵机和STC89C52开发板的链接作为参考:
MG995舵机:
http://item.taobao.com/item.htm?spm=0.0.0.34.ZoVBtW&id=16919324874
STC89C52RC开发板:
http://item.taobao.com/item.htm?spm=0.0.0.34.nrfdfR&id=10488508499
以下是我的全部程序:
;========一个伺服电机的连续动作===
ORG 0000H
JMP START
ORG 000BH
JMP TIMER0
;=================================
; 主程序
;=================================
START:
MOV R1,#15
MOV TMOD,#00000001B ;设定计时模式1,如图6.5所示
MOV TH0,#0FFH ;设定0.1ms中断1次
MOV TL0,#0A4H
SETB EA ;中断使能(打开中断总开关)
SETB ET0 ;计时/计数器0的中断使能
SETB TR0 ;计时/计数器0开始工作
;=================================灰色部分START
LOOP:
MOV R1,#15 ;中间
CALL DELAY ;停1s
MOV R1,#21 ;顺时针到底
CALL DELAY
MOV R1,#15 ;中间
CALL DELAY
MOV R1,#9 ;逆时针到底
CALL DELAY
JMP LOOP ;跳回LOOP
;=================================灰色部分END
;计时/计数器0中断子程序
;=================================
TIMER0:
PUSH ACC ;将ACC寄存器的数据放置于堆栈区
CLR TF0 ;将TF0中断请求先清0
MOV TH0,#0FFH ;手动载入TH0及TL0的值
MOV TL0,#0A4H ;隔0.1ms中断
INC R0 ;中断一次就把R0加1
CYCLE: CJNE R0,#200,SERVO1 ;R0若不为200,则跳至SERVO1执行
MOV R0,#0
SETB P2.0
JMP GOBACK
SERVO1: MOV A,R0
XRL A,R1 ;判断R0是否等于R1
JNZ GOBACK ;若R0不等于R1,则结束中断子程序
CLR P2.0 ;若R0等于R1,则将输出设为低电平
GOBACK: POP ACC ;将ACC寄存器的数据从堆栈区取回
RETI
;=================================
;延时子程序(延时1s)
;=================================
DELAY: MOV R5,#15 ;重复15次
DL1: MOV R6,#250
DL2: MOV R7,#200
DL3: DJNZ R7,DL3
DJNZ R6,DL2
DJNZ R5,DL1
RET
END
没人会吗?
自己弄好了,我这个代码是书上的,书上是以AT89S51为例,后来我换成AT89S52就好了,能转了,但是之前用STC的89C52就不行,就有上面的问题,很奇怪,这俩应该没大区别啊,咋得到的结果差距那么大呢?谁知道是咋回事儿吗?
我也是相同的问题,舵机MG995、芯片STC89C52RC样板2天出货都和你一样,无论我怎么设置PWM,舵机就是不按我想要的角度转,还来回摆动,我纠结死了,小编,你就只是换了芯片就行了的吗?
我的连摆动都不摆动 就自动复位到九十度位置 就停了 愁人哪
跪求大仙 指点一二
MC_51 单片机的TF0应该是硬件自动清零的,,不需要软件清零,另外,从程序来看左右摆动是正确的,,你想怎么摆,就修改这个程序嘛
我昨晚弄了一晚上也是这个问题 你现在知道没
我也在迷茫为什么不能用
http://bbs.elecfans.com/jishu_352687_1_1.html这是我发的帖子,之前我也是和你们一样,现在我可以控制了,希望对你们有帮助
发现舵机控制的确是个大问题
STC的单片机时钟分频不是12,与AT89C5x系列不一样的,这样就时序不对了
我也是这种情况,用示波器发现一插舵机波形就变了
小编,问题解决了吗?我现在也遇到这个问题了,大神求教啊!
是不是接口问题啊 有的接口接上是不好使的 好像街上波形就变了 但是应该有以一组信号端口是外接上拉电阻的 用那组接口试验
io口瞬间上电是高电平。有的单片机是高阻状态。
io口瞬间上电是高电平。有的单片机是高阻状态。
这个好,已经得到解决,谢谢!