|
| 仔細看看手冊 |
| 個人感覺在終端程序中,接收部分是不是應該加while(!RI) |
308 發表于 2018-4-23 11:12 你好!我最后一步出了問題,沒有連接藍牙模塊時,單片機和pc能正常通信,接上藍牙模塊后,手機發送命令單片機沒反應。是不是藍牙模塊與單片機連接有問題?感覺手機發送的數據沒有被單片機接收啊, 藍牙模塊與pc能正常通信。 |
| 問題0010:藍牙串口模塊使用的正確步驟 很多人現在都開始使用藍口模塊,利用手機藍牙或者PC藍牙進行控制單片機系統。但是很多人一上來就直接把藍牙模塊和單片機相連接,然后編寫程序,效果實現不了,就不知該如何了。藍牙模塊很多都是結合了串口通信的,通常拿到模塊,需要經過一下步驟(自己總結,可做參考): (1)首先,需要藍牙模塊和PC的硬件連接,這里有兩種方法: <a>把你的開發板的單片機取下來,然后從開發板引出電源線VCC和GND,還有P30、P31接口,連接藍牙模塊的四個端口(注意RXD和TXD不要反接了) <b>如果你有USB-TTL模塊,可以直接連接藍牙模塊,無需單片機開發板轉接過去。 (2)通過PC的串口軟件(比如STC-ISP軟件自帶的串口),設置好軟件的波特率和通信數據格式,通過串口軟件發送AT命令(通常購買時賣家提供了),看是否有返回數據,如果沒有返回,有可能是P30、P31接口需要換過來,如果發送命令,有返回信息且不是亂碼,表示藍牙模塊和PC可以串口通信了。 (3)手機下載軟件“藍牙串口”,通過此軟件連接藍牙模塊(藍牙的名稱和配對密碼可通過 AT命令設置),然后給藍牙模塊供電,PC打開串口軟件,手機發送任意字符到藍牙模塊,會發現PC串口軟件接收到了信息,這表示藍牙可以正常工作。 (4)編寫單片機程序,此時需要分為兩步: <a>先不連接藍牙模塊,編寫程序,單片機接收到串口數據,做出相應動作,寫好后下載,然后打開PC的串口軟件,發送命令,檢驗現象是否正確,如果正確,開始第二步 <b>把藍牙模塊連接到單片機,手機藍牙連接模塊,手機發送命令,此時只要步驟<a>現象經過反復驗證沒有問題,第二步肯定沒問題。(如果第二步不對,那就返回去做第一步) (5)其他。如果需要用PC的藍牙進行控制,還需要購買藍牙適配器,也就是模塊發送信息到電腦時,需要一個接收器。如果不是很必要,就用手機藍牙軟件就好了,省錢省事 |
| 好好看看手冊。 |
| 這個鏈接我嘗試過,沒有問題。再有建議終端程序中增加關閉終端語句,在中斷結束后再開啟 |
| 個人感覺在終端程序中,接收部分是不是應該加while(!RI) |
| 藍牙發送數據有兩種數據形式,16進制發送或字符發送,而字符發送需要在SBUF后面減去48! |
| 這是代碼,哪錯了?#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit ji=P2^1;uint flag;uchar rx;void delay(uint z){uint x,y;for(x=100;x>0;x--)for(y=z;y>0;y--);}void init(){SCON=0x50;TMOD=0x20;PCON=0x00;TH1=0xfd;TL1=0xfd;EA=1;ES=1;//REN=1;TR1=1;}void main(){init();while(1) { if(flag==0) { ji=1;} delay(1000); if(flag==1) { ji=0; delay(1000); } }}void exter0() interrupt 1{RI=0;rx=SBUF;switch(rx) { case'a':flag=0; break; case'b':flag=1; break; default: break; }} |