1、 本 科 毕 业 论 文 基于NRF905的两路温度检测与无线传输系统设计The Design of Two Temperature Detection and Wireless Transmission System Based on NRF905目 录摘 要Abstract引 言1第一章 系统设计理论基础31.1 硬件基础31.1.1 STC89C52单片机31.1.2 DS18B20温度传感器41.1.3 NRF905无线芯片61.1.4 LCD1602液晶显示器71.2 软件基础81.2.1 Keil C51仿真软件81.2.2 STC-ISP编译下载9第二章 系统硬件设计.132.1
2、 系统总体设计132.2 系统各部分电路设计142.2.1 主控电路设计142.2.2 电源电路设计142.2.3 ISP接口电路设计152.2.4 LCD驱动电路设计152.2.5 DS18B20电路设计152.2.6 NRF905接口电路设计16第三章 系统软件设计.173.1 系统主模块软件设计流程173.2 各主要模块软件设计流程.18第四章 系统测试结果25结 论28致 谢29参考文献30附 录31基于NRF905的两路温度检测与无线传输系统设计摘要:温度作为工业、农业、国防和科研等部门最普遍的测量项目,它在工农业生产、现代科学研究以及高新技术开发过程中也是一个极其普遍而又非常重要的
3、参数。本设计从NRF905无线传输模块的实际应用出发,对环境温度数据的采集、传输以及处理过程进行了研究,提出了一种基于STC89C52的温度检测与无线传输系统的总体设计方案。本文分别介绍了各个模块的特性和工作原理,并给出了系统的硬件原理图和软件设计方案。系统采用STC89C52单片机作为主芯片,以NRF905作为无线收发模块,利用SPI口实现双向通信,SPI支持高速数据传输,从而满足了射频带宽的要求。通过两个DS18B20进行现场的温度采集,然后各自将温度数据送入从机单片机进行数据处理,由NRF905无线传输模块发送至主机,在主机端利用液晶显示器LCD1602作为显示器进行显示。当温度超过设定
4、上限时,以蜂鸣器和直流电机来完成报警与降温过程的模拟。关键词:DS18B20温度传感器;NRF905无线芯片The Design of Two Temperature Detection and Wireless Transmission System Based on NRF905 Abstract:Temperature as industry, agriculture, national defense and scientific research departments such as the most common measuring project. In modern indu
5、strial and agricultural production, scientific research in the process of the high and new technology development , it is also a very common and very important parameters.This design starting from the practical application of NRF905 wireless transmission module, the ambient temperature data collecti
6、on, transmission and processing are studied, this paper proposes a temperature detection based on STC89C52 and the overall design scheme of wireless transmission system. This paper introduces the features and working principle of each module, and gives the principle diagram of the hardware and softw
7、are design scheme of system. System uses the STC89C52 single-chip microcomputer as the main chip to NRF905 as wireless data transceiver module, using the SPI mouth realize two-way communication, SPI support high-speed data transmission, so as to satisfy the requirement of the radio frequency bandwid
8、th. Through two DS18B20 temperature acquisition of on-site, and their respective data processing temperature data into the single chip microcomputer from machine, by the NRF905 wireless transmission module is sent to the host, the host end use as a monitor, LCD display LCD1602 for display. When the
9、temperature more than set time limit, to complete the alarm buzzer and dc motor and the simulation of the cooling process.Key words:DS18B20 Temperature Sensor;NRF905 Wireless chip引 言在工业控制现场,常常需要采集大量的现场数据,如电压、电流、温度、湿度、气压等,温度是一个非常重要的物理量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。温度控制失误就可能引起生产
10、安全、产品质量、产品产量等一系列问题,因此对温度的检测的意义就越来越大。温度采集控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用,在工业生产过程中,很多时候都需要对温度进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。温度作为一项工业常用测量对象,在工业现场和过程控制中具有至关重要的作用。随着科学技术的发展要求温度测量的范围向深度和广度扩展不但要求有足够的精度满足工业生产和科学技术的要求,而且还要求有广泛的测温范围。在许多测控现场,传统数据传输都是通过有线电缆实现的。随着射频、集成电路技术的发展,无线通信功能的实现更容易,数据传输速率更快,抗干扰能力更强,
11、因此,许多应用采用了无线传输技术。无线数据传输与有线数据传输相比,有诸多优点:一是成本低,省去大量布线;二是建网快捷,只需在每个终端连接无线数据传输模块和架设适当高度天线;三是适应性好,可应用于某些特殊环境;四是扩展性好,只需将设备与无线数据传输模块相连接。因此,无线传输是一种有效数据传输方式。所以使用无线传输的高精度测温系统可以对生产环境的温度进行无线传输并且能够进行使操作员可以远距离实时了解被测现场的温度变化情况保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。温度的测量与分析在工业上的应用相当广泛,能做出准确、稳定、快速的温度测量装置是很有难度的。温度对于工业的重要性推
12、动了温度传感器的发展。传感器主要经历了三个发展阶段:模拟集成温度传感器、模拟集成温度控制器、智能温度传感器。温度传感器的发展趋势:进入21世纪后,温度传感器正朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片机测温系统等高科技的方向迅速发展。单片机诞生于1971年,经历了SCM、MCU、SoC三大阶段。单片机主要用于控制,它的应用领域遍及各个行业,在温度采集与显示系统中用到了自动检测与传感技术、单片机原理及应用、单片机接口技术、模电技术、数电技术等方面大量知识。检测技术和传感技术是人们为了对被测对象所包含的信息进行定性的了解和定量的掌握所采取的一系列的技术措
13、施。其主要应用在于产品检测和质量控制。基于单片机的温度采集系统广泛应用于采用计算机、自动检测、微电子和自动控制等多项技术,不仅具有信号采集方便、简单、灵活性大的优点,而且可以大幅度提高被测温度的技术指标。本设计以STC89C52单片机为核心结合传感技术、单片机接口技术、NRF905通信技术等为温度检测分析搭建了一个平台,希望能为温度数据采集分析走出一条较为方便的路径。第一章 系统设计理论基础1.1硬件基础本系统以STC89C52单片机为核心结合传感技术、单片机接口技术、NRF905通信技术等为温度检测分析搭建了一个平台。于此,将对系统中所用到的主要芯片加以介绍!1.1.1 STC89C52单片
14、机1STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52拥有灵巧的8位CPU和在系统可编程Flash,具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向
15、量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。和atmel的对比STC89C52单片机:8K字节程序存储空间;512字节数据存储空间;内带4K字节EEPROM存储空间;可直接使用串口下载。STC89C52集成度高,系统结构简单,使用方便,实现模块化;单片机可靠性高,可工作到10.61
16、0.7小时无故障;处理功能强,速度快。低电压,低功耗,便于生产便携式产品控制功能强。目前单片机渗透到我们生活的各个领域,大致可分如下几个范畴:1. 在计算机网络和通信领域中的应用 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。2.在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不
17、同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。3.在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。4.在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备等等。5.在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与
18、计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。6.单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。1.1.2 DS18B20温度传感器2DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为
19、两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:(1)ROM只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。(2)RAM数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。(3)第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值
20、储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像。 在每一次读温度之前都必须进行复杂的且精准时序的处理,因为DS18B20的硬件简单结果就会导致软件的巨大开消,也是尽力减少有形资产转化为无形资产的投入,是一种较好的节约之道。控制器对18B20操作流程:1.复位:首先我们必须对DS
21、18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在1560uS后回发一个芯片的存在脉冲。2.存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在1560uS后接收存在脉冲,存在脉冲为一个60240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。3.控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM
22、指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。4.控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EE
23、PROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。5.执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。数据的读写方法将有下文有详细介绍。若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、
24、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。1.1.3 NRF905无线芯片3NRF905无线芯片是有挪威NORDIC公司出品的低于1GHz无线数传芯片,主要工作于433MHz、868MHz和915MHz的ISM频段。芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。非常适合于低功耗、低成本的系统设计。NRF905采用Nordic公司的VLSI ShockBurst技术。ShockBurst技术使NRF905能够提供高速的数据传输,而不需要昂贵的高速MCU来进行数据处理/
25、时钟覆盖。通过将与RF协议有关的高速信号处理放到芯片内,NRF905提供给应用的微控制器一个SPI接口,速率由微控制器自己设定的接口速度决定。NRF905通过ShockBurst工作模式在RF以最大速率进行连接时降低数字应用部分的速度来降低在应用中的平均电流消耗。在ShockBurst RX模式中,地址匹配AM和数据准备就绪DR信号通知MCU一个有效的地址和数据包已经各自接收完成。在ShockBurst TX模式中,NRF905自动产生前导码和CRC校验码,数据准备就绪DR信号通知MCU数据传输已经完成。总之,这意味着降低MCU的存储器需求也就是说降低MCU成本,又同时缩短软件开发时间。NRF
26、905的SPI 接口由 CSN、SCK、MOSI以及MISO组成。在配置模式下单片机通过SPI接口配置高频头的工作参数;在发射/接收模式下单片机SPI接口发送和接收数据。典型的NRF905模块数据发送流程为(1)当微控制器要发送数据时,将接收机的地址和发送数据通过SPI接口传输给NRF905模块;(2)微控制器设置TRX_CE和TX_EN管脚同时置为高电平,启动发送端的NRF905模块为发送模式;(3)发送端的NRF905模块发送过程处理:a)射频寄存器开启;b)数据打包(加字头和CRC 校验码);c)数据包发送;d)当数据包发送结束,将数据发送完成管脚(DR 管脚)置为高电平;(4)如果AU
27、TO_RETRAN被设置为高,NRF905模块将连续地发送数据包,直到TRX_CE被设置为低;(5)TRX_CE被设置为低时,NRF905模块数据包发送过程结束并回到待机模式。典型的 NRF905 模块数据接收流程4:(1)微控制器控制TRX_CE 为高电平、TX_EN为低电平,NRF905 模块进入接收模式;(2)650us 后,NRF905 模块监测空中的信息,等待接收数据;(3)当NRF905 模块检测到与接收频率相同的载波时,设置载波检测管脚(CD 管脚)为高电平;(4)当NRF905 模块接收到有效的地址时,设置地址匹配管脚(AM 管脚)为高电平;(5)当一个正确的数据包接收完毕后,
28、NRF905 模块自动去掉数据包的字头、地址和CRC 校验码,然后将数据接受完成管脚置为高电平;(6)微控制器将TRX_CE 设置为低电平;(7)微控制器通过SPI 接口以一定的速率提取数据包中的有效接收数据;(8)当所有的有效数据接收完毕,微控制器控制NRF905模块数据接收完成管脚(DR 管脚)和地址匹配管脚(AM管脚)为低电平;(9)NRF905 进入待机模式。1.1.4 LCD1602液晶显示器41602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔
29、每行之间也有间隔起到了字符间距和行间距的作用。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。1602LCD的特性:(1)+5V电压,对比度可调;(2)内含复位电路;(3)提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能;(4)有80字节显示数据存储器DDRAM;(5)内建有192个5X7点阵的字型的字符发生器CGROM;(6)8个可由用户自定义的5X7的字符发
30、生器CGRAM。其指令集有:(1)1602通过D0D7的8位数据端传输数据和指令。(2)显示模式设置:(初始化)0011 0000 0x38设置162显示,57点阵,8位数据接口。(3)显示开关及光标设置:(初始化)0000 1DCB D显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)、0000 01NS N=1(读或写一个字符后地址指针加1 &光标加1),N=0(读或写一个字符后地址指针减1 &光标减1),S=1且N=1(当写一个字符后,整屏显示左移)s=0 当写一个字符后,整屏显示不移动。(4)数据指针设置:数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67
31、H)。(5)其他设置:01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。1.2 软件基础整个系统设计过程中,主要用到了Keil仿真软件和STC-ISP烧录软件,使得系统设计快捷高效,以下对所用软件功能、用法、优势加以介绍!1.2.1 Keil C51仿真软件Keil C51是德国Keil Software公司(ARM公司之一)出品的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发
32、环境(uVision)将这些部分组合在一起。Keil C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的HEX文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,
33、也可以直接写入程序存贮器如EPROM中。使用独立的Keil仿真器时,注意事项: 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。 仿真器上的复位按钮只复位仿真芯片,不复位目标系统。 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。1.2.2 STC-ISP编译下载5STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2
34、052系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。操作说明:(1)打开STC-ISP,图1.1,在MCUType栏目下选中单片机,如STC89C52RC:图1.1 STC-ISP打开界面(2)根据9针数据线连接情况选中COM端口,波特率一般保持默认,如果遇到下载问题,可以适当下调一些,按图1.2选中各项:图1.2 STC-ISP界面参数设置(3)先确认硬件连接正确,按如图1.3点击“打开文件”并在对话框内找到您要下载的HEX文件:图1.3 STC-ISP打开文件(4)按图1.4选中两个条件项,这样可以使您在每次编译KEIL时HEX代码能自动加载到STC-ISP,点击“D
35、ownload/下载”:图1.4 STC-ISP条件项设置(5)手动按下电源开关便即可把可执行文件HEX写入到单片机内,图1.5是正在写入程序截图:图1.5 STC-ISP下载过程状态图(6)图示程序写入完毕,目标板开始运行程序结果,如图1.6:图1.6 STC-ISP下载完成状态图第二章 系统硬件设计该设计是以NRF905无线芯片和STC89C52单片机最小系统为核心,能够实现对两路温度进行实时检测。各检测单元(从机)能独立完成各自功能,独立完成温度的实时采集,当温度超过限定值时,系统会发出报警,启动电机进行降温处理。测量的结果不仅能在本地储存、显示,而且可以利用单片机的无线传输接口通过NR
36、F905将采集的数据传送到主控机,进行进一步的分析、存档、处理。2.1 系统总体设计STC89C52主控机ISP下载LCD(数码管)温度数据显示电源电路供电温度异常报警DS18B20温度数据采集NRF905无线模块电平复位 图2.1 系统总体设计框图本系统大致由七个功能模块构成:ISP下载模块、电源模块、LCD(数码管)数据显示模块、DS18B20温度采集模块、NRF905无线传输模块、异常报警模块和电平复位模块。其中DS18B20数据采集模块、LCD(数码管)数据显示模块、异常报警模块和数据无线传输模块构成了系统的主要框架,加以单片机的控制,得以实现温度数据采集与远程数据传输分析及报警功能。
37、两路从机通过DS18B20温度采集模块各自完成数据的采集,在本地的数码管进行显示,在温度超过限定值时启动报警电路。再通过NRF905无线传输模块发送至主机,在主机端的LCD1602进行汇总显示。上图即为系统框架图。2.2 系统各部分电路设计2.2.1 主控电路设计6图2.2 主控电路原理图本系统采用STC89C52为主控芯片,STC89C52单片机与12M晶振及电容构成了单片机最小系统。晶振为单片机提供了外部时钟。单片机P0口做LCD1602的数据驱动口。P2.6、P2.7以及P3.6用作LCD的控制接口。P3.0、P3.1用于NRF905通信数据收发口。P1.0用于NRF905控制。另外,P
38、3.2用于DS18B20温度传感器采集数据的接口。2.2.2电源电路设计图2.3 电源电路原理图STC89C52单片机采用+5V左右电平驱动。本系统设计了比较可靠的电源电路。用电桥将交流直流化,通过电容的滤波作用和+5V变换,我们可以得到比较理想的+5V电压。2.2.3 ISP接口电路设计图2.4 ISP下载电路原理图本设计采用ISP下载,通过MOSI/RST/MISO/SCK对单片机进行单片机程序下载。用LED灯以验证是否插好。2.2.4 LCD驱动电路介绍图2.5 LCD驱动电路原理图本系统采用1602用作温度数据显示。4、5、6脚为LCD1602的控制选择端口,可通过写入数据对逻辑控制进
39、行选择。714脚为数据写入端口,包括控制指令写入和显示数据写入。通过单片机P0口对1602进行驱动。2.2.5 DS18B20电路设计图2.6 DS1820电路原理图本系统DS18B20采用外部电源供电方式单点测温结构。在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/0线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。2.2.6 NRF905接口电路设计图2.7 NRF905接口电路原理图1脚为电源引脚接+3.33.6V 直流电源。2,3脚为工作模式选择和使能芯片发射或接收。6 ,7引脚为载波检测和地址匹配。9,10引脚为SPI输出和输入。13、14引脚接地。第
40、三章 系统软件设计3.1 系统主要模块软件设计流程7此次设计对STC89C52单片机采用C语言编程,C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远超过汇编语言。在此将程序流程图给出以说明整个设计过程中的编程逻辑。并在最后附录中将给出本系统设计的程序代码。系统总体流程图:开始单片机初始化DS18B20数据采集 从机端送数码管显示STC89C52进行数据分析由NRF905发送至主机主机送LCD1602显示是否超过温度上限?Y蜂鸣器报警,电机转动 N 结束 图3.1 系统总体流程图3.2 各主要模块软件设计流程DS18B20流程图8:DS18B20采样18B20初始化开
41、始STC89C52进行数据分析返回图3.2 DS18B20流程图首先发送初始化及复位信号,分别定义读一位,读一个字节,写一个字节等子函数。通过调用温度转换和获得温度子函数完成数据采集。DS18B20温度传感器可以精确到 0.0625 度。程序主体如下:void DQ_Reset(void) uint i; DQ=0; i=103; while(i0)i-; DQ=1; i=4; while(i0)i-; bit ReadBit_Temp(void) uint i; bit dat; DQ=0;i+; DQ=1;i+;i+; dat=DQ; i=8;while(i0)i-; return (da
42、t); uchar ReadByte_Temp(void) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=ReadBit_Temp(); dat=(j1); return(dat); void WriteByte_Temp(uchar dat) uint i; uchar j; bit testb; for(j=1;j1; if(testb) DQ=0; i+;i+; DQ=1; i=8;while(i0)i-; else DQ=0; i=8;while(i0)i-; DQ=1; i+;i+; void Change_Temp(void) DQ_Reset()
43、; DS18B20_Delay(1); WriteByte_Temp(0xcc); WriteByte_Temp(0x44); uint Get_Temp() float tt; uchar a,b;Change_Temp(); DQ_Reset(); DS18B20_Delay(1); WriteByte_Temp(0xcc); WriteByte_Temp(0xbe); a=ReadByte_Temp(); b=ReadByte_Temp(); temp=b; temp=8; temp=temp|a; if(b=0xff)temp=temp+1; tt=temp*0.0625; temp=tt*10+0.5; return temp; NRF905流程图9:开始 NRF905初始化开始发送接收数据是否发送接收失败?YN继续发送接收数据帧返回图3.3 NRF905流程图通过SPI对NRF905进行操作,首先初始化NRF905和寄存器,然后设置发送模式和接收状态,检查是否已存在同频率载波,接着从机打包待发送的数据发送至读取接收缓冲区,最后主机对缓冲区数据进行接收。主要程序如下:void SpiWrite(unsigned char send)unsigned char i;DATA_BUF=send;