×
单片机 > 单片机程序设计 > 详情

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

发布时间:2020-08-25 发布时间:
|

发射_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读出数据


关键字:51单片机  无线  温湿度控制系统 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些