发射_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;
上一篇:完整的单片机霍尔测速程序+原理图
下一篇:实现单片机计算器与LCD1602字幕滚动
设计资源 培训 开发板 精华推荐
- 带有用于 NCV3063 1.5A 升压开关稳压器的外部 NMOS 晶体管的典型升压应用原理图
- 用于软启动电路的 LTC3615IFE 双路 3A 同步降压型 DC/DC 转换器的典型应用
- ICL8038-中低频信号源
- Jan Ray
- LTC1772CS6 演示板,1 安培,SOT-23 DC-DC 转换器,2.5 至 9.8Vin,2.5Vout
- RGB灯
- LM258DMR2G 带迟滞比较器的典型应用
- Adafruit 16 通道 12 位 PWM/伺服屏蔽 - I2C 接口 | 1411
- NCP451FCT2GEVB:具有自动放电路径评估板的 3.0 A 受控负载开关
- NL-AB-BBBC、Skywire BeagleBone Black Modem 物联网 (IoT) 开发平台