51单片机温度报警 您所在的位置:网站首页 r230温度报警 51单片机温度报警

51单片机温度报警

2024-07-10 08:31| 来源: 网络整理| 查看: 265

器件:  

  基于普中51A2单片机

  用到的模块:LCD1602、蜂鸣器、4个独立按键、DS18B20温度传感器。现象说明:

   LCD1602可以显示两行数据,每行可以显示16个字符,第一行显示设定的温度上下限,第二行显示DS18B20测得的实际温度,上下限的温度我们可以通过4个独立按键来调节,K1:TH++     K2:TH--    K3:TL++    K4:TL--,当测得的温度大于上线温度或小于下限温度时蜂鸣器报警。

器件介绍: DS18B20:

  高集成单总线接口传感器,一条线就可以与单片机通讯,测量结果直接输出数字温度信号,

  测温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃

  可编程的分辨率为 9~12 位,对应的可分辨温度分别为 0.5℃、0.25℃、 0.125℃ 和 0.0625℃,可实现高精度测温,由配置寄存器的R1(6位)、R2(5位)控制

  测得的温度以数字量存放到两个8位寄存器中,以补码的形式存在,其中高五位是符号位,高五位是0表示测得的温度值是+,是1为-,把这个数字量转化为十进制温度的方法:真值乘精度,编程实现如下:

if((value&0xf800)==0xf800)//判断符号位,负温度 { value=(~value)+1; //数据取反再加1 temp=value*(-0.0625);//乘以精度 } else //正温度 { temp=value*0.0625; }

DBS18B20内部还带有非易失寄存器EEPROM,可以在断电时保存存储上下限温度,断电后再次开机读取EEPROM的值,就可以获取到上次关机前设置的温度上下限:

//先写入缓存器 ds18b20_init(); ds18b20_check(); ds18b20_write_byte(0xcc);//SKIP ROM ds18b20_write_byte(0x4e); ds18b20_write_byte(th); ds18b20_write_byte(tl); //存进EEPROM delay_ms(8); ds18b20_init(); ds18b20_check(); ds18b20_write_byte(0xcc);//SKIP ROM ds18b20_write_byte(0x48); delay_ms(5); 实物现象:

温度报警器

原理图:

 

代码:

打包地址:普中51A2单片机温度报警-硬件开发文档类资源-CSDN下载

main() { char key=0; while(1) { pt=ReadTemperature(TH,TL,0x3f); //上限温度-22,下限-24,分辨率10位,也就是0.25C,TM R1 R0 1 1 1 1 1 key=key_scan(0); if(key!=KEY_UNPRESS) { setTime(key); } //读取温度,温度值存放在一个两个字节的数组中, delay(100); covert1(); covert0(TH,TL); LCD_Initial(); //第一个参数列号,第二个为行号,为0表示第一行 //为1表示第二行,第三个参数为显示数据的首地址 LCD_Print(0,0,TempBuffer0); LCD_Print(0,1,TempBuffer1); //报警功能 //大于上下限温度就报警 if(tempValue>=TH||tempValue


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有