一、功能概述
蓝牙模块(HC-05)与51单片机进行串口通信,实现单片机将采集到的温湿度发送至手机端蓝牙串口(SPP),手机端可以修改温湿度的阈值。
二、接线图
三、代码
1、串口发送函数
void sendDate(unsigned char date)
{
SBUF=date;
while(TI==0)
;
TI=0;
} //发送函数
2、接收函数
//采用中断方式接收手机端的数据
void Uart_Handler() interrupt 4
{
if(RI)
{
RI = 0;
S = SBUF;
switch(S)
{
case 1:T_MAX++;break; //温度阈值上调
case 2:T_MAX--;break; //温度阈值下调
case 3:R_MAX++;break; //湿度阈值上调
case 4:R_MAX--;break; //湿度阈值下调
}
if(TI);
}
}
3、主函数
void main()
{
OLED_Init();
OLED_ColorTurn(0); //0正常显示,1反色显示
OLED_DisplayTurn(0);//0正常显示,1屏幕反转显示
OLED_Clear();
SCON = 0x50;
TMOD &= 0xF0;
TMOD |= 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
EA = 1;
ES = 1; //配置串口中断
while(1)
{
DHT11_receive();
OLED_ShowChinese(80,0,4,16);//OLED显示中文 “阈”
OLED_ShowChinese(96,0,5,16);//OLED显示中文 “值”
OLED_ShowNum(98,2,T_MAX,2,16);//OLED显示温度阈值
OLED_ShowNum(98,4,R_MAX,2,16);//OLED显示湿度阈值
OLED_ShowChinese(40,0,6,16);//OLED显示中文 “实”
OLED_ShowChinese(56,0,7,16);//OLED显示中文 “时”
OLED_ShowChinese(0,2,0,16);//OLED显示中文 “温”
OLED_ShowChinese(18,2,1,16);//OLED显示中文 “度”
OLED_ShowNum(50,2,TH,2,16);//OLED显示温度数字
OLED_ShowChinese(0,4,2,16);//OLED显示中文 “湿”
OLED_ShowChinese(18,4,3,16);//OLED显示中文 “度”
OLED_ShowNum(50,4,RH,2,16);//OLED显示湿度数字
for(i=0;i<5;i++)
{
sendDate(Tab[i]);
}
sendDate(TH/10+0x30); //对数据进行转换
sendDate(TH%10+0x30);
for(j=0;j<5;j++)
{
sendDate(Tabb[j]);
}
sendDate(RH/10+0x30);
sendDate(RH%10+0x30);
}
}
四、手机端配置
五、问题总结
- 蓝牙模块默认情况下是从机模式,手机端(SPP)才可以配对并连接蓝牙模块。(参考51单片机蓝牙与手机双向通信-蓝牙配置)
- 在键盘面板点击编辑模式才能修改键盘参数
- 手机端配置时注意勾选十六进制
六、资源
1、完整代码和手机app下载路径:
提取码:0011