基于51单片机的温度报警系统

 

功能:

设计一个温度报警系统,可以设定温度上、下限的值,到达设定值时,蜂鸣器响;按键设定有设置、确定、取消、减少与增加功能,LCD1602实时显示相关温度信息

设定界面:

温度超过设定值,蜂鸣器响:

温度超过设定值,蜂鸣器响:温度超过设定值​​​​​​

温度低于设定值,蜂鸣器响:

部分程序:

#include <reg52.h>

#include "SETTEM.h"      //设置报警的上下限值头文件

#include "Lcd1602.h"     //LCD显示模块功能头文件

#include "DS18B20.h"     //DS18B02模块功能头文件

#include "IntToChar.h"   //存放整型数转换为字符串头文件

#include "Alarm.h"        //报警功能头文件    

bit flag1s = 0;          //1s定时标志

unsigned char T0RH = 0;  //T0重载值的高字节

unsigned char T0RL = 0;  //T0重载值的低字节

int key=0;

char Hint1[]={"Current temperature"};

void ConfigTimer0(unsigned int ms);

void main()

{

    bit res;

    int temp;                                 //读取到的当前温度值

    int intT, decT;                           //温度值的整数和小数部分

    unsigned char len;

    unsigned char str[12];

   

    EA = 1;                                   //开总中断

    ConfigTimer0(10);                         //T0定时10ms

    Start18B20();                             //启动DS18B20

    InitLcd1602();                            //初始化液晶 

   

    ConfigInt0();                             //设置温度 

   

    while (1)

    {  

        if (flag1s)                           //每秒更新一次温度

        {

            flag1s = 0;

            res = Get18B20Temp(&temp);        //读取当前温度

            if (res)                          //读取成功时,刷新当前温度显示

            {

                intT = temp >> 4;             //分离出温度值整数部分

                decT = temp & 0xF;            //分离出温度值小数部分

                len = IntToString(str, intT); //整数部分转换为字符串

                str[len++] = '.';             //添加小数点

                decT = (decT*10) / 16;        //二进制的小数部分转换为1位十进制位

                str[len++] = decT + '0';      //十进制小数位再转换为ASCII字符

             

                           str[len++] = key + '0';

                           while (len < 6)               //用空格补齐到6个字符长度

                {

                    str[len++] = ' ';

                }

                str[len] = '\0';              //添加字符串结束符

               

                            LcdShowStr(0, 0, Hint1);      //提示显示到液晶屏上

                            LcdShowStr(0, 1, str);        //温度显示到液晶屏上                       

            }

            else                              //读取失败时,提示错误信息

            {

                LcdShowStr(0, 0, "error!");

            }

            Start18B20();                     //重新启动下一次转换

                     Alarm((float)temp*0.0625,Htem,Ltem);

        }

    }

}

资料包括:

 

需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白茶丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值