找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3812|回复: 6
收起左侧

单片机基于1602的温湿度(DHT11)报警系统源程序

[复制链接]
ID:427492 发表于 2019-7-14 21:49 | 显示全部楼层 |阅读模式

1.jpg

1.jpg

2.jpg

2.jpg

3.jpg

3.jpg

4.jpg

4.jpg

5.jpg

5.jpg

/*********************************************************************************
*                   实验:DHT11温湿度传感器(按键有些迟钝)
* 步骤及现象:程序下载前,选择stc-isp的IRC频率:12MHz。下载完成后,1602第
*   一行显示:“Temperature:30C”第二行显示:“Humidity    :09RH”。这时
*   按按键0(sw1),进入温湿度上下限设置界面,1602第一行显示:“TH:30  TL:15  1 ”
*   第二行显示:“HH:15  HL:05    ”,温度上下限(TH、TL),湿度上下限(HH、HL)。   
*   第一行最右侧那个1表示此时可以对温度上限进行设置(按按键2(sw9)加,按按键3
*   (sw13)减);这时按按键1(sw5),第一行最右侧1变成数字2,表示此时可以对温 度
*   下限,进行设置(加减与上同);再按按键1,这时第一行最右侧数字消失,而第二     
*   行最右侧出现数字3,表示此时可以对湿度上限进行设置;接着按按键1,数字3变成
*   数字4,这时设置湿度下限。当数字是4时,再按一次按键1,退出界限设置界面;在   
*   界限设置界面无论数字是几,按按键0都可以退出设置界面。
*********************************************************************************/
#include <stc8.h>
#include "1602.h"
#include "displayandset.h"
#include "key.h"

sbit beep = P1^3;                           // 蜂鸣器
bit flg = 0;                                      // 清屏标志位
extern unsigned char rhh,rhl,rth,rtl,rcc;   // 用于接收DHT11测得的数据
extern uchar tempH, tempL, humiH, humiL;    // 用于设置温湿度上下限

void Timer0Init(void)                // 5毫秒@12.000MHz
{
        AUXR |= 0x80;                      // 定时器时钟1T模式
        TMOD &= 0xF0;                    // 设置定时器模式
        TL0 = 0xA0;                        // 设置定时初值
        TH0 = 0x15;                        // 设置定时初值
        TF0 = 0;                                // 清除TF0标志
        TR0 = 1;                                // 定时器0开始计时
        ET0 = 1;
        EA = 1;
}
/********** 主函数 **********/
void main()
{
        uchar keyvalue=16;           // 用于接收键值
        LCD_Init();                        // 1602初始化
        Timer0Init();                     // 定时器0初始化
        while(1)
        {               
                keyvalue = key_scan();   // 获取按键值
                if(keyvalue==0)              // 按按键0,进入设置界面
                        setHL();        
                main_Display();              // 不按按键,进入显示温湿度界面
                if(rhh > humiH || rhh < humiL || rth > tempH || rth < tempL) // 报警
                        beep = ~beep;        // 蜂鸣器电平翻转
                else
                        beep = 1;
        }
}

void T0_isr() interrupt 1
{
        static uchar i=0;
        i++;                         // 进一次中断加1,5ms进一次中断
        if(i == 200)              // 进200次中断,即1s
        {
                i = 0;
                flg = 1;              // 清屏标志置1
        }
        else
                flg = 0;
}

点C文件目录.jpg

点C文件目录.jpg

全部资料51hei下载地址:
基于1602的温湿度报警系统.rar (88.9 KB, 下载次数: 86)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:738997 发表于 2020-4-27 08:16 来自手机 | 显示全部楼层
这个可以用stc89c52做吗?
回复

使用道具 举报

ID:427492 发表于 2020-4-30 18:54 | 显示全部楼层
Mr.zqy 发表于 2020-4-27 08:16
这个可以用stc89c52做吗?

可以,有DHT11模块就行
回复

使用道具 举报

ID:612563 发表于 2020-5-1 12:53 来自手机 | 显示全部楼层
元气件这么多?
回复

使用道具 举报

ID:427492 发表于 2020-5-1 23:27 | 显示全部楼层

不就一个DHT11和LCD1602?
回复

使用道具 举报

ID:409436 发表于 2020-5-11 23:41 | 显示全部楼层
有仿真吗
回复

使用道具 举报

ID:427492 发表于 2020-5-14 22:45 | 显示全部楼层

没有            
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表