资讯详情

nRF24L01+无线温度(DS18B20)测控系统

//****************无线温度发射部分******************* api.h #ifndef __H_ #define _API_H_ #define uchar unsigned char #define uint unsigned int //*********************************************NRF24L01************************************* #define TX_ADR_WH 5 // 5 uints TX address width #define RX_ADR_WIDTH 5 // 5 uints RX address width #define TX_PLOAD_WIDTH 20 // 20 uints TX payload #define RX_PLOAD_WIDTH 20 // 20 uints TX payload uchar const TX_AESS[TX_ADR_WIDTH]= {0x35,0x43,0x10,0x10,0x03}; //本地地址 uchar const RX_ADDRESS[RX_ADR_WIDTH]= {0x35,0x43,0x10,0x10,0x03};//接收地址 //***************************************NRF24L01寄存器指令******************************************************* #define READ_REG 0x00 // 读寄存器指令 #define WRI_REG 0x20 // 写寄存器指令 #define RD_RX_PLOAD 0x61 // 读取接收数据指令 #define WR_TX_PLOAD 0xA0 // 写待发数据指令 #define FLUSH_TX 0xE1 // 冲洗发送 FIFO指令 #define FLUSH_RX 0xE2 // 冲洗接收 FIFO指令 #define REUSE_TX_PL 0xE3 // 定义重复装载数据指令 #define NOP 0xFF // 保留 //*************************************I(nRF24L01)寄存器地址**************************************************** #define CFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式 #define EN_AA 0x01 // 自动应答功能设置 #define EN_RXADDR 0x02 // 可用信道设置 #define SETUP_AW 0x03 // 收发地址宽度设置 #define SETUP_RETR 0x04 // 自动重发功能设置 #define RF_CH 0x05 // 工作频率设置 #define RF_SETUP 0x06 // 发射速率、功耗功能设置 #define 0x07 // 状态寄存器 #define OBSERVE_TX 0x08 // 发送监测功能 #define CD 0x09 // 地址检测 #define RX_ADDR_P0 0x0A // 频道0接收数据地址 #define RX_ADDR_P1 0x0B // 频道1接收数据地址 #define RX_ADDR_P2 0x0C // 频道2接收数据地址 #define RX_ADDR_P3 0x0D // 频道3接收数据地址 #define RX_ADDR_P4 0x0E // 频道4接收数据地址 #define RX_ADDR_P5 0x0F // 频道5接收数据地址 #define TX_ADDR 0x10 // 发送地址寄存器 #define RX_PW_P0 0x11 // 接收频道0接收数据长度 #define RX_PW_P1 0x12 // 接收频道1接收数据长度 #define RX_PW_P2 0x13 // 接收频道2接收数据长度 #define RX_PW_P3 0x14 // 接收频道3接收数据长度 #define RX_PW_P4 0x15 // 接收频道4接收数据长度 #define RX_PW_P5 0x16 // 接收频道5接收数据长度 #define FIFO_ATUS 0x17 // FIFO栈入栈出状态寄存器设置 #endif 1602display.h #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int //************************LCD引脚定义 sbit LCM_RS=P3^4; sbit LCM_RW=P3^6; sbit LCM_E=P3^7; //**************************延时 void delay(); //**************************初始化 void InitLCM(); //****************************读状态 uchar ReadStatusLCM(); //******************************读数据 uchar ResdDataLCM(); //***************************写指令 void WriteCommandLCM(uchar WCLCM, Busy); //***************************写数据 void WriteDataLCM(uchar WDLCM); //******************************显示1个字符 void DisplayOneChar(uchar X,uchar Y,uchar DData); //******************************显示字符串 void DisplayListChar(uchar X,uchar Y,uchar code *DData); //********************延时 void delay(uchar z) { uchar i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); } //**********************LCM初始化 void InitLCM() { WriteCommandLCM(0x38,0);//三次显示模式设置,不检测忙信号 delay(1); WriteCommandLCM(0x38,0); delay(1); WriteCommandLCM(0x38,0); delay(1); WriteCommandLCM(0x38,1);//显示模式设置:16×2显示,5×7点阵,8位数据 WriteCommandLCM(0x0c,1);//显示模式设置:显示开,无光标 WriteCommandLCM(0x06,1);//显示模式设置:光标右移,字符不移 WriteCommandLCM(0x01,1);//清屏幕指令,将以前的显示内容清除 } //*********************读状态 uchar ReadStatusLCM() { P0 = 0x80; LCM_RS = 0; LCM_RW = 1; LCM_E = 1; while (P0 & 0x80); //检测忙信号 return(0); } //***********************读数据 /*uchar ResdDataLCM() { LCM_RS=1; LCM_RW=1; LCM_E=1; } */ //**********************写指令 void WriteCommandLCM(uchar WCLCM, Busy) { if(Busy) ReadStatusLCM(); P0=WCLCM; LCM_RS=0; LCM_RW=0; LCM_E=0; LCM_E=1; } //***********************写数据 void WriteDataLCM(uchar WDLCM) { ReadStatusLCM(); P0=WDLCM; LCM_RS=1; LCM_RW=0; LCM_E=0; LCM_E=1; } //*************************显示字符 void DisplayOneChar(uchar X,uchar Y,uchar DData) { if(Y) X|=0X40;//Y=1显示第二行,Y=0显示第一行 X|=0X80; WriteCommandLCM(X,1);//X用来选择哪一位,1是用来忙检测 WriteDataLCM(DData);//DData用来写数据 } //**************************显示字符串 void DisplayListChar(uchar X,uchar Y,uchar code *DData) {
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台