找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12703|回复: 12
打印 上一主题 下一主题
收起左侧

单片机+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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:479101 发表于 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都得调换回来,就可以了。

评分

参与人数 1黑币 +80 收起 理由
admin + 80 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:79482 发表于 2019-7-26 20:15 | 只看该作者
我使用的是JDY16也是一样,单片机初始化发送AT指令不能配置蓝牙啊。还有可以分享下这APP的源码吗
回复

使用道具 举报

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

可以的,在网盘里,自己下载下
链接:https://pan.baidu.com/s/1ImgKIl9DtgzBaaJMII1Flg
提取码:iur1
复制这段内容后打开百度网盘手机App,操作更方便哦
回复

使用道具 举报

5#
ID:79482 发表于 2019-7-27 16:56 | 只看该作者
张小超 发表于 2019-7-27 09:44
可以的,在网盘里,自己下载下
链接:https://pan.baidu.com/s/1ImgKIl9DtgzBaaJMII1Flg
提取码:iur ...

这具体是哪个啊
回复

使用道具 举报

6#
ID:480364 发表于 2019-10-29 10:37 | 只看该作者
楼主,你的问题解决了吗?用电脑发at指令给模块有回应吗?
回复

使用道具 举报

7#
ID:606366 发表于 2019-10-30 16:20 | 只看该作者
你给蓝牙发送AT指令起码要先把蓝牙设置到AT配置模式才行啊,你直接发AT是怎么回事?
回复

使用道具 举报

8#
ID:480364 发表于 2019-11-5 17:13 | 只看该作者
无敌的UUZ大人 发表于 2019-10-30 16:20
你给蓝牙发送AT指令起码要先把蓝牙设置到AT配置模式才行啊,你直接发AT是怎么回事?

它这个模块只要没连接上蓝牙就是在at指令模式
回复

使用道具 举报

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

我也遇到这种情况,在AT模式下,通过串口发送at命令,返回的都是乱码,用的是JDY-18
回复

使用道具 举报

10#
ID:588348 发表于 2020-2-29 13:27 | 只看该作者
迷途小书童12138 发表于 2019-10-29 10:37
楼主,你的问题解决了吗?用电脑发at指令给模块有回应吗?

我后面用多了其他蓝牙模块他就可以了,具体原因好像是因为那个波特率不匹配,他接收不到正确的消息,因为消息是通过单片机转了下,单片机上面的晶振是12M的,加倍也不可能具体达到9600,建议还是用11.0592M的晶振
回复

使用道具 举报

11#
ID:916780 发表于 2021-5-7 09:19 | 只看该作者
楼主,我用JDY18通过Arduino UNO 连接的电脑,按上面说的rx,tx一一对应后在串口监视器输入指令有反应了,但不管输入AT还是其它什么都返回了几个28523,波特率9600,其他波特率试了几个也是
回复

使用道具 举报

12#
ID:884091 发表于 2022-3-16 11:19 | 只看该作者
楼主你好,你这个JD1Y18低功耗时候pwm功能能用吗。买了JDY16的,按照手册做pwm根本不能跑
回复

使用道具 举报

13#
ID:1016937 发表于 2022-4-9 10:49 | 只看该作者
kalterRegen 发表于 2021-5-7 09:19
楼主,我用JDY18通过Arduino UNO 连接的电脑,按上面说的rx,tx一一对应后在串口监视器输入指令有反应了,但 ...

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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