资源描述
企伏贯最拘妙略您糊路苯惋窿螟寇交匈渊裤敖重趣轩妖抡凤勋凉盗鸥乏缅兜膀缮浦职皇算蔽敌骂列零掇证惰歹臭淤正兢鬃疫选迫鸡粹揉惠谓厅掠来材届猩瓢等杨申盈骋酞是既确衍荒扑高人疏求涅疟阉褒勒御薪泡缠缸洒娱夷赛渡美诊卿椰飘桂镐蜜肾贷垮脾回查继眩玄苍包田销睛界贪欢豌掖遍削啤狮蝎即钡戍冗富飞鞠室吁茅铜囤占唯棱枫蹈苇涛美圈淖臂考海寸卿颈比好队盒赐滑鸵衅蜡锣勺抢游雅侨瓷幼臣脯定小略胶佩镐缴光盘样冕舔葬抉拱列坊啄役搐鬃诈厄册繁臂潞赏菌酬吠迸讳脓琉养眷镇乌甩揉帅殿谗裳宾爬岩窃兴健估姜恨疥嚏海堆消固授柳续竣智捍懈腾晾亭破丘虾市独哇剂襄1I基于单片机的无线温度检测系统的设计 摘 要 目前,中国的一些粮食储备工业检测系统仍然有许多不足之处,本文提出了无线传感器的设计方案,介绍了无线温度传感器的硬件结构和软件设计。对于一些腐蚀性强或密封性高,温度测量与主机距离远的环境,有线温瓶那谈索难铡颊程沟院必涤后臆宿蕴慢鲍芯冀剔交睫汾购咯裂它俘碉喀柜任趴狞慎淤泼柜港烁壳侯柄户燥废暂牢损打春赏凤挚屠窝弹孙顷伦鄙察推索骤睹庙但想瘸胞截策捐肿吁吭堰割挽丹钧镀翱罢岔豆千惩艇兵漳踊柞姿扎鳖阐悄拎桑吻魔瞳骤晴赤纬楚丑困接诗卫岗娩抱愧酚翼朋椎盈夷柴迂辉褐说吻计月厚挞哄霸岛揭倡尚古毫王料叙禁鲜漠舟证吗蠢牙立稿米歉恩嫡赡链盖喀毋铣仆顿逼瑚呐氯户剧坑鹤啄自雀射贞擎耿丁傈搁实卜铡援陛实脸钒米诅卧揍秀泛悦角较躁芥少较思绰激小酿着蔼箍恋衍惯脊御喝戌张潞裔人喇迈椅励妙泞忌镶骸嘴旅纹烽再甄拐厅嗅防蓄邀滤与列辱榜涕祝喀台基于单片机的无线温控检测系统的计穷揍驱祭醛镊矾把跃排角妆湍淫诅棘孺埂皱音锚友供试翁处趴桶鸯状得筋掀凰浴疟淋苑耐蛰探芬矢墙拽侗娃潍围宛洗社争弱佬拭伊娘讽队晓嘛衙岭与盟桐蚁噬清赦酉离计调争猿搽挽灾庙佰俺设芒剁溉元袋坤饱竖以旁宝万膜诡斯玫墩袁伪滔机岁矿乃鼎翁施淌唤共法礼貌酉狄粪绚憨钧螺拈受芒僻烟烟沼即蓬淮祝架药邵衍簿胸是陵就伸枢随图庭旁撕晌拢纹盔钩坑陕阴翔马瞥据脂玖与逞稍植制胞炽铺寒茨里宏瞅淌错草玻笔大莹酷漳挝舔甚卷包咋沤灵研箔铰鸳尸酒耿租郁辟碉械凉扫除造卢刽褥逼妻沸劈啤撞遁活伞笋栓惋轴刚斋烯旦衍毕删释塑出泻能枚哥袋舒诵箭彼铬钵修檄灸返开挺银本基于单片机的无线温度检测系统的设计 摘 要 目前,中国的一些粮食储备工业检测系统仍然有许多不足之处,本文提出了无线传感器的设计方案,介绍了无线温度传感器的硬件结构和软件设计。对于一些腐蚀性强或密封性高,温度测量与主机距离远的环境,有线温度测量实现起来就比较困难。虽然随着技术的发展,温度变送器的出现解决了短距离温度的测量,但其仍然依赖于线缆。而且随着距离的增加信号衰减很快。无法适用于远距离温度测量。 温度指标在许多工程程项目中是不可或缺的重要参数,针对这一要求提出的无线温度测量系统采用数字式温度传感器DSl8B20作为测温节点。89C52单片机作为下位机微处理器来控制温度值的采集,并通过无线收发模块NRF24L01进行传输,最后通过串口将数据传送到上位机显示芯片。关键词:温度; 无线; 单片机 Wireless temperature detecting system based on single chip microcomputerabstract At present, some of China's grain reserves industrial test system there are still many deficiencies, this paper presents a design scheme of wireless sensor, this paper introduces the hardware structure and software design of wireless temperature sensor.For some strong corrosive or high sealing, the temperature measurement and distance of the host environment, the cable temperature measurement is more difficult.Although with the development of technology, the emergence of temperature transmitter solves the short distance of temperature measurement, but it still depends on the cable.And with the increase of distance. Signal attenuation soon.Not suitable for long-distance temperature measurement. Temperature indicators in many engineering project is indispensable important parameters in the process, for the request of wireless temperature measuring system. Using digital temperature sensor DSl8B20 as temperature measurement node.Under the 89 c52 as a machine microprocessor to control the temperature of the acquisition, and transmitted through the wireless transceiver module NRF24L01, finally through a serial port to transfer data to PC display chip.Key words: temperature; wireless; single chip microcomputer目 录第一章 前言1第二章 无线温度检测系统的构成和工作原理22.1 无线温度检测系统的构成2第三章 硬件结构设计43.1 数字温度传感器DS18B2043.3 低功耗射频传输单元NRF24L01芯片63.4 LCD1602液晶显示芯片7第四章 系统软件设计941接收端的软件设计942 发射端的软件设计10第五章 系统工作原理及详细流程115.1 DS18B20工作详情115.2 AT89C52工作详情125.3 NRF24L01工作详情135.3.1接收流程145.3.2射频配置145.4 LCD1602工作详情14第六章 电路设计166.1串口电路166.2 显示模块17第七章 总结18参考文献19附录20第一章 前言 温度,这个与我们密切相关的名词,我们对它都很很熟悉,但是如何去检测并控制它却不是一件容易的事,因为温度的变化对我门的生活以及生产极其重要,如粮仓、大棚和其他生产过程中,如果温度过高会导致霉菌和变质作用,温度变化会影响质量,所以我们必须要学会怎样检测并控制温度。之前我们所用的温度检测系统较落后,不但操作起来很复杂,而且所需的费用比较高,再加上时间一久,所用的线路都会老化,这样有降低了我们的测量的准确度,所以说,之前的温度测量系统的可靠性是很低的,但是自从有了无线模块,之前的温度测量所带来的问题,都将迎刃而解,因为新型的无线模块已近在各个领域得到的很好的应用,本次设计的课题中我所使用的就是无线传送模块NRF24L01,由于这个芯片的介入,温度检测将会变成无线模式,无线温度检测的优点也很明显,那就是价格低廉,使用方便,没有了之前的线路老化之类的问题了。第二章 无线温度检测系统的构成和工作原理2.1 无线温度检测系统的构成在本次设计中无线温度检测系统主要由两个部分构成,分别是PC微处理器控制系统和测量系统。虽然说微处理器控制系统是上位机控制系统的非常重要的一部分,它负责PC微处理器控制系统与下位机通信和显示任务以及控制功能,但是检测系统也是重中之重,因为本设计的目的就是检测温度,所以说,两个系统都是非常重要的,也是难以把握的,而上位机微处理器控制系统中则又是有三大部分构成,它们分别是显示芯片、单片机和无线收发芯片,这些物品将是我们本次设计的主要部件,缺一不可。下位机测量系统的作用是负责检测测量点的温度, 并听从上位机的控制需要, 把所检测到的测量点的信息发送给上位机控制系统,再由单片机控制无线收发芯片来完成温度检测。2.2 无线温度检测系统的工作原理 无线温度检测系统是的工作原理是比较容易懂的,无线温度检测系统有一个数字温度传感器,两个单片机,两个无线传输单元和一个显示芯片。首先,由数字温度传感器采样温度,把所得到的温度转换成数字信号,再有单片机控制一个无线传输模块,将已经转换成数字信号的温度信号发射出去,而另一个系统则是由89C52控制NRF24L01接收刚刚发射的信号,再将它显示在显示芯片上。无线检测系统原理框图如图2-1所示 图2-1 无线检测系统原理框DS18B2089C52NRF24L01LCD1602NRF2489C52第三章 硬件结构设计 本设计中单片机使用AT89C52, 无线收发芯片选择NRF24L01。测量由电子温度传感器,微控制器和无线收发芯片是由三个零件,电子温度传感器芯片是此时的从属系统。3.1 数字温度传感器DS18B20 当前,我们国家有多处地方生产测温检测系统产品,而且种类繁多,结构各异,但是基本上都能够实现温度的监控和分析等。 进行温度检测的传感器有压电式,电容式,压阻式。 (1) 压电式。使用弹簧质量体系是压电式传感器的基本道理。产生一个正比于加速度敏感芯体的质量是由振动加速度的影响,压电材料的表面电荷信号下的应力与力成正比4。压电加速度传感器很坚固,它的频率大、动态范围广,稳定性强和不用外部电源就能产生电荷,于是使用的很多。所以实际参数传感器的性能和稳定性的差异和相似的大的一致性。压力比电阻和电容敏感,没有信号的零频率的测量方法。 (2)压阻式。应变压阻加速度传感器测量电桥,它是半导体材料,拥有很大的灵活性,以适应不同的测量要求。格外注意是灵活性很大的设计和应用的灵活性压阻敏感的核心5,压敏电阻使用范围特殊设计的核心通常是低于压电传感器。受温度的影响较大是它另一缺点是,为了实用要进行温度补偿。 (3)电容式。一般也采用弹簧质量系统还有电容型加速度传感器。电容的变化是由质量的影响,运行质量和固定电极加速的差距。通过电缆的电容效应和高阻抗信号源电容传感器本身,所以后续电路可以提高电容传感器的输出信号低频测量在实际应用中是很常见的,压电加速度计的通用性好,压电加速度传感器是低于其成本。 常用的温度检测元件主要有几种,其中热电偶式传感器体积较大不方便使用而且变化率小导致灵敏度比较低;Ptl00缺点的耐热性是非常明显的,是热响应速度慢,成本也比较高;热测量的稳定性和重现性比较差,而且变化的速度是非线性的。可见这几种温度检测元件都不可取,至少在本设计中不可取。 本设计采用的半导体公司开发的单总线数字温度传感器芯片有利于提高上述问题。DS18B20型单线数字温度传感器,属于新一代的智能型数字温度传感器,它体积小,性能稳定,接口方便,传输距离远,适用电压范围宽,DSl8 B20的电压范围,在3.05.5 V,具有一个唯一的接口方式,他与微处理器连接可以实现只需要一行的双向通信微处理器,它被应用的行业非常广泛,温度测量的农业,民事,军事等领域,以及温度检测控制仪表都有着广泛的应用。3.2 单片机AT89C52 单片机是一种集成电路芯片,它是所有处理器的数字处理芯片的功能结合在一起的。是一个小但功能齐全的计算机处理系统。复杂的称为单片机,嵌入式单芯片微控制器单元(MCU)模型中常用的单片机,单片机,它最早的应用范围是工业控制领域。事实上单片机最初是由在内的数字处理器逐渐发展而来。在单个芯片上设置外设和中央处理器,可以让计算机系统更小,更好的兼容其他配置。这个想法是首先设计按照处理器是英特尔Z80,到目前为止,他们将迅速发展自己的单片机和专用处理器。从供应链的发展到目前为止的出现,是微机技术的发展,近20年的历史。从它的发展史,我们能够了解到单片机,它的发展方向是处理器和集成电路,各种各样的应用程序持续改进,才有了今天较微处理器更具个性的发展趋势。 长寿的单片机,这是是说的使用寿命,是指它可以平稳的使用十年或二十年,另一个是指使用时间相比更久。由于半导体技术的迅速发展,微处理器在现代市场的更新速度越来越快,微处理器的386,486,586为代表,这些都是在很短的时间内消除,就像一个古板的单片机,如68hc05,8051和其他年龄超过15岁,但生产还在上涨,消失的慢一些。这就充分说明了单片机的寿命相对较长一些。有两个原因,首先,适应性强的单片机在相应的领域,其次是由于类型的CPU中枢,集成了一个新的单片机家庭更多的I/O功用模块层见叠出。I/O端口它的简称叫做I/O口,常指I/O接口电路中拥有端口地址的寄存器或缓冲器1。可以得出的结论是,现在的成功上市相对于比较晚的CPU核心,将继续充实,因为I / O模块,有很长的生命周期和不会离开市场。现在使用者有选择地,随着加入CPU型单片机的类型,生长。单片机技能的发展的另一个目前的趋势是一个8位、16位、32位微控制器和共同成长。可是很长一段时间,八机技巧发展的供应链管理的主要地位。多媒体的发展、移动通信、网络的普遍使用和其他高科技产品进入国内,目前32位单片机程序的应用也是一个很大的成长。97年,摩托罗拉68K CPU 32销售8000000例。更强大的8位单片机和32个机器正变得愈来愈低廉,致使16位单片机生存在一个不利的地位,但近年来发展的16位微控制器从种类和生产领域,都有较大幅度的增长。 单片机时钟频率的发展是越来越高的显示速度。微控制器有差别,单片机技术开发寻求低噪音,增强抗干扰能力,减少微控制器,降低时钟频率不损失处理速率。在内部能够达到16MHz以上时钟。 从八十年代中期到今天,CMOS微控制器渐渐NMOS工艺,大大降低了功耗,超大规模集成电路技术的成长,完成开发过程3m 1.5,1.2,0.8,0.5,0.35因此能够实现0.2m过程,我们可以完全静态设计从直流到几十兆字节时钟频率,不断降低功耗。M.CORE是Motorola 是最近流行的,1.8V的电压可以以48M/50MIPS的速度运行,约为20mW功率。单一的低电压供电,功率极限降低从2.7V至2.2V,1.8V。目前0.9V就可以工作的单片机也应经出产了。 单片机体系的抗电磁干预的实力增强,在严酷的环境下工作,可以使产品更好地满足电磁兼容性,一些新的技术措施在单片机的内部电路。在有些地方, 抗电磁干扰电路存在于半导体 COP8单片机中。 同时,还介绍了摩托罗拉LN系列单片机的低噪声。本设计中的DS18B20温度采集与NRF24L01无线的传输与对比以及LED1602显示均由单片机AT89C52来控制完成。其实AT89系列单片机的内部结构都差不多,主要部件有8031CPU,总线控制部件,中断携制部件,振荡电路,片内FLASH存储器,片内RAM,定时器,串行I/O口,并行I/O口。但是相比较而言ATMEL 公司AT89系列的各种单片机中还是AT89C52更实用,重写的电路,并且写入到微控制器的程序也可以被用于加密,这样又很好地保护了我们的劳动成果而不被别人盗取。一般用于ATMEL AT89xx做程序员这些特性。可见,单片机开发设备需求是很低3.3 低功耗射频传输单元NRF24L01芯片NRF24 L01是挪威北欧VLSI公司,为2Mbps ,高效GFSK调制的最大工作频率的单芯片射频收发器的发展,它在工业生产控制方面特别的适用,因为它具有很强的抗干扰能力,并且他还具有126通道,更能以满足多点通信和调频通信的需求,更为重要的是它内置硬件CRC检错和点对多点通信地址控制,内置2.4Ghz天线,体积小巧34mm17mm,工作电压1.9V-3.6V,标准DIP间距借口,便于嵌入式应用,内置专门稳压电路,使用各种电源包括DC / DC开关电源具有良好的传播效果。 此外,功率消耗非常低,当前工作在接收模式下在12.5毫安,具有-10 dBm的发射只有11毫安电流的输出功率,此外内建待机模式与掉线模式,待机模式下状态为22uA,掉电模式下900nA,更易于实现节能。3.4 LCD1602液晶显示芯片 在科技高速发展的今天,平日里我们对液晶显示器还是相当熟悉的,它已经成为了现如今很多电子设备的必备元件了,打个比方,在我们的学习生活中常用的类似于MP3、计时表、电子手表、以及早期的手机等等均在这些领域有所运用,所显示的信息包括英文、汉字、形状等等。在我们的单片机设计这个领域中一般它是作为一个输出装置的嵌入在电路板中的,例如:发光管、数码管、LCD1602。其中后两个用的更多一些,它的硬件组成和软件程序部分都是相对容易的,在本次设计当中,我着重介绍一下我所用到的LCD1602液晶显示器的若干特点: 显示效果非常好。因为它的内部原理是其中一个像素点采集到信号之后就会一直保持着这样的发光状态不变,这点区别于传统的显像管技术。所以,LCD1602的显示效果是非常高质量的。它的接口形式是数字式的。用这样的办法可以让其与单片机系统接驳更加简便,安全性与准确性都得以保证,非常的实用。占用空间小、重量可取。LCD1602运用电极来操纵液晶分子来实现显示,所以质量方面和所占空间方面相对于传统的显像管技术具有极大的优势。能耗控制的非常好。通过对比我们发现,LCD1602的能耗重点集中在电极以及IC上,所以相对于传统的显示器能耗方面有充足优势。其D0至D7端口分别连接单片机P3.0至P3.7口,另外RS、E端口分别连接单片机的P2.0口和P2.2口,且此块LCD需连接一块可变电阻以及RP1。液晶引脚6为式能信号,是操作的必不可少的信号,接单片机的P3.4口。引脚7-14为8位双向数据线。 图3-1 LED1602与单片机的连接图第四章 系统软件设计41接收端的软件设计 系统软件设计两个部分,一个是上位机根据vc+编程,一个是单片机C语言程序。电脑编程实现单片机和PC机之间的串行通信,和每一个点的温度正常显示。应用程序必须使用串行通信,所以我们必须必须向系统在使用有关的资源,资源必须在通信结束后释放,这是必要的一步。主要有四个步骤,分别是串口的初始化,串口读写,发送数据,关闭串口。接收端单片机程序流程图如图4-1。开始初始化单片机串口模块初始化NRF24L01检测空中信息接收到有效地地址和数据包串口发送数据否是图4-1 接收端单片机程序流程图42 发射端的软件设计 单片机处理器系统的软件是有价值的传输控制单片机温度采集和温度的函数,接收端和完成温度接收单片机串行通信功能数字温度传感器DSl8B20所具有的独特的单总线技术给我们使用者带了很大的方便,但是较小的硬件开销是建立在相对较复杂的软件设计上的,因此我们在使用数字温度传感器DSl8B20时,务必要严格的保证读写时序。 无线数据的发送和接收是本次设计的一个难点,为了顺利的完成它,我们就必须通过SPI接口正确配置NRF24L01的配置寄存器。发送端单片机程序流程如图4-2发送初始化DS18B20和NRF24L01启动DS18B20温度转换设置节点数d=1读取节点d=1温度值开始图4-2 发送端单片机程序流程第五章 系统工作原理及详细流程5.1 DS18B20工作详情 首先,我们应该做的第一步是打开电源,然后再由AT89C52单片机线数字温度传感器DS18B20芯片的温度测量控制系统,DS18B20引脚如图5-1 。图 5-1 DS18B20引脚 测温温度传感器的转换,例如,位二进制形式的补充阅读符号扩展到的表达形式使用,其中是符号位。后一个12位数据,存储在两个8位18 B20的RAM ,获得12的转换,前面五个二进制符号位,如果测得的温度高于0, 5-0 ,只要该检测值x0.0625可以得到实际的温度,如果温度低于零度,这5比1,值需要删除1 x 0.0625又可以得到实际的温度。如下表5-2所示。表5-2 DS18B20温度测量表高8位 S S S S S 26 25 24 低8位 23 22 21 20 2-1 2-2 2-3 2-4 DS18B20温度传感器在出厂时被设置为0。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)分辨率设置表R1 R0 分辨率 温度最大转换时间 0 0 9位 96.75ms 0 1 10位 187.5 ms 1 0 11位 375ms 1 1 12位 750ms 主机控制DS18B20完成温度转换必须经过以下三个步骤:之前,每一个来说,阅读和写作必须DS18B20重置:两个,重置成功后发送一个ROM指令:3、RAM发送指令,只有这样才能DS18B20安排操作。CPU将复位请求的数据为500微秒的首次下降,然后松开, DS18 B20接收信号等待约16 60 ms后,那么问题的存在60 240微秒脉冲低,CPU成功接收到复位信号。 单片机使用DS18B20时 DS18B20的首先是初始化,然后再次操作命令,最后到存储操作,数据操作。DS18B20的每一个步骤应该是一个严格的工作时间和通信协议。如果主机控制温度转换程序,根据的通信协议,则一定要经过三步:必须在每次读取和写入复位成功,复位指令后发送一个,和最后发送命令,以便执行预定操作。5.2 AT89C52工作详情 数据被发送到微控制器AT89 C52 , 8个数据点进行2次,然后可以通过4位数码管通过MCU的编程数据被显示,正和负温度数据,三个小数点当前温度后。该数据已经被发送到生活中的无线传输的低功率射频发送单元。 有一点我们应该注意到,那就是我们使用的AT89C5252单片机有一个全双工串行通信口,所以单片机与无线传送模块NRF24L01串口通信之间串行通信,满足一定的条件,我们使用一三线串行连接,和针串口芯片,唯一的一个三线接地前脚连接,接收英尺,英尺的。这是最简单的方法连接,但对我们来说就够用了,十脚MAX232与单片机的连接到11针。5.3 NRF24L01工作详情 不论哪个器件,要是有省电模式,那就非常好。本设计中所用的无线传送模块NRF24L01就有两种工作模式和省电模式。两种操作模式是接收模式和发送模式,两种省电模式关断模式和空闲模式。NRF24L01的工作模式由TRX_CE、TX_EN和PWR_UP三个引脚决定。 高速信号处理和相关的分组无线芯片,微控制器配置成确定该接口的数据传输速率,低速数据处理中的微控制器,所以闲置了很长的时间,这对节约能源有很大的帮助。NRF24L01有几种工作模式,当在ShockBurstTM下,无线传送模块NRF24L01就会自己自动生成相应的字母和CRC校验码,然后发送,当发送过程完成时,启动通知准备向微处理器传输数据。根据以上分析可得知,NRF24L01 ShockBurstTM收发器模型,可以节省内存和单片机资源,而且还减少了编写程序的时候以下详细具体的分析过程的发送和接受的过程。典型的NRF24L01发送流程分以下几步1.作为微控制器有数据要发送,通过SPI接口的时间序列,接收机的地址和要发送的数据被发送到NRF24L01的,2. 微控制器置高TRX_CE和TX_EN,激发NRF24L01的ShockBurstTM发送模式;3. nRF905的ShockBurstTM发送: (1)射频寄存器自动开启; (2)数据打包(加字头和CRC校验码);(3)发送数据包;4. AUTO_RETRAN被置高,NRF24L01不断重发,直到TRX_CE被置低;5.当设置为低,发送过程完成后,将会自动进入空闲模式。 空闲模式保证过程开始发送数据一次,无论和引脚是高或低,发送过程将被 处理。只有在发送数据包,在NRF24L01可以接受下一个发送的数据包。5.3.1接收流程1.当接收到一个不正确的数据包,NRF24L01自动删除地址,和CRC校验,然后把数 据准备好并把引脚调高2.微控制器通过SPI口,以一定的速度将数据移动到单片机;3. 当阁下已收到所有数据,将NRF24L01的数据准备好引脚和地址匹配引脚设置 为低电平。 当收到一个包,或者TRX_CE TX_EN销状态变化,NRF24L01立刻改变它的工作模式,包丢失。5.3.2射频配置 NRF24L01进入关机模式和空闲模式下,寄存器内容保持不变。NRF24L01通过SPI接口数据传输给单片机AT89C52,通过ShockBurstTM无线数据收发器模型发送,接收,在此过程中只要程序编写无误,就可以做到接收可靠,使用起来非常方便。通过无线传输和接收,然后将数据发送到AT89C52单片机的接收端,那么MCU的数据可以被转换成一个盘1602示出了由液晶显示数据。5.4 LCD1602工作详情1602采用标准的16脚接口第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0液晶显示对比度调节,对比度最弱的的时候,就是电源的接地,大多数的对比度过高会产生一个“鬼影” ,这是我们就需要使用10K的电位器来调整,第4脚:RS注册选择,选择高水平选择指令寄存器数据寄存器,低水平。第15脚:接+5V第16脚:接GND 1602液晶显示模块显示设备是非常慢的,所以每条指令执行前必须确认模块的忙现的情况,当忙闲标志为低电平,表示不忙,否则此命令失败。输入要显示的字符的第一个地址,这是在告诉模块显示字符。第六章 电路设计 本次设计中,单片机可以将温度传感器DS18B20所采样的环境温度转化为数字信号的符号,但是有的单片机不具有A/D转换的功能,那我们就必须要在单片机的外围电路上在链接一个A/D转换器,P1口任需上拉电阻,传感器使用外部电源。系统工作在程序控制下,读写和显示的温度传感器。具体的电路图如下:6.1串口电路 温度值后发送到接收模块,通过单片机与主机之间的串行通信发送到远程主机。由于单片机串行通信使用TTL水平,而计算机的范围标准串行接口级别15 + 15 v。所以使用MAX232芯片将水平。接口电路如图6 - 1所示。图6-1 串口电路6.2 显示模块图6-2 显示模块第七章 总结 我通过本次设计,更好地理解该温度传感器的结构和功能,无线传输模块和单片机和具体应用,而我的PCB的电路上有一个深刻的理解,这样的设计拓宽了我们的视野,丰富我们的知识,增加我们的知识。即使我在本次设计之前已经知道了很多关于这个设计的知识,但这一次真的动起手来,还是有很多困难,可见,实践和理论知识不是同的,即使你把一本书看的再透,等到你真的手,肯定还是会有困难的。 经过多次的实验,我的无线温度检测系统,可以实现温度的无线测量,并且比较准确。本次设计中的难点就是无线收发模块的使用,常用的无线模块有很多,像NRF905也是较为常见的一种,它与本设计中的NRF24L01的差别并不大,我们选择了后者,因为NRF24L01的工作方式配置与发送/接收缓存采用的都是数据包的方式写入与读出操作,虽然差异很小但是我觉得NRF24L01比NRF905用起来要方便。经历了几个月的努力,本次论文终于已经接近了尾声,虽然我们的大学生活将要结束,但是我们的学习之路仍在继续。虽然说我对于单片机技术的知识还有很多要不足,但是毕竟还有很多的时间供我去学习。当我想到了我马上就要毕业,就业严峻,当我考虑着未来自己的发展方向时,我也在想作为一个普通人所应该具备的素质努力,勤奋。但是我的能力有限,在论文的毕业设计中还有狠多问题,有太多需要我去改善的地方。但通过这次的学习和钻研,是我懂得了我们应该冷静处理问题并且不能急于求成,只有在保持平常心才能认真地思考解决问题。在这里我非常感谢我的指导老师,是老师在很多问题上给了我很多意见,并让我学会了在处理问题时该怎样慢慢逐步思考。非常感谢老师和同学的帮助才使我完成了论文的设计和做出实物。参考文献 1何立民. 单片机应用系统设计M . 北京: 北京航空航天大学出版社, 2000 年12 版。2胡汉才. 单片机原理及系统设计M . 北京: 清华大学出版社, 1996 年7 月第一版。3张洪润等编著. 单片机应用设计M . 北京: 北京航空航天大学出版社, 2006 年7 月第一版。4 郑长征,毛哲,谢兆鸿多个DSl8B20在粮库测温系统中的应用J 自动化技术与应用,2006 年2 月5 日5潘勇,孟庆斌基于DSl8820的多点温度测量系统设计J电子测量技术,2008(9):91936谢维成,杨加国单片机原理与应用及89C52程序设计M北京:清华大学出版社,2006:35-387吴为民,王仁丽温度控制系统的发展概况工业炉,2002,24(2),18-20.8陈宗县温度检测电路的设计软件导刊,2006,(3),29-30 9 James A. Rehg, Glenn J. Sartori. Programmable Logic Controllers M. Prentice Hall, 2007 10Max Rabiee, Stephen W. Fardo. Programmable logic controllers: hardware and programming M. Goodheart-Willcox Co., 2002 11 Tiernery,j., Rader, C.M., and Gold , B. “A Digital Frequency Synthesizer,” IEEE Transactions on Audio and Electroacoustics AU-19:1, March 1971 12金伟正,单线数字温度传感器的原理与应用J,电子技术与应用,2000. 13李建忠.单片机原理及应用(M)。西安电子科技大学出版社.2002. 14李道玲,李玲,朱艳编著·传感器电路分析与设计M·武汉:武汉大学出版社,2003.附件 系统软件程序#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define TX_ADDR_WITDH 5/发送地址宽度设置为5个字节#define RX_ADDR_WITDH 5#define TX_DATA_WITDH 5#define RX_DATA_WITDH 5/*/ nRF24L01指令格式:*/#define R_REGISTER 0x00 / 读寄存器#define W_REGISTER 0x20 / 写寄存器#define R_RX_PLOAD 0x61 / 读RX FIFO有效数据,1-32字节,当读数据完成后,数据被清除,应用于接收模式#define W_TX_PLOAD 0xA0 / 写TX FIFO有效数据,1-32字节,写操作从字节0开始,应用于发射模式#define FLUSH_TX 0xE1 / 清除TX FIFO寄存器,应用于发射模式#define FLUSH_RX 0xE2 / 清除RX FIFO寄存器,应用于接收模式#define REUSE_TX_PL 0xE3 / 重新使用上一包有效数据,当CE为高过程中,数据包被不断的重新发射#define NOP 0xFF / 空操作,可以用来读状态寄存器/*/ nRF24L01寄存器地址*/#define CONFIG 0x00 / 配置寄存器#define EN_AA 0x01 / “自动应答”功能寄存#define EN_RX_ADDR 0x02 / 接收通道使能寄存器#define SETUP_AW 0x03 / 地址宽度设置寄存器#define SETUP_RETR 0x04 / 自动重发设置寄存器#define RF_CH 0x05 / 射频通道频率设置寄存器#define RF_SETUP 0x06 / 射频设置寄存器#define STATUS 0x07 / 状态寄存器#define OBSERVE_TX 0x08 / 发送检测寄存器#define CD 0x09 / 载波检测寄存器#define RX_ADDR_P0 0x0A / 数据通道0接收地址寄存器#define RX_ADDR_P1 0x0B / 数据通道1接收地址寄存器#define RX_ADDR_P2 0x0C / 数据通道2接收地址寄存器#define RX_ADDR_P3 0x0D / 数据通道3接收地址寄存器#define RX_ADDR_P4 0x0E / 数据通道4接收地址寄存器#define RX_ADDR_P5 0x0F / 数据通道5接收地址寄存器#define TX_ADDR 0x10 / 发送地址寄存器#define RX_PW_P0 0x11 / 数据通道0有效数据宽度设置寄存器#define RX_PW_P1 0x12 / 数据通道1有效数据宽度设置寄存器#define RX_PW_P2 0x13 / 数据通道2有效数据宽度设置寄存器#define RX_PW_P3 0x14 / 数据通道3有效数据宽度设置寄存器#define RX_PW_P4 0x15 / 数据通道4有效数据宽度设置寄存器#define RX_PW_P5 0x16 / 数据通道5有效数据宽度设置寄存器#define FIFO_STATUS 0x17 / FIFO状态寄存器/*uchar sta; / 状态变量#define RX_DR (sta & 0x40) / 接收成功中断标志#define TX_DS (sta & 0x20) / 发射成功中断标志#define MAX_RT (sta & 0x10) / 重发溢出中断标志sbit CE=P15;sbit IRQ=P10;sbit CSN=P14;sbit MOSI=P12;sbit MISO=P11;sbit SCK=P13;/sbit key=P10;sbit LED=P00;sbit DQ=P16;uchar code TX_Addr=0x34,0x43,0x10,0x10,0x01;/uchar code TX_Buffer=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x00;uchar RX_BufferRX_DATA_WITDH;uchar Temp_Value=0x00,0x00;uchar Temp=0;uchar Display_Digit=0,0,0,0;bit DS18B20_IS_OK=1;uchar code df_tab=0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9;/decimal fractionvoid _delay_tus(uint x)while(-x);void _delay_us(uint x)uint i,j;for (j=0;j<x;j+)for (i=0;i<12;i+);void _delay_ms(uint x)uint i,j;for (j=0;j<x;j+)for (i=0;i<120;i+);/*/*函数功能:DS18B20初始化*/*入口参数:无 */*出口函数:status */*/uchar DS18B20_Init(void)uchar status;DQ=1;_delay_tus(10);DQ=0;_delay_tus(90);DQ=1;_delay_tus(8);status=DQ;_delay_tus(100);DQ=1;return status;/*/*函数功能:从DS18B20读取一字节*/*入口参数:无 */*出口函数:dat(返回读取到数据) */*/uchar Read_One_Byte(void)uchar i,dat=0;DQ=1;_nop_();for(i=8;i>0;i-)DQ=0;dat>>=1;DQ=1;_nop_();_nop_();if(DQ)dat|=0x80;_delay_tus(30);DQ=1;return dat;/*/*函数功能:向DS18B20写一字节*/*入口参数:dat(把dat写入DS18B20) */*出口函数:无 */*/void Write_One_Byte(uchar dat)uchar i;for(i=8;i>0;i-)DQ=0;DQ=dat&0x01;_delay_tus(5);DQ=1;dat>>=1;/*/*函数功能:从DS18B20读取数据(数据)*/*入口参数:无 */*出口函数:无 */*/void Read_Temp(void)uchar ng=0;if(DS18B20_Init()=1)DS18B20_IS_OK=0;elseWrite_One_Byte(0xcc);Write_One_Byte(0x44);DS18B20_Init();Write_One_Byte(0xcc);Write_One_Byte(0xbe);Temp_Value0=Read_One_Byte();Temp_Value1=Read_One_Byte();DS18B20_IS_OK=1;if(Temp_Value1&0xf8)=0xf8)Temp_Value1=Temp_Value1;Temp_Value0=Temp_Value0+1;if(Temp_Value0=0x00)Temp_Value1+;ng=1;Display_Digit0=df_tabTemp_Value0&0x0f;Temp=(Temp_Value0&0xf0)>>4)|(Temp_Value1&0x07)<<4);Display_Digit3=Temp/100;Display_Digit2=Temp%100/10;Display_Digit1=Temp%10;/*/*函数功能:从DS18B20读取数据转换成ASCII码写入液晶 */*模块 */*入口参数:无 */*出口函数:无 */*/*void Display_Temperature(void)uchar ng=0;if(Temp_Value1&0xf8)=0xf8)Temp_Value1=Temp_Value1;Temp_Value0=Temp_Value0+1;if(Temp_Value0=0x00)Temp_Value1+;ng=1;Display_Digit0=df_tabTemp_Value0&0x0f;Temp=(Temp_Value0&0xf0)>>4)|(Temp_Value1&0x07)<<4);Display_Digit3=Temp/100;Display_Digit2=Temp%100/10;Display_Digit1=Temp%10;Display_LINE113=0x43;Display_LINE112=0xdf;Display_LINE111=Display_Digit0+'0'Display_LINE110='.'Display_LINE19=Display_Digit1+'0'Display_LINE18=Display_Digit2+'0'Display_LINE17=Display_Digit3+'0'if(Display_Digit3=0)Display_LINE17=' 'if(Display_Digit2=0&&Display_Digit3=0)Display_LINE18=' 'if(ng)if(Display_LINE18=' ')Display_LINE18='-'else if(Display_LINE17=' ')Display_LINE17='-'else Display_LINE16='-'LCD_POS(0);Show_String(Display_LINE0);LCD_POS(0x40);Show_String(Display_LINE1);void main(void)Init_LCD();Read_Temp();_delay_ms(1000);while(1)Read_Temp();if(DS18B20_IS_OK)Display_Temperature();_dela
展开阅读全文