测温并24l01无线传输设计.docx
- 文档编号:30235823
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:18
- 大小:600.46KB
测温并24l01无线传输设计.docx
《测温并24l01无线传输设计.docx》由会员分享,可在线阅读,更多相关《测温并24l01无线传输设计.docx(18页珍藏版)》请在冰豆网上搜索。
测温并24l01无线传输设计
河南大学物理与电子学院
开放实验室单片机设计报告
测温并24L01无线传输设计
设计人:
开放实验室入室人员
目录
0前言1
1系统组成与功能1
1.1系统组成1
1.1.1AT89C52单片机1
1.1.218B20测温芯片1
1.1.324L01模块2
1.1.4四位一体八段共阴数码管、无源蜂鸣器、74LS1383
1.2系统功能6
1.3系统功能扩充6
2系统原理6
2.1无线发射仿真图6
2.2无线接收仿真图7
2.3实物照片7
3程序流程图8
3.1测温程序流程图8
3.2发射程序流程图9
3.3接收程序流程图10
4具体程序11
4.1测温程序11
4.2发射板部分程序11
4.3接收板部分程序13
5主要元件清单14
5.1发射板其他主要元件14
5.2接收板其他主要元件14
6结论15
7测温并无线收发心得15
参考文献15
测温并24L01无线传输
开放实验室入室人员
(河南大学物理与电子学院,河南开封,475004)
0前言
温度的测试技术已经成熟,已经满足了人们的大部分需求,然而在某些工作场合下,我们更想知道与自己不在一个地方的温度,以便进行温度调控,更好更方便地生产生活,因此,温度的传输就成为了我们要考虑的内容了。
此单片机项目设计中,我们就基于24L01模拟温度的无线传输,经过调试,试验,已经实现了预期功能,同时也实现了对生产生活中温度预警的模拟功能。
1系统组成与功能
1.1系统组成
本系统主要有AT89C52单片机、复位按键、无源蜂鸣器、18B20芯片、24L01模块、四位一体共阴8段数码管等元件组成。
1.1.1AT89C52单片机
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),兼容标准MCS-51指令系统。
图1-1单片机引脚图
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52
可以按照常规方法进行编程,但不可以在线
编程(S系列的才支持在线编程)。
引脚图如图1-1所示
1.1.218B20测温芯片
图1-218B20测温芯片
DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。
其一个工作周期可分为两个部分,即温度检测和数据处理。
DS18B20共有三种形态的存储器资源:
ROM只读存储器,用于存放DS18B20ID编码;RAM数据暂存器,用于内部计算和数据存取;EEPROM非易失性,记忆体,用于存放长期需要保存的数据.
1.1.324L01模块
NRF24L01是工作于2.4~2.5GHz世界通用的ISM频段的单片无线收发器芯片。
无线收发器芯片包括:
频率发生器、增强型SchockBurst模式控制器、功率放大器、晶体振荡器、调制器、解调器。
输出功率、频道选择和协议的设置可以通过SPI接口进行设置.其拥有极低的电流消耗:
当工作在发射模式下发射功率为-6dBm时电流消耗为9mA,接收模式为12.3mA。
图1-3
其引脚功能:
引脚
名称
引脚功能
描述
1
CE
数字输入
RX或TX模式选择
2
CSN
数字输入
SPI片选信号
3
SCK
数字输入
SPI时钟
4
MOSI
数字输入
从SPI数据输入脚
5
MISO
数字输出
从SPI数据输出脚
6
IRQ
数字输出
可屏蔽中断脚
7
VDD
电源
电源(+3V)
8
VSS
电源
接地(0V)
1.1.4四位一体共阴数码管
图1-4
其引脚图为:
无源蜂鸣器
图1-5
无源蜂鸣器是蜂鸣器的一种,区别于有源蜂鸣器,无源蜂鸣器是内部不带振荡源的蜂鸣器,是一体化结构的电子讯响器,在电路中的图形符号位H或者HA。
无源蜂鸣器是靠压电效应的原理来发声的,压电材料,一般常见的是各种压电陶瓷.这种材料的特别之处在于,当电压作用于压电材料时,就会随电压和频率的变化产生机械变形.另一方面,当振动压电陶瓷时,则会产生电荷.就是说这种材料能把机械变形和电荷相互转化,压电式蜂鸣器里面的起振片,就是一种压电陶瓷.如上所述,要让它振动,除了压电陶瓷本身,还需要适当大小和频率变化的电压作用于压电陶瓷.压电式(有源)蜂鸣器内部带有多谐振荡器,可以产生1.5—2.5kHZ的电压信号.由此压电式蜂鸣器才能发声。
74LS1383-8译码器
图1-6
74LS138:
当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
A、B、C
译码地址输入端
G1
选通端
/(G2A)、/(G2B)
选通端(低电平有效)
Y0-Y7
译码输出端(低电平有效)
1.2系统功能
本设计的主要功能是用18B20测温传送至单片机中存储,在发射端数码管显示温度,并通过24L01发射模块无线传输,在一定距离内放置接收板利用接收模块进行接收,同时显示温度值。
1.2系统功能扩充
本设计的主要功能扩充:
实现报警功能,当所测温度超过预定值时,接收端的蜂鸣器报警提示;并且在发射端拥有七彩指示灯,当所测温度不发生变化时,指示灯会熄灭,以提示温度已恒定。
2系统原理
本设计主要原理是单片机采集18B20测得的温度,同时将数据传给24L01的发射模块,并通过另一单片机控制24L01接收模块的接收,同时显示所测温度值。
2.118B20测温与24L01发射模块仿真图
说明:
24L01无线模块不能实现真正的仿真,上图中的NRF24L01仅作示意,但是数码管能正常仿真
2.224L01接收模块仿真图
2.3实物照片
测温并发射效果图,测温为12.2度。
右下边带晶振的模块为收发模块。
接收信号并显示效果图,显示为12.2度,等于发射温度,实验成功。
3程序流程图
发射板与接收板分别执行各自功能,各有各自的单片机控制,由24L01收发模块作为他们的关联。
3.1测温程序流程图
3.2发射端程序流程图
3.3接收端程序流程图
4主要程序源代码
4.1温度采集处理主要部分函数
#include"reg51.h"
……
/**************DS18B20复位函数****************/
ow_reset(void)
{·····};
/***********DS18B20写命令函数*************/
voidwrite_byte(ucharval)
{·····};
/***********DS18B20读1字节函数*************/
ucharread_byte(void)
{····};
/*************读出温度函数*************/
read_temp()
{·····};
/**********温度数据处理函数***************/
work_temp()
{···};
main()
{···};
4.2发送模块主要程序
#include"reg51.h"
/*NRF24L01初始化
voidinit_NRF24L01(void)
{···};//程序太长不宜写在报告中,完整程序请
····//联系QQ154401855(或154401856)下载
/***********主函数************/
main()
{
intf=0;
uchara[3];
intt;
while
(1)
{uchart=0;
uchari=1;
longintj=0;
Disdata=0xFF;//初始化端口
discan=0xff;
led=0;
for(h=0;h<4;h++){display[h]=0;}//开始显示"0000"
ow_reset();
init_NRF24L01();
write_byte(0xCC);//SkipROM
write_byte(0x44);//发转换命令
if(f==0)
{
for(h=0;h<500;h++){scan();}
f=1;
}///每次重新初始化,重新装载数据,最大限度地消除干扰,
//同时只有第一次初始化显示0000再次初始化时数码管并不再显示0000
read_temp();//读出DS18B20温度数据
work_temp();//处理温度数据
i=display[0];//把发射数组中的第1个数设为i
TxBuf[0]=i;
i=display[1];//把发射数组中的第2个数设为i
TxBuf[1]=i;
i=display[2];//把发射数组中的第3个数设为i
TxBuf[2]=i;
i=display[3];//把发射数组中的第4个数设为i
TxBuf[3]=i;
if(a[0]==TxBuf[0]&&a[1]==TxBuf[1]&&a[2]==TxBuf[2]);
else
led=1;//温度不变时指示灯不再闪烁,温度变化,指示灯开始闪烁
for(t=0;t<3;t++)
{a[t]=TxBuf[t];}
nRF24L01_TxPacket(TxBuf);//TransmitTxbufferdata一次发完数组中的20个数
for(h=0;h<500;h++){scan();}//显示温度2s
}}
4.3接收端模块主要程序
voidmain(void)
{
longintj=0;
chark;
p=1;
for(h=0;h<4;h++){RxBuf[h]=0;}//开始显示"0000"
init_NRF24L01();//2401初始化
Delay(2000);
while
(1)
{SetRX_Mode();
nRF24L01_RxPacket(RxBuf);//一次收完20个数,放在RxBuf[20]中//接收到数据
for(k=0;k<4;k++)
{Disdata=dis_7[RxBuf[k]];
if(k==1){DIN=1;}
discan=scan_con[k];
delay1(90);
discan=0xff;
}//显示温度2s
if(RxBuf[2]>=2)
{InitialSound();
/*Play(Music_tomorrow,0,3,360);
Delay1ms(500);*/
Play(Music_Girl,0,3,360);
Delay1ms(500);
/*Play(Music_Same,0,3,360);
Delay1ms(500);*///去掉隐藏符号即可播放
/*Play(Music_Two,0,3,360);
Delay1ms(500);*/}//高于20℃播放音乐
}}
5主要元件清单
原件名称
数量
万用板(9cm×15cm)
2
STC89C52单片机
2
74LS138
2
24L01接收模块
1
24L01发送模块
1
四位一体共阴数码管
2
AMS1117-3.3稳压芯片
2
5.1发射板其他元件
原件名称
数量
18B20测温芯片
1
晶振12M,
1
上拉电阻
1
复位按键
1
七彩发光二极管指示灯
1
电容30pf
2
电阻(10k,4.7k)
各一个
5.2接收板其他元件
原件名称
数量
晶振12M,
1
上拉电阻
1
复位按键
1
无源蜂鸣器
1
电容30pf
2
电阻(10k,4.7k)
各一个
6结论
通过18B20测温并由单片机控制,利用24L01实现无线传输,能够很准确将所测温度传输到几十米外的距离,可以用于某些不利于近距离观测的生产生活中。
7此项目设计的心得
项目设计中,感受最深的便是程序的修改,由原始程序18B20测温到与24L01测试程序融合,是此次项目设计的核心所在,软件是一个企业的灵魂,同样项目设计软件部分也起着类似的作用。
首先从温度的数码管显示说起,数码管的引脚与单片机引脚连接的不同,控制数码管段选或者位选的I/O口就不同,所以在修改程序过程中这点是最容易忽略的;其次,当今社会是一个很精细化的社会,分工明确,同时另一种能力也就显得尤为重要——整合资源,我们可以实现随机的发送一个数据,但如何发送多位数据,以及数据的存取便是我们当思考的问题;最后,如何判断错误是出现在软件部分还是硬件部分,也同样是一种能力。
8参考文献
[1]李朝青,单片机原理及接口技术(第3版),北京航空航天大学出版社
[2]阎石.数字电子技术基础[M],北京:
高等教育出版社,1998。
[3]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测温 24 l01 无线 传输 设计