标题: 单片机+JDY-18蓝牙模块的使用方法求解 [打印本页]

作者: 张小超    时间: 2019-7-24 18:56
标题: 单片机+JDY-18蓝牙模块的使用方法求解
在与TTL连上接上电脑时,通过串口调试,没有回应,手机连上就直接成了一个转发数据的模块。
通过程序与单片机连接时单片机也不会执行任何命令,感觉成了一个中转站。

以下是单片机程序:
  1. /**************************************************************************************
  2. *                              串口通信实验                                                                                                  *
  3. 实现现象:下载程序后打开串口调试助手,将波特率设置为4800,选择发送的数据就可以显示
  4.                         在串口助手上。
  5. 注意事项:无。                                                                                                                                                                  
  6. ***************************************************************************************/

  7. #include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器
  8. #include "lcd.h"
  9. typedef unsigned int u16;          //对数据类型进行声明定义
  10. typedef unsigned char u8;

  11. u8 Disp[]="kaiji ok!";
  12. u8 rec;
  13. /*******************************************************************************
  14. * 函数名         :UsartInit()
  15. * 函数功能                   :设置串口
  16. * 输入           : 无
  17. * 输出                  : 无
  18. *******************************************************************************/
  19. void UsartInit()
  20. {
  21.         SCON=0X50;                        //设置为工作方式1
  22.         TMOD=0X20;                        //设置计数器工作方式2
  23.         PCON=0X00;                        //波特率加倍
  24.         TH1=0XFD;                                //计数器初始值设置,注意波特率是4800的
  25.         TL1=0XFD;
  26.         ES=1;                                                //打开接收中断
  27.         EA=1;                                                //打开总中断
  28.         TR1=1;                                        //打开计数器
  29. }

  30. /*******************************************************************************
  31. * 函 数 名       : main
  32. * 函数功能                 : 主函数
  33. * 输    入       : 无
  34. * 输    出             : 无
  35. *******************************************************************************/
  36. void main()
  37. {        
  38.         u8 i;
  39.         
  40.         UsartInit();  //        串口初始化
  41.         LcdInit();
  42.         
  43.         for(i=0;i<9;i++)
  44.         {
  45.                 LcdWriteCom(0x80+i);
  46.                 LcdWriteData(Disp[i]);
  47.         }
  48.         while(1)
  49.         {
  50.                
  51.                         
  52.                         }
  53.         
  54. }

  55. /*******************************************************************************
  56. * 函数名         : Usart() interrupt 4
  57. * 函数功能                  : 串口通信中断函数
  58. * 输入           : 无
  59. * 输出                  : 无
  60. *******************************************************************************/
  61. void Usart() interrupt 4
  62. {
  63.         u8 receiveData,rec;

  64.         receiveData=SBUF;//出去接收到的数据
  65.         rec=SBUF;
  66.         if(rec==0x31)        //接收到1时,在lcd上显示OK
  67.         {
  68.                 LcdWriteCom(0x80+0x40);
  69.                 LcdWriteData("ok");
  70.         }
  71.         RI = 0;//清除接收中断标志位
  72.         SBUF=receiveData;//将接收到的数据放入到发送寄存器

  73.         while(!TI);                         //等待发送数据完成
  74.         TI=0;                                                 //清除发送完成标志位
  75. }
复制代码


IMG_20190724_184910.jpg (8.85 MB, 下载次数: 93)

IMG_20190724_184910.jpg

Screenshot_2019-07-24-18-49-26-068_com.lee.circle.png (527.37 KB, 下载次数: 83)

Screenshot_2019-07-24-18-49-26-068_com.lee.circle.png

作者: a526374696    时间: 2019-7-26 20:15
我使用的是JDY16也是一样,单片机初始化发送AT指令不能配置蓝牙啊。还有可以分享下这APP的源码吗
作者: 张小超    时间: 2019-7-27 09:44
a526374696 发表于 2019-7-26 20:15
我使用的是JDY16也是一样,单片机初始化发送AT指令不能配置蓝牙啊。还有可以分享下这APP的源码吗

可以的,在网盘里,自己下载下
链接:https://pan.baidu.com/s/1ImgKIl9DtgzBaaJMII1Flg
提取码:iur1
复制这段内容后打开百度网盘手机App,操作更方便哦
作者: a526374696    时间: 2019-7-27 16:56
张小超 发表于 2019-7-27 09:44
可以的,在网盘里,自己下载下
链接:https://pan.baidu.com/s/1ImgKIl9DtgzBaaJMII1Flg
提取码:iur ...

这具体是哪个啊
作者: 迷途小书童12138    时间: 2019-10-29 10:37
楼主,你的问题解决了吗?用电脑发at指令给模块有回应吗?
作者: 无敌的UUZ大人    时间: 2019-10-30 16:20
你给蓝牙发送AT指令起码要先把蓝牙设置到AT配置模式才行啊,你直接发AT是怎么回事?
作者: 迷途小书童12138    时间: 2019-11-5 17:13
无敌的UUZ大人 发表于 2019-10-30 16:20
你给蓝牙发送AT指令起码要先把蓝牙设置到AT配置模式才行啊,你直接发AT是怎么回事?

它这个模块只要没连接上蓝牙就是在at指令模式
作者: Abc_zh    时间: 2019-11-25 13:29
迷途小书童12138 发表于 2019-11-5 17:13
它这个模块只要没连接上蓝牙就是在at指令模式

我也遇到这种情况,在AT模式下,通过串口发送at命令,返回的都是乱码,用的是JDY-18
作者: Abc_zh    时间: 2019-11-25 14:56
哈哈,回去认真看了一遍,我试出来了,在这里我用的是JDY-18的蓝牙模块(在没连接上手机蓝牙时,自动进入AT模式),首先用USB转TTL的话,vcc,gnd,rx,tx 都得和蓝牙模块上的一一对应,没错,是一一对应,然后在串口助手上就可以测试了,默认波特率是:9600,发送指令时得回车后再发送。如果是用PL2303之类的51开发板的串口的话,则需要接电源给JDY-18的时候串联上一个10K以上的电阻(或者是10k电阻+一个LED蓝灯),因为我这一款的蓝牙电压是在1.8-3.3V的,直接上5v会烧坏的,设置完AT后,将原来的Rx和Tx都得调换回来,就可以了。
作者: 张小超    时间: 2020-2-29 13:27
迷途小书童12138 发表于 2019-10-29 10:37
楼主,你的问题解决了吗?用电脑发at指令给模块有回应吗?

我后面用多了其他蓝牙模块他就可以了,具体原因好像是因为那个波特率不匹配,他接收不到正确的消息,因为消息是通过单片机转了下,单片机上面的晶振是12M的,加倍也不可能具体达到9600,建议还是用11.0592M的晶振
作者: kalterRegen    时间: 2021-5-7 09:19
楼主,我用JDY18通过Arduino UNO 连接的电脑,按上面说的rx,tx一一对应后在串口监视器输入指令有反应了,但不管输入AT还是其它什么都返回了几个28523,波特率9600,其他波特率试了几个也是
作者: Xiaowqq123    时间: 2022-3-16 11:19
楼主你好,你这个JD1Y18低功耗时候pwm功能能用吗。买了JDY16的,按照手册做pwm根本不能跑
作者: dddd_dd    时间: 2022-4-9 10:49
kalterRegen 发表于 2021-5-7 09:19
楼主,我用JDY18通过Arduino UNO 连接的电脑,按上面说的rx,tx一一对应后在串口监视器输入指令有反应了,但 ...

你好我也是一样的机子连接起来没有响应,请问能说说怎么连线的吗





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