一.硬件方案
本设计主要通过气压传感器BMP180获得当前位置的温度和大气压值,并通过LCD1602显示。并根据测量值与设置好的阀值进行对比进而控制蜂鸣器与LED灯进行提示使用者。
主要由51单片机+最小系统+LCD1602液晶显示模块+BMP180气压检测模块+AT24C02存储电路+蜂鸣器模块+LED指示灯模块+按键模块;原理图如图:
Protues及PCB图:
二.设计功能
- 本设计采用LCD1602显示屏实时显示信息,BMP180作为大气压温度传感器。
- 当所采集到的温度超出设置好的限值时蜂鸣器红色LED灯发出声光提示;
- 当所采集到的气压超出设置好的限值时蜂鸣器绿色LED灯发出声光提示;
- 可以通过“设置”按键进行设置温度/大气压报警的上限值和下限值,并且设置好的报警限值具有掉电保护功能;
三.软件设计
/********************************************************
函数名称:void main()
函数作用:主函数
参数说明:
********************************************************/
void main()
{
uchar i=0; //循环计数变量
if(key_jian==0)
{
Delay_ms(100);
if(key_jian==0)
{
AT24C02_write_date(0,105);//写入【大气压上限值】数据保存
AT24C02_write_date(1,95); //写入【大气压下限值】数据保存
AT24C02_write_date(2,38); //写入【温度上限值】数据保存
AT24C02_write_date(3,16); //写入【温度下限值】数据保存
}
}
atmos_up=AT24C02_read_date(0); //读取存储的【大气压上限值】数据
atmos_down=AT24C02_read_date(1);//读取存储的【大气压下限值】数据
temp_up=AT24C02_read_date(2); //读取存储的【温度上限值】数据
temp_down=AT24C02_read_date(3); //读取存储的【温度下限值】数据
LCD_init(); //LCD1602初始化
BMP180_init(); //BMP180初始化
lcd1602_write_pic(0x00,pic); //将自定义字符“°”写入到LCD1602中
lcd1602_write_pic(0x01,zeng); //将自定义字符“↑”写入到LCD1602中
lcd1602_write_pic(0x02,jian); //将自定义字符“↓”写入到LCD1602中
fixed_display(); //显示固定内容
while(1) //死循环
{
scan(); //按键检测处理
if(set_f==0) //正常显示模式
{
if(i%25==0) //每循环N次采集一次数据
BMP180_Convert(); //读取BMP180并显示温度、大气压
display1(); //显示当前大气压、温度
i++; //循环次数+1
}
else
display2(); //显示设置大气压、温度上下限
}
}
资料链接:https://pan.baidu.com/s/1mbrCpR7PhqPVd_EEoW59tA?pwd=vh17
提取码:vh17