基于某单片机地无线远程温度监控系统设计

上传人:仙*** 文档编号:83336727 上传时间:2022-05-01 格式:DOC 页数:39 大小:287.50KB
收藏 版权申诉 举报 下载
基于某单片机地无线远程温度监控系统设计_第1页
第1页 / 共39页
基于某单片机地无线远程温度监控系统设计_第2页
第2页 / 共39页
基于某单片机地无线远程温度监控系统设计_第3页
第3页 / 共39页
资源描述:

《基于某单片机地无线远程温度监控系统设计》由会员分享,可在线阅读,更多相关《基于某单片机地无线远程温度监控系统设计(39页珍藏版)》请在装配图网上搜索。

1、word编号:3本科毕业设计基于单片机的无线远程温度监控系统设计系 院:信息工程学院姓 名:学 号:0835140143专 业:通信工程年 级:2008级指导教师:职 称:副教授完成日期:2012年5月34 / 39摘 要本文论述的远程温度控制是将无线发射与接收和自动控制相结合的一种控制。基于这种技术,本系统以AT89S51系列单片机为控制单元,采用Dallas单线数字温度传感器DS18B20和无线收发模块NRF24L01对试验现场温度数据进展远程无线测量与控制。整个系统包括主、从两个子系统,其中主系统完成对试验现场设定温度值、设定值显示、实际值显示、失控报警和接收数据功能;子系统完成温度采集

2、、温度控制和发送数据功能。该系统结构简单实用、功能齐全,通用性强,可被应用于许多工业生产领域,它可使操作人员与恶劣的工作环境别离开来,实现生产自动化,提高企业的生产效率。关键词:AT89S51;温度传感器;NRF24L01;显示;报警AbstractThe long-distance temperature controlling this paper presents is a technology of linking wireless receiving and sending to automation. Based on the technology, the system is b

3、ased on the control of AT89S51 SCM, using Dallas single line digital thermometer DS18B20, wireless receiving and sending module NRF24L01 to test and control the temperature data of a experiencing place. The whole system consists of the main system and subsystem. The main system pletes the functions

4、of initializing and displaying the temperature value, displaying actual temperature, alarming when it is out of control, and receiving. The subsystem pletes the functions of receiving, and temperature collecting, controlling, and sending. The design concludes that this system has many advantages, su

5、ch as its uniqueness, simple, convenience, and such mon using. It can be widely used in lots of industrial producing and controlling fields, applying this system can depart operators from execrable environment, realize producing automation, and improve corporations producing efficiency.Key words:AT8

6、9S51; Temperature senior; NRF24L01; Display; Warning目 录1 绪论11.1 选题的目的和意义11.2 国外研究现状11.3 本设计主要研究容22 设计要求与方案论证32.1 设计要求32.2 系统根本方案选择和论证32.2.1 单片机芯片选择方案与论证32.2.2 温度采集模块选择方案与论证32.2.3 无线收发模块的选择方案与论证42.2.4 显示模块的选择方案与论证42.2.5 报警模块的选择方案与论证42.3 电路设计最终方案确实定53 系统的硬件设计与实现63.1 系统硬件概述63.2 主要单元电路的设计63.2.1 单片机主控制模块

7、的设计63.2.2 温度采集电路模块的设计73.2.3 无线收发电路模块的设计83.2.4 显示电路模块的设计103.2.5 报警电路模块的设计113.2.6 电路原理与说明124 系统程序的设计134.1 主程序的设计134.2 发射系统程序的设计164.3 传输程序的设计164.4 温度采集程序的设计174.5 显示程序的设计185 仿真与调试206 结论23参考文献24致谢25附录261 绪论 选题的目的和意义温度是工业生产中常见的被控参数之一。从食品生产到化工生产,从燃料生产到钢铁生产等等,无不涉与到对温度的控制,可见,温度控制在工业生产中占据着非常重要的地位,而且随着工业生产的现代化

8、,对温度控制的速度和精度也会越来越高。近年来,温度控制领域发生了很大的变化,工业生产中对温度的控制不再局限于近距离或者直接的控制,而是需要进展远距离的控制,这就产生了远程温度控制。远程控制的通信方式有多种,如通过有线网络、无线电等等。每一种方式都有其优点和缺点。利用无线电通信,方便、灵活,而且经济。它不需要像有线网络控制消耗巨大的通信资源,也不受网络速度的影响。在温度控制的方法上,传统的控制方法(包括经典控制和现代控制)在处理具有非线形或不准确特性的被控对象时十分困难。而温度系统为大滞后系统,较大的纯滞后可引起系统不稳定。在温度采集方法上,通常是利用热电偶把热化为电信号,再通过A/D转换得到温

9、度值。这种方法速度慢,而且精度不是很高。综合上面的考虑,本次毕业设计设计了基于无线电通信的远程温度控制系统。现代工业设计、工程建设与日常生活中常常需要用到温度控制,早期温度控制主要应用于工厂中,例如钢铁的水溶温度,不同等级的钢铁要通过不同温度的铁水来实现,这样就可能有效的利用温度控制来掌握所需要的产品了。在现代社会中,温度控制不仅应用在工厂生产方面,其作用也表现到了各个方面,随着人们生活质量的提高,酒店厂房与家庭生活中都会见到温度控制的影子,温度控制将更好的服务于社会。近年来,单片机开展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃开展,单片机已经渗透到工业、农业、国防,科研以与日常生活

10、等各个领域。传统的温度采集的方法不仅费时,而且精度差满足不了各行业对于温度数据提高精度,设备高可靠性的需求。单片机的出现使得温度数据的采集和处理得到了很好的解决。选择适当的单片机和温度传感器以与前端处理电路,可以获得较高的测量精度,不但方便快捷,本钱低廉,省事省力,而且大幅度提高了测量精度。 国外研究现状在人类的生活环境中,温度扮演着极其重要的角色。无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。自18世纪工业革命以来,工业开展对是否能掌握温度有着绝对的联系。在冶金、钢铁、石化、水泥、玻璃、医药等行业,可以说几乎所有的工业部门都不得不考虑着温度的因素。目前国外对于温度监控的研究和应

11、用已非常普遍,但对于无线远程温度监控这方面的研究和应用还有相当大的提升空间。无线温度监控不仅可以应用在工厂生产方面,其作用也表现到了各个方面,随着人们生活质量的提高,酒店厂房与家庭生活中都将会见到它的影子,无线远程温度监控将会有更广阔的开展空间。本设计主要研究容本设计是基于单片机的无线温度监控系统,经过大量查阅资料和研究,最终确定采用AT89S51为主控芯片,DS18B20作为温度采集芯片,NRF24L01作为无线接收和发射模块,采用LCD1602液晶屏进展显示。该系统由发射系统和接收系统组成,发射系统进展温度采集以与数据发射,接收系统作为主系统,对数据接收处理并显示出来。该系统具有温度过限报

12、警功能,设有4个独立按键,分别进展温度上下限定值的选择、设定,去除报警声和报警灯。该系统具有操作方便,远距离操控,功能多样,电路简洁,本钱低廉等优点,符合电子技术的开展趋势,有很广阔的市场前景。经过设计和一系列的调试,测试结果根本达到了该设计预期制定的各项要求,顺利地完成了本次毕业设计的目标。2 设计要求与方案论证 设计要求1温度监测围:室温125;2接收系统显示温度实际值,收发距离:60米以;3可以人工设定报警温度上、下限定值;4超过温度限定值时蜂鸣器报警和发光报警。 系统根本方案选择和论证2.2.1 单片机芯片选择方案与论证方案一:采用FPGA现场可编程们阵列作为系统的控制器。FPGA可实

13、现各种复杂的逻辑功能,规模大,密度高,它将所有的器件集成在一块芯片上,减小了体积,提高了稳定性,并可用EDA软件仿真、在线调试,易于进展功能扩展,响应速度快。但本钱高,同时由于引脚较多,电路板的布线比拟复杂,加重了电路设计和实现焊接的工作。方案二:采用8位单片机作为主要的控制芯片。8位单片机具有价格比拟廉价,并且技术比拟成熟,低功耗,易于购置等优点,但是8位机程序执行速度比拟慢,部资源比16位单片机少很多。考虑到本系统对程序运行速度的要求不高以与本钱问题,最后选择用8位单片机,由于AT89S51单片机比其他8位单片机价格廉价,并且其部具有丰富的资源,故采用AT89S51单片机作为本系统主控制芯

14、片。2.2.2 温度采集模块选择方案与论证方案一:使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进展A/D转换。此设计方案需用A/D转换电路,增加了线路的复杂程度,增加硬件本钱而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。因此此方案不可行。方案二:采用DS18B20。DS18B20的数字温度输出通过1-Wire总线,又称为“一线总线,这种独特的方式可以使多个DS18B20方便地组建成传感器网络,为整个测量系统的建立和组合提供了更大的可能性。它在测温精度、转换时间、测数距离、分辨率等方面比

15、其他温度传感器有了很大的进步,给用户带来了更方便的使用和更令人满意的效果。DS18B20直接输出数字温度值,不需要校正,因此选择此方案。2.2.3 无线收发模块的选择方案与论证方案一:采用TX315A-T01和TX315A-R01的无线收发模块。应用目前最先进的声外表波器件和数据专用ASK超外差式单片接收电路开发生产了TX315系列模块电路,其中含有RF、TF、DATA等高频、中频、数字处理电路。TX315A可应用于无线遥控、数据传送、自动抄表系统、无线键盘操作系统、警戒系统。TX315A由TX315A-T01发射组件和TX315A-R01接收组件两局部组成,因其频率绝对一致,故在使用时可随意

16、增加发射和接收组件,以组成所需的功能系统。此系统用此模块很好,但是这个模块的价格太昂贵,所以放弃此方案。方案二:采用一对NRF24L01作为无线收发模块。NRF24L01是一款新型单片射频收发器件,工作于2.4 GHz2.5 GHz ISM频段。置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型ShockBurst技术,其中输出功率和通信频道可通过程序进展配置。NRF24L01功耗低,在以-6dBm的功率发射时,工作电流也只有9mA;接收时,工作电流只有,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便,而且价格相对其他无线模块较低,易于购置,因此选择此方案。2.2

17、.4 显示模块的选择方案与论证方案一:采用数码管显示,本钱低、亮度高。但本系统所要实现较多的容,硬件电路设计会比拟复杂,而且功耗大,所以不适合本设计。方案二:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比拟适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。方案三:采用LCD1602液晶屏显示,显示容较多,方便组合,可视面积大,画面效果好,抗干扰能力强,调用方便简单,而且可以节省软件中断资源。系统中需要显示温度和上限温度等信息,要求显示容丰富。比拟上述三种方案,方案三电路简单、显示信息量大、能很好的满足题目要求,因此采用方案三 。2.2.

18、5 报警模块的选择方案与论证方案一:采用555定时器构成蜂鸣器,常用于定时报警,非常实用,其时间可控,但本设计报警时间是随机的,取决于试验现场的温度,因此不可行。方案二:采用9102三极管驱动蜂鸣器,当达到温度上下限值,就会给三极管一个高电平驱动蜂鸣器,实现声音报警,并且可以接个发光二级管,同时点亮二极管,实现发光报警。此方案实行起来方便,电路也简单,因此选用此方案。2.3 电路设计最终方案确实定由以上讨论的各种方案最终得出本次设计的方案为:采用单片机芯片AT89S51作为主控制芯片,DS18B20数字温度传感,NRF24L01作为无线收发模块,LCD1602作为显示模块,采用蜂鸣器和发光二极

19、管进展声光报警。3 系统的硬件设计与实现系统硬件电路主要分为:单片机AT89S51主、从系统、接收电路、显示电路、键盘电路、温度采集电路、发射电路。设计总框图如图3-1所示,系统设计总原理图见附录1。温度采集AT89S51单片机副 无线发射液晶显示AT89S51单片机主无线接收声光报警独立键盘图3-1 总设计框图 系统硬件概述硬件电路是由单片机芯片AT89S51为控制核心,具有在线编程,丰富的中断源、灵活性强、低功耗等功能,能在3V低压工作;温度的采集由DS18B20来构成,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字

20、信号给单片机处理,且在同一总线上可以挂接多个传感器芯片;无线收发模块用NRF24L01,工作于2.4GHz2.5GHz ISM频段,NRF24L01功耗低,在以-6dBm的功率发射时,工作电流也只有9mA;接收时,工作电流只有,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便;显示部份由1602 LCD来完成;报警电路采用三极管驱动蜂鸣器与发光二极管实现声光报警。 主要单元电路的设计3.2.1 单片机主控制模块的设计AT89S51单片机为40引脚双列直插芯片, 如图3-2所示。有四个I/O口P0,P1,P2,P3,每一条I/O线都能独立地作输出或输入。AT89S51具有以下标准功能:4

21、k字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片晶振与时钟电路。另外,AT89S51可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图3-2 AT89S51管脚图单片机主控制电路即包括了单片机的时钟电路和复位电路。本设计采用的是部时钟电路。单片机部有一个用于构成振荡器的高增益反相放大器,18引脚XTAL1是放大器的输

22、入端,19引脚XTAL2是放大器的输出端,这两个引脚之间跨接的晶振和微调电容作为反应元件一起构成一个稳定的自激振荡器。9引脚是单片机的复位输入端,接上电容,电阻与电阻和按钮组成手动复位电路。如图3-3所示。图3-3 单片机复位和时钟电路3.2.2 温度采集电路模块的设计温度采集电路如图3-4所示。采用数字式温度传感器DS18B20,它是DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号提供9位二进制数字给单片机处理,且在同一总线上可以挂接多个传感器芯片。它具有3引脚TO92小

23、体积封装形式,温度测量围为55125,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。它具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进展数据传输,使用 P10与DS18B20的I/O口连接,VCC接电源,GND接地。图3-4 温度传感器应用电路3.2.3 无线收发电路模块的设计NRF24L01是一款新型单片射频收发器件,工作于2.4GHz2.5GHz ISM频段。置频率合成器、功率放大

24、器、晶体振荡器、调制器等功能模块,并融合了增强ShockBurs技术,其中输出功率和通信频道可通过程序进展配置。NRF24L01功耗低,在以-6dBm的功率发射时,工作电流也只有9mA;接收时,工作电流只有12.3mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。NRF24L01主要特性有GFSK调制:硬件集成OSI链路层;具有自动应答和自动再发射功能;片自动生成报头和CRC校验码;数据传输率为lMb/s或2Mb/s;SPI速率为0 Mb/s10 Mb/s;125个频道:与其他NRF24系列射频器件相兼容;QFN20引脚4mm4mm封装;供电电压为1.9V3.6V。NRF14L0

25、1的封装与引脚排列如图3-5所示。图3-5 NRF24L01管脚图发射数据时,首先将NRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入NRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10s,延迟130s后发射数据;假如自动应答开启,那么NRF24L01在发射数据后立即进入接收模式,接收应答信号自动应答接收地址应该与接收节点地址TX_ADDR一致。如果收到应答,如此认为此次通信成功,TX_DS置高,同时TX_PLD从TX FIFO中去除;假如未收到应答,如此

26、自动重新发射该数据(自动重发已开启),假如重发次数(ARC)达到上限,MAX_RT置高,TX FIFO中数据保存以便在次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,假如CE为低如此NRF24L01进入空闲模式1;假如发送堆栈中有数据且CE为高,如此进入下一次发射;假如发送堆栈中无数据且CE为高,如此进入空闲模式2。 接收数据时,首先将NRF24L01配置为接收模式,接着延迟130s进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。

27、假如此时自动应答开启,接收方如此同时进入发射状态回传应答信号。最后接收成功时,假如CE变低,如此NRF24L01进入空闲模式1。 SPI口为同步串行通信接口,最大传输速率为10Mb/s,传输时先传送低位字节,再传送高位字节。但针对单个字节而言,要先送高位再送低位。与SPI相关的指令共有8个,使用时这些控制指令由NRF24L01的MOSI输入。相应的状态和数据信息是从MISO输出给MCU。 NFR24L01模块采用3.3V电压供电,其应用电路与电源转换电路如图3-6所示。图3-6 NRF24L01应用电路3.2.4 显示电路模块的设计如图3-7所示,采用1602 LCD显示。1602字符型LCD

28、通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,具体各个脚的功能如表3-1。表3-1 LCD引脚功能表引脚符号功能说明1VSS一般接地2VDD接电源+5V3V0LCD比照度调整端,接正电源时比照度最弱,接地时比照度最高4RSRS为存放器选择,高电平时选数据存放器、低电平时选指令存放器。5R/WR/W为读写信号线,高电平时进展读操作,低电平时进展写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位最低位8DB1底4位三态、 双向数据总线 1位9DB2

29、底4位三态、 双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位最高位也是busy flag由于1602 LCD具有功耗低、寿命长、体积小、显示容丰富、接口控制方便等优点。因此在各类电子产品中被广泛的推广和使用。本系统采用它来作为显示器件,不仅简化了硬件电路,而且极大的提高了系统的可靠性。如图3-8所示。1602 LCD与单片机AT89S52的连接电路很简单。图3-7 LCD1602管脚图图3-8 LCD1602应用电

30、路3.2.5 报警电路模块的设计蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器:压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器与共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后1.515V直流工作电压,多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。电磁式蜂鸣器:电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片与外壳等组成。接通电源

31、后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互缠绕。本设计应用三极管驱动蜂鸣器同时点亮发光二极管实现报警,其应用电路如图3-9所示。图3-9 报警电路3.2.6 电路原理与说明将以上各个电路模块连接起来,即构成无线远程监控系统,总系统工作原理如下:温度传感器对实验现场的温度进展采集,副控芯片AT89S51对采集温度数据进展处理,将有用数据送给发射模块NRF24L01,主系统的承受模块NRF24L01承受数据送给主控芯片AT89S51,AT89S51对数据进展分析处理,对现场实际温度进展显示;另外,可以人工通过独立键盘对所测温度进展监控,先设定好规定

32、的温度围,当采集的温度超过此围时,蜂鸣器响,同时点亮发光二极管,通过按键选择,可以独立实现声音报警、发光报警与声光同时报警;当检测温度不在设定围时,系统正常运行,时刻显示着现场的温度值。4 系统程序的设计 主程序的设计主程序包括主系统程序设计,子系统程序设计和报警程序设计。主系统程序负责键盘设定值的检测,上下门限设定值的显示,通过无线模块接收子系统发送来的数据并显示在LCD上,并且判断接收的温度是否超出门限值,如果超出就进展报警操作。主系统流程图如图4-1所示。键盘设定值检测设定值显示实际值显示接收副系统数据返回主程序温度超出X围否?报警YN图4-1 主系统程序流程图子系统负责对温度的数据采集

33、,经过处理后通过无线模块发送出去。子系统程序流程图如图4-2所示。温度采集数据处理实际值发送主程序返回图4-2 子系统程序流程图报警程序通过对接收到的实际值与设定值进展比拟,当温度小于报警下限值时,进展报警下限处理,当温度大于报警上限值时,进展报警上限处理。报警程序流程图如图4-3所示。设定值与实际值比拟温度小于报警下限?温度大于报警上限?报警上限处理NYYN报警下限处理报警子程序返回图4-3 温度报警子程序流程图主程序首先对LCD进展初始化,然后进展按键扫描,设定温度上下限值,接着初始化无线接收模块,然后温度数据,并判断是否超出设定围,超过即启动报警程序,不超过如此继续判断,如此循环。mai

34、n()delay_ms(500); / 上电延时LCD1602_init(); / LCD初始化wireless_init();while (1)Count+; / 超时计数if (Count = 140000)w_string(0x00, No Signal! ); /显示无信号k_val = scan_key(); /扫描按键 key_action(k_val); /按键操作容if (IRQ = 0) /是否接收到数据 read_chip_state();/读芯片状态tra0 = 0x27;tra1 = 0x70;write_more_byte(tra,2);read_more_bytes

35、(Rev_dat,16); / 读数据if (Rev_dat0+Rev_dat1) = 0xFF) /和校验Count = 0; /清零计数器w_string(0x00, Real Wen du: C); /显示当前温度if (Rev_dat0 0) /负温度显示Rev_dat0 = -Rev_dat0;w_string(0x0C, -);w_data(0x0D, Rev_dat0);else / 正温度显示w_string(0x0C, +);w_data(0x0D, Rev_dat0); 发射系统程序的设计发射程序首先点亮信号灯并且初始化无线发射模块,接着读取温度数据并校验数据,然后发射温度

36、数据并重置信号灯,数据正常发送,如此信号灯稳定闪烁。main()int8 dataout16;LED = 0; / 上电LED亮Wireless_init(); /初始化无线模块while (1) start_temp_sensor(); / 初始化18B20delay_ms(1000);/ 延时1秒dataout0 = read_temp(); /读温度dataout1 = 0xFF - dataout0; /反转数据 作为校验LED = LED; / 重置LED指示灯Send_16Bytes_Data(dataout); / 发送数据 传输程序的设计传输程序包括发送数据和接收数据,即无线收

37、发模块之间进展数据通信,设定好对应的通信地址和通信协议,即可实现数据的正确传送。/ 发送数据/ 输入值:addr:输入数据地址void Send_16Bytes_Data(unsigned char *addr) unsigned char *p = addr,tra12,i; CLR_S(); Write_one_byte(0xA0); for (i=0;i16;i+) Write_one_byte(*p+); SET_S(); SET_CE(); for (i=0;i60;i+); CLR_CE(); while (READ_IRQ() = 1); tra10 = 0x27; tra11

38、= 0x70; Write_more_byte(tra1,2); tra10 = 0xE1; Write_more_byte(tra1,1);/* 接收数据*/ 写一个字节到芯片/ 输入参数:dat:数据void write_one_byte(unsigned char dat) unsigned char i,dd=dat; for (i=0;i8;i+) if (dd & 0x80) / 发送数据 SET_MOSI(); else CLR_MOSI(); SET_SCK(); / 发时钟 CLR_SCK(); dd = 1; 温度采集程序的设计温度采集程序主要是对温度传感器DS18B20编

39、程,向1-线总线上写字节,传送字节和读字节,然后将采集的数据交给单片机进展处理。/* 18B20写1个字节函数 向1-WIRE总线上写一个字节*/void write_byte(uint8 val)uint8 i;for (i=0; i= 1; /右移一位DQ = 1;delay(1); /*18B20读1个字节函数 从1-WIRE总线上读取一个字节*/uint8 read_byte(void)uint8 i, value=0;for (i=0; i= 1;DQ = 0;nops(); /4usDQ = 1;nops(); /4us if (DQ)value|=0x80;delay(6); /

40、66usDQ=1;return(value); 显示程序的设计LCD1602显示程序,首先进展1602的初始化,然后就是执行写命令和写数据这两个子函数,实现温度数据的实时显示和按键操作的动态显示。/*初始化1602*/void LCD1602_init(void)w_cmd(0x38); / 16*2显示,5*7点阵,8位数据接口w_cmd(0x0C); / 显示器开w_cmd(0x06); / 文字不动,光标自动右移w_cmd(0x01); / 清屏/*等待繁忙标志*/void wait(void)P0 = 0xFF;doRS = 0;RW = 1;EN = 0;EN = 1;while (

41、BUSY = 1);EN = 0;/*写数据*/void w_dat(uint8 dat)wait();EN = 0;P0 = dat;RS = 1;RW = 0;EN = 1;EN = 0;/* 写命令*/void w_cmd(uint8 cmd)wait();EN = 0;P0 = cmd;RS = 0;RW = 0;EN = 1;EN = 0;/*发送字符串到LCD*/void w_string(uint8 addr_start, uint8 *p)w_cmd(addr_start | 0x80);while (*p != 0)w_dat(*p+);/*发送数字到LCD(0099)*/v

42、oid w_data(uint8 addr_start, uint8 dat)w_cmd(addr_start | 0x80);w_dat(dat%100/10 + 0);w_dat(dat%10 + 0);5 仿真与调试由于无线模块NRF24L01在模拟仿真中无法实现,所以采用的是双机通信原理实现局部仿真。当温度低于最低门限值时,红灯亮,报警器报警,LCD显示当前温度;当温度在设置围类时,LCD显示当前温度;当温度超过最高门限时,黄灯亮,报警器报警。仿真原理图如图6-1所示,仿真结果如图6-2、6-3、6-4所示。图6-1 仿真原理图图6-2 低于最低门限仿真图图6-3 正常围仿真图图6-4

43、 超出最大门限仿真图6 结论本设计以单片机AT89S51为开发平台,NRF24L01无线收发模块,DS18B20温度传感器与LCD1602的特性与工作原理进展了深入研究。通过软件硬件相结合而设计了远程温度显示,远程温度报警系统。89S51单片机的采用,不仅便于数据采集,而且扩展了各种功能,比如显示、外部中断等。NRF24L01无线收发模块集成度高,集合了编码解码,发射接收功能,使用方便,使得系统的硬件和软件简单了许多。“一线数字温度传感器DS18B20与软件处理相结合,进一步提高了系统的测温精度。在电路的设计中充分考虑了系统的可靠性和安全性。该系统具有操控简单方便、显示直观、功能多样、准确度高

44、、电路简洁、本钱低廉等诸多优点。对于单片机爱好者来说,也可以在系统的根底上进展其它功能的开发。经过,局部模拟仿真调试,各项性能指标根本达到预期要求,也遇到一些问题,给系统上电后,液晶屏初始化失败,经检查发现,设计电路中液晶屏的8个数据端口少接了上拉电阻,并且主芯片的31管脚没有接电源,导致无法访问片存储器,经过修改后,再次上电后,初始化成功。参考文献1于海生,潘松峰,于培仁.微型计算机控制技术M.:清华大学,2009.2徐炜,姜晖,X琛.通信电子技术M.:电子科技大学,2008.3朱定华.微机原理与接口技术M.:清华大学,2010.4斯伟,雷新生.数据通信技术M.:人民邮电,2009.5谢自美

45、.电子线路设计实验测试M.:华中科技大学,2010.6梁廷贵.遥控电路可控硅触发电路语音电路分册M.:科学技术文献,2011.7黄贤武,筱霞.传感器原理与其应用M.:电子科技大学, 2010. 8俞国亮.MCS-51单片机原理与应用M.:清华大学,2010.9夏路易,石宗义.Protell99SE设计教程M.:希望电子,2009.10王用伦.微机控制技术M.:大学,2010.11大寨.传感器电子制作DIYJ.:科学,2011.12毅刚.单片机原理与应用M.:高等教育,2010. 13谭浩强.C语言程序设计教程M.:高等教育,2010.14彭伟.单片机C语言程序设计实训100例M.:航空航天大学

46、,2010.15候殿有.单片机C语言设计M.:人民邮电,2010.16姜志海,艳雷.单片机的C语言M.:电子工业,2008.17锋,王巧芝,程丽平.51单片机典型应用开发实例大全M.:中国铁道工业,2011.18杜洋.爱上单片机M.:人民邮电,2011.19喻金钱,喻斌.短距离无线通信详解:基于单片机控制M.:航空航天大学,2009.20谭晖.nRF无线SOC单片机原理与高级应用M.:航空航天大学,2009.致 谢附录附录 系统总原理图附录 仿真程序 副系统仿真程序#include #include typedef unsigned char uint8;typedef unsigned in

47、t uint16;typedef unsigned long uint32;typedef char int8;typedef int int16;typedef long int32;sbit DQ=P10; /DS18B20sbit LED=P11; /LED#define nops(); _nop_(); _nop_(); _nop_(); _nop_(); /定义空指令int8 read_temp(void);void start_temp_sensor(void);void tran_init(void);void send(int8 tem);void delay(uint16 t

48、);/*18B20复位函数*/void DS18b20_reset(void)bit flag=1;while (flag)while (flag) DQ = 1;delay(1); DQ = 0; delay(50); / 550us DQ = 1; / delay(6); / 66us flag = DQ; / presence=0继续下一步 delay(45); /延时500usflag = DQ;DQ=1;/* 18B20写1个字节函数向1-WIRE总线上写一个字节*/void write_byte(uint8 val)uint8 i;for (i=0; i= 1; /右移一位DQ =

49、 1;delay(1); /* * 18B20读1个字节函数从1-WIRE总线上读取一个字节*/uint8 read_byte(void)uint8 i, value=0;for (i=0; i= 1;DQ = 0;nops(); /4usDQ = 1;nops(); /4us if (DQ)value|=0x80;delay(6); /66usDQ=1;return(value);void start_temp_sensor(void)DS18b20_reset();write_byte(0xCC); / 发Skip ROM命令write_byte(0x44); / 发转换命令/*读出温度*

50、/int8 read_temp(void)uint8 temp_data2; / 读出温度暂放int16 temp;DS18b20_reset(); / 总线复位write_byte(0xCC); / 发Skip ROM命令write_byte(0xBE); / 发读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位temp = temp_data1;temp = 4;return (int8)temp;/* 串口传输 */void tran_init(void) EA=1; /*CPU开放所有中断*/ ES=1; /*

51、允许串行口中断*/ TMOD=0x20; /*定时器/计时器T1为定时器模式,工作于方式2*/ TH1=0xfd; /*向T1置初值*/ TL1=0xfd; PCON=0x00; /*SMOD=0*/ SCON=0x50; /*数据串行传输工作于方式1,波特率9600bit/s,允许接收*/ TR1=1; void send(int8 tem)SBUF = tem;while(!TI);TI = 0;void delay(uint16 i)while (i-);void delay_ms(uint16 m) uint16 n;for (; m0; m-)for (n=125; n0; n-);

52、main()int8 dataout16;LED = 0; / 上电LED亮 tran_init(); while (1) start_temp_sensor(); / 初始化18B20delay_ms(1000);/ 延时1秒dataout0 = read_temp(); /读温度LED = LED; / 重置LED指示灯send(dataout0);主系统仿真程序#include #include typedef unsigned char uint8;typedef unsigned int uint16;typedef unsigned long uint32;typedef char

53、 int8;typedef int int16;typedef long int32;/ LCD1602sbit RS = P13;sbit RW = P14;sbit EN = P15;sbit BUSY = P07;/ KEYSsbit Key1 = P34;sbit Key2 = P35;sbit Key3 = P36;sbit Key4 = P37;sbit BUZZ = P12; /BUZZER/LEDsbit LED1 = P10;sbit LED2 = P11;#define KEY_DELAY 5 / 按键扫描延时/键值#define K_ALARM1#define K_TL2

54、#define K_ADD3#define K_SUB4/* LCD1602显示*/void delay1ms(unsigned int ms)/延时1毫秒不够准确的unsigned int i,j; for(i=0;ims;i+) for(j=0;j100;j+);/* 等待繁忙标志*/void wait(void)P0 = 0xFF;doRS = 0;RW = 1;EN = 0;EN = 1;while (BUSY = 1);EN = 0;/* 写数据*/void w_dat(uint8 dat)delay1ms(1); RS=1; RW=0; EN=0; P0=dat; delay1ms

55、(1); EN=1; delay1ms(1); EN=0;/* 写命令*/void w_cmd(uint8 cmd)delay1ms(1); RS=0; RW=0; EN=0; P0=cmd; delay1ms(1); EN=1; delay1ms(1); EN=0;/* 发送字符串到LCD*/void w_string(uint8 addr_start, uint8 *p)w_cmd(addr_start | 0x80);while (*p != 0)w_dat(*p+);/* 发送数字到LCD(0099)*/void w_data(uint8 addr_start, uint8 dat)w

56、_cmd(addr_start | 0x80);w_dat(dat%100/10 + 0);w_dat(dat%10 + 0);/*初始化1602*/void LCD1602_init(void)delay1ms(15);w_cmd(0x38);delay1ms(5); w_cmd(0x08);delay1ms(5); w_cmd(0x01);delay1ms(5); w_cmd(0x06);delay1ms(5); w_cmd(0x0c);delay1ms(5);void rece_init(void) EA=1; /*CPU开放所有中断*/ ES=1; /*允许串行口中断*/ TMOD=0

57、x20; /*定时器/计时器T1为定时器模式,工作于方式2*/ TH1=0xfd; /*向T1置初值*/TL1=0xfd;PCON=0x00; /*SMOD=0*/ SCON=0x50; /*数据串行传输工作于方式1,波特率9600bit/s,允许接收*/ TR1=1;/*启动定时器T1*/ int8 receive(void)while(!RI); /*等待等待数据承受*/RI=0; return SBUF;/* 远程温度控制*/uint32 Count=0;uint8 Rev_dat16=0, Alarm=0, Tl=0;int8 k_val=0,Top=40, Low=10;void delay(uint16 n)while (n-

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!