找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4336|回复: 2
收起左侧

基于DS18B20的数字温度监控报警系统Proteus仿真设计(LCD1602显示)

  [复制链接]
ID:596401 发表于 2019-8-25 10:29 | 显示全部楼层 |阅读模式
设计要求
1. 测量温度值精度为±1℃;                                      
2. 系统允许的误差范围为1℃以内;                              
3. 系统可由用户预设温度值,测温范围为-55℃~+125℃;         
4. 通过DS18B20传感器和系统连接,能实时准确检测到现场温度;   
5. 把现场实时检测到的温度值通过LCD1602液晶显示出来;           
6. 报警温度设定和报警:根据需要可以设置报警温度,并且当达到报警温度时会发出报警提示;
内容介绍
本文介绍一种基于AT89C52的温度监控报警系统设计,系统采用DS18B20作为温度监测元件,测量范围-55℃-~+125℃,使用LCD1602液晶模块显示测取的温度值,通过按键设置温度报警上下限。若当前获取的温度不在设定温度上下限范围内时,蜂鸣器报警,LED灯点亮,指示当前报警信息。

系统框架

系统框图.jpg

仿真结果
仿真结果运行.jpg

部分程序如下
/***********Main主程序**************/
void main()
{
       init();
       Init_time();
       Init_DS18B20();
       while(1)
       {
              if(s1==0||s1num>=1)
                     {keyscan(); TR0 = 0; D1 =1; D2 = 1;}
              else
              {     
                     ReadTemp();
                     write_temp_value(0,temp_value);  
                     comp();
              }
                           
       }
}
void delay(uint z)                                          
{
       uint x,y;
       for(x=z;x>0;x--)
       for(y=110;y>0;y--);
}
/***********LCD初始化程序**************/
void init()                                       
{   
       lcden=0;
       lcdrw=0;
       write_com(0x38);      
       write_com(0x0c);  
       write_com(0x06);      
       write_com(0x01);      
       write_com(0x80);      
      
       write_com(0x80+9);
       write_data('H');
       write_data(':');     
       write_data('+');
       write_data('2');
       write_data('0');
       write_data(0xdf);
       write_data('C');
       write_com(0x80+9+0x40);
       write_data('L');
       write_data(':');      
       write_data('+');
       write_data('1');
       write_data('0');
       write_data(0xdf);
       write_data('C');
       h=0x14;
       l=0+0x0a;
       D1=1;
       D2=1;
       figh=0;
       figl=1;
}
/***********LCD写指令**************/
voidwrite_com(uchar com)
{     
       lcdrs=0;
       P0=com;
       delay(5);
       lcden=1;
       delay(5);      
       lcden=0;
}
/***********LCD写数据**************/
voidwrite_data(uchar date)           
{     
       lcdrs=1;      
       P0=date;
       delay(5);
       lcden=1;
       delay(5);
       lcden=0;
}
/***********LCD显示读取温度值**************/
voidwrite_temp_value(uchar add,char date)      
{     
       uchar bai,shi,ge;
       bai=date/100;
       shi=date%100/10;      
       ge=date%10;      
       if((bai|shi)==0)
       shi=0x70;
       if(bai==0)
       bai=0x70;
       write_com(0x80+add);      
      
       if(fig==0&&shi!=0x70)     
       {
              write_data('-');     
          write_data(0x30+shi);
       }
       if(fig==0&&shi==0x70)   
       {
              write_data(0x30+0x70);   
          write_data('-');   
       }
       if(fig==1)write_data(0x30+bai);
       if(fig==1)write_data(0x30+shi);
       write_data(0x30+ge);
       write_data(0xdf);      
       write_data('C');





回复

使用道具 举报

ID:108622 发表于 2019-9-14 05:11 | 显示全部楼层
没c程序
回复

使用道具 举报

ID:844518 发表于 2020-11-16 18:38 | 显示全部楼层
资源没?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表