【Proteus仿真】基于DHT11的温度测量,LCD1602显示

这篇具有很好参考价值的文章主要介绍了【Proteus仿真】基于DHT11的温度测量,LCD1602显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Proteus仿真】基于DHT11的温湿度测量,LCD1602显示

测试工具

软件:Proteus8.13

仿真器件:蜂鸣器警报,按键输入,DHT11温湿度,传感器LCD1602显示。

功能叙述

利用DHT11检测环境中的温湿度,并实时显示到LCD1602上,且在实时显示数据的后面,还显示有当前设定的预警上限值。实时数据一旦大于设定的预警上限的值,就会触发蜂鸣器。独立按键,可以改变温湿度的上限预警值。

仿真图示

仿真运行原图

原理图在未运行仿真时,LCD1602有点显示不出,运行了就能显示了。

lcd1602proteus,Proteus仿真,proteus,单片机,51单片机

原图中数据加标注
lcd1602proteus,Proteus仿真,proteus,单片机,51单片机

代码节选

代码跨越库有点多,这里就先放预览图。具体的可以看文件。
还粘贴了部分代码(不贴部分代码,字数少了,不给发)

lcd1602proteus,Proteus仿真,proteus,单片机,51单片机
/**************************************************************************************
实验名称:DHT11温湿度检测(LCD1602显示)
接线说明:DHT11温湿度模块-->单片机IO
		  VCC-->5V
		  DATA-->P2.3
		  GND-->GND	
实验现象:下载程序后,LCD1602上显示DHT11温湿度传感器采集的温度和湿度值																		  
***************************************************************************************/
#include "public.h"
#include "lcd1602.h"
#include "dht11.h"

//LCD1602引脚配置:
sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_EN=P2^7;
#define LCD_DataPort P0

sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;

//LCD1602函数声明:
void LCD_Init();
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char);
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String);
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length);
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
//要用函数声明
void Button1();	//按钮1检测
void Button2();	//按钮2检测
void Button3();	//按钮3检测
void Button4();	//按钮4检测
void BUZ_Use(char Num);		//蜂鸣器控制
void Delay(unsigned int xms);

/*******************************************************************************
变量区
*******************************************************************************/
int temp_Max=30;
int humi_Max=90;

/*******************************************************************************
* 函 数 名       : main
* 函数功能		 : 主函数
* 输    入       : 无
* 输    出    	 : 无
*******************************************************************************/
void main()
{	
	u8 temp=0,humi=0;
	u8 i=0;
	u8 temp_buf[3],humi_buf[3];

	lcd1602_init();
	while(DHT11_Init())	//检测DHT11是否存在
	{
		lcd1602_show_string(0,0,"Error");		
	}
	lcd1602_show_string(0,0,"Temp:   C");
	lcd1602_show_string(0,1,"Humi:   %RH");
	

	while(1)
	{
		Button1();	//按钮1检测
		Button2();	//按钮2检测
		Button3();	//按钮3检测
		Button4();	//按钮4检测
		i++;
		if(i%200==0)
		{
			DHT11_Read_Data(&temp,&humi);
			temp_buf[0]=temp/10+0x30;	
			temp_buf[1]=temp%10+0x30;
			temp_buf[2]='\0';
			lcd1602_show_string(6,0,temp_buf);
			LCD_ShowNum(1,14,temp_Max,2);

			humi_buf[0]=humi/10+0x30;	
			humi_buf[1]=humi%10+0x30;
			humi_buf[2]='\0';
			lcd1602_show_string(6,1,humi_buf);
			LCD_ShowNum(2,14,humi_Max,2);
		}
		delay_ms(1);
		if(temp>=temp_Max || humi>=humi_Max)
		{
			BUZ_Use(0);
		}
		else
		{
			BUZ_Use(1);
		}
	}
}

//蜂鸣器控制
//0:响声   1:不响
void BUZ_Use(char Num)
{
	switch(Num)
	{
		case 0:
			P10=0;
		break;
		case 1:
			P10=1;
		break;
	}
}

void Button1()
{
	if(P11==0)			//如果Button1按键按下
	{
		Delay(20);		//延时消抖
		//按键1事件
		temp_Max--;
		while(P11==0);	//松手检测
		Delay(20);		//延时消抖
	}
}

void Button2()
{
	if(P12==0)			//如果Button1按键按下
	{
		Delay(20);		//延时消抖
		//按键2事件
		temp_Max++;
		while(P12==0);	//松手检测
		Delay(20);		//延时消抖
	}
}

void Button3()
{
	if(P13==0)			//如果Button1按键按下
	{
		Delay(20);		//延时消抖
		//按键3事件
		humi_Max--;
		while(P13==0);	//松手检测
		Delay(20);		//延时消抖
	}
}

void Button4()
{
	if(P14==0)			//如果Button1按键按下
	{
		Delay(20);		//延时消抖
		//按键4事件
		humi_Max++;
		while(P14==0);	//松手检测
		Delay(20);		//延时消抖
	}
}
void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

问题答疑

时间为2024/1/2,有部分读者在使用工程时出现了编译后无法使用的问题,随后我进行尝试没发现问题,工程能正常运行。

关于【Proteus仿真】DHT11+LCD1602问题答疑

工程源码

链接:https://pan.baidu.com/s/12pteUJCeVncpl9nny5l3Ow
提取码:n9b9文章来源地址https://www.toymoban.com/news/detail-724882.html

到了这里,关于【Proteus仿真】基于DHT11的温度测量,LCD1602显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Proteus仿真--1602LCD显示电话拨号键盘按键实验(仿真文件+程序)

    本文主要介绍基于51单片机的LCD1602显示电话拨号键盘按键实验(完整仿真源文件及代码见文末链接) 仿真图如下 其中右下方12个按键模拟仿真手机键盘,使用方法同手机键一样,拨打手机号码则在液晶显示屏上显示对应的号码 仿真运行视频 Proteus仿真--1602LCD显示电话拨号键盘

    2024年02月06日
    浏览(56)
  • Proteus仿真--1602LCD显示仿手机键盘按键字符(仿真文件+程序)

    本文主要介绍基于51单片机的1602LCD显示仿手机键盘按键字符(完整仿真源文件及代码见文末链接) 仿真图如下 其中左下角12个按键模拟仿真手机键盘,使用方法同手机键一样,长按自动跳动切换键值,松手后确认选择,同步可以在1602 LCD液晶上显示出来 仿真运行视频 Proteus仿

    2024年02月05日
    浏览(39)
  • stm32项目之DHT11温湿度显示(LCD1602)

    掌握LCD1602的使用 掌握DHT11的原理及使用 看懂LCD1602和DHT11时序图 看懂DHT11的原理 掌握LCD1602的显示 编写程序用LCD1602显示温湿度 DHT11部分: DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次 通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当

    2024年02月02日
    浏览(53)
  • STM32 Proteus仿真DHT11温度湿度光敏光强DS1302闹钟-0044

    STM32 Proteus仿真DHT11温度湿度光敏光强DS1302闹钟-0044 Proteus 仿真小实验: STM32 Proteus仿真DHT11温度湿度光敏光强DS1302闹钟-0044 功能: 硬件组成: STM32F103C6T6单片机 +DHT11温度湿度+光敏电阻采集光强 +多个按键模拟红外遥控+1个LED灯+LCD1602+DS1302时钟 1.采集DHT11温度湿度,光敏电阻光

    2024年02月10日
    浏览(63)
  • STM32F103系列 Proteus仿真 4*4矩阵键盘 串口+LCD1602显示

            最近一直在肝STM32系列芯片,这里我想要检验一下自己的初步学习成果,简单的运用一下IO口的配置,代码使用正点的库函数模板写的,仿真软件是Proteus 8.13,代码编写编译软件是Keil MDK5,仿真芯片是STM32F103R6小容量芯片。 目录 一、硬件设计  二、软件设计 1、L

    2024年02月03日
    浏览(45)
  • STM32 Proteus仿真MQ2 MQ7家庭烟雾燃气温度湿度检测系统DHT11-0011

    STM32 Proteus仿真MQ2 MQ7家庭烟雾燃气温度湿度检测系统DHT11-0011 Proteus仿真小实验: STM32 Proteus仿真MQ2 MQ7家庭烟雾燃气温度湿度检测系统DHT11-0011 功能: 硬件组成:STM32F103R6单片机 +LCD1602显示器+DHT11温度湿度+MQ2烟雾浓度(电位器模拟)+MQ7一氧化碳(电位器模拟)+按键(模拟HC-SR

    2024年02月03日
    浏览(45)
  • Proteus仿真-LCD1602液晶屏使用方法(驱动一)

    一、硬件链接 在元件库中搜索LM016即可找到LCD1602液晶屏。 按下图方式链接单片机和屏幕。 二、软件驱动代码 三、示例程序

    2024年02月12日
    浏览(37)
  • 51 Proteus仿真NTC热敏电阻温度测量温度控制系统-0016

    51 Proteus仿真NTC热敏电阻温度测量温度控制系统-0016 Proteus仿真小实验: 51 Proteus仿真NTC热敏电阻温度测量温度控制系统-0016 功能: 硬件组成:51单片机 +4位数码管+NTC热敏电阻+ADC0809+24C02存储器+按键+蜂鸣器+电机 1.通过ADC0809测量出NTC热敏电阻的阻值,然后根据阻值计算出温度。

    2024年02月08日
    浏览(43)
  • 字符型液晶显示器LCD 1602的显示控制(Keil+Proteus)

    趁机把LCD 1602的实验完成了,那个电路图有几个地方没弄懂,但是去掉也没有报错,就没管了。 LCD1602_百度百科 (baidu.com) https://baike.baidu.com/item/LCD1602/6014393?fr=ge_ala LCD1602液晶显示屏通过电压来改变填充在两块平行板之间的液晶材料内部分子的排列状况,以达到遮光和透光的目

    2024年02月06日
    浏览(47)
  • 【022】基于51单片机的RS-485无线DHT11温湿度检测系统Proteus仿真设计

    (1)、基于51单片机的RS-485无线DHT11温湿度检测系统proteus仿真设计一份; (2)、基于51单片机的RS-485无线DHT11温湿度检测系统proteus仿真设计keli源代码一份; (3)、基于51单片机的RS-485无线DHT11温湿度检测系统proteus仿真设计视频讲解一份; (1)、要求以51系列单片机为核心,

    2024年02月06日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包