手机与单片机通过蓝牙通信----手机控制灯

来源:互联网 发布:买家怎么退出淘宝联盟 编辑:程序博客网 时间:2024/04/20 03:42

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

QQ技术交流群:129518033



环境   1、普中科技HC6800-EM3 v2.2 单片机开发实验仪(芯片STC90C516RD+)
          2、无线蓝牙串口透传模块 HC-06从机
          3、windows xp操作系统
          4、中兴U930手机(蓝牙串口通信助手软件)

注意:蓝牙部分连线图与实物图不符。可以参照下图接蓝牙(2013年05月31日改)

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



蓝牙开发初级实例,用手机控制灯的亮灭。

 实物连线图:

 

单片机代码

  /***********************************************************STC89C52与蓝牙连线: 蓝牙  51 RXD    TXD TXD    RXD其他连线: P2.0、P2.1、P2.3分别接一个指示灯手机采用蓝牙串口通信助手***********************************************************/#include <reg52.h>#include <intrins.h>unsigned char tmp;sbit led1=P2^0;     //指示灯0sbit led2=P2^1;   //指示灯1sbit led3=P2^3;   //指示灯3void init();void delay(unsigned int i);void send(); //发送回馈信息,目前无效不知道什么原因void ctrl();void main(){  init();          while(1)          {                            if(RI==1)                     // 是否有数据到来                  {                   RI = 0;                  tmp = SBUF;                   // 暂存接收到的数据      ctrl();      }                    }} void init() //初始化 {  TMOD = 0x20;                        // 定时器1工作于8位自动重载模式, 用于产生波特率          TH1=TL1=0xFD;                                // 波特率9600                    SCON = 0x50;                        // 设定串行口工作方式1 允许接收,相当于下面三句        //SM0=0;       //SM1=1;        //REN=1;               PCON =0x00;                        // 波特率不倍增          TR1 = 1;    EA=1;        ES=1;          led1=0;                            //初始化设置3个指示灯全亮    led2=0;    led3=0; }void delay(unsigned int i){ unsigned char j; for(i; i > 0; i--)  for(j = 200; j > 0; j--) ;}void send() //发送回馈信息,目前无效不知道什么原因{ unsigned char a; a=tmp; TI=0; SBUF=a; while(TI==0); TI=0; led3=1; //delay(1000);}void ctrl()   //根据接受信息做出操作{        switch(tmp)      {       case '1':      led1=1;              //收到字符1,指示灯0灭      send();      break;          case '2':      //收到字符2,指示灯1灭       led2=1;        send();       break;     case '3':        //收到字符3,指示灯0、1亮       led1=0;       led2=0;       send();       break;     case '4':     //收到字符4,指示灯0、1灭        led1=1;        led2=1;        send();        break;     case '5':     //收到字符5,指示灯3亮      led3=0;      break;     default:                   //其他,灯全灭        led1=1;        led2=1;        led3=1;        send();      }}


手机通过蓝牙串口助手操作:

 

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

QQ技术交流群:129518033


 

原创粉丝点击