STC89C52單片機通過HC06藍牙模塊與Android手機通信
1、任意單片機開發(fā)板即可(當時用的芯片STC90C516RD+),約定為下位機
2、無線藍牙串口透傳模塊HC-06從機
3、windows xp操作系統(tǒng)
4、Android智能手機(藍牙串口通信助手軟件),約定為上位機
二、連接的部分電路圖(有集成板子的直接插上就可以了,但是要注意若單片機的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);}}
四、上位機軟件可以用藍牙串口通信助手軟件
評論