微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 蓝牙小车的通讯

蓝牙小车的通讯

时间:10-02 整理:3721RD 点击:
    最近在做智能小车的。MCU是STC89C52,蓝牙模块是HC-05。蓝牙RXD接单片机TXD,
TXD接单片机RXD。仔细看了看。接线是没有问题的。还用串口调试助手调试了,波特率是9600,停止位1位,无校验位。
以下是代码
#include <reg52.h>
uchar a=0;
void main()
{     
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd; //设置波特率 9600
TL1 = 0xFd;
TR1 = 1; //启动定时器1
ES = 1; //开串口中断
EA = 1; //开总中断
while(1)
{
     if(a==0x32)
       {
      P1=0x01;
       }
}
}
void ser() interrupt 4
{
  if(RI)
  {
   RI=0; //接收收据,标志位清 0
   a=SBUF; //读取串口接收到的收据,赋给变量 a
  }
}
。我用逻辑分析仪接单片机RXD上,有数据写入。就是P1的IO口没有任何反应。
发此贴希望论坛的各位朋友能够帮忙解答,不胜感激。

建议小编从以下几个方面入手:
1、软件方面:再次确认软件程序的配置,看定时器配置的波特率是否正确,看SCON的串口接受位是否设置为允许。
2、硬件方面:确认蓝牙模块与单片机引脚是否接对,蓝牙RXD对单片机的TXD,蓝牙TXD对单片机的RXD,按蓝牙模块的电压要求给蓝牙模块供电,重要的一点,蓝牙模块的GND要和单片机的GND连接起来,也就是一定要做到共地。
3、上位机(串口助手)方面:看上位机与蓝牙模块是否连接,其次是看串口端口和波特率是否设置正确。
相信小编可以找出问题,我看了一下程序,基本是没有问题的。

那你能看出来你输入的是什么吗

同求,应该是蓝牙模块的问题。蓝牙模式不对吧,蓝牙调试了三天,和你一模一样。

单片机RXD有数据,说明应该是程序配置问题,串口配置或者是引脚配置仔细检查一下。

这是我用蓝牙调试助手和逻辑分析仪调试出来的信息。



这些数据都是没错的。



这些就是数据了



我没用过蓝牙,不太了解这些,不过对单片机来说,如果配置正常的话,RXD引脚有信号的话,程序里是会进接收中断的。

我回去再查一下。有什么新发现再来回复。

程序没发现问题。我看逻辑分析仪的结果,有点请教小编:0-serial通道,8个白点我理解为是一个字节的8个bit位,0x32是0011 0010,在逻辑分析仪上,先显示低4位,再显示的高4位?

有没有量过电平是否匹配,单片机的地和蓝牙模块的地接在一起了吗。照理说,逻辑分析仪能看到数据,电平应该也没事。想不明白,小编搞定了一定来说下原因。

我也不知道,楼层如果解决了,请告知一下,谢谢

硬件连接问题吧?看看共地没?

我用两节锂电池供电,没用其他电源。应该是没问题的,只是在电源接了个1N4007二极管。这个应该是不影响的吧。

地肯定是共地了

好帖子顶一顶!感谢小编

你的能用了吗,我这段时间有事,昨晚调试了下。单片机能正常下载程序,也能和电脑互相发送、接收数据。蓝牙模块用USB-TTL下载器也能和电脑互相接收、发送数据。但是蓝牙和单片机在一起工作就不行。我用单片机和蓝牙通信,单片机RXD接收到数据,然后再从单片机的TXD发送数据。用逻辑分析仪监测,发现没有数据传输。

我的问题解决了。比较难以理解的是,我换台电脑重新写代码烧进去就可以控制。然后把代码复制到我电脑上烧进去就不行。奇怪

晶振的关系吧,之前也碰过这种问题,用11.0592M的晶振跑9600波特率的串口程序没问题,换了12M的晶振串口就出现了这种问题,要么换一下晶振,要么定时器的工作方式换一下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top