基于51单片机的无线温湿度控制系统

发布者:Amybaby最新更新时间:2020-03-03 来源: 51hei关键字:51单片机  无线  温湿度控制系统 手机看文章 扫描二维码
随时随地手机看文章

发射_DHT11程序

//宏定义

#define uchar unsigned char 

#define uint unsigned int


//头函数

#include

#include

//无线模块

#include "api.h" 

#include "nRF24L01P.h"

#include "DHT11.h"



//LED 管脚定义

sbit TXLED_R=P1^3;

sbit RXLED_Y=P1^5;



//主机询问命令

uchar CMD[]={0xaa,0xbb,0xcc,0xdd};


//主函数

void main()

{

        TXLED_R=0;                                          //初始化LED

        RXLED_Y=0;

        init_io();                              //无线初始化IO

        RX_Mode();                              //设置为接收模式

        TXLED_R=1;

        RXLED_Y=1;

        //循环执行

        while(1)

        {

                sta = SPI_Read(STATUS);          //读状态寄存器

            if(RX_DR)                                     //判断是否接受到数据

                {

                        SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH);  //从RX FIFO读出数据

                        flag = 1;

                        RXLED_Y=0;                          //打开接收指示灯

                }

                SPI_RW_Reg(WRITE_REG + STATUS, sta);  //清除RX_DS中断标志

                if(flag)                              //接受完成

                {

                        flag = 0;                        //清标志

                        //命令为主机询问

                        if(RX_BUF[0]==CMD[0]&&RX_BUF[1]==CMD[1]&&RX_BUF[2]==CMD[2]&&RX_BUF[3]==CMD[3])

                        {

                                //打开接收成功指示

                                //无线答应信号湿度 温度        

                                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;                        //关闭接受射指示灯

                                TXLED_R=0;                        //打开发射指示灯

                                TX_Mode(TX_BUF);        // 把nRF24L01设置为发送模式并发送数据

                                Check_ACK(1);        // 等待发送完毕,清除TX FIFO

                                delay_ms(100);        

                                //发送成功指示

                                TXLED_R=1;                        //关闭发射指示灯

                                RX_Mode();                           // 设置为接收模式                

                        }

                }

        }

}


接收_温湿度控制程序

//宏定义

#define uchar unsigned char 

#define uint unsigned int



//头函数

#include

#include

//屏幕函数调用

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

//蜂鸣器闪烁标志位

bit shan=0;

#include "KEY.h"




//主机询问命令

uchar CMD[]={0xaa,0xbb,0xcc,0xdd};

uchar Mode=0;

uchar temp=0;

uchar KK=0;

//报警温湿度

uchar TNumber=30,RHNumber=50,TX=20,HX=40;


//主函数

void main()

{

        TH0=0x4b;

        TL0=0xff;//赋初值

        TMOD=0x01;//设置工作方式

        EA=1;//打开中断总开关

        ET0=1;//打开允许开关

        TR0=1;

        //LCD初始化显示

        Init_LCD();

        delay_ms(250);

        TXLED_R=0;                                          //初始化

        RXLED_Y=0;

        init_io();                           //无线初始化IO

        RX_Mode();                           //设置为接收模式

        TXLED_R=1;

        RXLED_Y=1;

        /////////////////////////////////////////////

        TXLED_R=0;                                          //发送指示灯

        ////////////////////////////////////////////////////////////////////////////////

        //循环显示

        while(1)

        {

                TXLED_R=0;                                          //发送指示灯        

           TX_ACK();                                      //发送询问信号        

                sta = SPI_Read(STATUS);                  //读状态寄存器

                TXLED_R=1;                                          //发送指示灯        

                if(RX_DR)                                           //判断是否接受到数据

                {

                        SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH);  // 从RX FIFO读出数据

                        flag = 1;

                }

                delay_ms(100);

                SPI_RW_Reg(WRITE_REG + STATUS, sta);  // 清除RX_DS中断标志

                if(flag==1)                            // 接受完成

                {

                        Mode=0;

                        flag=0;

[1] [2] [3] [4]
关键字:51单片机  无线  温湿度控制系统 引用地址:基于51单片机的无线温湿度控制系统

上一篇:完整的单片机霍尔测速程序+原理图
下一篇:实现单片机计算器与LCD1602字幕滚动

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved