历史上的今天
返回首页

历史上的今天

今天是:2024年12月07日(星期六)

2021年12月07日 | 基于51单片机DHT11的加湿器proteus仿真程序设计

2021-12-07 来源:eefocus

硬件设计

仿真图:由LCD1602作为显示器,温湿度采用DHT11,通过3个按键设置阈值,当温湿度超过上下限之后会触发分别的继电器;
在这里插入图片描述
在这里插入图片描述

程序设计

#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 = 10,th = 35,hl = 15,hh = 70;//温湿度上下限初始值

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);

}

}

}

if(key3 == 0)//减键按下

{

delay_ms(10);

if(key3 == 0 )

{

beep = 0;

delay_ms(100);

beep = 1;

while(key3 == 0);

if(setn == 1)

{

if(tl > 0)//最小到0

tl --;


display_alarm();

lcd_write_com(0x80+5);

lcd_write_com(0x0f);

}

if(setn == 2)

{

    if(th - tl > 1)//上限必须大于下限,上限才能减

th--;

display_alarm();

lcd_write_com(0x80+14);

lcd_write_com(0x0f);

}

if(setn == 3)

{

    if(hl > 0)

hl--;

display_alarm();

lcd_write_com(0x80+0x40+5);

lcd_write_com(0x0f);

}

if(setn == 4)

{

    if(hh - hl > 1)//上限必须大于下限,上限才能减

hh--;

display_alarm();

lcd_write_com(0x80+0x40+14);

lcd_write_com(0x0f);

}

}

}

}


文件仅供参考:


链接:https://pan.baidu.com/s/1ZMBRq-beQdIIprV4pZcopA

提取码:e2xw

推荐阅读

史海拾趣

G-Link Technology公司的发展小趣事

面对日益多样化的市场需求,蜂鸟无线敏锐地意识到定制化服务的重要性。公司开始提供根据客户需求量身定制的无线通信解决方案,这一举措迅速赢得了众多企业和个人的青睐。例如,某大型互联网公司需要为其全球分支机构部署稳定可靠的无线通信网络,蜂鸟无线凭借其在全球范围内的研发和销售网络,迅速响应并提供了个性化的解决方案,不仅满足了客户对通信质量的高要求,还大大缩短了项目周期,赢得了客户的高度赞誉。

帝特(DTECH)公司的发展小趣事

近年来,帝特积极寻求与行业内优秀企业的合作机会。2024年3月,帝特科技与技象科技在广州帝特总部签署战略合作框架协议,双方就物联网通信产品展开深入合作。这一合作不仅有助于帝特在物联网领域的技术积累和业务拓展,也为公司未来的发展注入了新的活力。

BELDEN公司的发展小趣事

随着市场的不断发展和竞争的加剧,BELDEN公司开始通过并购来扩大规模和提升竞争力。2004年7月,BELDEN公司与CDT公司合并,这次合并使得BELDEN成为了全球最大的通讯线缆和网络产品生产厂家之一。合并后的BELDEN不仅拥有了更丰富的产品线和更强大的技术实力,还进一步提升了在全球市场中的竞争地位。此后,BELDEN继续通过并购等方式不断扩大规模,逐步成为了电子行业的领军企业。

捷茂微(GATEMODE)公司的发展小趣事

在发展过程中,BELDEN公司积极实施国际化战略,不断拓展海外市场。公司在全球范围内设立了多个分支机构和销售网络,覆盖了北美、欧洲、亚洲等多个地区。通过与国际知名企业的合作与交流,BELDEN不断引进先进的技术和管理经验,提升了自身的研发能力和管理水平。同时,公司还针对不同地区的市场需求,推出了定制化的产品和服务,赢得了广大客户的信任和好评。

Alpha Wire公司的发展小趣事

在20世纪初,BELDEN公司在技术创新方面取得了显著突破。公司不仅将塑料绝缘材料应用于电线和电缆制造,还着眼于精密和高质量产品的需求,致力于高附加值的绝缘材料、电缆、防护和护套材料的生产。这些技术创新使得BELDEN的产品在性能和质量上都有了显著提升,进一步巩固了公司在市场中的地位。同时,公司还不断扩大产品线,增加了橡胶绝缘材料等多种新产品,满足了不同客户的需求。

BILIN公司的发展小趣事

随着市场的不断发展和竞争的加剧,BELDEN公司开始通过并购来扩大规模和提升竞争力。2004年7月,BELDEN公司与CDT公司合并,这次合并使得BELDEN成为了全球最大的通讯线缆和网络产品生产厂家之一。合并后的BELDEN不仅拥有了更丰富的产品线和更强大的技术实力,还进一步提升了在全球市场中的竞争地位。此后,BELDEN继续通过并购等方式不断扩大规模,逐步成为了电子行业的领军企业。

问答坊 | AI 解惑

MAXQ3120混合信号微控制器的应用案例

监视系统的设计者和厂商一直希望微控制器能够为日常监视应用提供不断增加的通用功能,包括满足用电计量、汽车监控、数据搜集和传感器调节等方面的要求。maxq3120 就是为了满足这些要求而开发的低功耗、高速微控制器。它的主要技术规范如下。    ...…

查看全部问答>

1. 闪烁灯

1. 闪烁灯 1.  实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.  电路原理图 3.  系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路 ...…

查看全部问答>

关于RF智能遥控器DIY倡议

宗旨:培养EE友们动手实践能力、提高和RF应用、MCU编程开发能力等。 项目:智能家庭遥控器 主芯片:SI4020/SI4021 遥控距离:>15米。 电池规格:3节干电池供电。 电池使用寿命:半年以上。 成本控制:接收器+发送器共不超过60 RMB(DIY10套, ...…

查看全部问答>

WinCE系统下BootLoader的开发.pdf

WinCE系统下BootLoader的开发.pdf…

查看全部问答>

!!DLL添加到IMAGE中不成功

平台: windows mobile 6.5 platform builder for wimdows mobile 5.0 pxa310 board 问题:现在想把三个文件打包到FLASH.bin中,但是一直不成功,我是在release目录下用ultra edit32编辑platform.bib在FILES下添加如下内容: sdio-g-cdc-ndis- ...…

查看全部问答>

新手求救 关于网卡EEPROM设计的问题

我要做的课题是设计一个基于AM79C976芯片的网卡 可是不知道该往网卡里的EEPROM里写些什么东西 也不知道怎么写 谁能教教我 我用的EEPROM是93LC66B 还有一个问题 是关于EEPROM和寄存器映射的 是不是加电以后EEPROM的信息就会自动读到芯片内相应的寄 ...…

查看全部问答>

XPe开发初体验(一)XPe概述

XP Embedded是微软Windows Embedded产品线中非常重要的一环,不过比起大名鼎鼎的Windows Embedded CE,XPe显得过于低调了。在接下来的一段时间里,我希望能够用六篇的篇幅来描述一下XPe的整个开发过程。这个系列文章主要是针对有Windows编程经验, ...…

查看全部问答>

程序怎么结果不对,请帮忙分析!

module signalcreat(clk,out);    input clk;    reg[5:0] data;        reg a;        output out;    reg out;     initial    &nbs ...…

查看全部问答>

STM32ID怎么读出来是0xFFFFFFFF???

有些不是0xFFFFFFFF,这次买了20片,有10多片是 0xFFFFFFFF的,怎么回事呢? 买到假货了 ? 还是程序的问题,? 代码很简单,芯片型号是 STM32F103C6T6     u32 DevID[3];     DevID[0] = *(vu32*)(0x1ffff7e8); & ...…

查看全部问答>

ucosii在中断里推出时任务切换时,为什么使用OSIntCtxSw()

下载 (139.84 KB) 2011-1-4 15:24 下载 (73.55 KB) 2011-1-4 15:24 但这两个函数没区别啊?…

查看全部问答>