发射_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读出数据
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』