有用资料限时下载:关注我们的“单片机”,回复“教程”获取单片机电子书,回复“仿真”获取Proteus仿真数据。 持续更新。 。 。
在本次微控制器课程设计中,我设计了一个智能数字温度计。 其主要功能是测试温度,精确到小数点后三位; 其次,它还具有时钟功能,可以显示从秒到年的具体时间; 而且我还使用了zigbee无线传输模块将采集到的温度值无线发送到电脑。 。 。 。 下面详细分析具体设计。
关键词:温度计; ds18b20、zigbee 模块、ds1302、89c52
一、选题背景
1.1 系统设计
本课程的任务是设计一个数字温度计。 由于生产、生活中需要测量温度的领域很多,因此温度计的质量,即测量灵敏度、测温范围、稳定性、实用性和适用性就显得尤为重要。 传统温度计通常利用固体、液体、气体受温度影响的热胀冷缩现象作为设计依据。 因此,该方法无论是设计原理还是视觉读数都存在较大误差。 本课程旨在使用 DS18B20 作为数字温度传感器。 具有线性优良、性能稳定、灵敏度高、抗干扰能力强、使用方便等优点。 可以大大提高测量温度的准确性,设计还具有无线传输功能。 采集到的温度可以实时传输到计算机,有利于温度设备的远程监控和远程控制。 这是未来智能设备(包括智能家居)的发展方向。 。 。
1.2 总体框图
现系统模块总体设计框图如图1所示:
图1 总体设计框图
2 设计方案简要说明
2.1 数字温度计设计方案演示
2.1.1 方案1
由于该设计是温度测量电路,因此可以使用热敏电阻等器件来利用其温度传感效应。
采集到幅度变化的电压或电流并进行A/D转换后,可以用单片机对数据进行处理并显示数据。
在电路上,可以显示测量的温度。 该设计需要使用A/D转换电路,其中还涉及到电阻。
对于温度传感电路来说,温度对应值的计算比较麻烦,而且在放大采集到的信号时容易受到温度的影响。
影响存在较大偏差。
2.1.2 方案2
再者,考虑到温度传感器的使用,大多数传感器都是用在单片机电路设计中,所以这非常重要。
很容易想到,可以使用温度传感器DS18B20。 该传感器可以轻松地直接读取测量的温度。
温度值转换,电路简单,精度高,软件和硬件均可实现,采用单片机的接口,方便系统
可以进一步扩展以满足设计要求。
从以上两种方案不难看出,采用方案2,电路更简单,成本更低,可靠性高,软件设计也方便
方案也比较简单,所以采用方案2。
2.2DS18B20数字温度传感器
DS18B20温度传感器是美国达拉斯半导体公司生产的DS18B20单线智能温度传感器。 它是适应微处理器的新一代智能温度传感器。 与传统热敏电阻等测温元件相比,可以直接读出被测温度,并可根据实际要求通过简单编程实现9-12位数字值读取方式。 可广泛应用于工业、民用、军事等领域的温度测控仪表、测控系统及大型设备。 具有体积小、接口方便、传输距离远等特点。
2.2.1 DS18B20的性能特点
DS18B20从功能和技术角度来看具有以下性能特点:
l 采用单总线专用技术,可通过串口线或其他I/O口线与微机接口,无需经过其他转换电路,直接输出测量温度值(9位二进制数,包括符号位)
l 温度测量范围为-55℃至+125℃,最小测量分辨率为0.0625℃
l 包含64位激光校正只读存储器ROM
lDS18B20在使用过程中不需要任何外部元件。 所有传感元件和转换电路都集成在一个形状像三极管的集成电路中。
l适配各种单片机或系统计算机
l 测量结果直接输出数字温度信号,并通过“单线总线”串行传输至CPU。 同时可传输CRC校验码,具有较强的抗干扰和纠错能力。
l用户可单独设置每个温度的上下限
l 适应宽电压范围,3.0~5.5V,可采用寄生电源模式由数据线供电
2.2.2 DS18B20 引脚分布
独特的单线接口,只需一根端口线即可与多点通信,简化分布式温度传感应用。 无需外部元件。 提供数据总线电源,电压范围为3.0V~5.5V,无需备用电源。 测量温度范围为-55℃至+125℃,华氏度等效为-10°F至+85°F,精度为±0.5°F。
引脚排列如图2和表1所示。
序列号
姓名
引脚功能说明
电源电压
可选 Vcc 引脚。 当使用寄生电源工作时,该引脚必须接地。
数据Q
数据输入/输出引脚。 开漏单总线接口引脚。 当与寄生电源一起使用时,它还可以为设备供电。
接地
接地信号。
表1 DS18B20引脚分布说明
图2 DS18B20引脚分布图
2.3.3 DS18B20内部结构及工作模式
DS1820主要包括寄生电源、温度传感器、64位激光ROM单线接口、用于存储中间数据的高速临时存储器(包括暂存器RAM)以及用于存储中间数据的TH和TL触发器存储器。用户设置温度上限和下限。 有七个内部部分,包括控制逻辑和8位循环冗余校验码(CRC)发生器。 内部结构框图如图3所示。
图3 DS18B20内部结构
64位ROM结构的前8位是产品类型号,后面是每个设备的唯一序列号,总共48位,最后8位是前面的56位CRC校验码。 温度报警触发TH和TL可以通过软件写入用户的报警上限和下限。
DS18B20温度传感器和微控制器DS18B20之间的接口电路可以通过两种方式供电。 一是供电方式。 此时DS18B20的1脚接地,2脚作为信号线,3脚连接电源。 另一种是寄生供电方式。 微控制器端口连接到单线总线。 为了保证在有效的DS18B20时钟周期内提供足够的电流,可以使用MOSFET管来完成总线的上拉。 本实验采用第一种方法。
DS18B20的温度测量原理如下。 器件中低温度系数晶体振荡器的振荡频率受温度影响很小。 用于产生固定频率的脉冲信号,送至减法计数器1; 高温度系数晶体振荡器的振荡频率随温度变化。 显然,产生的信号用作减法计数器2的脉冲输入。器件中还存在一个计数门。 当计数门打开时,DS18B20对低温度系数振荡器产生的时钟脉冲进行计数,完成温度测量。 计数门的开启时间由高温度系数振荡器决定。 每次测量前,首先将对应于-55℃的基数分别放入减法计数器1和温度寄存器中。 计数器1和温度寄存器预设为-对应于55℃的基值。
减法计数器1对低温度系数晶体振荡器产生的脉冲信号进行减计数。 当减法计数器1的预设值减至0时,温度寄存器的值将加1,并重新加载减法计数器1的预设值。 计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环下去,直到减法计数器计数到0,并停止温度寄存器的累加。 此时温度寄存器中的值就是测量的温度值。 其输出用于修正减法计数器的预设值,只要计数器门仍然关闭,就重复上述过程,直到温度寄存器值约等于测量温度值。
由于DS18B20的单线通信功能是分时完成的,有严格的时隙概念,因此读写时序非常重要。 系统根据协议对DS18B20进行各种操作。 操作协议为:初始化DS18B20并发送复位脉冲→写入ROM功能命令→发送存储器操作命令→处理数据。 DS18B20有6个控制命令,如表2所示:
操作说明
约定代码
指示
温度换算
44小时
启动DS18B20进行温度转换
读取便签本
贝赫
读取临时寄存器中9个字节的内容
写草稿本
4EH
将数据写入临时寄存器的TH和TL字节
复制便笺本
48小时
将临时寄存器的TH和TL字节写入E2RAM
重置E2RAM
B8H
将E2RAM中的TH和TL字节写入临时寄存器TH和TL字节
读取电源模式
B4H
启动DS18B20向主CPU发送供电模式信号
表2 DS18B20的控制指令
2.3 AT89C52
AT89C52是本次课程设计的核心部分。 其引脚图如下:
AT89C52引脚图
AT89C52是一款低功耗、高性能的CMOS 8位微控制器。 该芯片具有8KB闪存,允许在系统内重写或用编程器编程。 另外,AT89C52的指令系统和引脚与80C52完全兼容。
AT89C52各引脚功能如下:
VCC:电源电压;
GND:地;
P0 口:P0 口是一个 8 位开漏双向 I/O 口,每个引脚可吸收 8TTL 栅极电流。 ;
P1 端口:P1 端口是一个 8 位双向 I/O 端口,内部带有上拉电阻。 P1口缓冲器可接收并输出4TTL栅极电流;
P2端口:P2端口是一个8位双向I/O端口,内部带有上拉电阻。 P2端口缓冲器可以接收和输出4路TTL栅极电流。 当“1”写入P2端口时,其引脚被内部上拉。 上拉电阻拉高,作为输入。 因此,当用作输入时,P2端口引脚被外部拉低,输出电流;
P3端口:P3端口引脚是8个双向I/O端口,内部有上拉电阻,可以接收和输出4路TTL栅极电流。 当向P3口写入“1”时,它们被内部上拉至高电平并用作输入; P3口引脚功能:P3.0为RXD(串口输入口); P3.1为TXD(串口输入口); P3.2为/INT0(外部中断0); P3.3为/INT1(外部中断1); P3.4为T0(定时器0外部输入); P3.5为T1(定时器1外部输入); P3.6为/WR(外部数据存储器写选通); P3.7为/RD(外部数据存储器读选通); P3端口同时接收一些用于Flash编程和编程验证的控制信号。
RST:复位输入。 当振荡器复位器件时,RST 引脚必须保持高电平两个机器周期。
ALE/PROG:访问外部存储器时,地址锁存器允许使用输出电平来锁存地址的位字节。
/PSEN:外部程序存储器的选通信号。 在从外部程序存储器获取指令期间,/PSEN 在每个机器周期被置位两次。 但当访问外部数据存储器时,这两个有效的/PSEN信号将不会出现。
/EA/VPP:当/EA保持低电平时,在此期间使用外部程序存储器(0000H-FFFFH),无论是否有内部程序存储器。
XTAL1:反向振荡放大器的输入和内部时钟运算电路的输入。
XTAL2:反相振荡器的输出。
2.41602型液晶屏
该温度计的读数通过1602型液晶显示,具有微功耗、体积小、显示内容丰富、超薄轻便等特点,常用于袖珍仪器和低功耗仪器。应用系统。
2.4.1 1602型液晶屏的特点
1602型液晶显示器具有以下六大特点:
l+5V电压,对比度可调
l 内含复位电路
l提供多种控制命令,如清屏、字符闪烁、光标闪烁、显示移位等功能
l 具有80字节显示数据存储器DDRAM
l 内置字符发生器CGROM,具有192个5X7点阵字体
l8 个用户可定义的 5X7 字符生成器 CGRAM
2.4.2 1602型液晶屏操作控制
1602液晶模块内部的字符生成存储器(CGROM)已存储了160个不同的点阵字符图形。 这些字符包括:阿拉伯数字、大小写英文字母、常用符号以及日文假名等。每个字符都有一个固定的代码,例如大写英文字母“A”的代码是01000001B(41H)。 显示时,模块在地址41H处显示点阵字符图形,可以看到字母“A”。
由于1602识别ASCII码,所以测试时可以直接使用ASCII码来赋值。 在微控制器编程中,字符常量或变量也可以用来赋值,例如“A”。 下面是1602的十六进制ASCII码表地址: 读取时先读左列,再读上行。 例如:感叹号'!'的ASCII 是0x21,字母B的ASCII是0x42。
附加功能模块
2.5 DS1302模块分析
DS1302的RST是复位/片选线。 所有数据传输都是通过将 RST 输入驱动为高电平来启动的。 当RST为高电平时,所有数据传输都被初始化,允许DS1302运行。 如果在传输过程中将RST设置为低电平,则数据传输将终止,I/O引脚将变为高阻状态。
其引脚图如下:
DS1302引脚图
各引脚功能:Vcc1 为备用电源,VCC2 为主电源,X1、X2 为振荡源,
SCLK是输入端
RST 输入有两个功能:首先,RST 打开控制逻辑,允许将地址/命令序列送入移位寄存器; 其次,RST提供了终止单字节或多字节数据传输的方法。
DS1302部分电路图
2.6 zigbee无线发送模块
Zigbee 是一种基于 IEEE802.15.4 标准的低功耗个人区域网络协议。 该协议规定的技术是一种短距离、低功耗的无线通信技术。 ZigBee节点主要有三类,即协调器(Coodinator)、路由器(Router)和终端(End Device)。 一个统一的网络至少需要一个协调器,并且只能有一个协调器负责每个节点的16位地址分配(自动分配)。 理论上可连接65536个节点,可实现多方组网。
3 详细设计
3.1 温度采集模块
温度采集模块的核心是温度传感器DS18B20,其接线方法和引脚排列已在上面详细介绍。 因此,可以设计如图5所示的温度采集模块电路图。
图5 温度采集模块
本设计中使用的温度传感器是达拉斯半导体公司的数字温度传感器。 它是世界上第一个支持“单线总线”接口的温度传感器。 “一线器件”体积更小,适用电压更广,而且更经济。 并且分辨率设置和用户设置的报警温度存储在EEPROM中,断电后仍然保存。
DSl8B20数字温度计提供9位(二进制)温度读数,表明设备的温度信息通过单线接口发送至DSl8B20或从DSl8B20发送。 因此,从主机CPU到DSl8B20只需要一根线。 当DS18B20收到温度转换命令后,开始启动。 转变。 转换后的温度值以16位符号扩展二进制补码的形式存储在高速暂存存储器的第1和第2字节中。 微控制器可以通过单线接口读取数据。 读取数据时,低位在前,高位在后。 数据格式以0.0625℃/LSB的形式表示。
当符号位S=0时,表示测量的温度值为正值,二进制位可直接转换为十进制; 当符号位S=1时,表示测量的温度值为负值,必须先将补码转换为原码,然后再计算十进制值。
3.2 单片机控制系统
单片机控制系统电路图如图6所示,实现对DS18B20的LCD的信息采集、反馈和控制。
图6 单片机控制模块
3.3 温度和时间显示模块
温度显示和时间显示主要通过1602型液晶屏实现。 1602型液晶屏采用标准16针接口,其中:
引脚1:VSS为电源地
引脚2:VDD接5V电源正极
引脚3:V0为液晶显示器对比度调节端。 接正极电源时对比度最弱,接地电源时对比度最高(对比度太高时会出现“重影”。对比度可通过10K电位器调节)使用)。
引脚4:RS为寄存器选择。 当高电平为1时,选择数据寄存器,当低电平为0时,选择指令寄存器。
引脚5:RW为读写信号线。 当电平为高(1)时,执行读操作,当电平为低(0)时,执行写操作。
引脚6:E(或EN)端是使能端。
引脚7至14:D0至D7是8位双向数据端子。
引脚15-16:空引脚或背光电源。 15脚为背光正极,16脚为背光负极。
显示电路采用LCD1602液晶显示。 这种显示器最大的优点是采用字符显示器,可以显示两行。 第一行显示日期和当前时间,第二行显示当前温度。 当DS18B20出现显示错误时,第二行显示如果不显示线路温度,则会出现错误信息。 该液晶显示器功耗低、操作方便、显示非常清晰。
图7 显示模块电路图
3.4 软件设计
本章从设计思想和软件系统框图入手,首先介绍总体思路,然后逐一分析各个模块的程序算法的实现,最后编写出满足任务要求的程序。
3.4.1 DS18B20的温度采集程序
DS18B20 器件需要严格的通信协议来确保数据完整性。 协议定义了几种信号类型:复位脉冲、确认脉冲时隙; 写0,写1时隙; 读0,读1时隙。 与DS18B20的通信是通过操作时隙完成单总线上的数据传输。 发送所有命令和数据时,字节的低字节在前,高字节在后。
该模块的系统流程
图8 温度采集模块系统流程图
计算温度子程序
温度计算子程序将RAM中读取的值转换为BCD码,并判断温度值是正值还是负值。 程序流程图如下图所示。
DS18B20的初始化
1、首先将数据线设置为高电平“1”。
2、延迟(时间要求不是很严格,但应该尽可能短)
3、数据线拉至低电平“0”。
4、延迟750微秒(时间范围可以从480到960微秒)。
5、数据线拉至高电平“1”。
6、延时等待(如果初始化成功,会在15到60毫秒内产生DS18B20返回的低电平“0”,根据这个状态可以判断其存在,但要注意的是不能无限期等待,否则程序会进入死循环,所以需要超时控制)。
7、如果CPU读取到数据线上的低电平“0”,仍然需要延时。 延迟时间是从发出的高电平(从步骤5的时间开始)算起至少480微米。 第二。
8、再次将数据线拉至高电平“1”结束。
3.4.2. 时钟显示子程序
3.5 系统主程序
首先根据系统整体功能和键盘设置选择最合适的监控程序结构,然后根据实时性要求合理安排监控软件与各执行模块之间的调度关系。
代码是用C语言编写的。 鉴于篇幅限制,且DS18B20的应用已经规范和成熟,本文仅对主程序流程图和显示子程序流程图及其代码进行说明。 主程序流程图显示,主程序通过调用温度采集子程序完成温度数据采集,然后调用温度转换子程序转换并读取温度数据,调用显示子程序显示温度并判断温度数据。流程图如下
4 设计结果与分析
4.1 测试环境和工具
测试温度:20-50摄氏度。 (模拟不同温度值的环境)
测试仪器及软件:数字万用表、标准温度计20-100摄氏度。
4.2 试验方法及试验结果
运行电路,观察系统硬件检测是否正常。 系统自带测试表数据,只需观察显示的数据是否一致即可。
使用温度传感器和温度计同时测量水温变化,目视检查电路是否正常。 并记录温度值,与实际温度值进行比较,得到系统的温度指标。得到结果如下表
标准温度(℃)
试验温度(℃)
误差(℃)
20.21
20.25
0.04
25.10
25.32
-0.22
35.02
35.20
0.18
39.97
39.96
0.01
45:00
44.85
0.15
50.00
49.89
0.11
平均误差(℃):0.1001
表3 温度测试结果
可以看出,数字温度计的误差约为1%。
5 总结与思考
经过一周的设计和制作,我制作的多功能温度计已经完成,还是蛮有收获的。 虽然之前用过52单片机,但实现混合多模块功能还是第一次。 我首先设计了硬件电路,最后编写了程序来实现软件设计。 在调试过程中也发现并解决了很多问题。
经过这次课程设计,我真正认识到我们需要理论联系实际,将所学的理论知识运用到实践中,通过更多的动手实践来提高自己的技能。 光靠理论,不去实践,是无法提高的。 另外,你必须多阅读和模仿程序才能改进它。 总之,本次课程设计不仅巩固了单片机的理论知识,还提高了自己的动手能力、分析问题和解决问题的能力。
参考
[1] 张琳娜,刘五发。 传感检测技术及应用。 中国计量出版社,1999
[2] 马中梅,季顺新,张凯,马岩。 单片机C语言应用程序设计-修订版. 北京航空航天大学出版社,1998.10
[3] 胡汉才. 微控制器原理和接口技术。 清华大学出版社,1996
[4] 严石. 数字电子技术基础。 北京航空航天大学出版社,2006。
[5] 黄河. 基于DS18B20的单总线数字温度计。 国防工业出版社,2002年
[6] 彭虹. 王玉凤. 粮仓温湿度智能控制系统[J]. 中国科技情报,2006
[7]佟时白,华成英. 模拟电子技术基础(第四版)[M]. 北京:高等教育出版社,2009。
附录1 系统总体电路图
附系统总体电路图
附录2 实验结果测试图
1. 时钟显示
2.温度显示
3、温度通过无线模块发送至电脑
获取源代码和全文:
有用资料限时下载:关注我们的“单片机”,回复“教程”获取单片机电子书,回复“仿真”获取Proteus仿真数据。
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
如何分享到朋友圈 点击右上角的“…”三个点,在弹出的菜单中选择“分享到朋友圈”。 MCU订阅号微信名:MCU
各种单片机知识、电子制作DIY、电子行业最新资讯每天更新。 关注我们,棒棒哒!