资源描述
武汉长江工商学院毕业论文(设计)学院: 工学院 专业:通信工程 年级: 2010级 题目:基于单片机的无线温度采集监测报警器的设计 学生: 谢 慧 学号: 1003021133 指导教师:伍彩红 职称: 2014年5月8日武汉长江工商学院本科毕业论文(设计)原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。 作者签名: 年 月 日目 录摘 要1关键词1Abstract1Key wards1前言21 系统总体设计方案22 主要元器件介绍3 2.1 AT89S52单片机简介3 2.2 nRF24L01概述5 2.3 DS18B20温度传感器53 硬件系统设计5 3.1 硬件系统总体结构5 3.2 无线收发模块6 3.3 显示模块6 3.4 声光报警电路6 3.5 按键控制电路7 3.6 温度采集模块7 3.7 电源模块84 系统软件设计8 4.1 软件设计思路8 4.2 主程序流程图设计8 4.2.1 发送部分8 4.2.2 接收部分9 4.3 子程序设计10 4.3.1 温度监测模块软件10 4.3.2 无线发射模块软件设计10 4.3.3 无线接收模块软件设计11 4.3.4 显示模块软件设计115 硬件功能实现12 5.1 系统调试12 5.2 调试结果126 总结13参考文献13附录一 14附录二 16基于单片机的无线温度采集监测报警器的设计摘 要:本文介绍了由单片机、温度传感器、报警器和NRF24L01组成的专用无线温测监测报警系统。本系统以 STC89C52单片机为控制核心,利用温度传感器DS18B20完成温度的采集和数据的处理,nRF24L01实现环境温度的无线传输。本文设计一主机一从机,从机监测环境周围温度,主机显示当前监测到的环境温度值。用户可以通过按键来自定义报警上、下限值,一旦温度超过所设定的极限值,接收端单片机便启动报警系统。本系统精度高、结构简单、安全可靠、底功耗、实时性、成本底,在工业、医疗、军事和生活等许多场合都广泛应用。关键词: 1602液晶显示屏;温度传感器;单片机;报警器Remote monitoring and alarm design microcontroller-based wireless temperatureAbstract:This paper introduces the special wireless temperature and composed of single-chip microcomputer, temperature sensor,alarm and NRF24L01 monitoring alarm system.This system takes the STC89C52 single chip microcomputer as control core, using the temperature sensor to complete the processing temperature collection and data, nRF24L01 wireless transmission of en. This paper designs a host from machine, from machine monitoring environmentalironment , the host shows the current monitoring of the environment temperature. The user can through button from the definition of alarm,lower value limit,once the temperature exceeds a set value, receiver chip will activate alarm system. This system is of high precision, simple structure, safe,reliable, lowest power consumption, real-time,low cost, in the industrial, medical, military life and so on many occasions widely used.Key words:1602 LCD screen;Temperature sensor;Single chip microcomputer;alarm前言温度与人类的生活息息相关。早在2000多年前,人类就开始为监测温度进行了各种努力,并开始使用温度传感器监测温度。在人类社会中,无论工业、农业、医学及环保等部门都与温度有着密切的关系。随着电子技术的发展和生产的要求,需要进行温度采集的场合越来越多,准确方便地测量温度变得非常重要。在工业中,由于生产环境的好坏,工作人员不能在现场较长时间的观测设备是否有运行正常,就需要将采集到的数据传输到一个环境相对好的操控室中,这样就会产生数据传输的问题。由于空间大、需要传输的数据较多,使用传统的有线数据传输方式就需要很多很长的通讯线,浪费资源,占用空间大,可操作性差,容易出现错误换线的现象。而且,当数据采集点在运动状态时,环境不能铺设电缆,数据不得转让,这个时候需要使用温度采集无线传输。在农业上,传统的温度采集都是采用的人工方法,工作量大,可靠性差,无论大棚还是粮仓占地面积大,监测点分散在不同的地方,用传统的方法已经不能满足目前农业发展的需要。在日常生活中,随着人们生活水平的提升,居住条件渐渐变得智能化。现在已经有很多家庭都会在室内安装温度采集系统,其原理就是利用无线技术采集室内温度数据,并依据室内温度情况进行遥控通风等操作,自动调节室内温度,可以更好地改善人们的居住环境。无论在工业、农业还是日常生活中,凡是布线复杂或不能布线的地方都希望可以通过无线温度监测系统来解决。无线温度监测系统的稳定性强、安全可靠,传统的方法已经不能满足当前工农业发展的需要,这样的研究也变得更加有意义了。1 系统总体设计方案本设计采用价格便宜、操作简便,低功耗的AT89S52单片机作为主控芯片。使用DS18B20线路简单,编程容易,具有耐磨耐碰,体积小,使用方便。由美国DALLAS半导体公司生产的可编程DS18B20温度传感器作为温度检测元件,测温范围为-55125。它能代替模拟温度传感器和信号处理电路,直接与单片机沟通,完成温度的采集和处理。采用高速低功耗的NRF24L01无线射频模块,具有自动重发的功能、数据包识别及CRC校验功能,增强型ShockBurstTM模式可以同时控制应答及重发功能而无需增加MCU的工作量。在主控芯片的选择上,TI公司生产的MSP430F149系列单片机是一款高性能的低功耗的16位单片机,内置高速12位ADC,但价格比较昂贵,大大增加了设计成本。所以选择价格便宜、操作简便,低功耗的传统的AT89S52单片机。在温度传感器的选择上,AD590精度高、价格低、不需辅助电源、线性好,但是需要用到差分放大器放大和A/D转换,编程复杂。而DS18B20体积小,使用方便、经济实惠。综上考虑,DS18B20作为本设计的温度传感器。 在显示模块的选择上,LED7段数码显示管,成本低,容易显示控制,但不能够显示字符。字符液晶LCD1602能显示字符和数字等信息,价格便宜,容易控制。 本系统主要由六个模块组成:、测温电路、发送电路、接收电路、显示电路和报警电路。(1)主控制器:由AT89S52最小系统组成,其中包括单片机,晶振电路和复位电路。(2)发送电路和接收电路:由nRF24L01来完成无线数据的传输。(3)测温电路:利用温度传感器DS18B20完成温度的采集和数据的处理。(4)显示电路:显示当前所测得的温度。(5)报警电路:当温度超过所设上下限时,蜂鸣器报警。(6)电源模块:提供电源。本系统以DS18B20监测温度,NRF24L01无线模块传输温度信号。采用STC89C52单片机作为主控芯片。DS18B20将温度信号转化成电信号,送达至单片机来处理,单片机又将温度信号处理传达至NRF24L01无线模块,NRF24L01无线模块再将温度信息编码给发送出去。发射端端电路图见附录一图1。NRF24L01无线模块接收到采集端发送过来的温度信息后,将温度信息传给单片机处理,单片机处理温度信息,并通过数码管将温度值显示出来。同时程序可以设定上下限报警温度。接收端电路图参照附录一图2。本文设计一从机与一主机。从机为发射端,由温度传感器DS18B20,AT89S52单片机,nRF24L01无线射频模块和外设继电器组成。主机为接收端,由AT89S52单片机,nRF24L01无线射频模块,显示模块,报警电路组成。温度无线采集报警系统结构框图如图1-1所示。STC89C52主控制器发射DS18B20接收STC89C52主控制器显示电路报警电路 图1-1 温度无线采集报警系统结构框图2 主要元器件介绍2.1 AT89S52单片机简介STC89C52是一种低功耗、高性能具有8K可编Flash使用高密度存储技术存储器。在一个单芯片上,8位CPU在系统可编程,使得STC89C52提供高度灵活,为许多嵌入式控制应用。STC89C52具有以下标准功能:8K字节的Flash,256字节的RAM,32位I / O线,看门狗定时器,两个数据指针,三个十六位定时器/计数器,一个六向量二级中断结构,全双工串行口,片内振荡器和时钟电路。STC89C52支持两种软件可以选择的节电模式。在CPU工作停止,允许RAM、定时器/计数器、串口、中断继续工作的空闲模式。在RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止的掉电保护方式1。这个模块以单片机为中心,把程序代码烧进去,然后外接复位电路、振荡电路、键盘控制、LED显示电路、报警电路等子模块。单片机最小系统包括单片机、复位电路、时钟电路构成。要使单片机工作起来最基本的电路构成为单片机最小系统如图2-1示。 图2-1 单片机最小系统STC89C52 单片机工作电压范围:4V-5.5V,所以通常给单片机外界5V直流电源。连接方式为单片机中的40脚VCC接正极5V,而20脚VSS接电源地端。复位电路是完成单片机工作开始状态,确保单片机启动的过程。单片机在接通电源时会产生复位信号,完成单片机的启动这一过程确定单片机的起始工作状态。单片机系统在运行时,当受到外界环境的干扰可能会出现程序跑飞的时候,按下复位按钮后内部的程序会自动从头开始执行2。一般复位包含上电自动复位与外部按键的手动复位,单片机要是在时钟电路的工作以后,在RESET端持续的给出2个机器周期高电平就可以完成复位的操作。本系统设计采用的是外部手动按键复位电路,需要接上拉电阻提高输出高电平的值。 时钟电路就相当于单片机的一个心脏,掌握着单片机的整个工作节奏。时钟电路就是振荡电路,主要是向单片机来提供一个正弦波的信号作为基准,决定单片机执行的速度。XTAL1和XTAL2分别为反向放大器的输入和输出,反向放大器可以配置为片内振荡器。如果采用外部时钟源驱动器件,XTAL2应当不接。因为一个机器周期含有六个状态周期,而每个状态周期为两个振荡周期,所以一个机器周期共有十二个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,那么一个振荡周期是1/12us。 本系统采用STC系统列单片机,相比其它系列单片机具有很多优点。一般STC单片机资源比其它单片机要多,而且执行的速度快;STC系列单片机使用串口对单片机进行烧写,下载程序较为方便;STC89C52单片机内部集成了看门狗电路;且具有很强抗干扰能力3。本系统采用内部方式的时钟电路和加电自复位的复位电路,如下图2-2图和2-3所示: 图2-2 时钟电路图2-3 复位电路由于单片机P0口内部不含上拉电阻,为高阻态,不能正常地输出高/低电平,因而该组I/O口在使用时必须外接上拉电阻。2.2 nRF24L01概述nRF24L01是一款功耗低的新型单片射频收发器件,工作2.4GHz2.5GHz ISM频段。数据的传输率为l Mb/s或2Mb/s,供电电压1.9V3.6V,内置频率合成器,功率放大器,晶体振荡器,调制器的功能模块和增强型ShockBurst技术,其输出功率与通信信道可以由程序配置4。nRF24L01可以通过配置寄存器配置为发射、接收、空闲及掉电这四种工作模式,具体如表2-1所示。表2-1 nRF24L01工作模式模式PWR_UPPRIM_RXCEFIFO寄存器状态接收模式111-发射模式101数据在TXFIFO寄存器中发射模式1010停留在发送模式,直至数据发送完待机模式2101TX_FIFO为空待机模式11-0无数据传输掉电0-2.3 DS18B20温度传感器DS18B20是单线数字温度传感,体积小,适用电压更宽而且更加经济实惠,测温范围为-55C+125C。由于DS18B20温度检测与数字数据输出都集中在一个芯片上,所以大大提高了抗干扰能力5。DS18B20的工作周期可分为温度检测和数据处理两个部分。用于存放DS18B20ID编码的ROM 只读存储器,它共有64位ROM。用于内部计算和数据存取的RAM 数据暂存器。DS18B20测量的精度高,电路的连接相对简单,多个DS18B20可以并联至3根或2根端口线上,并且CPU只需要一根线就能够和多个DS18B20进行通信,其占用的微处理器端口比较少,可以节约较多的引线与逻辑电路。像这样的传感器仅仅只需一条数据线就可以进行数据的传输。3 硬件系统设计3.1 硬件系统总体结构随着生活水平的不断提高和科学技术的逐渐进步,人们对温度监测数据的精度要求也越来越严格。然而传统的温度测量装置在环境、成本等因素下很难满足现在的需求。本设计选用DS18B20作为温度采集元件,配合低功耗单片机的使用就能够很巧妙地克服传统上的不足。而且本文采用nRF24L01无线传输模块,打破了传统操作中距离受限布线复杂等问题,使系统操作更容易实现。本设计由STC89C52作为主控CPU, DS18B20温度采集模块、nRF24L0l无线收发模块和显示模块组成整个系统,如图3-1所示。图3-1系统总体架构图3.2 无线收发模块本模块由nRF24L01及其外围电路组成。nRF24L01作为单片射频收发芯片。温度无线传输采用NRF24L01无线模块,nRF24L01单端匹配网络:晶振,偏置电阻,去耦电容。如图3-2与图3-3。 图3-2 NRF24L01无线发射接线图 图3-3 NRF24L01无线接收模块接线图3.3 显示模块显示采用LCD1602显示,经过无线传输后,温度数据信息将在1602液晶显示芯片上进行显示,1602液晶显示芯片采用标准的16脚接口7,显示电路如图3-4。图3-4 显示电路3.4 声光报警电路电路通过三极管基极串连一个电阻与单片机P2.6端口连接从而达到控制蜂鸣器是否报警。当外界温度超过预设温度上下限时,为更加有效的引起注意,及时关注温度的变化,本系统设计了声报警电路。电路如图3-5所示。图3-5声音报警电路图3.5 按键控制电路本电路设计了三个按键,一个设置键、一个加键、一个减键。设置键控制温度上下限的选择,加减键调节温度的上下限值。如图3-6所示。图3-6 按键连接电路图3.6 温度采集模块温度传感器DS18B20可直接与单片机相连完成数据的采集与处理,本设计中与发送端单片机的P26连接8,接口电路如图3-7所示。图3-7 温度传感器接口电路3.7 电源模块发射和接收都采用3节1.5 V干电池共4.5V做电源,经过实验验证在系统工作时,单片机、传感器的工作电压稳定都能够满足系统的要求,而且电池更换比较方便。电源接口电路如图3-8其中P1为电池接口,SW2为电源开关。D3为电源指示灯。图3-8 电源接口电路4 系统软件设计4.1 软件设计思路应用系统中的应用软件是根据系统功能要求设计的,应稳定正确的实现系统的各种功能。在本系统中,软件设计要求做到以下几点:(1)软件结构要清晰,简洁,流程合理。(2)各个功能的程序实现模块化。这样,即便于调试,链接,又方便移植、修改。(3)在程序存储区,数据存储区需要合理的规划,既能够节约内存的容量,又能操作方便9。(4)运行状态实现标志化管理。各个功能程序运行状态,运行结果以及运行要求都要设置状态标志以便查询,程序转移,控制都可通过状态标志条件来控制。4.2 主程序流程图设计首先对LCD1602初始化,再进行按键扫描,设定温度的上下限值,然后对无线接收模块进行初始化,接着传输温度数据,并判断是否有超出人工设定的范围,要是超过了就启动报警程序,要是不超过则继续判断,如此循环。4.2.1 发送部分发送部分的一个循环的总体思路是这样的,先初始化nRF24L01,从DS18B20读出温度(DS18B20采用默认的12位精度),将得到的温度值的反码转化成十进制,取温度数组的高两位(即整数部分)写入发送数据数组,然后初始化nRF24L01,将温度发送,其流程图如图4-1所示。开始初始化从DS18B20读温度转换温度为十进制延时将温度写入发射数组发射数据图4-1 发射部分总体流程图4.2.2 接收部分接收部分的总体思路是这样的,首先还是初始化nRF24L01,然后进入大循环判断状态寄存器是否有接收中断10。如果有就从FIFO_buffer读入二进制数据,然后将数据转换成十进制在数码管上显示出来,其流程图如图4-2所示。开始初始化判断接收中断从RX_FIF0 buffer读数据转换为十进制数码管显示图4-2 接收部分总体流程图4.3 子程序设计单片机对NRF24L01无线模块以及DS18B20进行初始化之后,从DS18B20读取温度数据。然后经过温度处理后通过调用无线发送程序将温度数据发送给接收端。4.3.1 温度监测模块软件温度监测模块软件设计DS18B20的测温的原理严格的遵守单总线协议,用来确保通信数据的准确性,单片机可以通过时序写入与读出DS18B20中的一些数据,其中包含初始化、读l、读0,写1、写0等操作11。传感器在复位后,接收应答的信号,跳过读ROM中序列号后,启动温度转换,在等待温度转换完毕后,保存数据。如此反复,完成所有操作,其流程图如图4-3所示。图4-3 温度检测软件流程图4.3.2 无线发射模块软件设计 首先将进行初始化的操作,初始化包含设置单片机IO与SPI相关寄存器两部分内容,其可以与nRF24L01进行通信。在通过SPI总线配置射频芯片让其进入正确的工作模式。在发射数据的时后,要首先将nRF24L01配置成发射模式。再把发送端待发射数据的目标地址TXADDR与数据TXPLD写入nRF24L01缓冲区,延时后发射数据,其流程图如图4-4所示。开始初始化置底CE配置CONFIG为发射模式写入发送地址写入接收地址写入发送数局数据通道0允许设置工作频率设置数据传输率与功率CE置高延 时CE置底清状态寄存器图4-4 无线发射软件流程图4.3.3 无线接收模块软件设计接收数据的时后,先将nRF24L01配置成接收模式。再将延迟进入接收状态来等待数据到来。当接收方监测到有效的地址与CRC时,就把数据包储存在接收堆栈中,同时将状态寄存器中的中断标志位RXDR置高,在产生中断让IRQ引脚变成低电平,以便告知MCU去取数据,其流程图如图4-5所示。开始初始化CE置底配置CONFIG为接收模式写入接收地址打开接收通道设置工作频率设置接收数据宽度写入发射功率与数据传输率CE置高判断接收中断读接收数据是否图4-5 无线接收软件流程图4.3.4 显示模块软件设计LCD1602显示程序,首先进行1602的初始化,然后就是执行写命令和写数据这两个子函数,实现温度数据的实时显示和按键操作的动态显示。 5 硬件功能实现5.1 系统调试在完成硬件电路的焊接后。首先先将接收端STC89C52单片机烧入1602显示程序,检验1602液晶显示有没有问题。再将其中一片STC89C52与四位数码管及温度传感器DS18B20相连,写入测量温度的程序。测试DS18B20部分硬件及软件部分是否好使。然后将nRF24L01的收发部分分别与两片STC89C52相连,写入发射一个常数的程序,检测收发模块及程序是否好使。最后将显示、收发、温度检测程序整合,检测系统是否能将发送端的温度值测量出来发送到接收端在数码管上显示出来。5.2 调试结果本系统采用的是单点通信传输温度数据。温度采集端采集温度并发送至接收端,由LCD1602显示当前温度。当采集端传输数据时,信号指示灯闪烁。并且接收端接收数据时信号指示灯亦闪烁。如果将温度上下限调为10至30时,LCD1602显示当前监测到的温度,如图5-1所示。图5-1接收端接收到数据并显示在LCD1602上当人工设置温度范围为10至25时,当前温度超过所设上下值,蜂鸣器报警同时指示灯闪烁,如图5-2所示。图5-2 温度超过上下值报警器报警6 总结本文中无线温度采集系统的设计,在智能控的制方面,应用了单片机STC89C52作为系统控制的核心,最大限度的将具备的资源采用到设计中,既体现了单片机最小系统的应用的灵活性,又实现功能多样智能控制。因为采用单片机技术作为主导的智能化得管理,可实现对温度的动态得监控,运行既稳定可靠,又灵敏度高,具有非常重要的市场应用价值。在实际使用中,适合环境复杂不适合布线的温度采集。通过本次研究,加深了解传感器DS18B20的结构特征及其工作原理。基于DS18B20数字温度传感器构成的实时监控系统确实具有精度高、抗干扰能力强、电路简单等诸多优点。同时,对于单片机的结构和原理有更深层的掌握。单片机的语言编程理论知识并不深奥,但在实际编程中没那么简单,更多需要融入个人的编程思路和算法。在本次研究中,程序通过不断的检查、修改,对实际动手编写有深切的感悟。在对温度监测系统总体认识的基础上,利用所学的基本理论和查阅的相关资料,实现对其的硬件电路和软件程序的设计,做到与实际相结合。对于将来在工作与学习中应用单片机有较大的帮助。在大学四年的学习期间,老师们给予了很多耐心的指导和帮助,让我掌握了基本的理论知识。在本次设计中,给我了不少宝贵的建议,引导我如何去做。在同学的帮助下,老师不厌其烦的修改中,使我顺利完全了本次毕业设计。参考文献1 孙育才.MCS-51系列单片微型计算机及其应用.南京:东南大学出版社20042 何利民.单片机原理及接口技术.北京:北京航空航天大学出版社20053 彭为,黄科.单片机典型系统设计.北京:电子工业出版社20064 时志云,盖建平,王代华,张志杰.新型高速无线射频器件nRF24L01及其应用. 国外电子元器件 20075 孟宪玲.浅析数字温度传感器DS18B20的应用.中国科技信息.2007年03期6 北京教育科学研究院.无线电技术基础.北京: 人民邮电出版社20057 许昌铃.LED显示屏系统原理及工程技术.北京: 电子科技大学出版社20008 清源科技.Ptotel 99 SE电路原理图与PCB设计及仿真.北京:机械工业出版社20079 程德福,王君,凌振宝,王言章.传感器原理及应用.北京:机械工业出版社 200710 郭天祥.新概念51单片机C语言教程.北京:电子工业出版社200911 张宏建.自动检测技术与装置(第二版).北京: 化学工业出版社 2007附录一 原理图图1 发射端电路图图2 接收端电路图附录二 部分系统程序源代码#include /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#include nrf24l01.Hsbit dq = P26;/18b20 IO口的定义uint temperature ; /温度变量sbit led = P27;/*1ms延时函数*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j120;j+);/*小延时函数*/void delay_uint(uint q)while(q-);/*18b20初始化函数*/void init_18b20()bit q;dq = 1;/把总线拿高delay_uint(1); /15usdq = 0;/给复位脉冲delay_uint(80);/750usdq = 1;/把总线拿高 等待delay_uint(10);/110usq = dq;/读取18b20初始化信号delay_uint(20);/200usdq = 1;/把总线拿高 释放总线/*写18b20内的数据*/void write_18b20(uchar dat)uchar i;for(i=0;i= 1;/*读取18b20内的数据*/uchar read_18b20()uchar i,value;for(i=0;i= 1; /读数据是低位开始dq = 1; /释放总线if(dq = 1) /开始读写数据 value |= 0x80;delay_uint(5); /60us读一个时间隙最少要保持60us的时间return value; /返回数据/*读取温度的值 读出来的是小数*/uint read_temp()uint value;uchar low; /在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序init_18b20(); /初始化18b20write_18b20(0xcc); /跳过64位ROMwrite_18b20(0x44); /启动一次温度转换命令delay_uint(50); /500usinit_18b20(); /初始化18b20write_18b20(0xcc); /跳过64位ROMwrite_18b20(0xbe); /发出读取暂存器命令EA = 0;low = read_18b20(); /读温度低字节value = read_18b20(); /读温度高字节EA = 1;value = 8; /把温度的高位左移8位value |= low; /把读出的温度低位放到value的低八位中value *= 0.625; /转换到温度值 小数return value; /返回读出的温度 带小数/*主程序*/ void main()CE=0; /2.4G无线模块IO口初始化SCK=0;CSN=1;TX_Mode();temperature = read_temp(); /读温度delay_1ms(650);while(1)temperature = read_temp(); /读温度Tx_Buf0 = temperature % 256; Tx_Buf1 = temperature / 256; Transmit(Tx_Buf);led = 0;delay_1ms(100);sta=SPI_Read(READ_REG + STATUS);if(TX_DS) /当前STATUS状态 发送中断应使bit5 = 1 SPI_RW_Reg(WRITE_REG + STATUS,sta); if(MAX_RT) /如果是发送超时 SPI_RW_Reg(WRITE_REG + STATUS,sta);led = 1;delay_1ms(1000);
展开阅读全文