加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶(hù)
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入

基于51單片機(jī)的溫度濕度采集系統(tǒng)

09/06 10:47
1186
服務(wù)支持:
技術(shù)交流群

完成交易后在“購(gòu)買(mǎi)成功”頁(yè)面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗(yàn)、收獲成長(zhǎng)和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購(gòu)買(mǎi)后不支持退換且無(wú)法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
放大
實(shí)物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

實(shí)現(xiàn)功能:

1、對(duì)溫度、濕度進(jìn)行采集
2、可以警報(bào)提示、修改溫度、濕度上下限值
3、lcd顯示相關(guān)信息

原理圖

部分程序:

#include <reg52.h>

#define uint unsigned int

#define uchar unsigned char

#include <intrins.h>

typedef bit BOOL? ;

sbit io = P1^1 ;//(口線(xiàn)定義)

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;//報(bào)警的溫度和濕度

#include "eeprom52.h"

/****************************延時(shí)程序****************************/

void delay(uchar ms)

{?????? // 延時(shí)子程序

uchar i ;

while(ms--)

{

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

}

}

void delay1()//延時(shí)10us

{

uchar i;

i--;

i--;

i--;

i--;

i--;

i--;

}

void longdelay(uchar s) //長(zhǎng)延時(shí)

{

while(s--)

{

delay(20) ;

}

}

/******************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eeprom中******************/

void write_eeprom()

{

SectorErase(0x2000);

byte_write(0x2000, WenDu);

byte_write(0x2001, ShiDu);

byte_write(0x2060, a_a);

}

/******************把數(shù)據(jù)從單片機(jī)內(nèi)部eeprom中讀出來(lái)*****************/

void read_eeprom()

{

WenDu?? = byte_read(0x2000);

ShiDu = byte_read(0x2001);

a_a????? = byte_read(0x2060);

}

/**************開(kāi)機(jī)自檢eeprom初始化*****************/

void init_eeprom()

{

read_eeprom();?????????????? //先讀

if(a_a != 2)?????????????? //新的單片機(jī)初始單片機(jī)內(nèi)問(wèn)eeprom

{

WenDu?? = 30;

ShiDu?? = 80;

a_a = 2;

write_eeprom();

}

}

/********************報(bào)警程序部分*******************/

void warn()? //報(bào)警函數(shù)

{

if(TH>=WenDu)? //檢測(cè)的溫度高于設(shè)定溫度報(bào)警值

{

bee=0; //報(bào)警

}

if(RH>=ShiDu)? //檢測(cè)的濕度高于設(shè)定的濕度值

{

bee=0; //報(bào)警

}

if( TH<WenDu? &&? RH<ShiDu )

{

bee=1; //停止報(bào)警

}

}

/************************LCD模塊******************************************/

BOOL lcd_bz()//測(cè)試LCD忙碌狀態(tài)

{

BOOL result ;

rs = 0 ;

rw = 1 ;

ep = 1 ;

result = (BOOL)(P0 & 0x80) ;

ep = 0 ;

return result ;

}

void write_cmd(uchar cmd)// 寫(xiě)指令

{

while(lcd_bz()) ;

rs = 0 ;

rw = 0 ;

ep = 0 ;

P0 = cmd ;

ep = 1 ;

ep = 0 ;

}

void write_addr(uchar addr)//寫(xiě)地址

{

write_cmd(addr|0x80) ;

}

void write_byte(uchar dat)//寫(xiě)字節(jié)

{

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

}

void display(uchar addr, uchar q)//在某一地址上顯示一字節(jié)

{

delay(1) ;

write_addr(addr) ;

write_byte(q) ;

delay(1) ;

}

/*********************** DHT11測(cè)試模塊***************************************/

void start()//開(kāi)始信號(hào)

{

io=1;

delay1();

io=0;

delay(20);//>18ms

io=1;

delay1();//20-40us

delay1();

delay1();

delay1();

delay1();

}

uchar receive_byte()//接收一個(gè)字節(jié)

{

uchar i,temp,count;

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

{

temp=0;

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

if(io==1)temp=1;

count=2;

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

if(count==1)break;

data_byte<<=1;

data_byte|=temp;

}

return data_byte;

}

void receive()//接收數(shù)據(jù)

{

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

uchar count;

start();//開(kāi)始信號(hào)

io=1;

if(!io)//讀取DHT11響應(yīng)信號(hào)

{

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

R_H=receive_byte();

R_L=receive_byte();

T_H=receive_byte();

T_L=receive_byte();

check=receive_byte();

io=0;//拉低延時(shí)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;

}

}

}

 

  • 有需要資料的可了解一下.docx

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠(chǎng)商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
TLP291-4(V4GBTPE(T 1 Toshiba America Electronic Components Transistor Output Optocoupler, 4-Element, 2500V Isolation
$2.08 查看
ASDMB-125.000MHZ-XY-T 1 Abracon Corporation MEMS OSC XO 125.0000MHZ LVCMOS

ECAD模型

下載ECAD模型
$2.95 查看
HFBR-2412MZ 1 Broadcom Limited Receiver,
$243.12 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜