无线温度实验

本文详述了一个基于51单片机的无线温度传感实验,利用NRF24L01无线模块进行数据传输,并结合DS18B20温度传感器和OLED显示屏展示温度。实验涉及Keil uVision4环境的使用,程序包括温度传感器驱动和无线模块的通信,通过调试解决了显示延迟和抖动等问题,提升了自主学习和问题解决能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无线温度实验

声明:实验来自专业课作业,程序只粘贴了部分。供大家学习交流。
一 、训练目的
1.熟悉Keil uVision4环境及在该环境下用C语言编写的应用程序。
2.熟悉无线单片机的编程逻辑,采集温度传感器数据并将数据发送出去;在另一个无线单片机上实现对温度数据的接收和显示。
3.熟悉无线模块NRF24L01和温度传感器DS18B20驱动程序的编写。
4.以无线温度传感器应用实验为例,通过查找资料,设计实验方案,编写相应的程序,调试实验结果。将理论知识与实践相结合,在实验中发现问题并解决问题,提高自主学习能力。
二、训练设备与器材

  1. 装有 Windows 系统和Keil uVision4仿真环境的 PC 机一台。
  2. 51单片机最小系统板、NRF24L01无线发射接受模块、DS18B20温度传感器和OLED显示模块。
  3. 其他具体相关试验仪器设备及工具。
    三、训练具体内容
    1.无线温度传感器应用实验主要温度传感器采集的数据通过无线模块NRF24L01发送出去,用另一个无线模块NRF24L0接收数据并将温度信息通过OLED显示。
    2.调试思路,OLED显示屏上显示具体的温度值,用手触摸温度传感器,温度值会上升,放开手温度慢慢下降到室温。
    3.代码编写上,主要涉及无线模块发送接收和温度传感器的驱动程序。
    四、具体训练过程和步骤
  4. 查找资料:首先,对《短距离无线数据通信入门与实践》进行快速的阅度,选定无线模块:NRF9E5、NRF905、NRF24L01;在网上搜索“温度传感器实验”,选定温度传感器:DS18B20、DHT11、TN901。然后,查找上述无线模块和温度传感器模块的使用手册和网上现有的相关应用实例。
    2.设计实验方案:在查阅大量资料后,结合“无线温度传感器应用试验”和手头现有资源,最终选定:51单片机最小系统、无线模块NRF24L01、温度传感器DS18B20和OLED显示屏(之前写过相应代码)。采用两个单片机控制无线模块NRF24L01实现一发一收;发射端单片机将温度模块采集的数据通过无线模块NRF24L01发射出去,接收端单片机通过无线模块接收发射端传出的数据并解析出来通过OLED显示屏显示。
    3.编写程序:采用Keil uVision4软件编写程序。首先编写温度传感器程序,程序主要涉及对时序的要求和数据的解析,解析出来的数据通过OLED显示出来;然后编写无线模块发射和接收数据的程序,两个程序的主要区别在于通过读写寄存器指令uint SPI_RW_Reg(uchar reg, uchar value),配置CONFIG寄存器的最后一位(0:发射模式,1:接收模式),将无线模块设置为发射和接收模式。OLED显示程序,采用之前编写的驱动程序,引用.c和.h文件完成OLED程序的移植。
    4.调试系统:完成整个系统程序的调试。首先,在发射和接收端接通电源后,显示屏无法完成对温度数据的更新,分析代码并进入Debug调试界面,发现延时函数太长(大约1分钟),修改延时函数设定到1s左右;再次上电测试,发现OLED显示屏在刷新数据的时候整个屏幕都在抖动,视觉效果差,分析程序逻辑,发现在主函数while(1)中加入清屏指令,导致每次进入while(1)循环便清屏一次,删去此代码;之后,再次测试,参考空调温度,对发射端读取的温度数据进行补偿;最后,用手捏住温度传感器,发现显示屏显示的温度渐渐增大,放开温度传感器,显示屏的温度慢慢下降最后保持到室温。
    五、硬件连接
    采用AD软件,对51单片机、无线模块NRF24L01、温度传感器DS18B20和OLED引脚之间的连接关系进行简单的描述,没有用到的引脚,此处没有画出来。
    在这里插入图片描述在这里插入图片描述
    六、程序流程
    发射端主程序:
    在这里插入图片描述
    接收端主程序:

在这里插入图片描述
七、程序清单和注解说明
声明:只复制部分主要程序,完整的程序太多。显示部分可以采用其他显示器,程序网上很容易得到,有需要的也可以在下面留下,我看到一定第一时间回复。
发射端程序:
#include <reg52.h>
#include “ds18b20.h”
#include <intrins.h>
#define TxRxBuf_Len 4
#include “oled.h”
unsigned char TxRxBuffer[TxRxBuf_Len];
typedef unsigned char uchar;
typedef unsigned char uint;
unsigned int tempture;
//

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值