温湿无限采集.docx

上传人:b****3 文档编号:10537948 上传时间:2023-05-26 格式:DOCX 页数:18 大小:593.55KB
下载 相关 举报
温湿无限采集.docx_第1页
第1页 / 共18页
温湿无限采集.docx_第2页
第2页 / 共18页
温湿无限采集.docx_第3页
第3页 / 共18页
温湿无限采集.docx_第4页
第4页 / 共18页
温湿无限采集.docx_第5页
第5页 / 共18页
温湿无限采集.docx_第6页
第6页 / 共18页
温湿无限采集.docx_第7页
第7页 / 共18页
温湿无限采集.docx_第8页
第8页 / 共18页
温湿无限采集.docx_第9页
第9页 / 共18页
温湿无限采集.docx_第10页
第10页 / 共18页
温湿无限采集.docx_第11页
第11页 / 共18页
温湿无限采集.docx_第12页
第12页 / 共18页
温湿无限采集.docx_第13页
第13页 / 共18页
温湿无限采集.docx_第14页
第14页 / 共18页
温湿无限采集.docx_第15页
第15页 / 共18页
温湿无限采集.docx_第16页
第16页 / 共18页
温湿无限采集.docx_第17页
第17页 / 共18页
温湿无限采集.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

温湿无限采集.docx

《温湿无限采集.docx》由会员分享,可在线阅读,更多相关《温湿无限采集.docx(18页珍藏版)》请在冰点文库上搜索。

温湿无限采集.docx

温湿无限采集

引言:

本文设计了一个基于单片机的温湿采集系统统。

采用分布式数据采集结构,由AT89C51作为上位机,定时查询分布于大棚中的下位机状态。

基于性能与价格的考虑,本系统采用DHT11为系统的温度传感器和湿度传感器。

本系统设计简单、可靠,价格便宜但达到较高的控制精度,具有较高的应用价值。

1.设计目的

本次课程设计是在我们学过单片机后的一次实习,可增加我们的动手能力。

特别是对

单片机的系统设计有很大帮助。

本课程设计由两个人共同完成,在锻炼了自己的同时也增强了自己的团队意识和团队合作精神。

2.设计任务与要求

(1)实现温湿度采集

(2)实现无线发送接受

(3)实现多点检测发送

(4)实现单片机跟电脑双机通讯

(5)用labview实现界面优化,数据显示及报警提示

3.温湿度采集发送电路基本原理及电路设计

3.1.1温湿无线采集模块最小系统

3.1.2温湿无线采集发送端大概原理

 

DHT11的实物图

特点:

    

1、湿度测量范围:

20---90%RH

2、湿度测量精度:

±5%RH

3、温度测量范围:

0---60℃

4、温度测量精度:

±2℃

5、工作电压:

DC5V

6、数字信号输出

3.2.DHT的引脚接法:

4.数据接受电路基本原理及电路设计

4.1接受端大概原理:

单片机对的NRF24L01对外接口进行SPI读写操作,以此来控制NRF24L01的工作模式以及相关收发数据的操作,从而完成无线数据传输。

 

4.2.NRF24L01模块接法及引脚说明:

NRF24L01实物图

引脚名称引脚功能描述

1CE数字输入RX或TX模式选择

2CSN数字输入SPI片选信号

3SCK数字输入SPI时钟

4MOSI数字输入从SPI数据输入脚

5MISO数字输出从SPI数据输出脚

6IRQ数字输出可屏蔽中断脚

7VDD电源电源+3V

8VSS电源接地0V

9XC2模拟输出晶体震荡器2脚

10XC1模拟输入晶体震荡器1脚/外部时钟输入脚

11VDD_PA电源输出给RF的功率放大器提供的+1.8V电源

12ANT1天线天线接口1

13ANT2天线天线接口2

14VSS电源接地0V

15VDD电源电源+3V

16IREF模拟输入参考电流

17VSS电源接地0V

18VDD电源电源+3V

19DVDD电源输出去耦电路电源正极端

20VSS电源接地0V

 

4.3.工作模式:

4.3.1.EnhancedShockBurstTM收发模式:

EnhancedShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。

与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:

尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停时间短,抗干扰性高。

EnhancedShockBurstTM技术同时也减小了整个系统的平均工作电流。

在EnhancedShockBurstTM收发模式下,NRF24L01自动处理字头和CRC校验码。

在接收数时,自动把字头和CRC校验码移去。

在发送数据时,自动加上字头和CRC校验码,在发送模式下,置CE为高,至少10us,将时发送过程完成后。

4.3.2.EnhancedShockBurstTM发射流程:

A.把接收机的地址和要发送的数据按时序送入NRF24L01;

B.配置CONFIG寄存器,使之进入发送模式。

C.微控制器把CE置高

(至少10us),激发NRF24L01进行EnhancedShockBurstTM发射;D.

N24L01的EnhancedShockBurstTM发射

(1)给射频前端供电;

(2)

射频数据打包(加字头、CRC校验码);(3)高速发射数据包;(4)

发射完成,NRF24L01进入空闲状态。

4.1.1.2EnhancedShockBurstTM

接收流程A.配置本机地址和要接收的数据包大小;B.配置CONFIG

寄存器,使之进入接收模式,把CE置高。

C.130us后,NRF24L01进入监视状态,等待数据包的到来;D.当接收到

正确的数据包(正确的地址和CRC校验码),NRF2401自动把字

头、地址和CRC校验位移去;

E.NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微

制器中断)通知微控制器;F.微控制器把数据从NewMsg_RF2401读出;

G.所有数据读取完毕后,可以清除STATUS寄存器。

NRF2401可以进入

四种主要的模式之一。

4.3.3.ShockBurstTM收发模式:

ShockBurstTM收发模式可以与Nrf2401a,02,E1及E2兼容。

4.3.4.空闲模式

NRF24L01的空闲模式是为了减小平均工作电流而设计,其最大的

优点是,实现节能的同时,缩短芯片的起动时间。

在空闲模式下,部分

片内晶振仍在工作,此时的工作电流跟外部晶振的频率有关。

4.3.5.关机模式

在关机模式下,为了得到最小的工作电流,一般此时的工作电流为

900nA左右。

关机模式下,配置字的内容也会被保持在NRF2401片内,

这是该模式与断电状态最大的区别。

5.软件设计

5.1采集模块软件设计

初始化

测温湿度

判断DHT11Y

是否出错

N

显示温湿度

无线发射

延时

采集模块主程序

 

5.2接收模块软件设计

初始化

判断是否

有数据

Y

接收数据

判断数据格N丢失

式是否正确

Y

PC通讯

接收模块主程序

5.3.SPI指令格式:

(命令字:

由高位到低位(每字节))

(数据字节:

低字节到高字节,每一字节高位在前)

5.3.1.SPI时序:

在写寄存器之前一定要进入待机模式或掉电模式。

在图6-16-2中用到了如下符号:

Cn-SPI指令位Sn-状态寄存器位Dn-数据位(注:

由低字节到高字节,每字节高位在前)

SPI读操作

SPI写操作

 

6.Labview界面

每个模块的显示温湿度

历史记录

历史记录生成的excel报表

平均温湿度

 

7.主要程序分析

7.1从模块主函数:

voidmain()

{

inti=0;

CE=0;

SCK=0;

CSN=1;

TX_Mode();

while

(1)

{

read_TRH();

Transmit(str1);

sta=SPI_Read(READ_REG+STATUS);

if(TX_DS)

{

Delay(100);

SPI_RW_Reg(WRITE_REG+STATUS,sta);

}

if(MAX_RT)//如果是发送超时

{

Delay(150);

SPI_RW_Reg(WRITE_REG+STATUS,sta);

}

}

}

7.2从模块无线发送代码:

voidTX_Mode(void)

{

CE=0;

SPI_RW_Reg(FLUSH_TX,0x00);

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);SPI_RW_Reg(WRITE_REG+EN_AA,0x01);

SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);

SPI_RW_Reg(WRITE_REG+SETUP_RETR,0x1a);

SPI_RW_Reg(WRITE_REG+RF_CH,40);

SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);

SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);

SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);

CE=1;

delay_ms(100);

}

voidTransmit(unsignedchar*tx_buf)

{

CE=0;

SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);SPI_RW_Reg(FLUSH_TX,0x00);

SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);

SPI_RW_Reg(WRITE_REG+CONFIG,0x0e);

CE=1;

delay_ms(150);

}

7.3主模块无线接受代码:

ucharSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars)

{

ucharstatus,uchar_ctr;

CSN=0;

status=SPI_RW(reg);

for(uchar_ctr=0;uchar_ctr

pBuf[uchar_ctr]=SPI_RW(0);

CSN=1;

return(status);

}

7.4温湿采集主要函数

charreceive()//收发信号检测,数据读取

{

unint8i;

com_data=0;

for(i=0;i<=7;i++)

{

respond=2;

while((!

TRH)&&respond++);

delay_us();

delay_us();

delay_us();

if(TRH)

{

temp=1;

respond=2;

while((TRH)&&respond++);

}

else

temp=0;

com_data<<=1;

com_data|=temp;

}

return(com_data);

}

7.5串口通讯

voidStartUART(void)

{

SCON=0x50;//波特率9600

TMOD=0x20;

TH1=0xFD;

TL1=0xFD;

PCON=0x00;

TR1=1;

}

voidR_S_Byte(ucharR_Byte)

{

SBUF=R_Byte;

while(TI==0);

TI=0;

}

8.系统调试与性能分析

首先在元器件的布局方面,把相互有关的元件放得比较近,例如:

晶振、单片机的时钟输入端都易产生噪音,在放置元件时的时候把它们靠近些。

地线应构成闭环形式,提高了电路的抗干扰能力,电路提供的电源是具有稳压作用的+5V电源。

单片机选用12MHZ的晶振,因为这样有利于得到没有误差的波特率。

特别是当与单片机进行通信的话,选用这种晶振比较好。

由于单线数字温度传感器DHT11,测温相当准确,我们主要时间花在了,单片机软件程序的编辑和调试以及电路模块的制作方面。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

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

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