功能介绍:采用51单片机作为主控单片机,通过采集传感器BMP280的胎压和温度,显示到LCD1602上面,通过HC-05蓝牙模块将数据发送到手机APP,并且可以通过按键设置温度和压力的阈值,超过此值蜂鸣器进行报警,可以及时的提醒驾驶员胎压或者温度异常,程序采用keil编写,并且有中文注释,新手容易看懂,文末有资料分享:
31-基于51单片机汽车胎压温度检测报警系统(程序+原理图+PCB+元件清单全套资料)
程序部分展示,有中文注释,新手容易看懂
void main()
{int tem=25,bmp=1150;
long signed int xdata tp;
long unsigned int xdata press;
uchar xdata n;
auxr&=0x01;
beep=1;
lcdinit();
writecom(0x40);
for(n=0;n<64;n++)
{
writedata(rom[n]);
}
bmpreset();
timerconfig();
delay10ms(1);
if((bmpid())==0x58)
{
readtrimming();
bmpconfig();
} Uart_Init();
while(1)
{
bmpreaddata();
tp=tempcal(bmp280_ut)-800;//校准温度
writecom(0x80);
if(tp<0)
{
writedata('-');
tp=tp-1;
tp=~tp;
}
else
{
writedata(' ');
}
writedata(table[tp/1000]); //显示温度
writedata(table[tp%1000/100]);
writedata('.');
writedata(table[tp%100/10]);
writedata(table[tp%10]);
writedata('C');
writedata(' ');
writedata(' ');writedata(' '); //显示温度阈值
writedata(table[tem%100/10]);
writedata(table[tem%10]);
writedata('C');
writecom(0xc0);
press=presscal(bmp280_up);
if((press/100000)!=0)
{
writedata(table[press/100000]);
}
else
{
writedata(' ');
}
writedata(table[press%100000/10000]);//显示胎压
writedata(table[press%10000/1000]);
writedata(table[press%1000/100]);
writedata('.');
writedata(table[press%100/10]);
writedata(table[press%10]);
writedata('P');
writedata('a');
writedata(' ');
writedata(table[bmp%10000/1000]); //显示胎压阈值
writedata(table[bmp%1000/100]);
writedata(table[bmp%100/10]);
writedata(table[bmp%10]);
writedata('P');
writedata('a');
if(K1==0)//设置温度阈值
{
tem++;
if(tem>99) tem=20;
}
if(K2==0)//设置压力阈值
{
bmp=bmp+10;
if(bmp>1200 ) bmp=1050;
}
if(tp>tem*100||(press/100)>bmp) beep=0;//温度或者胎压大于阈值 开始报警
else beep=1; //否则停止报警
printf("TMP:%ld",tp/100);
printf(".");
printf("%ld C\r\n",tp%100);
printf("BMP:%ld",press/100);
printf(".");
printf("%ld Pa\r\n",press%100);
}
}
void timerconfig()
{
TMOD=0X01;
ET0=1;
EA=1;
}
下面是原理图和PCB展示