资源描述
基于51单片机的无线温度检测系统
姓 名:XXX
学 号:XXX
专 业:电器自动化
指导教师:XXX
完成时间:2014.XX.XX
摘要
本文提出了基于MCS-51系列单片机的无线温度检测系统的制作电路和编程思想。该无线温度检测系统以ATMEL公司的AT89S52 单片机为主控,配以达拉斯公司的DS18B20数字温度传感器,采用1602双行英文字符液晶作显示。实现了对温度的测量,显示,和报警等功能。
关键词: AT89S52单片机;数字传感器DS18B20;显示器1602LCD,无线传输NRF24l01;
目 录
摘要 I
ABSTRACT II
1 绪论 2
1.1 选题的背景 2
1.2 无线温度检测系统简介 2
1.2.1 无线温度检测系统的特征 2
1.2.2 设计实现的目标 3
2 无线温度检测系统的方案设计 4
2.1 设计方案论证与比较 4
2.1.1 显示电路方案 4
2.1.2 测温电路方案 4
2.1.3 无线收发电路方案 4
2.2 系统总体方案 4
3 无线温度检测系统的硬件电路设计 5
3.1 控制电路 5
3.1.1 MCU简介 5
3.2.2 最小系统模块 6
3.3 温度传感器设计 7
3.3.1 DS18B20简介 7
3.3.2 温度传感器与单片机的连接 9
3.3.3 复位信号及外部复位电路 10
3.4 无线模块nrf24L01电路 10
3.5 显示电路 10
4 软件设计 12
4.1 DS18b20的读操作 12
4.2 DS18b20的温度数据处理 13
4.3 1602显示部分 14
4.4 无线发送接收部分 14
参考文献 30
附录1 电路原理图 31
附录1 程序源代码 31
1 绪论
1.1 选题的背景
随着现代信息技术的飞速发展和传统工业改造的逐步实现.能够独立工作的温度检测和显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这里设计的无线温度检测系统具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。选用AT89S52单片机作为主控制器件,DSl8B20作为测温传感器通过LCD1602并行传送数据,实现温度显示。通过DSl8B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在-55℃~125℃最大线性偏差小于0.1℃。该器件可直接向单片机传输数字信号,便于单片机处理及控制。另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。
1.2 无线温度检测系统简介
1.2.1 无线温度检测系统的特征
温度是我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,无线温度检测系统的出现可以让人们直观的了解自己想知道的温度到底是多少度。
无线温度检测系统采用进口芯片组装精度高、高稳定性,误差≤0.5%, 内电源、微功耗、不锈钢外壳,防护坚固,美观精致。无线温度检测系统采用进口高精度、低温漂、超低功耗集成电路和宽温型液晶显示器,内置高能量电池连续工作≥5年无需敷设供电电缆,是一种精度高、稳定性好、适用性极强的新型现场温度显示仪。是传统现场指针双金属温度计的理想替代产品,广泛应用于各类工矿企业,大专院校,科研院所。
无线温度检测系统采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED,LCD或者电脑屏幕等显示出来给人观察。这样就完成了无线温度检测系统的基本测温功能。无线温度检测系统根据使用的传感器的不同,AD转换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据实际情况选择符合规格的无线温度检测系统。
1.2.2 设计实现的目标
1) 采集测温范围为-55~+120 ℃.
2) 温度精度在0.1 ℃;误差±0.5℃.
3) 显示模块,采用1602液晶显示.
4) 通过NRF24L01无线发送温度数据.
5) 通过NRF24L01无线接收温度数据并显示在液晶屏上.
2 无线温度检测系统的方案设计
2.1 设计方案论证与比较
2.1.1 显示电路方案
方案一:采用数码管动态显示
使用七段LED数码管,采用动态显示的方法来显示各项指标,此方法虽然价格成本低,但是显示单一,且功耗较大。
方案二:采用LCD液晶显示
采用1602 LCD液晶显示,此方案显示内容相对丰富,且价格不高。
综合上述原因,采用方案二,使用LCD液晶作显示电路。
2.1.2 测温电路方案
方案一:采用模拟温度传感器测温
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案二:采用数字温度传感器
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
综合考虑,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
2.1.3 无线传输方案
方案一
nRF24L01是一款新型单片射频收发器件,工作于2.4 GHz~2.5 GHz ISM频段。内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融合了增强型ShockBurst技术,其中输出功率和通信频道可通过程序进行配置。nRF24L01功耗低,在以-6 dBm的功率发射时,工作电流也只有9 mA;接收时,工作电流只有12.3 mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。
nRF24L01主要特性如下:
GFSK调制:
硬件集成OSI链路层;
具有自动应答和自动再发射功能;
片内自动生成报头和CRC校验码;
数据传输率为l Mb/s或2Mb/s;
SPI速率为0 Mb/s~10 Mb/s;
125个频道:
与其他nRF24系列射频器件相兼容;
QFN20引脚4 mm×4 mm封装;
供电电压为1.9 V~3.6 V。
nRF24L01的CE,CSN,SCK,MOSI,MISO.IRQ引脚可接 STC 89C52的任意端口,但需在编程时注意
nRF24L01工作模式
通过配置寄存器可将nRF241L01配置为发射、接收、空闲及掉电四种工作模式,如表所示。
8
掉电 0 - - -
待机模式1主要用于降低电流损耗,在该模式下晶体振荡器仍然是工作的; 待机模式2则是在当FIFO寄存器为空且CE=1时进入此模式; 待机模式下,所有配置字仍然保留。
在掉电模式下电流损耗最小,同时nRF24L01也不工作,但其所有配置寄存器的值仍然保留。
nRF24L01 引脚功能及描述
nRF24L01的封装及引脚排列如图所示。各引脚功能如下:
图2.6 nRF24L01封装图
CE:使能发射或接收;
CSN,SCK,MOSI,MISO:SPI引脚端,微处理器可通过此引脚配置nRF24L01: IRQ:中断标志位; VDD:电源输入端; VSS:电源地;
XC2,XC1:晶体振荡器引脚;
VDD_PA:为功率放大器供电,输出为1.8 V; ANT1,ANT2:天线接口;
IREF:参考电流输入。
方案二、nRF905无线芯片
nRF905无线芯片是有挪威NORDIC公司出品的低于1GHz无线数传芯片,主要工作于433MHz、868MHz和915MHz的ISM频段。芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。非常适合于低功耗、低成本的系统设计。
性能参数
◆422.4~473.5MHz工作频段[2]
◆512个通讯频道,满足多点通讯、分组、跳频等应用需求,通道切换时间≤6us
◆发射功率可设置为:10dBm、6dBm、-2dBm和-10dBm
◆通过SPI接口与MCU连接
◆支持50kbps传输速率
◆ShockBurst传输模式,自动生成前导码和CRC校验码
◆工作电压范围:1.9V~3.6V,待机模式下电流仅为12.5μA
◆工作温度范围:-40℃~+85℃
综合考虑,采用方案一,电路比较简单,软件设计也比较简单,故采用了方案一。
2.2 系统总体方案
根据上述方案比较,结合题目要可以将系统分为采集发送模块和接收显示模块,其框图如下:
51单片机
无线发送nrf24L01模块
DS18B20温度采集
晶振复位电路
采集发送方案
51单片机
无线接收NRF24L01电路
1602液晶屏显示电路
晶振复位电路
接收显示方案
图2-1 系统总体设计框图
3 无线温度检测系统的硬件电路设计
3.1 控制电路
3.1.1 MCU简介
CPU是整个控制部分的核心。在考虑经济性和满足需求的前提下,本系统选用ATMEL公司生产的8位AT89S52单片机作为整个系统的控制中心。
AT89S52是ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含8k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚,它集Flash存储器既可在线编辑(ISP)也可用传统方法进行编辑及通用8位微处理器于单片芯片中,功能强大AT89S52单片机可为您提供许多高性价比的应用场合。器管脚图如图3-2:
图3-1 AT89S52管脚图
在本系统中,AT89S52单片机内部的功能单元已经能够满足系统设计需要,不需要系统扩展。
AT89S52具有以下的特点:
● 8031 CPU与MCS-51 兼容
● 寿命:1000写/擦循环
● 8K字节可编程FLASH存储器
● 全静态工作:0--24MHz
● 三级程序存储器保密锁定
● 256*8位内部RAM
● 32条可编程I/O线
● 两个16位定时器/计数器
● 6个中断源
● 可编程串行通道
● 低功耗的闲置和掉电模式
● 片内振荡器和时钟
AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。
AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。
此外, AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
3、AT89S52引脚功能
AT89S52 单片机为40 引脚芯片见图3.2.1-2。
图3.2.1-2 AT89S52引脚图
(1)口线:P0、P1、P2、P3 共四个八位口。
P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能:
P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5 MOSI(在系统编程用)
P1.6 MISO(在系统编程用)
P1.7 SCK(在系统编程用)
P2口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。
在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用。
在flash编程和校验时,P3口也接收一些控制信号。
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
(2)其他引脚说明:
RST:复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
XTAL1,XTAL2接石英晶体振荡器。如图3.2.1-3所示外接晶体引脚图。
C2 XTAL2
悬空 XTAL2
C1 XTAL1 外部振荡信号 XTAL1
GND GND
接地 接地
a.内部方式 b.外部方式
图3.2.1-3晶振外接结构引脚图
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择,在本设计电路中选用了12MHz。电容取20PF左右。机器周期=12×时间周期,如12MHz的机器周期为1微秒。
(3)控制或复位引脚
RESET 此脚为高电平时(约2个机器周期)可将单片机复位。
RST/VPD——当出现两个机器周期高电平时,单片机复位。复位后,P0~P3输出高电平;SP寄存器为07H;其它寄存器全部清0;不影响RAM状态。如图3.2.1-4所示。
图3.2.1-4 按键电平复位
AT89SXX系列单片机实现了ISP下载功能,故而取代了89CXX系列的下载方式,也是因为这样,ATMEL公司已经停止生产89CXX系列的单片机,现在市面上的AT89CXX多是停产前的库存产品。
4、AT89S52的编程方法
编程前,须按编程模式表设置好地址、数据及控制信号;顺序如下:
① 在地址线上加上要编程单元的地址信号。
② 在数据线上加上要写入的数据字节。
③ 激活相应的控制信号。
④ 将EA/Vpp端加上+12V编程电压。
⑤ 每对Flash存储阵列写入一个字节或每写入一个程序机密位,加上一个ALE/PROG编程脉冲。每个字节写入周期是自身定时的,大多数约为50us。改变编程单元的地址和写入的数据,重复①—⑤步骤,直到全部文件编程结束。
单片机的现状及发展方向:
单片机是为了工业控制需要满足而诞生的,是自动控制系统的核心部件,因而也主要用于工业控制、智能化仪器仪表、家用电器中。它具有体积小,功能多、价格低、使用方便、系统设计灵活等优点,应用领域不断扩大,除了工业控制,智能化仪表,通讯,家用电器外,在智能化高档电子玩具产品中也大量采用单片机芯片作为核心控制部件。
由于单片机主要面向工业控制,工作环境比较恶劣,入高温,强电磁干扰,甚至含有腐蚀性气体,在太空中工作的单片机控制系统,还必须具有抗辐射能力,这决定了单片机CPU于通用微机CPU具有不同的技术特征和发展方向:
(1) 可靠性高;
(2) 控制功能往往很强,数值计算交叉;
(3) 指令系统比通用微处理器慢的多;
(4) X系列芯片取代;
(5) 抗干扰性强,工作温度范围宽。
3.2.2 最小系统模块
本次设计中,选用ATMEL公司的51系列单片机AT89S52芯片作为电子密码电源开关的数据处理及操作控制芯片。只有单片机芯片无法完成数据处理及控制功能,必须有附加的电路,使单片机芯片组成一个可运行的系统才能实现其功能。本次设计中,由AT89S52芯片连同附加电路构成的单片机最小系统作为数据处理及控制模块, P1.0作DS18B20的总线接口。其电路连接图3-3如下:
图3-2 数据处理及控制模块
3.3 温度传感器设计
3.3.1 DS18B20简介
DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。
温度传感器DS18B20引脚如图3-4所示。
图3-3 DS18B20TO-92封装温度传感器
引脚功能说明:
VDD :可选电源脚,电源电压范围3~5.5V。当工作于寄生电源时,此引脚必须接地。
DQ :数据输入/输出脚。漏极开路,常态下高电平。
GND :为电源地
图3-4 DS18B20内部结构图
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。
该字节各位的意义如下:
TM R1 R0 1 1 1 1 1
低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如表1所示:(DS18B20出厂时被设置为12位)
表3-3 DS18B20温度转换时间表
R1
R0
分辨率/位
温度最大转向时间
0
0
9
93.75
0
1
10
187.5
1
0
11
375
1
1
12
750
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
3.3.2 温度传感器与单片机的连接
温度传感器的单总线(1-Wire)与单片机的P2.0连接,P2.0是单片机的高位地址线A8。P2端口是一个带内部上拉电阻的8位双向I/O,其输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对该端口写“1”,可通过内部上拉电阻将其端口拉至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻,某一引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时。如执行MOVX DPTR指令,则表示P2端口送出高8位的地址数据。在访问8位地址的外部数据存储器时,可执行MOVX RI指令,P2端口内容即为特殊功能寄存器(SFR)区中R2寄存器内容,整个访问期间不改变。在Flash编程和程序校验时,P2端口也接收高位地址和其他控制信号。图3-5为DSl8820内部结构。图3-6为DSl8820与单片机的接口电路。
图3-5 DS18B20和单片机的接口连接
3.3.3 复位信号及外部复位电路
该复位信号高电平有效,其有效时间应持续24个振荡脉冲周期即两个机器周期以上。若使用频率为12 MHz的晶体振荡器,则复位信号持续时间应超过2μs才完成复位操作。
图3-6 复位电路
3.4 无线模块24l01电路
电路中NRF24l01为3.3V模块,而单片机为5V,接口需要加限流电阻。模块数据口分别接了单片机的P20,P21,P22,P25,P26,P27端口。
NRF24L01通过AMS117-3.3将5V电压转换成3.3V进行供电。
3.5 显示电路
1、应用简介
模块内部自带字符发生存储器(CGROM),字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是(41H),显示时模块把代码41H发给液晶模块,我们就能在液晶上看到字母“A”。
1602液晶模块内部的控制器共有11条控制指令,丰富的指令可以完成液晶的时序控制、工作方式式设置和数据显示等。
采用的LCD1602液晶模块是标准16针插座,接口电路如图3.2.3所示:关于LCD1602的详细资料见表3.2.3-1和表3.2.3-2。
图3.2.3 显示电路的连接图
4 软件设计
4.1 DS18b20的读操作
DSl8B20的主要数据元件有:64位激光Lasered ROM,温度灵敏元件和非易失性温度告警触发器TH和TL。DSl8B20可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。此外,还可外接5 V电源,给DSl8B20供电。DSl8B20的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。DS18B20读写时序如图4-1~4-3:
图4-1 DS18B20的复位时序图
图4-2 DS18B20的写数据时序图
图4-3 DS18B20的读数据时序图
由时序图可知,DS18B20在复位时需要480us的低电平,等待15us后MCU将总线拉高,等待DS18B20的响应信号;DS18B20在写数据时分为写“0”和写“1”操作,写“0”操作时,DS18B20需要至少60us的总线被拉低,然后在60us内将“0”写入DS18B20中,持续时间至少1us,写“1”操作是只需将写入的“0”改为“1”即可;DS18B20读操作也分为读“0”和读“1”操作,读“0”操作时,总线需要15us被拉低,再拉高45us,然后再15us内将数据读走,读“1”操作同读“0”操作。程序流程图如图4-4:
开始
DS18B20的初始化
启动温度转换
读取温度寄存器
跳过读序列号的操作
跳过读序列号的操作
DS18B20的初始化
RET
LOW-低八位 HIGH-高八位
图4-4 DS18B20读取温度的流程图
4.2 DS18b20的温度数据处理
读出温度数据后,LOW的低四位为温度的小数部分,可以精确到0.0625℃,LOW的高四位和HIGH的低四位为温度的整数部分,HIGH的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,分为三个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大于0.5℃的话,向个位进1;小于0.5℃的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。还因为DS18B20最低温度只能为-55℃,所以可以将整数部分的最高位换成一个“-”,表示为负数。图4-2为温度数据处理程序的流程图。
开始
提取整数部分存入HT
提取小数部分存入LT
LT右移三位,将精度降低到0.5摄氏度
HT++
将小数部分整数化
提取符号部分存入sign
LT是否大于5
是否为负数
RET
负数标志flag=1
Y
N
N
Y
图4-5 温度数据处理流程图
4.3 1602显示部分
1602的读写时序图如下:
图4-6 1602液晶的读时序图
图4-7 1602的写时序图
根据以上时序图可以得出读写程序流程图如下:
开始
选择写数据写命令RS=1||RS=0
选择写操作RW=1
使能EN
准备好写入的数据DB0~DB7
禁止EN
结束
开始
选择写数据写命令RS=1||RS=0
选择读操作RW=0
使能EN
禁止EN
结束
图4-8 1602的写流程图
图4-8 1602的读流程图
6 结语
本文重点介绍了单片机和数字传感器DS18B20的原理和功能,并用DS18B20与AT89S52单片机、LCD1602组成无线温度检测系统,有超温报警功能。
在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。
参考文献
[1]马淑华等.单片机原理与接口技术(第二版).北京邮电大学出版社.2007.8
[2]赵德安等.单片机原理与应用(第二版). 机械工业出版社2009.4
[3]夏大勇、周晓辉等. MCS-51单片机温度控制系统,工业仪表与自动化装置. 2007.(1): 43--46
[4]张宏建等. 自动检测技术与装置(第二版). 化学工业出版社. 2010.9
[5]程德福等. 智能仪器. 机械工业出版社. 2006.8
[6]刘坤 宋戈等. 51单片机C语言应用开发技术大全. 人民邮电出版社. 2008.9 [7]孟宪玲. 浅析数字温度传感器DS18B20的应用. 中国科技信息. 2007.3
[8]孙少伟、戴义保等. 基于DS18B20组网测温的研究. 自动化仪表. 2006.2 [9]胡天明、齐建家等.基于DS18B20数字温度计设计及其应用.黑龙江工程学院学报(自然科学版). 2008.22(59-62)
[10]邹振春等.MCS-51系列单片机原理及应用接口技术(第2版).机械工业出版社. 2006.2
[11] 张靖等.《检测技术与系统》.设计中国电力出版社,2001年
[12]陈润泰. 《检测技术与智能仪表》.中南工业大学出版社,1990年
附录一:电路原理图
采集发送电路图
接收显示电路图
附录二:系统程序清单
#include <reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned char uint;
//****************************************NRF24L01端口定义***************************************
sbit MISO =P2^5;
sbit SCK =P2^6;
sbit CE =P2^7;
sbit CSN =P2^0;
sbit MOSI =P2^1;
sbit IRQ =P2^2;
//************************************LED***************************************************
sbit led=P1^6;
//*****************************************DS1820端口设置****************************************
sbit DQ=P1^0 ;
//***********************************数码管0-9编码***********************************************
uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段码
uchar seg1[10]={0x40,0x4F,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
uchar data temp_data[2]={0x00,0x00}; //温度采集数据缓冲区
uchar dispaly[20]; //显示缓冲区
//******************************************************************************
展开阅读全文