第一范文网 - 专业文章范例文档资料分享平台

基于NRF24L01+温度无线传输51单片机

来源:用户分享 时间:2025/5/30 8:19:14 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

{ uchar reg_val;

CSN = 0;

SPI_RW(reg); //写指令 reg_val = SPI_RW(0); //读reg的内容 CSN = 1; return(reg_val); }

uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytes) { uchar status,byte_ctr;

CSN = 0; status = SPI_RW(reg);

for(byte_ctr=0; byte_ctr

CSN = 1; return(status); }

void TX_Mode(void) { CE=0;

SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); /*接收模块的地址*/

SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); /*通道0 接收数据地址*/

SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); /*写待发数据指令a0*/

SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); //数据通道0应答允许 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); //接收数据通道0允许

SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a);//等待 500+86us 自动重发10次

SPI_RW_Reg(WRITE_REG + RF_CH,40);

SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); //数据传输率1Mbps ,发射功率0dBm

SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); //配置寄存器 CE=1; }

void checkflag()

{ sta=SPI_Read(STATUS);//读状态寄存器 if(MAX_RT) { SPI_RW_Reg(FLUSH_TX,0); /*冲洗发送FIFO指令*/

} SPI_RW_Reg(WRITE_REG+STATUS,sta);//清除中断 }

//以下是DS18B20的操作程序

//************************************************************************/ void delay_18B20(unsigned int i)//延时1微秒 {

while(i--); }

set18b20()/*ds1820复位*/ { EA=0; ds18b20= 1; //复位 delay_18B20(4); //延时 ds18b20 = 0; //拉低 delay_18B20(100); //精确延时大于480us ds18b20 = 1; //拉高 delay_18B20(10); crrent=ds18b20; while(!ds18b20); EA=1; return(crrent); //返回值 }

uchar read18b20() /*读数据*/ { uchar i;

uchar dat = 0; EA=0; for(i=0x01; i!=0; i<<=1) { ds18b20 = 0; _nop_(); _nop_(); ds18b20 = 1; _nop_(); _nop_(); if(!ds18b20) dat &= ~i; else dat |= i; delay_18B20(8);

} EA=1; return dat; }

void write18b20(uchar wdata) /*写数据*/ {unsigned char i=0; EA=0;

for (i=8; i>0; i--) { ds18b20 = 0; _nop_(); _nop_();

ds18b20=wdata&0x01; delay_18B20(10); ds18b20 = 1; wdata>>=1; }

EA=1; }

//******************************LCD1602****************************************************************

void delayms(uint z) //不精确延时 { uchar x; uint y; for(x=z;x>0;x--) for(y=125;y>0;y--); }

void LCD_BUSY() //LCD忙检测 { uchar sta; P0=0xff; lcdrs=0; lcdrw=1; do{ lcden=1; sta=P0; lcden=0; }while(sta & 0x80); }

void writelcdcmd(uchar cmd) //LCD写命令 { LCD_BUSY(); delayms(1); lcdrs=0; lcdrw=0; lcden=0; P0=cmd; delayms(1); lcden=1; delayms(1); lcden=0; }

void writelcddat(uchar dat) //LCD写数据 { LCD_BUSY(); delayms(1); lcdrs=1; lcdrw=0; lcden=0; P0=dat; delayms(1); lcden=1; delayms(1); lcden=0; }

void inilcd() //LCD初始化 { delayms(15); writelcdcmd(0x38); delayms(5); writelcdcmd(0x0c); delayms(5); writelcdcmd(0x06); delayms(5); writelcdcmd(0x01); delayms(5); }

void play(unsigned char *p)//显示// {

搜索更多关于: 基于NRF24L01+温度无线传输51单片机 的文档
基于NRF24L01+温度无线传输51单片机.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c206cp2zdyt6ehs64cpf7_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top