全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > LED照明 >

基于51单片机的温度湿度采集系统设计

时间:2023-08-25 10:46

人气:

作者:admin

标签: 温度  单片机    湿度  基于 

导读:基于51单片机的温度湿度采集系统设计-对温度、湿度进行采集2、可以警报提示、修改温度、湿度上下限值3、lcd显示相关信息...

实现功能:

1、对温度、湿度进行采集2、可以警报提示、修改温度、湿度上下限值3、lcd显示相关信息

原理图:

部分程序:

#include

#define uint unsigned int

#define uchar unsigned char

#include

typedef bit BOOL ;

sbit io = P1^1 ;//(口线定义)

sbit bee=P1^0;

sbit rs = P2^5 ;

sbit rw = P2^6 ;

sbit ep = P2^7 ;

bit flag_300ms ;

sbit K1=P1^2;

sbit K2=P1^3;

sbit K3=P1^4;

uchar yemian=0;//(定义变量)

uchar flat=1;

uchar data_byte;

uchar RH,RL,TH,TL;

uchar WenDu,ShiDu;//报警的温度和湿度

#include "eeprom52.h"

/ 延时程序 /

void delay(uchar ms)

{ // 延时子程序

uchar i ;

while(ms--)

{

for(i = 0 ; i<250;i++) ;

}

}

void delay1()//延时10us

{

uchar i;

i--;

i--;

i--;

i--;

i--;

i--;

}

void longdelay(uchar s) //长延时

{

while(s--)

{

delay(20) ;

}

}

/ 把数据保存到单片机内部eeprom中 /

void write_eeprom()

{

SectorErase(0x2000);

byte_write(0x2000, WenDu);

byte_write(0x2001, ShiDu);

byte_write(0x2060, a_a);

}

/* 把数据从单片机内部eeprom中读出来 /

void read_eeprom()

{

WenDu = byte_read(0x2000);

ShiDu = byte_read(0x2001);

a_a = byte_read(0x2060);

}

/ 开机自检eeprom初始化 ***/

void init_eeprom()

{

read_eeprom(); //先读

if(a_a != 2) //新的单片机初始单片机内问eeprom

{

WenDu = 30;

ShiDu = 80;

a_a = 2;

write_eeprom();

}

}

if( TH

{

bee=1; //停止报警

}

}

/ LCD模块 ******************/

BOOL lcd_bz()//测试LCD忙碌状态

rs = 0 ;

rw = 0 ;

ep = 0 ;

P0 = cmd ;

ep = 1 ;

ep = 0 ;

}

void write_addr(uchar addr)//写地址

{

write_cmd(addr|0x80) ;

}

void write_byte(uchar dat)//写字节

{

while(lcd_bz()) ;

rs = 1 ;

rw = 0 ;

ep = 0 ;

P0 = dat ;

ep = 1 ;

ep = 0 ;

}

void lcd_init()// 初始化

{

write_cmd(0x38) ;

delay(1);

write_cmd(0x08) ;

delay(1);

write_cmd(0x01) ;

delay(1);

write_cmd(0x06) ;

delay(1);

write_cmd(0x0c) ;

delay(1);

}

data_byte<<=1;

data_byte|=temp;

}

return data_byte;

}

void receive()//接收数据

{

uchar T_H,T_L,R_H,R_L,check,num_check;

uchar count;

start();//开始信号

io=1;

if(!io)//读取DHT11响应信号

{

while((io)&&count++);

R_H=receive_byte();

R_L=receive_byte();

T_H=receive_byte();

T_L=receive_byte();

check=receive_byte();

io=0;//拉低延时50us

delay1();delay1();delay1();delay1();delay1();

io=1;

num_check=R_H+R_L+T_H+T_L;

if(num_check=check)

{

RH=R_H;

RL=R_L;

TH=T_H;

TL=T_L;

check=num_check;

}

}

}

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信