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

目录

前言

一、温控系统是什么?

二、设计目的

1.环境需求

2.设计基础

三、设计

1.C51程序设计

2.Proteus仿真

(1).元器件如下

(2).原理图。

总结


前言

微型计算器自20世纪70年代诞生以来,得以迅速发展、普及和应用。随着增强型8051单片机和嵌入式微处理器技术的飞速发展,以及单片机C语言应用的普及,单片机应用领域越来越广泛。

 

一、温控系统是什么?

随着社会的快速发展,科技的加速进步,测温仪器在各个领域应用越来越广泛,自动化和智能化已经成为现代的温度控制系统的主流发展方向。因为各行各业对于温度控制有着越来越高的要求,所以对温度的控制和测量就显得较为重要。温度控制器的使用范围越来越广泛,各种能够应用于不同领域的智能自动温度控制器随着产生。自动温度控制系统主要完成数据采集,温度定时的显示,温度控制,温度定时的设定以及报警等功能.

二、设计目的

对51单片机所学知识进一步强化理解和应用。

1.环境需求

软件:Proteus  (文章中使用Proteus 8.6)

          Keil (文章中使用Keil C51)

2.设计基础

掌握《C语言》、《单片机原理及应用》两门课程。

三、设计

1.C51程序设计

/*-----------------------------------------------
  名称:18B20温度测量报警
  内容:在LCD1602第一行可以显示当前温度,
		第二行显示设定的温度区间,超过此温度区间,蜂鸣器报警。
		温度区间可以通过用户按键设置
------------------------------------------------*/
#include<reg51.h>     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
#include<math.h>
#include<INTRINS.H>

#define uchar unsigned char
#define uint unsigned int 
/******************************************************************/
/*                    定义端口                                    */
/******************************************************************/
sbit led1=P1^3;// 温度超出范围指示灯
sbit led2=P1^4;

sbit buzzer=P3^3;//蜂鸣器引脚

sbit DQ=P3^7;//ds18b20 端口

sbit RS = P0^4;//1602数据/命令选择端(H:数据寄存器L:指令寄存器) 
sbit RW = P0^5;//1602读/写选择端 
sbit E  = P0^6;//1602使能信号端

sbit key1=P3^4;//用户按键
sbit key2=P3^5;
sbit key3=P3^6;
/******************************************************************/
/*                    全局变量                                    */
/******************************************************************/
int temp;//测得温度
char temp_max=40,temp_min=10;//设定的温度 
char TempH,TempL;
uchar flag_get,num=0;
uchar code tab[]={'0','1','2','3','4','5','6','7','8','9'};//液晶显示
uchar tab1[]="min:010  max:040";//液晶第二行显示内容
uchar  str[8];
/******************************************************************/
/*                    延时函数                                    */
/******************************************************************/
void delay1(uint i)//短延时函数
{
 	while(i--);
}
void delay(uint z) //长延时函数
{
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
/*****************************
  • 160
    点赞
  • 927
    收藏
    觉得还不错? 一键收藏
  • 188
    评论
基于C51单片机设计温度报警器的代码主要包括两个模块:温度传感器模块和报警模块。 温度传感器模块的代码如下: ```C #include <regx51.h> // 包含C51单片机头文件 sbit tempSensor = P2^1; // 温度传感器连接P2.1引脚 void delay(unsigned int time) // 延时函数 { unsigned int i, j; for (i = time; i > 0; i--) for(j = 110; j > 0; j--); } unsigned int getTemperature() // 获取温度函数 { unsigned int temperature = 0; while(tempSensor); // 等待温度传感器准备就绪 EA = 0; tempSensor = 0; // 向温度传感器发送请求信号 delay(18); // 等待温度传感器响应 tempSensor = 1; // 停止发送请求信号 delay(20); // 等待温度传感器发送温度数据 if(tempSensor) // 检查温度传感器是否发送完整温度数据 { temperature = 127; // 温度传感器数据错误,设置温度为最大值 } else { int i; for(i = 0; i < 8; i++) { temperature >>= 1; // 温度数据从最高位开始存储 tempSensor = 1; // 等待温度传感器发送下一位数据 delay(2); if(tempSensor) // 检查温度传感器发送的位是否为高电平 { temperature |= 0x80; // 若为高电平,则将对应位设置为1 } delay(2); tempSensor = 0; // 温度传感器发送下一位 } } EA = 1; return temperature; // 返回温度数据 } ``` 报警模块的代码如下: ```C #include <regx51.h> // 包含C51单片机头文件 sbit buzzer = P3^5; // 警报器连接P3.5引脚 void checkTemperature() // 检查温度函数 { unsigned int temperature = getTemperature(); // 获取温度数据 if(temperature > 30) // 判断温度是否超过阈值 { buzzer = 1; // 警报器鸣响 } else { buzzer = 0; // 关闭警报器 } } void main() // 主函数 { while(1) { checkTemperature(); // 检查温度 } } ``` 以上代码实现了基于C51单片机温度报警器功能,通过温度传感器模块获取温度数据,并采用报警模块对温度进行实时监测和判断,若温度超过指定阈值则触发报警器。在主函数中,通过循环不断调用检查温度函数实现持续报警器监测温度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 188
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值