本文档主要介绍了基于51单片机的温湿度监测系统设计,其中采用了DHT11作为温湿度传感器。51单片机在此项目中的作用是作为系统的控制核心,负责数据采集、处理和通信。以下将详细介绍文档中涉及的关键知识点: 1. **硬件组成**: - 温湿度传感器DHT11:DHT11是一种常见的数字式温湿度传感器,它能同时测量环境的温度和相对湿度,并以数字信号的形式输出,便于单片机进行读取。 - 51单片机:如8051系列,作为数据处理和驱动的核心,它具有较强的计算能力和I/O接口,可以与外部设备如LCD显示器、串口通信模块等连接。 2. **软件编程**: - **头文件包含**:`<REG52.h>` 和 `<intrins.h>` 是51单片机的标准库文件,提供了一些基本的编译器内联函数和寄存器定义。 - **数据类型定义**:文档定义了多种数据类型,如uchar、uint、U8、U16、F32和F64,以适应不同类型的数值处理。 - **标志位(Flag)**:FLAG和FLAG2用于管理程序的状态和中断标志。 - **变量声明**:例如temp、WH、SL等,用于存储温湿度数据以及通信相关的变量。 3. **数据采集**: - DHT11通信:通过P3口的DHT11_1和DHT11_2引脚与DHT11传感器交互,获取温度和湿度的十进制数据,并存储在变量如WH_temp和WL_temp中。 4. **数据处理**: - 存储单元xdatasjcc和xdataa1等用于临时存储数据,便于后续处理。 - 定义了两个十六进制范围的变量(W_H1、W_L1...),可能用于转换温度值。 5. **LCD显示**: - LCD_5到LCD_0是LCD显示器的各段驱动引脚,LCD_data数组用于存储显示字符,first_line和second_line分别定义了第一行和第二行的字符串模板。 6. **串口通信**: - RS、RW和E引脚用于RS232串口通信,如用于发送和接收数据或配置模式。 7. **报警功能**: - alrm_led_m引脚用于LED指示器,可能在检测到异常温湿度时亮起。 8. **中断控制**: - sbit结构定义了中断信号,可能用于处理来自DHT11传感器的中断事件。 这个基于51单片机的温湿度监测系统设计着重于硬件选型、数据采集、处理和显示,以及可能的串口通信功能。通过51单片机的计算能力,实现了对环境中温度和湿度的实时监控,并通过LCD显示结果。此外,还可能具备简单的故障报警功能,提高了系统的实用性和可靠性。
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
typedef unsigned char U8;
typedef signed char S8;
typedef unsigned int U16;
typedef signed int S16;
typedef unsigned long U32;
typedef signed long S32;
typedef float F32;
typedef double F64;
U8 FLAG,FLAG2;
U8 temp,temp2;
U8 WH,WL,SH,SL,checkdata;
U8 WH2,WL2,SH2,SL2,checkdata2;
U8 WH_temp,WL_temp,SH_temp,SL_temp,checkdata_temp;
U8 WH_temp2,WL_temp2,SH_temp2,SL_temp2,checkdata_temp2;
U8 comdata,comdata2;
U8 count,miao,fen,shi;
U8 str[5]={"RS232"};
U8 str2[5]={"rs322"};
U8 AA=0;
U8 xdata sjcc[5][32];
U8 xdata a1,aa1,b1,bb1,c1,cc1,ccc1;
U16 p=0,Q=0;
U16 n=0;
uchar set_sel=0;
uint W_H1=16,W_L1=5,S_H1=60,S_L1=30; //温湿度上下限
uint W_H2=30,W_L2=4,S_H2=25,S_L2=10;
uchar LCD_52,LCD_42,LCD_32,LCD_22,LCD_12,LCD_02;
uchar code LCDData[] ="0123456789"; //字符串数组存放在ROM里
uchar first_line[16] ="A %B %";
uchar second_line[16]=" ";
sbit DHT11_1 = P3^2;
sbit DHT11_2 = P3^3;
sbit RS=P2^5;
sbit RW=P2^6;
sbit E=P2^7;
sbit alarm_led_m = P2^0; //红灯 节点一
sbit alarm_led_n = P2^2; //绿灯 节点二
sbit K1 = P1^0; // 查看节点温湿度、时间、超限类型
sbit K2 = P1^1; // 确定修改位置
sbit K3 = P1^2; // +
sbit K4 = P1^3; // -
sbit K5 = P1^4; // 调时
sbit K6 = P1^5; // 查看存储
void Delay(U16 j) //1ms延时函数
{
U8 i;
for(;j>0;j--)
{
for(i=0;i<220;i++);
}
}
void Delay_10us(void)
{
U8 i;
剩余30页未读,继续阅读
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦