ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:21.09KB ,
资源ID:6981808      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6981808.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(nRF24L01写的无线温度发送部分.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

nRF24L01写的无线温度发送部分.docx

1、nRF24L01写的无线温度发送部分#include #include typedef unsigned char uchar;typedef unsigned char uint;/*/sbit JD1=P25;sbit JD2=P26;sbit JD3=P27;sbit KG1=P17;sbit KG3=P32;sbit KG2=P33;sbit BEEF=P24;/*/unsigned int tt,hh;bit presence ;sbit LCD_RS = P20 ; sbit LCD_RW = P21 ;sbit LCD_EN = P22 ;uchar code cdis3 = T

2、em ;/Temperature温度uchar code cdis4 = Hum ; /Humidity湿度unsigned int tt,hh;unsigned char data temp_data2 = 0x00,0x00 ;unsigned char data display5 = 0x00,0x00,0x00,0x00,0x00 ;/unsigned char code ditab16 = 0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,/ 0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09 ;/unsigned char

3、code mytab8 = 0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00 ;uchar TempBuffer_T6,TempBuffer_H6,T_set6;#define delayNOP() ; _nop_() ;_nop_() ;_nop_() ;_nop_() ; ;/*/DHT21温湿度传感器部分子程序模块/*typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */typedef signed char S8; /* defined f

4、or signed 8-bits integer variable 有符号8位整型变量 */typedef unsigned int U16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */#define Data_0_time 4/uint tem;/-/-IO口定义区-/-/sbit P1_1 = P16; /-/-定义区-/-/U8 U8FLAG,k;U8 U8count,U8temp;U8 U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;U8

5、 U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;U8 U8comdata;U8 count, count_r=0;/*NRF24L01端口定义*sbit MISO =P13;sbit MOSI =P14;sbit SCK =P12;sbit CE =P11;sbit CSN =P10;sbit IRQ =P15;uchar dispaly8; /显示缓冲区/*uint bdata sta; /NRF24L01状态标志sbit RX_DR =sta6; sbit TX_DS =

6、sta5;sbit MAX_RT =sta4;/*NRF24L01*#define TX_ADR_WIDTH 5 / 本机地址宽度设置#define RX_ADR_WIDTH 5 / 接收方地址宽度设置#define TX_PLOAD_WIDTH 20 / 4 字节数据长度#define RX_PLOAD_WIDTH 20 / 4 字节数据长度uint const TX_ADDRESSTX_ADR_WIDTH= 0x10,0x10,0x10,0x10,0xf0; /接收地址uint const RX_ADDRESSRX_ADR_WIDTH= 0x10,0x10,0x10,0x10,0xf1;

7、/本地地址/*NRF24L01寄存器指令,详细请对照,Page18*#define READ_REG 0x00 / 读寄存器指令#define WRITE_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 / 保留/*SPI(nR

8、F24L01)寄存器地址,详细请对照,Page18-24*#define CONFIG 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 STATUS 0x07 / 状态寄存器#define OB

9、SERVE_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_P

10、0 0x11 / 接收频道0接收数据长度#define RX_PW_P1 0x12 / 接收频道0接收数据长度#define RX_PW_P2 0x13 / 接收频道0接收数据长度#define RX_PW_P3 0x14 / 接收频道0接收数据长度#define RX_PW_P4 0x15 / 接收频道0接收数据长度#define RX_PW_P5 0x16 / 接收频道0接收数据长度#define FIFO_STATUS 0x17 / FIFO栈入栈出状态寄存器设置/*NRF24L01函数申明*void Delay(unsigned int s);void inerDelay_us(uns

11、igned char n);void init_NRF24L01(void);uint SPI_RW(uint uchars);uchar SPI_Read(uchar reg);void SetRX_Mode(void);uint SPI_RW_Reg(uchar reg, uchar value);uint SPI_Read_Buf(uchar reg, uchar *pBuf, uchar uchars);uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars);unsigned char nRF24L01_RxPacket(uns

12、igned char* rx_buf);void nRF24L01_TxPacket(unsigned char * tx_buf);/*DS18B20函数申明*void delay1(uint i);/*/void delay1(uint ms) unsigned char y ; while(ms-) for(y = 0 ; y250 ; y+) _nop_() ; _nop_() ; _nop_() ; _nop_() ; /*/*检查LCD忙状态 */*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */*/ bit lcd_busy() bit res

13、ult ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P0&0x80); LCD_EN = 0 ; return(result) ; /*写指令数据到LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */*/void lcd_wcmd(uchar cmd) while(lcd_busy() ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; d

14、elayNOP() ; LCD_EN = 0 ; /*/*写显示数据到LCD */*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */*/void lcd_wdat(uchar dat) while(lcd_busy() ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ; P0 = dat ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /* LCD初始化设定 */*/void lcd_init() delay1(15) ; lcd_wcmd(0x01) ; /清除LCD的显示内容 / lcd_wc

15、md(0x38) ; /16*2显示,5*7点阵,8位数据 delay1(5) ; / lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x38) ; delay1(5) ; lcd_wcmd(0x0c) ; /显示开,关光标 delay1(5) ; / lcd_wcmd(0x06) ; /移动光标 delay1(5) ; lcd_wcmd(0x01); /清除LCD的显示内容 delay1(5) ;/* 设定显示位置 */*/*void lcd_pos(uchar pos) lcd_wcmd(pos | 0x80) ; /数据指针=80+地址变量*/void go

16、toxy(unsigned char y, unsigned char x) if(y=1) lcd_wcmd(0x80+x); if(y=2) lcd_wcmd(0x80+0x40)+x);/ if(y=3)/ wr_i_lcd(0x80|x)+8);/ if(y=4)/ wr_i_lcd(0x90|x)+8);/*自定义字符写入CGRAM */*/*void writetab() unsigned char i ; lcd_wcmd(0x40) ; /写CGRAM for (i = 0 ; i 8 ; i+) lcd_wdat(mytab i ) ; */*/液晶显示字符串程序/*void

17、 print(uchar *str) while(*str!=0) lcd_wdat(*str); str+; /*us级延时函数 */*/void Delay(unsigned int num) while( -num ) ;/*/DHT21温湿度传感器部分子程序模块/float tt;void Delay2(unsigned int num) while( -num ) ; void Delay_10us(void) U8 i; i-; i-; i-; i-; i-; i-; void COM(void) U8 i; for(i=0;i8;i+) U8FLAG=2; /- P1_1=0 ;

18、 /T P1_1=1 ; /T /- while(!P1_1)&U8FLAG+); Delay_10us(); Delay_10us(); / Delay_10us(); U8temp=0; if(P1_1)U8temp=1; U8FLAG=2; while(P1_1)&U8FLAG+); /- P1_1=0 ; /T P1_1=1 ; /T /- /超时则跳出for循环 if(U8FLAG=1)break; /判断数据位是0还是1 / 如果高电平高过预定0高电平值则数据位为 1 U8comdata=1; U8comdata|=U8temp; /0 /rof /- /-湿度读取子程序 - /-

19、 /-以下变量均为全局变量- /-温度高8位= U8T_data_H- /-温度低8位= U8T_data_L- /-湿度高8位= U8RH_data_H- /-湿度低8位= U8RH_data_L- /-校验 8位 = U8checkdata- /-调用相关子程序如下- /- Delay();, Delay_10us();,COM(); /- void RH(void) /主机拉低18ms P1_1=0; Delay2(180); P1_1=1; /总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us(); Delay_10us(

20、); /主机设为输入 判断从机响应信号 P1_1=1; /判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 if(!P1_1) /T ! U8FLAG=2; /判断从机是否发出 80us 的低电平响应信号是否结束 while(!P1_1)&U8FLAG+); U8FLAG=2; /判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 while(P1_1)&U8FLAG+); /数据接收状态 COM(); U8RH_data_H_temp=U8comdata; COM(); U8RH_data_L_temp=U8comdata; COM(); U8T_data_H_tem

21、p=U8comdata; COM(); U8T_data_L_temp=U8comdata; COM(); U8checkdata_temp=U8comdata; P1_1=1; /数据校验 U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp=U8checkdata_temp) U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U

22、8T_data_L_temp; U8checkdata=U8checkdata_temp; void ReadTemp_T(void) uchar a=0; uchar b=0; RH(); a=U8T_data_L; /读取温度值低位 b=U8T_data_H; /读取温度值高位 tt=0xff&b; tt=tt8; tt=tt|a;void temp_to_str_T() /温度数据转换成液晶字符显示 TempBuffer_T0=:; TempBuffer_T1=tt/100+0; /十位 TempBuffer_T2=tt%100/10+0; /个位 TempBuffer_T3=.; TempBuffer_T4=tt%10+0; TempBuffer_T5=0;void ReadTemp_H(void) uchar a=0; uchar b=0; RH(); a=U8RH_data_L; /读取湿度值低位 b=U8RH_data_H; /读取湿度值高位 hh=0xff&

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2