温湿无限采集.docx
- 文档编号:10537948
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:18
- 大小:593.55KB
温湿无限采集.docx
《温湿无限采集.docx》由会员分享,可在线阅读,更多相关《温湿无限采集.docx(18页珍藏版)》请在冰点文库上搜索。
温湿无限采集
引言:
本文设计了一个基于单片机的温湿采集系统统。
采用分布式数据采集结构,由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,测温相当准确,我们主要时间花在了,单片机软件程序的编辑和调试以及电路模块的制作方面。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温湿 无限 采集