• STC89C52通过HC-06蓝牙模块Android手机通信   如需转载请标明出处:http://blog.csdn.net/itas109  QQ技术交流群:129518033  2017-11-04补充 注意问题: 1.确保上位机波特率为9600 2.确保下位机的波特...

    STC89C52通过HC-06蓝牙模块与Android手机通信

     

    如需转载请标明出处:http://blog.csdn.net/itas109 

    QQ技术交流群:129518033

     2017-11-04补充

    注意问题:

    1.确保上位机波特率为9600

    2.确保下位机的波特率为9600,下位机的晶振应该为11.0592MHz

    3.本教程中接收指令的是字符1、2、3,不是16进制的0x01、0x02、0x03

    4.可能跟上拉电阻有关系,但是不少人反应不需要上拉电阻,时间长了我也不知道了

     

    环境
             1、任意单片机开发板即可(当时用的芯片STC90C516RD+),约定为下位机
              2、无线蓝牙串口透传模块 HC-06从机
              3windows xp操作系统
              4、Android智能手机(蓝牙串口通信助手软件),约定为上位机

    二、连接的部分电路图(有集成板子的直接插上就可以了,但是要注意若单片机的TXD无上拉能力需要加上拉电阻)

          上拉电阻的阻值有人问我,我当时用的是1KΩ。

     

    三、下位机测试程序

    (各位大神如果分数比较多可以赞助我一下,就1个积分)

    程序地址(整个工程):http://download.csdn.net/detail/itas109/5430553

          

       /***********************************************************
    
    STC90C51RD+与HC-06蓝牙连线:
    
             蓝牙  STC90C51RD+
    
             RXD    TXD
    
             TXD    RXD
    
    其他连线:
    
             P2.0、P2.1、P2.3分别接一个指示灯
    
     
    
    !!!!
    
    !!!!注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。本次测试需要接上拉电阻
    
    !!!!
    
     
    
    手机采用蓝牙串口通信助手
    
    最后已改用Android自编蓝牙通信软件
    
                                                   By itas109
    
                                                   http://blog.csdn.net/itas109
    
    ***********************************************************/
    
    #include <reg52.h>
    
    #include <intrins.h>
    
    unsigned char tmp;
    
    unsigned int c=0;
    
     
    
    sbit led1=P2^0;                      //指示灯0
    
    sbit led2=P2^1;                           //指示灯1
    
    sbit led3=P2^3;                           //指示灯3
    
     
    
    void init();   //串口初始化
    
    void send(unsigned char a);     //单字节发送函数
    
    void ctrl(); //接收处理函数
    
     
    
    void main()
    
    {
    
                       init();
    
              while(1)
    
              {         
    
                      if(RI==1)                     //是否有数据到来
    
                      {
    
                       RI = 0;
    
                      tmp = SBUF;                   //暂存接收到的数据
    
                                           ctrl();
    
                                           }      
    
              }
    
    }
    
     
    
     void init()        //串口初始化
    
     {
    
                       ES=0;                                                                       //关中断
    
                         SCON = 0x50;                        // REN=1允许串行接受状态,串口工作模式1,
    
                                                                                                             //10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变
    
     
    
                         TMOD = 0x20;                        //定时器1工作于方式2,8位自动重载模式,用于产生波特率
    
              TH1=TL1=0xFD;                       //波特率9600 (本次测试采用晶振为11.0592)
    
              
    
              PCON &= 0x7f;                       //波特率不倍增
    
              TR1 = 1;                                                                  //定时器1开始工作,产生波特率
    
                                                                                                             //发送标志位置0
    
                         TI=0;                                                                        //接收标志位置0
    
                         RI=0;
    
                         
    
                         //EA=0;
    
                   ES=1;
    
     
    
     
    
              led1=0;                                    //初始化设置3个指示灯全亮
    
                         led2=0;
    
                         led3=0;
    
     }
    
       
    
    void send(unsigned char a)      //单字节数据发送
    
    {                                                                //注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。本次测试需要接上拉电阻
    
             TI=0;         
    
             SBUF=a;
    
             while(TI==0);
    
             TI=0;
    
     
    
             if(c%2)                                           //发送指示灯标志,每接收一次,此灯亮灭交替
    
              led3=1;
    
             else
    
              led3=0;
    
             c++;
    
    } 
    
     
    
    void ctrl()                      //接收处理函数
    
    {
    
                                         switch(tmp)
    
                                           {
    
                                                case '1':
    
                                                            led1=1;                           //收到字符1,指示灯0灭
    
                                                            send(tmp);
    
                                                            break;                                           
    
                                                   case '2':                                         //收到字符2,指示灯1灭
    
                                                             led2=1;
    
                                                             send(tmp);
    
                                                             break;
    
                                                   case '3':                                   //收到字符3,指示灯0、1亮
    
                                                             led1=0;
    
                                                             led2=0;
    
                                                             send(tmp);
    
                                                             break;
    
                                                   case '4':                                         //收到字符4,指示灯0、1灭
    
                                                              led1=1;
    
                                                              led2=1;
    
                                                              send(tmp);
    
                                                              break;
    
                                                   case '5':                                         //收到字符5,指示灯3亮
    
                                                            led3=0;
    
                                                            send(tmp);
    
                                                            break;
    
                                                   default:                   //其他,灯全灭
    
                                                              led1=1;
    
                                                              led2=1;
    
                                                              led3=1;
    
                                                              send(tmp);
    
                                           }
    
    }
    
    


    四、上位机软件可以用蓝牙串口通信助手软件

     

     

    觉得文章对你有帮助,请扫描二维码捐赠给博主,谢谢!

     

     

    如需转载请标明出处:http://blog.csdn.net/itas109 

    QQ技术交流群:129518033

     

     

    展开全文
  • 刚好碰到这蓝牙通信方面的项目,上网也看过其他人在蓝牙这方面写的博客,但大多都不全,给一些初触蓝牙的开发者造成一定的麻烦,自己当初也费了不少劲。所以把自己参考网上的一些资料用Android studio写的代码完全放...
  • HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。为什么呢? 因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你...
  • 最近做毕设,需要写一个简单的蓝牙APP进行交互,在网上也找了很多资料,终于给搞定了,这里分享一下^_^。 1、Android蓝牙编程  蓝牙3.0及以下版本编程需要使用UUID,UUID是通用唯一识别码(Universally Unique ...
  • 这次期末的课程设计做了一个智能灯光控制系统,系统整体的功能不在此赘述,系统主要是要实现下位机同上位机的通信,上位机选用的是Android手机端,下位机是52单片机,通过蓝牙模块实现通信。虽然系统很简单,但还是...
  • 系列博文: (1)安卓手机与蓝牙模块联合调试(一)——蓝牙模块的串口...本教程的项目地址:1989Jiangtao/BluetoothSCM: 安卓手机通过蓝牙与单片机通信-发送指令/接收数据​​​​​​​ 忙里偷闲,承接上一篇文...
  • HC-05蓝牙模块arduino通信实例代码以及注意事项HC-05的接线及使用进入蓝牙的设置模式进入AT命令模式(设置蓝牙参数)注意事项进入AT模式的代码(注意在通电之前让蓝牙模块进入设置模式)进入AT模式响应常用AT命令...
  • 实现Android手机通过蓝牙控制51单片机小车 #一、材料: 1.stc51单片机最小系统板(最好带上拉电阻); 2.HC-02蓝牙芯片; 3.蓝牙小车,带驱动; 4.充电宝; 5.Android手机及app; #二、硬件连接 1.把小车...
  • 单片机或者在其他领域中,蓝牙的传输是比较重要的,虽然理论只有10米的范围可以传输数据,但是被许多开发者所需求,个人在开发中也是需要蓝牙传输,浏览了许多谷歌的APi文档和博客之后,决定好好写一篇关于蓝牙...
  • STC89C52单片机通过HC-06蓝牙模块Android手机通信实例- 基于Android和蓝牙单片机温度采集系统     注意: APP需要点击菜单键进行蓝牙连接 整个工程下载:http://download.csdn.net/detail/itas...
  • 一、App的简单介绍 首先APP的功能描述如下,他可以发送6个数据并接收4个数据。并且数据全部以浮点型数据出现。并保留有判断框,内置要进行数据之间的比较,让判断框的内容发生改变。基本uI界面如下。...
  • 不会java的小白,在使用的单片机蓝牙功能时难道只能上百度下载别人的蓝牙app软件吗?幸运的是一个基于云端开发app的网站来了。App Inventor 原是Google实验室(Google Lab)的一个子计划,由一群Google工程师和...
  • 本篇只要是实现51单片机通信功能,所以我想要尽量的简化一下。话不多说上代码! //先是ui线程的部分 这部分主意是监听控件 蓝牙的连接需要单独写一个线程 //此部分代码只是截取 缺少的部分都可以脑补的出来。。...
  • ... QQ技术交流群:129518033     ...环境 1、普中科技HC6800-EM3 v2.2 单片机开发实验仪(芯片STC90C516RD+)  2、无线蓝牙串口透传模块 HC-06从机  3、windows xp操作系统  4、Androi...
  • 我们当时打算做一个共享类的项目,项目的主题是共享图书,线下的形式租借图书,我们当时是考虑做一个借书柜的形式,然后线下生产投放借书柜,这些借书柜本身能存放24本书,大约24个柜子,且均有单片机控制。...
  • 一种深受广大编程小镇的喜爱今天为大家介绍一种利用它开发手机APP的实战经历 ——手机APP开发之MIT Appinventor详细实战教程(一),利用通过蓝牙控制单片机,以及实现单片机与android设备之间的串口通信。...
  • 整个项目涉及Android的Wifi、Bluetooth通信,这里只介绍蓝牙部分: 一边是Android手机,另一端是串口蓝牙模块,具体是在淘宝买的(参考网址:http://item.taobao.com/item.htm?id=12792736263),串口蓝牙与AV
  • (2)安卓手机与蓝牙模块联合调试(二)—— 单片机蓝牙控制LED灯亮灭(上) (3)安卓手机与蓝牙模块联合调试(三)—— 单片机蓝牙控制LED灯亮灭(下) (4)安卓手机与蓝牙模块联合调试(四)—— 单片机数据...
  • 电路城十大蓝牙方案实例助你深入解析蓝牙技术应用 蓝牙在项目设计中的应用已经十分广泛,从电脑手机音箱等传统使用手段到车载蓝牙、智能家居等应用,蓝牙发挥的作用越来越大,能实现的功能也愈渐复杂,网罗电路城上...
1 2 3 4 5 ... 19
收藏数 365
精华内容 146