找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3040|回复: 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;        
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2019-11-4 09:26 | 只看该作者
用万用表测量电机两端电压,看有电压变化没,电压是多少,再考虑原因。
回复

使用道具 举报

板凳
ID:94031 发表于 2019-11-4 09:29 | 只看该作者
电机最好用继电器模块来驱动。
回复

使用道具 举报

地板
ID:635207 发表于 2019-11-4 10:43 | 只看该作者
可以在串口中断中下个断电,在ram监视器中添加Buffer变量观察接收到的值。有可能接收到的蓝牙数据的编码格式不对
回复

使用道具 举报

5#
ID:495676 发表于 2019-11-4 22:22 | 只看该作者
xuyaqi 发表于 2019-11-4 09:26
用万用表测量电机两端电压,看有电压变化没,电压是多少,再考虑原因。

那个电机两端的电压是零  按一下复位按键   电机两端就有电压了  电机就转了
回复

使用道具 举报

6#
ID:91899 发表于 2019-11-4 23:47 | 只看该作者
最好就是 有一个数码管显示你收到的命令确定是否收到命令 然后确定能够控制电机
回复

使用道具 举报

7#
ID:495676 发表于 2019-11-5 15:16 | 只看该作者
我觉得可能是数据没有传到单片机中,但想知道为什么按复位键的时候电机又转动了
回复

使用道具 举报

8#
ID:560467 发表于 2019-11-8 14:51 | 只看该作者
你试一下如果单片机接受到数据后回应手机,既向手机发送一个数,就知道单片机有没有接受到。而且很重要一点就是12m晶振对于产生波特率并不好,最好就是有11.。。。。的晶振,很可能是做波特率问题
回复

使用道具 举报

9#
ID:555092 发表于 2019-11-10 16:00 | 只看该作者
你复位的时候单片机p1^0;应该是高电平,所以就动了,你设置的m0=低电平写在串口初始化下试试
回复

使用道具 举报

10#
ID:315264 发表于 2019-11-11 16:01 | 只看该作者
囡嬅 发表于 2019-11-5 15:16
我觉得可能是数据没有传到单片机中,但想知道为什么按复位键的时候电机又转动了

51单片机所有引脚在复位期间都为高电平,如果你设置电机为低电平驱动则是上电一瞬间电机动一下就停
回复

使用道具 举报

11#
ID:495676 发表于 2019-11-12 08:34 | 只看该作者
最美不过初 发表于 2019-11-10 16:00
你复位的时候单片机p1^0;应该是高电平,所以就动了,你设置的m0=低电平写在串口初始化下试试

低电平试过了  也还是不行
回复

使用道具 举报

12#
ID:661768 发表于 2019-12-11 17:55 来自手机 | 只看该作者
我最近也遇到这个问题,很多尝试都不行,改了晶振就行了,你把12MHz的改为11.0592MHz应该就可以
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表