标题: 蓝牙控制舵机问题 [打印本页]

作者: ereerr    时间: 2017-5-18 20:56
标题: 蓝牙控制舵机问题
这程序我理想的是在蓝牙APk上按一下按键,转45度,但却是转的180度,无法控制。求帮忙

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit pwm=P3^7;
uchar count,flag1,flag2,tmp;          //0.5ms次数标识
uchar jd;                  //角度标识           1,2,3,4,5
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void init()
{
        TMOD= 0x21;
    TH1 = 0xfd;
    TL1 = 0xfd;
        TH0= 0xfe;         //0.5ms
        TL0=0x33;
        ET0=1;
        TR0=1;
    TR1= 1;      
    REN= 1;
    SM0= 0;
    SM1= 1;   
    ES= 1;         //串口中断允许位
    EA=1;
}
void dj_up()
{               
                delay(10);               
                        jd++;
                        count=0;
                        if(jd==6)
                                jd=5;
                                       
       
}
void dj_down()
{
                delay(10);               
                    jd--;
                        count=0;
                        if(jd==0)
                                jd=1;
                                       

}
void time0() interrupt 1
{
        TH0  = 0xfe;            
        TL0  = 0x33;
    if(count<jd)              //判断0.5ms次数是否小于角度标识
      pwm=1;                  //确实小于,PWM输出高电平
    else
      pwm=0;                  //大于则输出低电平
      count=(count+1);          //0.5ms次数加1
      count=count%40;     //次数始终保持为40 即保持周期为20ms
}

void main()
{
        jd=1;
        count=0;
        init();
        while(1)
        {
               
                switch(tmp)
                {
               
                        case 0x05:dj_up(); break;
                        case 0x08: dj_down(); break;
                }
        }
}
void Com_Int() interrupt 4
{
        RI=0;
        tmp=SBUF;
}



作者: 曾仁    时间: 2017-5-19 16:52
同求。。。。。。
作者: lanhuo5431    时间: 2017-5-19 17:19
进入串口中断先执行完赋值程序再RI置零看看,也就是说相当于加个按键去抖动效果看看行不行
作者: ereerr    时间: 2017-5-19 19:53
lanhuo5431 发表于 2017-5-19 17:19
进入串口中断先执行完赋值程序再RI置零看看,也就是说相当于加个按键去抖动效果看看行不行

额,我先前也想到了去抖,但写出来没用。麻烦您能不能说详细点
作者: makkan    时间: 2017-5-21 18:54
感觉应该是你这个程序在串口中断里面吧tmp赋值以后就没有在把它置零操作了,这样的话主程序就会一直执行旋转45度的函数了
作者: ereerr    时间: 2017-5-27 16:03
makkan 发表于 2017-5-21 18:54
感觉应该是你这个程序在串口中断里面吧tmp赋值以后就没有在把它置零操作了,这样的话主程序就会一直执行旋 ...

嗯,是这样的,已经解决。多谢
作者: y924    时间: 2017-5-29 16:25
控制的是数字舵机吗?
作者: china188    时间: 2017-5-29 16:51
蓝牙控制速度慢 建议用433模块
作者: ereerr    时间: 2017-6-1 16:37
y924 发表于 2017-5-29 16:25
控制的是数字舵机吗?

是模拟舵机。用来做机械臂,模拟舵机就行了
作者: ereerr    时间: 2017-6-1 16:38
china188 发表于 2017-5-29 16:51
蓝牙控制速度慢 建议用433模块

嗯,可以试下
作者: meilidianzhi    时间: 2017-10-15 11:51
学习一下!!!!!!!!!!!
作者: wangxianlong    时间: 2017-11-18 20:20
求同!!!!!!!!!!!!!
作者: Lovis    时间: 2018-4-11 16:51
ereerr 发表于 2017-5-27 16:03
嗯,是这样的,已经解决。多谢

那应该怎么清零,我是初学者,不要笑
作者: Rainson    时间: 2019-4-17 17:09
需要先判断吧,我是这样觉得的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1