欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
基于51單片機(jī)的無線溫濕度控制系統(tǒng)
[打印本頁]
作者:
深藍(lán)島嶼
時間:
2019-4-1 17:40
標(biāo)題:
基于51單片機(jī)的無線溫濕度控制系統(tǒng)
02.png
(56.02 KB, 下載次數(shù): 71)
下載附件
2019-4-1 17:32 上傳
01.png
(39.35 KB, 下載次數(shù): 48)
下載附件
2019-4-1 17:32 上傳
發(fā)射_DHT11程序
//宏定義
#define uchar unsigned char
#define uint unsigned int
//頭函數(shù)
#include <reg51.h>
#include <intrins.h>
//無線模塊
#include "api.h"
#include "nRF24L01P.h"
#include "DHT11.h"
//LED 管腳定義
sbit TXLED_R=P1^3;
sbit RXLED_Y=P1^5;
//主機(jī)詢問命令
uchar CMD[]={0xaa,0xbb,0xcc,0xdd};
//主函數(shù)
void main()
{
TXLED_R=0; //初始化LED
RXLED_Y=0;
init_io(); //無線初始化IO
RX_Mode(); //設(shè)置為接收模式
TXLED_R=1;
RXLED_Y=1;
//循環(huán)執(zhí)行
while(1)
{
sta = SPI_Read(STATUS); //讀狀態(tài)寄存器
if(RX_DR) //判斷是否接受到數(shù)據(jù)
{
SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH); //從RX FIFO讀出數(shù)據(jù)
flag = 1;
RXLED_Y=0; //打開接收指示燈
}
SPI_RW_Reg(WRITE_REG + STATUS, sta); //清除RX_DS中斷標(biāo)志
if(flag) //接受完成
{
flag = 0; //清標(biāo)志
//命令為主機(jī)詢問
if(RX_BUF[0]==CMD[0]&&RX_BUF[1]==CMD[1]&&RX_BUF[2]==CMD[2]&&RX_BUF[3]==CMD[3])
{
//打開接收成功指示
//無線答應(yīng)信號濕度 溫度
RH(); //DHT11讀取
TX_BUF[0]=0xaa;
//T溫度
TX_BUF[1]=U8T_data_H;
//RH濕度
TX_BUF[2]=U8RH_data_H;
TX_BUF[3]=0xdd;
delay_ms(100);
RXLED_Y=1; //關(guān)閉接受射指示燈
TXLED_R=0; //打開發(fā)射指示燈
TX_Mode(TX_BUF); // 把nRF24L01設(shè)置為發(fā)送模式并發(fā)送數(shù)據(jù)
Check_ACK(1); // 等待發(fā)送完畢,清除TX FIFO
delay_ms(100);
//發(fā)送成功指示
TXLED_R=1; //關(guān)閉發(fā)射指示燈
RX_Mode(); // 設(shè)置為接收模式
}
}
}
}
復(fù)制代碼
接收_溫濕度控制程序
//宏定義
#define uchar unsigned char
#define uint unsigned int
//頭函數(shù)
#include <reg51.h>
#include <intrins.h>
//屏幕函數(shù)調(diào)用
#include "Lcd.h"
//無線模塊
#include "api.h"
#include "nRF24L01P.h"
//繼電器定義
sbit jiangwen=P3^5;
sbit shengwen=P3^4;
sbit choushi=P3^3;
sbit jiashi=P3^2;
//LED 管腳定義
sbit TXLED_R=P1^3;
sbit RXLED_Y=P1^5;
//蜂鳴器
sbit Feng=P1^2;
//蜂鳴器閃爍標(biāo)志位
bit shan=0;
#include "KEY.h"
//主機(jī)詢問命令
uchar CMD[]={0xaa,0xbb,0xcc,0xdd};
uchar Mode=0;
uchar temp=0;
uchar KK=0;
//報警溫濕度
uchar TNumber=30,RHNumber=50,TX=20,HX=40;
//主函數(shù)
void main()
{
TH0=0x4b;
TL0=0xff;//賦初值
TMOD=0x01;//設(shè)置工作方式
EA=1;//打開中斷總開關(guān)
ET0=1;//打開允許開關(guān)
TR0=1;
//LCD初始化顯示
Init_LCD();
delay_ms(250);
TXLED_R=0; //初始化
RXLED_Y=0;
init_io(); //無線初始化IO
RX_Mode(); //設(shè)置為接收模式
TXLED_R=1;
RXLED_Y=1;
/////////////////////////////////////////////
TXLED_R=0; //發(fā)送指示燈
////////////////////////////////////////////////////////////////////////////////
//循環(huán)顯示
while(1)
{
TXLED_R=0; //發(fā)送指示燈
TX_ACK(); //發(fā)送詢問信號
sta = SPI_Read(STATUS); //讀狀態(tài)寄存器
TXLED_R=1; //發(fā)送指示燈
if(RX_DR) //判斷是否接受到數(shù)據(jù)
{
SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH); // 從RX FIFO讀出數(shù)據(jù)
flag = 1;
}
delay_ms(100);
SPI_RW_Reg(WRITE_REG + STATUS, sta); // 清除RX_DS中斷標(biāo)志
if(flag==1) // 接受完成
{
Mode=0;
flag=0;
}
else //設(shè)備丟失
{
Mode=1;
}
//顯示
//數(shù)據(jù)顯示
if(Mode==0)
{
RXLED_Y=0;
if(temp!=1)//重新初始化
{
display1();
temp=1;
}
display2(RX_BUF[1],RX_BUF[2]);//顯示讀數(shù)
if(RX_BUF[1]>TNumber) //溫度超標(biāo)降溫
{
jiangwen=0;
}
else
{
jiangwen=1;
}
if(RX_BUF[1]<TX) //溫度過低升溫
{
shengwen=0;
}
else
{
shengwen=1;
}
if(RX_BUF[2]>RHNumber) //濕度超標(biāo)抽濕
{
choushi=0;
}
else
{
choushi=1;
}
if(RX_BUF[2]<HX) //濕度過低加濕
{
jiashi=0;
}
else
{
jiashi=1;
}
if(((RX_BUF[1]>TNumber||RX_BUF[2]>RHNumber||RX_BUF[1]<TX||RX_BUF[2]<HX))&&(shan==1)) //超閥值蜂鳴器報警
{
Feng=0;
}
else
{
Feng=1;
}
RXLED_Y=1;
}
//讀取鍵值
KK=KEY_();
if(KK==3)//調(diào)整模式
{
Mode=2;
KK=0;
}
//數(shù)據(jù)顯示不在線
if(Mode==1)
{
if(temp!=2)
NoLine();//設(shè)備丟失
temp=2;
}
//鍵盤
else if(Mode==2)
{
temp=3;
display3();
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+5);
//調(diào)溫上限
while(KK!=3)
{
//讀取鍵值
KK=KEY_();
if(KK==1)//++
{
TNumber++;
if(TNumber==51)
TNumber=50;
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+5);
}
if(KK==2)//--
{
TNumber--;
if(TNumber==TX)
TNumber++;
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+5);
}
}
KK=0;
write_com(0x0f);//打開光標(biāo)
write_com(0x80+0x40+5);
//調(diào)溫x下限
while(KK!=3)
{
//讀取鍵值
KK=KEY_();
if(KK==1)//++
{
TX++;
if(TX==TNumber)
TX--;
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+0x40+5);
}
if(KK==2)//--
{
TX--;
if(TX==0xff)
TX=0;
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+0x40+5);
}
}
KK=0;
write_com(0x0f);//打開光標(biāo)
write_com(0x80+14);
//調(diào)濕 上
while(KK!=3)
{
//讀取鍵值
KK=KEY_();
if(KK==1)//++
{
RHNumber++;
if(RHNumber==91)
RHNumber=90;
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+14);
}
if(KK==2)//--
{
RHNumber--;
if(RHNumber==HX)
RHNumber++;
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+14);
}
}
KK=0;
write_com(0x0f);//打開光標(biāo)
write_com(0x80+0x40+14);
//調(diào)濕 下
while(KK!=3)
{
//讀取鍵值
KK=KEY_();
if(KK==1)//++
{
HX++;
if(HX==RHNumber)
HX--;
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+0x40+14);
}
if(KK==2)//--
{
HX--;
if(HX==19)
HX=20;
display4(TNumber,RHNumber,TX,HX);
write_com(0x0f);//打開光標(biāo)
write_com(0x80+0x40+14);
}
}
KK=0;
}
delay_ms(200);
delay_ms(200);
delay_ms(200);
}
}
void time0() interrupt 1//定時器函數(shù)
{
uchar m;
TH0=0x4b;
TL0=0xff;//重新賦初值
m++;
if(m==4)
{
shan=~shan;
m=0;
}
}
復(fù)制代碼
基于51單片機(jī)的無線溫濕度控制系統(tǒng).rar
(542.46 KB, 下載次數(shù): 245)
2019-4-1 17:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
277377597
時間:
2019-4-4 19:11
學(xué)習(xí)到了!
作者:
youcaizi
時間:
2019-4-10 10:59
感謝樓主,幫了我的大忙
作者:
我不善良
時間:
2019-5-8 00:10
求仿真啊樓主 跪求 有償
作者:
許興堂
時間:
2019-5-13 14:58
樓主這是屬于什么協(xié)議進(jìn)行通信?
作者:
xx不放火
時間:
2019-12-9 08:45
改一下應(yīng)該可以多從機(jī)
作者:
Augustor
時間:
2019-12-13 19:28
轟多尼?
作者:
Augustor
時間:
2019-12-13 19:32
牛皮
作者:
夏日的期待
時間:
2020-3-3 10:35
請問能給一個最基礎(chǔ)的51單片機(jī)控制溫濕度的解釋嗎,小白求助
作者:
nihaojiushiguan
時間:
2020-4-5 17:44
為什么要繼電器驅(qū)動
作者:
EDA12345678
時間:
2020-4-23 19:56
為什么我下載測試,接收連通了開機(jī)始終采集不到?溫度和濕度顯示都是0,請問是什么問題求指導(dǎo)謝謝。
作者:
zyy1100
時間:
2020-5-10 20:35
proteus仿真有嗎,樓主
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1