测温并24l01无线传输设计张玮玮.docx
- 文档编号:11664405
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:19
- 大小:602.98KB
测温并24l01无线传输设计张玮玮.docx
《测温并24l01无线传输设计张玮玮.docx》由会员分享,可在线阅读,更多相关《测温并24l01无线传输设计张玮玮.docx(19页珍藏版)》请在冰豆网上搜索。
测温并24l01无线传输设计张玮玮
编号:
河南大学2013届本科毕业论文
测温并24l01无线传输设计
论文作者姓名:
张玮玮
作者学号:
2009230134
所在学院:
物理与电子学院
所学专业:
通信工程
导师姓名职称:
黄宗胤讲师
论文完成时间:
2013年05月08日
目录
摘要:
1
0前言1
1系统组成与功能2
1.1系统组成2
1.2系统功能7
2系统原理7
2.118B20测温24L01发射模块仿真图8
2.224L01接收模块仿真图8
2.3实物照片9
3程序流程图10
3.1测温程序流程图10
3.2发射端程序流程图11
3.3接收端程序流程图12
4制作过程13
5主要元件清单14
5.1发射板其他元件14
5.2接收板其他元件14
6主要程序源代码15
6.1温度采集处理主要部分函数15
6.2发送模块主要程序15
6.3接收端模块主要程序16
7结论17
8其他实现方案讨论17
9本方案创新点18
10参考文献18
测温并24L01无线传输
张玮玮
(河南大学物理与电子学院,河南开封,475004)
摘要:
本文采用18B20模块和24L01模块,用18B20测温传送至单片机中存储并通过24L01模块无线传输,本文详细给出软硬件设计过程。
该设计具有结构简单、实时性好、功耗小、价格低廉等优点,可用来进一步开发与利用。
关键词:
无线;温度传输;24L01;18B20;单片机
temperaturemeasuringand24L01wirelesstransmission
“ZhangWei-wei”
(SchoolofPhysicsandElectronics,HenanUniversity,HenanKaifeng475004,China)
Abstract:
Inthispaper,18B20modulesandthe24L01modulewith18B20temperaturetransmittedtothemicrocontrollerstoresandthroughthe24L01modulewirelesstransmission,thisarticledetailsthehardwareandsoftwaredesignprocessisgiven.Thedesignhastheadvantagesofsimplestructure,real-time,lowpowerconsumption,andlowprice,canbeusedtofurtherdevelopmentandutilization.
Keywords:
wireless;temperaturetransmission;24L01;18B20;microcontroller
0前言
温度的测试技术已经成熟,已经满足了人们的大部分需求,然而在某些工作场合下,我们更想知道与自己不在一个地方的温度,以便进行温度调控,更好更方便地生产生活,因此,温度的传输就成为了我们要考虑的内容了。
此单片机课程设计中,我们就基于24L01模拟温度的无线传输,经过调试,试验,已经实现了预期功能,同时也实现了对生产生活中温度预警的模拟功能。
1系统组成与功能
1.1系统组成
本系统主要有AT89C52单片机、复位按键、无源蜂鸣器、18B20芯片、24L01模块、四位一体共阴8段数码管等元件组成。
1.1.1AT89C52单片机
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),兼容标准MCS-51指令系统。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52
可以按照常规方法进行编程,但不可以在线
编程(S系列的才支持在线编程)。
图1-1
引脚图如图1-1所示
1.1.218B20测温芯片
图1-2
DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。
其一个工作周期可分为两个部分,即温度检测和数据处理。
DS18B20共有三种形态的存储器资源:
ROM只读存储器,用于存放DS18B20ID编码;RAM数据暂存器,用于内部计算和数据存取;EEPROM非易失性,记忆体,用于存放长期需要保存的数据.
24L01模块
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.3四位一体共阴数码管
1
图1-4
其引脚图为:
图1-5
1.1.4无源蜂鸣器
图1-6
无源蜂鸣器是蜂鸣器的一种,区别于有源蜂鸣器,无源蜂鸣器是内部不带振荡源的蜂鸣器,是一体化结构的电子讯响器,在电路中的图形符号位H或者HA。
无源蜂鸣器是靠压电效应的原理来发声的,压电材料,一般常见的是各种压电陶瓷.这种材料的特别之处在于,当电压作用于压电材料时,就会随电压和频率的变化产生机械变形.另一方面,当振动压电陶瓷时,则会产生电荷.就是说这种材料能把机械变形和电荷相互转化,压电式蜂鸣器里面的起振片,就是一种压电陶瓷.如上所述,要让它振动,除了压电陶瓷本身,还需要适当大小和频率变化的电压作用于压电陶瓷.压电式(有源)蜂鸣器内部带有多谐振荡器,可以产生1.5—2.5kHZ的电压信号.由此压电式蜂鸣器才能发声。
1.1.574LS1383-8译码器
图1-7
74LS138:
当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
A、B、C
译码地址输入端
G1
选通端
/(G2A)、/(G2B)
选通端(低电平有效)
Y0-Y7
译码输出端(低电平有效)
1.2系统功能
本设计的主要功能是用18B20测温传送至单片机中存储并通过24L01模块无线传输。
发射端与接收端各有数码管分别显示发送、接收温度,同时系统又能实现报警功能,当所测温度超过预定值时,接收端的蜂鸣器报警提示。
并且在发射端拥有七彩指示灯,当所测温度不发生变化时,指示灯会熄灭,以提示温度已恒定。
2系统原理
本设计主要原理是单片机采集18B20测得的温度,同时将数据传给24L01的发射模块,并通过另一单片机控制24L01接收模块的接收,同时显示所测温度值。
2.118B20测温24L01发射模块仿真图
图2-1
说明:
24L01无线模块不能实现真正的仿真,上图中的NRF24L01仅作示意,但是数码管能正常仿真
2.224L01接收模块仿真图
图2-2
2.3实物照片
图2-3
3程序流程图
发射板与接收板分别执行各自功能,各有各自的单片机控制,由24L01收发模块作为他们的关联。
3.1测温程序流程图
图3-1
3.2发射端程序流程图
图3-2
3.3接收端程序流程图
图3-3
4制作过程
简单地说,制作过程包括电路板的制作、元器件的焊接、程序的烧录、用Proteus软件做仿真和最后的调试、检验。
在充分了解了电路中所
需的各元器件的功能和性能,掌握了单片机原理及其应用,对24L01发射和接收模块仿真图有了充分的了解之后,我们开始焊接元器件。
4.1焊接过程及出现的问题和解决
4.1.1焊接工具不好用
当研究好各个元件和电路图开始焊接时,电烙铁很好用,我很快就上手了,焊的也很快,但是沾了一下松香之后电烙铁就坏了,加热很长时间也没一点温度,不能焊接,因此浪费了很长时间。
印象最深的是被它烫的那几个大泡,相信焊过板子的每个同学都印象深刻。
所以,要想保持高效率,必须要弄好工具,这样才会事半功倍。
4.1.2焊接时排线问题
焊接众多的元件时就需要事先把线排好,否则焊接过程受到影响不说,出现问题时检查线路也不好检查。
一开始我没注意到这个问题,发射模块的线排的不好,有些不美观。
而焊接接收模块时注意了一下,排线就好多了。
4.1.3引脚问题
本实验元件中引脚很多,稍不小心就会焊错,拆的话不好拆,也很容易触碰到其他焊接好的东西,因此焊接的时候不仅要很认真,还要把引脚标记好。
于是我就用标签在较弄混的引脚上标注清楚。
4.1.4焊点之间相连问题
焊点之间相连的话会使线路出现短路,还会影响电路的美观,这个就需要焊接时多加小心了。
唯一解决的办法是把握合适的焊接时间,多多练习,这样才能熟能生巧,做得漂亮。
4.1.5检查时出现的问题
1.焊接完成后,电路板不能测温,仔细检查之后才发现有些地方是虚焊的,有些地方漏焊了。
2.修改之后,我开始检验电路是否能达到预想的效果。
但是在显示温度变化时,有些反应迟钝,于是我把程序中的延迟时间改了一下,一秒一改变,这样温度就变化正常了。
5主要元件清单
原件名称
数量
万用板(9cm×15cm)
2
STC89C52单片机
2
74LS138
2
24L01接收模块
1
24L01发送模块
1
2个四位一体共阴数码管
2
AMS1117-3.3稳压芯片
2
5.1发射板其他元件
原件名称
数量
18B20测温芯片
1
晶振12M,
1
上拉电阻
1
复位按键
1
七彩发光二极管指示灯
1
电容30pf
2
电阻(10k,4.7k)
各一个
5.2接收板其他元件
原件名称
数量
晶振12M
1
电容30pf
2
无源蜂鸣器
1
上拉电阻
1
电阻(10k,4.7k)
各一个
复位按键
1
6主要程序源代码
6.1温度采集处理主要部分函数
#include"reg51.h"
……
/**************DS18B20复位函数****************/
ow_reset(void)
{·····};
/***********DS18B20写命令函数*************/
voidwrite_byte(ucharval)
{·····};
/***********DS18B20读1字节函数*************/
ucharread_byte(void)
{····};
/*************读出温度函数*************/
read_temp()
{·····};
/**********温度数据处理函数***************/
work_temp()
{···};
main()
{···};
6.2发送模块主要程序
#include"reg51.h"
/*NRF24L01初始化
voidinit_NRF24L01(void)
{···};
····
/***********主函数************/
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
}}
6.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℃播放音乐
}}
7结论
通过18B20测温并由单片机控制,利用24L01实现无线传输,能够很准确将所测温度传输到几十米外的距离,并且在超过某一温度时自动报警,可以用于某些不利于近距离观测的生产生活中。
8其他实现方案讨论
可以使用1602液晶显示屏代替数码管,显示更多的文字说明,同时还可以使用其他型号的无线收发模块进行试验,也能得出结果。
9本方案创新点
1.温度超过某一温度蜂鸣器自动报警并播放音乐;
2.温度低于报警温度时,七彩指示灯会随着温度的变化闪烁。
10参考文献
[1]李朝青,单片机原理及接口技术(第3版),北京航空航天大学出版社
[2]阎石.数字电子技术基础[M],北京:
高等教育出版社,1998。
[3]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测温 24 l01 无线 传输 设计 张玮玮