收藏 分销(赏)

测温并24l01无线传输设计.doc

上传人:xrp****65 文档编号:7674681 上传时间:2025-01-11 格式:DOC 页数:17 大小:835.50KB 下载积分:10 金币
下载 相关 举报
测温并24l01无线传输设计.doc_第1页
第1页 / 共17页
测温并24l01无线传输设计.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
河南大学·物理与电子学院·开放实验室·单片机设计报告 河南大学物理与电子学院 开放实验室单片机设计报告 测温并24L01无线传输设计 设计人:开放实验室入室人员 15 目 录 0 前言 1 1 系统组成与功能 1 1.1系统组成 1 1.1.1 AT89C52单片机 1 1.1.2 18B20测温芯片 1 1.1.3 24L01模块 2 1.1.4 四位一体八段共阴数码管、无源蜂鸣器、74LS138 3 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.1 AT89C52单片机 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),兼容标准MCS-51指令系统。 图1-1 单片机引脚图 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52 可以按照常规方法进行编程,但不可以在线 编程(S系列的才支持在线编程)。 引脚图如图1-1所示 1.1.2 18B20测温芯片 图1-2 18B20测温芯片 DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。DS18B20 共有三种形态的存储器资源:ROM 只读存储器,用于存放 DS18B20ID 编码; RAM 数据暂存器,用于内部计算和数据存取; EEPROM 非易失性, 记忆体,用于存放长期需要保存的数据. 1.1.3 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.4 四位一体共阴数码管 图1-4 其引脚图为: 无源蜂鸣器 图1-5 无源蜂鸣器是蜂鸣器的一种,区别于有源蜂鸣器,无源蜂鸣器是内部不带振荡源的蜂鸣器,是一体化结构的电子讯响器,在电路中的图形符号位H或者HA。无源蜂鸣器是靠压电效应的原理来发声的,压电材料,一般常见的是各种压电陶瓷. 这种材料的特别之处在于,当电压作用于压电材料时,就会随电压和频率的变化产生机械变形.另一方面,当振动压电陶瓷时,则会产生电荷.就是说这种材料能把机械变形和电荷相互转化,压电式蜂鸣器里面的起振片,就是一种压电陶瓷.如上所述,要让它振动,除了压电陶瓷本身,还需要适当大小和频率变化的电压作用于压电陶瓷.压电式(有源)蜂鸣器内部带有多谐振荡器,可以产生 1.5—2.5kHZ 的电压信号. 由此压电式蜂鸣器才能发声。 74LS138 3-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.1 18B20测温与24L01发射模块仿真图 说明:24L01无线模块不能实现真正的仿真,上图中的NRF24L01仅作示意,但是数码管能正常仿真 2.2 24L01接收模块仿真图 2.3 实物照片 测温并发射效果图,测温为12.2度。右下边带晶振的模块为收发模块。 接收信号并显示效果图,显示为12.2度,等于发射温度,实验成功。 3 程序流程图 发射板与接收板分别执行各自功能,各有各自的单片机控制,由24L01收发模块作为他们的关联。 3.1 测温程序流程图 开 始 初始化数码管 DB18B20复位 读取 温度 处理 温度 数码管显示温度2s 结 束 3.2发射端程序流程图 开 始 初 始 化 读取18B20的温度 处 理 温 度 温度存入24L0发射数组 数组值是否改变 24L01发射 数码管显示温度值 指示灯闪烁 是 否 结 束 3.3接收端程序流程图 开 始 初始化 24L01接收准备 24L01接收 接收数据存入数组 数码管显示 温度是否 大于20℃ 蜂鸣器唱一首歌 是 否 唱歌定时时间是否到了 是 否 结 束 4 主要程序源代码 4.1 温度采集处理主要部分函数 #include "reg51.h" …… /**************DS18B20复位函数****************/ ow_reset(void) {·····}; /***********DS18B20写命令函数*************/ void write_byte(uchar val) {·····}; /***********DS18B20读1字节函数*************/ uchar read_byte(void) {····}; /*************读出温度函数*************/ read_temp() {·····}; /**********温度数据处理函数***************/ work_temp() {···}; main() {···}; 4.2 发送模块主要程序 #include "reg51.h" /*NRF24L01初始化 void init_NRF24L01(void) {···}; //程序太长不宜写在报告中,完整程序请 ···· //联系QQ154401855(或154401856)下载 /***********主函数************/ main() { int f=0; uchar a[3]; int t; while(1) {uchar t=0; uchar i=1; long int j=0; Disdata=0xFF; //初始化端口 discan=0xff; led=0; for(h=0;h<4;h++){display[h]=0;} //开始显示"0000" ow_reset(); init_NRF24L01() ; write_byte(0xCC); //Skip ROM 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); // Transmit Tx buffer data 一次发完数组中的20个数 for(h=0;h<500;h++) {scan();} //显示温度2 s }} 4.3接收端模块主要程序 void main(void) { long int j=0; char k; 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; } //显示温度2 s 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]
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服