一、實驗原理(如下圖)
1、該模塊與單片機采用串口通信,手機連接藍牙模塊,通過無線信號發送數據給藍牙模塊,藍牙模塊收到數據后會把數據通過串口發送給單片機,單片機收到數據以后,就可以對數據進行處理,完成單片機對外設的控制。
2、此實驗需要把藍牙模塊配置為從機模式,若模塊出廠默認就是從機模式,就不需要配置了,(如果不知道默認是什么模式,可以詢問客服),主從一體的模塊,可用AT指令配置成為從機模式就可以了,過程也比較簡單,B站上面有很多教程。
大致步驟:把單片機和藍牙模塊對應的引腳用導線連接好,下載好程序,給單片機上電,就可以在手機上搜到藍牙模塊發出的無線信號了。
二、關鍵代碼
/*串口初始化程序*/
void Uart_Init() //9600bps@11.0592MHz
{
PCON |= 0x80; //使能波特率加倍
SCON = 0x50; //接收8位數據
TMOD &= 0x0F; //清除定時器1模式
TMOD |= 0x20;
TL1 = 0xFA; //設定初始值
TH1 = 0xFA; //設定初始值
ET1 = 0;
TR1 = 1;
EA = 1;
ES =1 ;
}
/*舵機驅動中斷服務函數*/
void Timer0() interrupt 1
{
TL0 = 0x33;
TH0 = 0xFE; //重新賦計數初值為0.5ms
count++; //計次,每500us count+1
count%=40; //周期為20ms
if(count< PWM_count)
{
SG_PWM=1;
}
else
{
SG_PWM=0;
}
}
/*串口中斷服務函數*/
void UART_Routine() interrupt 4
{
if(RI==1) //如果接收中斷標志位為1
{
P1=SBUF; //發送的數據SBUF,賦給P1
if(P1==0X01) //0x01這個值可以通過藍牙調試器編輯模式設置
{
PWM_count=1;
}
if(P1==0X02)
{
PWM_count=2;
}
if(P1==0X03)
{
PWM_count=3;
}
if(P1==0X04)
{
PWM_count=4;
}
if(P1==0X05)
{
PWM_count=5;
}
RI=0; //接收中斷標志位軟件清零
}
}