标题: 手机通过蓝牙来控制电机转动,但蓝牙能接收到数据,单片机却不能驱动电机 [打印本页]

作者: 囡嬅    时间: 2019-11-3 20:11
标题: 手机通过蓝牙来控制电机转动,但蓝牙能接收到数据,单片机却不能驱动电机
我怀疑可能是数据没有传输到单片机中,但却不知道如何解决,而且当按下开发板的复位按键时电机会转动
连接如下   波特率已经设置为4800



源代码如下
#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit M1 = P1^0;                     // M1接在P1.0
uchar Buffer;
void UartIsr(void);
void UartInit(void);
void main(void)
{
    uchar time = 0;
       M1 = 0;
    UartInit();   
      while(1)
        {
            switch(Buffer)
            {
                case 1:
                    M1=1;
                break;
                case 2:
                    M1=0;
                break;
                default:
                break;               
            }
        }
}   
void UartIsr(void) interrupt 4      //串口中断处理程序
{
    if(RI == 1)   //当硬件接收到一个数据时,RI会置位
    {
        RI = 0;
        Buffer = SBUF;//将接收到的字符放入Buffer      
    }
}
void UartInit(void)          //串口初始化,4800
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xF3;
    TL1 = TH1;
    PCON = 0x80;
    EA = 1;
    ES = 1;
    TR1 = 1;        
}




作者: xuyaqi    时间: 2019-11-4 09:26
用万用表测量电机两端电压,看有电压变化没,电压是多少,再考虑原因。
作者: xuyaqi    时间: 2019-11-4 09:29
电机最好用继电器模块来驱动。
作者: 每日新鲜    时间: 2019-11-4 10:43
可以在串口中断中下个断电,在ram监视器中添加Buffer变量观察接收到的值。有可能接收到的蓝牙数据的编码格式不对
作者: 囡嬅    时间: 2019-11-4 22:22
xuyaqi 发表于 2019-11-4 09:26
用万用表测量电机两端电压,看有电压变化没,电压是多少,再考虑原因。

那个电机两端的电压是零  按一下复位按键   电机两端就有电压了  电机就转了
作者: 陈浪    时间: 2019-11-4 23:47
最好就是 有一个数码管显示你收到的命令确定是否收到命令 然后确定能够控制电机
作者: 囡嬅    时间: 2019-11-5 15:16
我觉得可能是数据没有传到单片机中,但想知道为什么按复位键的时候电机又转动了
作者: CZ1    时间: 2019-11-8 14:51
你试一下如果单片机接受到数据后回应手机,既向手机发送一个数,就知道单片机有没有接受到。而且很重要一点就是12m晶振对于产生波特率并不好,最好就是有11.。。。。的晶振,很可能是做波特率问题
作者: 最美不过初    时间: 2019-11-10 16:00
你复位的时候单片机p1^0;应该是高电平,所以就动了,你设置的m0=低电平写在串口初始化下试试
作者: peoplefly    时间: 2019-11-11 16:01
囡嬅 发表于 2019-11-5 15:16
我觉得可能是数据没有传到单片机中,但想知道为什么按复位键的时候电机又转动了

51单片机所有引脚在复位期间都为高电平,如果你设置电机为低电平驱动则是上电一瞬间电机动一下就停
作者: 囡嬅    时间: 2019-11-12 08:34
最美不过初 发表于 2019-11-10 16:00
你复位的时候单片机p1^0;应该是高电平,所以就动了,你设置的m0=低电平写在串口初始化下试试

低电平试过了  也还是不行
作者: 砺心如锋    时间: 2019-12-11 17:55
我最近也遇到这个问题,很多尝试都不行,改了晶振就行了,你把12MHz的改为11.0592MHz应该就可以




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