• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

04/09 09:02
1265
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

仿真版本:Proteus8.6及以上版本

程序编译:Keil5 C51

编程语言:C语言

设计编号:【F01】

1.? 简介

? 本文提出了一种基于51单片机LCD1602温湿度报警系统。该设计使用STC89C52单片机、DHT11传感器模块、LCD1602液晶显示屏模块以及报警模块,简单明了的实现可提要求。DHT11数字温湿度传感器把采集到的温湿度数据传给单片机,经过单片机的处理,准确的显示到液晶屏上。同时,手动设置温湿度的上下限值,当实时温湿度超出阈值时,对应的工作指示灯亮,蜂鸣器报警。

2.? 主要功能

a.通过LCD1602显示当前温湿度值,温度测量范围:0-99摄氏度。

b.通过独立按键设置温湿度上下限值,按加减键就可以修改对应值。

c.当温湿度低于下限或高于上限时,蜂鸣器和LED灯同时报警。

3.? 源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

#include "common.h"
#include "lcd1602.h"
#include "dht.h"
extern unsigned char U8RH_data_H;
extern unsigned char U8T_data_H;
sbit key1 = P1^0;//设置键
sbit key2 = P1^1;//加键
sbit key3 = P1^2;//减键
sbit relay1 = P1^6;//加热继电器
sbit relay2 = P1^7;//降温继电器
sbit relay3 = P3^6;//加湿继电器
sbit relay4 = P3^7;//除湿继电器
sbit beep = P2^0;//蜂鸣器
unsigned char tl = 20,th = 30,hl = 30,hh = 60;//温湿度上下限初始值
unsigned char setn = 0;//设置标志
void display_alarm()//显示报警值
{
 	 lcd_write_char(4,0,tl/10+0x30);
	 lcd_write_char(5,0,tl%10+0x30);
	 lcd_write_char(13,0,th/10+0x30);
	 lcd_write_char(14,0,th%10+0x30);

	 lcd_write_char(4,1,hl/10+0x30);
	 lcd_write_char(5,1,hl%10+0x30);
	 lcd_write_char(13,1,hh/10+0x30);
	 lcd_write_char(14,1,hh%10+0x30);
}
void keyscan()
{
 	if(key1 == 0)//设置键按下
	{
	 	delay_ms(10);
		if(key1 == 0)
		{
			beep = 0;
			delay_ms(100);
			beep = 1;
		 	while(key1 == 0);//等待按键松开
			setn++;
			if(setn > 4)//按下次数超过4次,退出设置
			{
			 	setn = 0;
				lcd_write_com(0x0c);//关闭光标
				lcd_write_str(0,0,"Tem:  C  Hum:  %");
	  		lcd_write_str(0,1,"                ");
			}
			if(setn == 1)//设置温度下限
			{
			 	lcd_write_str(0,0,"Tml:  C  Tmh:  C");
	  		lcd_write_str(0,1,"Hml:  %  Hmh:  %");

				display_alarm();
				lcd_write_com(0x80+5);
				lcd_write_com(0x0f);
			}
			if(setn == 2)//温度上限
			{
				lcd_write_com(0x80+14);
				lcd_write_com(0x0f);
			}
			if(setn == 3)//湿度下限
			{
				lcd_write_com(0x80+0x40+5);
				lcd_write_com(0x0f);
			}
			if(setn == 4)//湿度上限
			{
				lcd_write_com(0x80+0x40+14);
				lcd_write_com(0x0f);
			}
		}
	}
	if(key2 == 0)//加键按下
	{
	 	delay_ms(10);
		if(key2 == 0)
		{
			beep = 0;
			delay_ms(100);
			beep = 1;
		 	while(key2 == 0);
		    if(setn == 1)
			{
			 	if(th - tl > 1)//上限必须大于下限,下限才能加
				tl ++;

				display_alarm();
				lcd_write_com(0x80+5);
				lcd_write_com(0x0f);
			}
			if(setn == 2)
			{
			    if(th < 99)//最大到99
				th++;
				display_alarm();
				lcd_write_com(0x80+14);
				lcd_write_com(0x0f);
			}
			if(setn == 3)
			{
			    if(hh - hl > 1)//上限必须大于下限,下限才能加
				hl++;
				display_alarm();
				lcd_write_com(0x80+0x40+5);
				lcd_write_com(0x0f);
			}
			if(setn == 4)
			{
			    if(hh < 99)//最大到99
				hh++;
				display_alarm();
				lcd_write_com(0x80+0x40+14);
				lcd_write_com(0x0f);
			}
		}
	}

4.? 仿真proteus8.6

? 本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

当前温湿度:

设置温湿度上下限:

当温度高于上限时,蜂鸣器和LED灯报警:

当温度低于下限时,蜂鸣器和LED灯报警:

当湿度高于上限时,蜂鸣器和LED灯报警:

当湿度低于下限时,蜂鸣器和LED灯报警:

5.? 设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。

6.? 资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

百度网盘下载链接:【F01】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载

相关推荐