新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STC89C52單片機通過HC06藍牙模塊與Android手機通信

STC89C52單片機通過HC06藍牙模塊與Android手機通信

作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
一環(huán)境:

1、任意單片機開發(fā)板即可(當時用的芯片STC90C516RD+),約定為下位機
2、無線藍牙串口透傳模塊HC-06從機
3、windows xp操作系統(tǒng)
4、Android智能手機(藍牙串口通信助手軟件),約定為上位機

本文引用地址:http://m.butianyuan.cn/article/201611/318296.htm

二、連接的部分電路圖(有集成板子的直接插上就可以了,但是要注意若單片機的TXD無上拉能力需要加上拉電阻

上拉電阻的阻值有人問我,我當時用的是1KΩ。

三、下位機測試程序

(各位大神如果分數(shù)比較多可以贊助我一下,就1個積分)

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

/*STC90C51RD+與HC-06藍牙連線:藍牙  STC90C51RD+RXD    TXDTXD    RXD其他連線:P2.0、P2.1、P2.3分別接一個指示燈?。。。。。。?!注意:若單片機TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻。本次測試需要接上拉電阻!?。。∈謾C采用藍牙串口通信助手最后已改用Android自編藍牙通信軟件By itas109http://blog.csdn.net/itas109*/#include #include unsigned char tmp;unsigned int c=0;sbit led1=P2^0;                      //指示燈0sbit led2=P2^1;                           //指示燈1sbit led3=P2^3;                           //指示燈3void init();   //串口初始化void send(unsigned char a);     //單字節(jié)發(fā)送函數(shù)void ctrl(); //接收處理函數(shù)void main(){init();while(1){         if(RI==1)                     //是否有數(shù)據(jù)到來{RI = 0;tmp = SBUF;                   //暫存接收到的數(shù)據(jù)ctrl();}      }}void init()        //串口初始化{ES=0;                                                                       //關(guān)中斷SCON = 0x50;                        // REN=1允許串行接受狀態(tài),串口工作模式1,//10位UART(1位起始位,8位數(shù)據(jù)位,1位停止位,無奇偶校驗),波特率可變TMOD = 0x20;                        //定時器1工作于方式2,8位自動重載模式,用于產(chǎn)生波特率TH1=TL1=0xFD;                       //波特率9600 (本次測試采用晶振為11.0592)PCON &= 0x7f;                       //波特率不倍增TR1 = 1;                                                                  //定時器1開始工作,產(chǎn)生波特率//發(fā)送標志位置0TI=0;                                                                        //接收標志位置0RI=0;//EA=0;ES=1;led1=0;                                    //初始化設置3個指示燈全亮led2=0;led3=0;}void send(unsigned char a)      //單字節(jié)數(shù)據(jù)發(fā)送{                                                                //注意:若單片機TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻。本次測試需要接上拉電阻TI=0;         SBUF=a;while(TI==0);TI=0;if(c%2)                                           //發(fā)送指示燈標志,每接收一次,此燈亮滅交替led3=1;elseled3=0;c++;} void ctrl()                      //接收處理函數(shù){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);}}


四、上位機軟件可以用藍牙串口通信助手軟件



評論


技術(shù)專區(qū)

關(guān)閉