STC89C52微控制器通過HC-06藍芽模組與Android手機通訊
阿新 • • 發佈:2019-02-19
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從機
3
4、Android智慧手機(藍芽串列埠通訊助手軟體),約定為上位機
二、連線的部分電路圖(有整合板子的直接插上就可以了,但是要注意若微控制器的TXD無上拉能力需要加上拉電阻)
上拉電阻的阻值有人問我,我當時用的是1KΩ。
三、下位機測試程式
(各位大神如果分數比較多可以贊助我一下,就1個積分)
/*********************************************************** 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