基于STM32的温度采集系统设计

目录

.
摘 要 I
Abstract II
引 言 1
1 整体系统设计 3
1.1 系统方案设计 3
1.2 系统工作原理 4
2 硬件设计 5
2.1 STM32单片机 5
2.1.1 STM32单片机介绍 5
2.1.2 STM32内部电路图 5
2.2 LCD1602液晶显示器 7
2.2.1 LCD1602介绍 7
2.2.2 1602各管脚功能 8
2.3 DS18B20温度传感器 10
2.3.1 DS18B20简介 10
2.3.2 DS18B20控制字和读写时序说明 10
2.4 温度采集电路与单片机的连接 12
3 软件设计 14
3.1 总程序流程图 14
3.2 液晶显示流程 15
3.3 按键处理流程 16
4 系统调试 17
4.1 系统硬件调试 17
4.2 系统软件调试 18
结 论 19

参考文献 20
附录1 原理图 22
附录2 源程序清单 23
致 谢 30

摘 要

本论文主要是为了利用编程软件和硬件来设计并实现STM32单片机对环境温度的信号采集。本文中利用STM32单片机来完成毕业设计,并且主要目的就是完成温度的采集,有一点需要注意的是,温度采集是自动化必须掌握的检测技术,也是一项十分有实用的技术。本文利用STM32的一种微型处理器来当主控的CPU,通过使用一个独立的数据采集模块采集数据,在这个基础上实现了智能化的温度数据采取、然后还有传输、处理和显示等功能。并商讨了该怎么提高系统的速度、性能和拓展性。数据采集是获取信号对象信息的过程。然而本文的设计是一个在ARM Cortex-M3处理器的基础上的一项数据采集系统,并且在此基础上实现了对当前场景的温度信号的一种实时跟踪性质的采集。这次毕业设计的主要目的是提供可行性方法来进行可以实施的后续研究。

关键词:嵌入式系统;ARM;DS18B20温度传感器;STM32;温度采集;数据的处理。

Abstract

This paper is mainly to use programming software and hardware to design and realize the signal acquisition of the environment temperature by STM32 single chip microcomputer. In this paper, STM32 single-chip microcomputer is used to complete the graduation project, and the main purpose is to complete the temperature acquisition. One thing needs to be noted is that temperature acquisition is a detection technology that must be mastered automatically, and it is also a very practical technology. In this paper, STM32 micro processor is used as the main CPU, and an independent data acquisition module is used to collect data. On this basis, intelligent temperature data acquisition, transmission, processing and display functions are realized. How to improve the speed, performance and expansibility of the system is discussed. Data acquisition is the process of acquiring signal object information. However, the design of this paper is a data acquisition system based on arm Cortex-M3 processor, and on this basis, it realizes a real-time tracking property of the current scene temperature signal acquisition. The main purpose of this graduation project is to provide feasible methods to carry out the follow-up research.

Keywords:Embedded system, arm;DS18B20 temperature sensor;STM32;temperature acquisition;data processing.

引 言

当今社会,随着社会的不断发展,科学技术的不断进步,测温仪器在各个领域的广泛应用,智能化服务已成为这个时代温控系统发展的重要趋势。温度控制在生活中还有在工业领域中涉及的非常多,像室内、供暖机构、天气预告等这些场所的温度控制。像之前传统的温度控制都是手动的,操作起来很麻烦。本文系统设计目的,首先它得是实现一种精准度高的系统来采集的温度控制系统,其应用必须得以普及,功能强大。它的实用性要强,方便使用者携带,这是一款实用同时又物美价廉的温度控制系统。尤其是最近这几年的情况,温度控制系统现在都被用到人们的生活很多层面,但温度控制一直是一个还没有被完全开发的领域,但同时它又与人类生活有着密不可分的关系。
嵌入式系统把应用作为中心,用计算机科学技术作为基本,并且软硬件这方面它是可以裁剪的,为了适应这一应用,对于功能性、可靠性、成本、数量、消耗量等方面都有非常严格的要求。嵌入式控制系统已应用在多个领域,在工业制造、军事、医疗等方面,嵌入式控制系统是不可缺少的一部分,影响着社会生活。嵌入式控制系统是多个行业应用结合的产物,正是因为这样,促使它成为一个资金密集,高度分散的综合体系。如果在技术上停滞不前,不懂得创新,那么也是会被淘汰的。嵌入式控制系统秉承用户至上的宗旨,必须根据用户在软件程序、系统功能、成本等多方面的需求,确定软硬件的制定。它在未来的发展趋势将会是可以建立一个通用的软硬件系统,然后开发一个适合他的系统,就可以更方便用户使用了。
以往那种刻板的温度采集系统因为他存在着响应不快、精准度不高、靠谱性不强、效率也不高、操作还麻烦等一系列问题,早就不适合现代化工业的快速的发展。由于嵌入式技术的高速发展,设计速度快、效率高、成本低、可靠性高、操作非常便利的温度采集系统成为目前很重要的发展趋势。因此STM32的温度采集系统就成为了解决以往刻板温度采集系统中的种种问题的优先选择方案。
本毕业论文是基于STM32单片机温度采集的设计。基于STM32单片机的智能温度检测设计,通过外部温度传感器实现温度的实时采集。它能满足不同情况下温度采集的需要。它主要需要实现以下功能:首先,温度传感器测量当前温度,将测量值传送到单片机上,并在液晶显示器上显示当前温度。第二点通过设置温度上限和下限来比较当前温度。如果当前温度不在温度上限和下限内,警报将发出警报。让用户及时发现温度的变化。
根据实际应用情况,选择合适的温度传感器,设计相应的传感器驱动电路和传感器信号调理电路。
控制核心采用STM32F103C8T6主控芯片,设计了硬件的功能模块和外围电路,主要包括:温度传感器、液晶显示、按键、报警功能和声光报警单元模块等。

1 整体系统设计

1.1 系统方案设计
第一个方案:需要使用模拟分立的元件,例如电容、电感、晶体管等非线性元件,观察采集的温度和显示的具体效果,这个方案的设计十分的好理解,特别简单,并且它的操作也不是特别的难,还有个好处,就是它的价格是非常合适的。缺点就是如果用分立的元件,会造成它的分散性特别的大,对集成数字化是十分不好,而且最后测量之后,会存在很大的误差的,所以这个方案的可行性不太好,尽量不用。
第二个方案:选用PC机作为本次设计的主控机。利用温度传感器来选用温度的信号,通过信号放大器之后,再送到A/D转换芯片中,然后再一次的经过拥有单片机的检测系统来进行下一步的解析和处理,然后再利用通信线路到PC机的上面,在PC的上面也可以通过对温度信号来进行很多的解析和处理的方式,所以这个方案简单来说还是不错的。
在这里插入图片描述

图1.1方案二的框图
如上图所述,如果用这个方案的话,那么这个技术相对来讲是比较成熟的,发展的时间也是最长的,而且将温度信息上传到PC机,然后再利用PC机的数据处理能力和良好的辅助软件,就可以从多角度、多需求的方向来分析处理这个温度数据,但是这个在工业上基本上是不会运用的。因为PC机的价格的因素,所以这个方案还是不合适的。
第三个方案:现在有很多客观需求来促进STM32单片机的设计的整体改进。因为造价高的问题,还有就是物理的尺寸方面是受到很多的限制的,所以这个嵌入式系统的存储器的内存和储存量是有限的。
另外,嵌入式的系统它的价格一般来讲是挺敏感的,所以使用速度通常情况下不是很高,成本相对来说也不是很高的。从现在的情况看系统的关键问题并不是在于简单的处理器的速度,而是有效率的系统性能和功能。
根据上面写的这三种方案的一些简单的介绍,本次毕业论文系统设计选择第三个方案,这次的毕业设计是用STM32的嵌入式数据解析和显示装置。这一次的系统设计选用的是“STM32核心控制模块+温度采集模块”来完成所需要的功能的。
1.2 系统工作原理
通过了解设计需求方面确定了系统的总体方案,这个整体的系统其实是根据使用单片机、温度的传感器、显示屏的模块、报警器还有按键等五个部分来组成的。具体的这个系统的功能原理请看下面的图1.2。使用者最开始得先将这个温度的报警的值输入到程序里,也就是温度的上下限。温度传感器检测当前的温度传递给单片机,当前温度超过所设置的温度上下限时,单片机驱动蜂鸣器使它工作从而发出警报声。
在这里插入图片描述
图1.2系统框图

2 硬件设计

2.1 STM32单片机
2.1.1 STM32单片机介绍
STM32这种微型的控制器,它是这个整体温度控制系统的一个核心的部分。因为对温度控制器具有较高的要求,如果执行的速度越快的话,控制的准确度就会越高,稳定性也很高它的灵敏度也会很高,因此必须得选出一种既便宜又实惠而且性能也高的一个单片机。ARM Cortex-M3的架构是可以体现出STM32增强型的单片机高性能、低功耗和经济实用的要求。并且它们选择的是THUMB-2指令集,这个指令带来的优势和效果可以变得更强。
STM32单片机选择2.0~3.6V的供电电压来使用。这个可以在-40℃~85℃的温度环境下工作。最高的工作频率是72MHz。它的引脚如下图2.1。
在这里插入图片描述

图2.1 STM32F103引脚分布图
2.1.2 STM32内部电路图
本次设计中最主要的是STM32单片机的应用,它本身自带很多功能,工作速度也快。其中它本身自带了一个稳压电路输入5V电源,然后输出为3.3V。原理图如下图2.2。
在这里插入图片描述
图2.2 稳压电路
(1)时钟电路
本设计选择的STM32单片机外接时钟电路,这样系统运作的话会有稳定的秩序。需要配置外部高速时钟和外部低速时钟。如下图2.3。
在这里插入图片描述
图2.3 外部高速时钟与外部低速时钟

(2)复位电路
复位电路是每一个电路都会带的功能,本设计选用的STM32内部带有复位电路,但是焊接的实物却没有用到复位电路,作为一款温度测量仪器,测量范围大不适合用复位电路进行复位,所以没有在硬件上加复位开关,复位电路如下图2.4。
在这里插入图片描述
图2.4 复位电路
2.2 LCD1602液晶显示器
2.2.1 LCD1602介绍
显示器其中的一个部分就是用于显示温度还有温度的上下限。在我们日常生活中,一般来讲生活中运用LCD显示器是比较多的。液晶显示模块经常被用作很多的子产品的通用器件,比如,像手机屏幕,液晶电视,电子钟还有很多家用的电子产品,主要显示数字、特殊的字符和图形。在这样的一个设计中,液晶显示器是用作输出设备的。
在单个的芯片系统中如果用液晶显示器来用做输出的话它是得具有以下几个优势:
第一个是高显示质量。LCD显示器在各点接收信号后,为了维持一种颜色和亮度,会连续发光。这种情况下,和显像管的显示器不同。阴极射线管的显示器总是更新新的亮点。因此,液晶显示器的画质高也不会闪烁。
第二个就是数字型接口液晶显示器全部都是数字信号,还有一点就是它在和单片机的系统的接口是非常的简便和靠谱的,同时操作也是十分的便利的。
第三个优势就是它的体积非常小、重量也是非常轻的,液晶显示器的目的是通过显示器上的电极来控制并显示液晶分子的状态,重量比相同显示面积的传统显示器轻得多。
第四个优势就是低功耗:一般情况下,液晶显示器的主要功能消耗在其内部的电极和驱动器的IC上,所以耗电比其他显示器少。
LCD1602主要技术参数:
显示容量:16×2个字符;
芯片工作电压:4.5—5.5V;
工作电流:2.0mA(5.0V);
模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm。
它的原理图如图2.5所示
在这里插入图片描述
图2.5 LCD1602原理图
2.2.2 1602各管脚功能
一般来说,1602字符液晶显示器是一种14引脚或16引脚的液晶显示器。本文选用16针引脚液晶显示器。另外两条线是背光电源线VCC和地线GND,控制原理与14引脚LCD相同,其中:

表2.1 1602各管脚功能
引脚 符号 功能说明
1 VSS 一般接地
2 VDD 接电源(+5V)
3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4 RS RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5 R/W R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
6 E E(或EN)端为使能(enable)端,下降沿使能。
7 DB0 底4位三态、 双向数据总线 0位(最低位)
8 DB1 底4位三态、 双向数据总线 1位
9 DB2 底4位三态、 双向数据总线 2位
10 DB3 底4位三态、 双向数据总线 3位
11 DB4 高4位三态、 双向数据总线 4位
12 DB5 高4位三态、 双向数据总线 5位
13 DB6 高4位三态、 双向数据总线 6位
14 DB7 高4位三态、 双向数据总线 7位(最高位)(也是busy flag)
15 BLA 背光电源是正极
16 BLK 背光电源是负极

表2.2 寄存器选择控制表
RS R/W 操作说明
0 0 写入指令寄存器(清除屏等)
0 1 读busy flag(DB7),以及读取位址计数器(DB0~DB6)值
1 0 写入数据寄存器(显示各字型等)
1 1 从数据寄存器读取数据
2.3 DS18B20温度传感器
2.3.1 DS18B20简介
DS18B20是达拉斯公司生产研发的,拥有单线数字温度的一个传感器,是拥有三个脚TO-92小的空间的一个封闭东西;温度的测量范围在零下五十五摄氏度到零上一百二十五摄氏度,可以编成八到十二位的A/D互换准确度,DS18B20的测量精度是正负0.5摄氏度,被测的温度可以用符号十六位数字来表示输出。原理图及引脚说明如图2.6,功能如表2.3。
在这里插入图片描述

图2.6 DS18B20原理图及引脚说明
表2.3 DS18B20引脚说明
序号 名称 引脚功能
1 GND 接地
2 DQ 数据输入/输出引脚:开漏单总线接口引脚;当被用到寄生电源下,也可向器件提供电源
3 VDD 可选择的VDD引脚,当工作于寄生电源时,此引脚必须接地
2.3.2 DS18B20控制字和读写时序说明
(1)初始化
总线上单线的所有操作都从原始时间开始,初始化如下。当通过检测到单线上升沿时,通常会延迟15-60us,并通过拉下一段总线达到其响应脉冲。主机接收到响应脉冲后,表示有一个单线设备在线。
(2)ROM操作命令
如果总线主机要是发现有对应的脉冲,就能发起某种操作的口令。一般会有五个ROM的操作口令。说明看下表2.4。

表2.4 ROM操作命令与说明
命令类型 命令字节 功能说明
Read rom 33H 此命令读取激光ROM的64位,只能用于总线上单个DS18B20的情况下,多挂则会发生冲突
Match rom(匹配rom) 55H 此命令后跟64位ROM序列号,寻址多挂总线上的DS18B20。只有序列号完全匹配的DS18B20才能响应后面的内存操作命令,其他不匹配的将等待复位脉冲。此命令可用于单挂或多挂接总线。
Skip rom(跳过rom) CCH 此命令用于单挂接总线系统时,可以无需提供64位ROM序列号皆可运行内存操作命令。如果总线上挂多挂DS18B20,并且在此命令后执行读命令,将会发生数据冲突。
Scarch rom(搜索rom) F0H 主机调用此命令,通过一个排除法过程,可以识别出总线上所有器件的ROM序列号。
Alarm rom(警报rom) ECH 此命令流程图和scarch rom命令相同,但是DS18B20只有在最近的一次温度测量时满足了告警触发条件,才会响应此命令。
(3)内存操作命令
ROM操作的口令在被成功操作之后,它就可以通过内存的操作口令。主机是可以提供六个内存的操作口令的,比如表2.5。
(4)数据处理
DS18B20是有严格要求的,在时间和顺序方面必须得保证数字的完整度。在这个单线上,会存在一些复位冲、应答脉冲、写“1”、写“0”、读“1”、读“0”只有这几种样式的信号类型。所有的一切全部都是从这个主机里操作的。
所有写时隙必须大于60μs(即高下拉后大于60μs),所有写时隙之间的恢复时间必须短至1us。DS18B20在DQ线慢慢变低后,对多个数据端口采用了DQ,假如说它是一个高电平的话,那就得写“1”了,那要是低电平的话,那就得写“0”了。针对这个主机所产生的写“1”的这个情况,这个数据线就必须得先被拉低之后,这样才能释放出来的,然后写时间缝隙之后的几个数字后,可以同意DQ线拉到这个高的电平。然而一般情况下,主机如果写了“0”时隙的情况下,DQ线就得被拉到低电平而且最少保持低电平60us。
表2.5 内存操作命令与说明
命令类型 命令字节 功能说明
Write Scratchpad(写暂存器) 4EH 此命令写暂存器中地址2~4的3个字节(TH、TL和配置寄存器)在发起复位脉冲之前,3个字节都必须要写。
Rrad Scratchpad(读暂存器) BEH 此命令读取暂存器内容,从字节0~一直读取到字节8。主机可以随时发起复位脉冲以停止此操作。
Copy Scratchpad(复制暂存器) 48H 此命令将暂存器中的内容复制进E2RAM,以便将温度告警触发字节存入非易失内存。如果在此命令后产生读时隙,那么只要器件在进行复制就会输出0,复制完成后,再输出1。
Convenrt T(温度转换) 44H 此命令开始温度转换操作。如果在此命令后主机产生读时隙,那么只要器件在进行温度转换就会输出0,转换完成后在输出1。
Recall E2(重调E2存储器) B8H 将存储在E2RAM中的温度告警触发值和配置寄存器值重新拷贝到暂存器中,此重调操作在DS18B20加电时自动产生。
Read Power Supply(读供电方式) B4H 主机发起此命令后每个读数据时隙内,DS1820发信号通知它的供电方式:0为寄生电源方式,1为外部供电方式。
所有读写时隙至少需要60μs,每个独立时隙至少需要1μs的修复时间。写入定时,主机会将总线15μs内的值拉低至完全输出,并将“1”写入DS18B20。如果主机在拔下总线后能保持60μs的低电平,那么就会往单总线写“0”。DS18B20在主机上会发出读数据的命令,但是之后就得立刻产生读写时隙,这样的话可以方便DS18B20能够传的出好的数据。
这里需要注意是,与DS18B20配套使用的是一个频率为11.0592MHz的一个单片机晶振,这种情况下它是在一定意义上决定了这个指令工作的时间,在软件设计这方面它会根据发出的口令来制作时间编写还有很多其他的延时程序。
2.4 温度采集电路与单片机的连接
这次毕业成果用的是DS18B20温度传感器来完成环境的温度采集和变换,它与单片机的连接图如图2.9所示。
在这里插入图片描述

图2.7 单片机与DS18B20连接图
STM32F103C8T6的PB15管脚与DS18B20的I/O管脚相连,作为这种数据读入和写出。电阻的R11是一个在DS18B20的I/O口的上拉的一个电阻,在读时隙结束时,I/O脚依靠R4上拉电阻拉回高电平。
如果想用DS18B20来操作温度之间的相互转换,那么I/O线就必须证明自己在温度的相互转换之间供给一个够用的能量,因为DS18B20在温度互换之间所工作的电流是必须得达到1毫安的,电路则是用的5V的电源,根据公式I=U/R=5/4700=1.06mA,根据这个原理,选用小一点的电阻,只要保证DS18B20的工作电流就可以了,但是为了让信号稳定下来,通常在电路设计方面就加一个拉电阻。我选用4.7K。

3 软件设计

系统的单片机代码使用的C语言编写,以Keil uVision5软件为开发环境。这样的话这个系统的软件就会实现应该有的功能:
(1)通过LCD来显示出这个温度的数值;
(2)利用对温度的数值和报警的设置数值的了解,把两者对比了一下,如果超过温度上下限,这个警报器就会响。
3.1 总程序流程图
在这里插入图片描述

图3.1主程序流程图
由上面程序图就可以看出,接通电源后LCD1602的液晶显示器初始化和系统的最原始化,从而使STM32进入一个相对应的状态和模式。采集当前环境的温度,显示出温度数值,通过按键设置温度的上下限,如果当前温度没超出设置的温度上下限时程序运行结束,如果温度超出温度的上下限,蜂鸣器就会报警。
3.2 液晶显示流程
液晶显示采用了LCD1602液晶,这是种常用的液晶,驱动起来方便,使用简单,显示数据的整体流程无非是,首先液晶初始化,然后送入要在哪一个地址显示的地址数据,再送入要显示的数据即可,但是要注意的是,1602液晶是字符屏,送入的显示的数据必须是字符。显示流程图3.2如下:
在这里插入图片描述
图3.2液晶显示流程图

3.3 按键处理流程
在这里插入图片描述

图3.3 按键处理流程图

4 系统调试

4.1 系统硬件调试
本设计基于电路图理论,根据电路图制作硬件电路。硬件电路的调试主要包括以下几个方面:检查是否有漏焊、误焊、短路、断路等,启动后检查电路是否能正常工作。看有没有漏焊,同时要看需要连接的线路有没有都连上,特别要注意电源线和地线的连接。
程序下载成功后,给板子通电之后发现温度在自己设置的阈值之外,但是蜂鸣器没有报警,检查后发现蜂鸣器焊点没有焊接好,经过处理后蜂鸣器正常工作。
当温度超过最大值时如图4.1所示:
在这里插入图片描述
图4.1 温度超过最大值

当温度低于最小值的时如图4.2所示:
在这里插入图片描述
图4.2 温度低于最小值
4.2 系统软件调试
本设计是基于单片机控制,利用单片机的主程序完成对温度的采集,使用的是STM32系列,这个系列的单片机应用非常广泛,编译语言以C语言为主。本次设计以Keil μVision 5软件进行编写。
Keil μVision 5使用的基本方法,首先本软件上没有STM32单片机的数据,所以我在Keil官网上下载了我所需要的STM32F1xx_DFP.2.3.0直接加载到我的软件上。其次需要建立一个新的项目,选择使我所选择的单片机类型,可以编写一个新的文件,编写完程序后进行编译,编译就是检测程序是否有错误和警告,警告不会影响程序的运行。在编译程序之后,生成.HEX文件。程序写入控制芯片STM32F103C8T6后,接通电源,电源指示灯亮,系统启动。当显示器出现温度时,说明系统开始工作。

结 论

通过以上分析本篇论文是针对提高温度采集的效率,节省时间并更精确的反应出当前温度和超出阈值范围报警的采集系统。
本论文设计的重点在于STM32单片机和DS18B20温度传感器的系统应用。其主要对单片机的最小系统进行相应的设计和选择适合的温度传感器从而使得温度采集系统更为完备,一般来说,温度传感器收集到当前温度数据,通过数据线传递给单片机,以单片机的外部中断形式获取输出信号,并用显示器显示出当前温度。一方面能够展现出当前的温度另一方面当温度超过阈值系统就会报警。
在硬件调试方面,由于采用的STM32单片机内部自带很多工作元件。外围元件不是很多,所以调试不太难。对各电子元件也无特别要求。只需要多次反复尝试,避免出错就可以。
在软件调试时,发现一些程序只有满足条件才被执行,所以令单步调试难度加大,这时选用程序调试汇总的断点设置,使调试能完整进行。再者碰到编写时忘记切换输入法,有中文标点符号程序编译出现错误,一一改进后完成调试。
本次设计经过了硬件和软件的测试,各部分均达到了预期功能:实现了温度采集,以及警示作用。该系统操作简单,可靠性高,灵敏度高等优点。应用本设计产品,可提高温度采集的效率,使我们的生活变得更加的方便。

参考文献

[1] 康华光,电子技术基础模拟部分第四版[M]. 北京:高等教育出版社,1999.6
[2] 阎石,数字电子技术基础第四版[M]. 北京:高等教育出版社,1999.6
[3]王福瑞等,单片微机测控系统设计大全[M]. 北京航空航天大学出版社,1998:331-337
[4]宁改娣,杨拴科. DSP控制器原理及应用[M]. 科学出版社,2002
[5] 周立功等,ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.1
[7] 唐清善,Protel DXP高级实例教程[M].中国水利水电出版社,2004.4.
[8] 罗浩等,一种新的基于ARM的数据采集系统设计[J]. 信阳师范学院学报(自然科学版),2006.4
[9] 秦伟等,基于ARM 处理器的数据采集系统的设计[J]. 自动化技术与应用,2006年第10 期
[10] 杜春雷,ARM体系结构与编程. 清华大学出版社,2003
[12] 李宁,基于MDK的STM32处理器开发应用[M]. 北京航空航天大学出版社,2008
[13]刘黎明等,单片机与嵌入式系统应用[J]. 英文刊名MICROCON TROLLER&EMBEDDED SYSTEM,2002:7
[14]王田苗,嵌入式系统设计与实例开发[M]. 北京:清华大学出版社,2003
[15]杜春雷,ARM体系结构与编程[M]. 北京:清华大学出版社,2003
[16]王中训,李树起.基于水温控制的数据采集系统[M]. 煤矿机械出版社,2013
[17]陈至坤,李蓓. 温度检测技术及相关仪器的发展现状[J]. 河北理工大学学报(自然科学版),2011
[18]乐嘉华温度检测技术的现状和未来[J]. 炼油化工自动化,1995
[19]陈俊梅,卢莉蓉,周晋阳. 一种多用智能温度测量仪的设计与实现[J]. 现代电子技术,2010
[20]刘智勇,传感器产业发展现状及前景分析[J]. 黑龙江科技信息,2013
[21]中国行业研究网,我国温度传感器市场发展现状解析[R]. 深圳,2010
[22]王中训李树起等,基于水温控制的数据采集系统[M]. 煤矿机械出版社,2013
[23]章诵兰物联网高速发展国内传感器迎来黄金发展期[J]. 自动化与仪表,2012
[24]陆广振,温度传感器市场前景可观[J]. 仪器制造,1983
[25]中国电子元件行业协会敏感元器件与传感器分会物联网与传感器产业高峰论坛暨2012年年会会议邀请函[J]. 传感器与微系统,2012:6
[26]刘忠玉,国外温度传感器发展现状和市场预测[J]. 传感器技术,1989

附录1 原理图

在这里插入图片描述

附录2 源程序清单
#include “delay.h”
#include “key.h”
#include “sys.h”
#include “usart.h”
#include “LCD1602.h”
#include “time.h”
#include “beep.h”
#include “led.h”
#include “delay.h”
#include “stmflash.h”
#include “ds18b20.h”

#define FLASH_SAVE_ADDR 0X0800FF00 //设置FLASH 保存地址(必须为偶数,且其值要大于本代码所占用FLASH的大小+0X08000000)
u16 fls[2];
u8 k;
u8 HL[20]={"TH: TL: "};
int TH,TL;
u8 kz=0;
u8 s0;
u8 beep;
u8 t=0;
int temperature;
u8 k=0;
void key()
{
k=KEY_Scan(1);
if(k == KEY0_PRES)
kz++;
//湿度上限********
if(k == KEY1_PRES&&kz == 1 )
{
TH++;
if(TH>125)
TH–;
}
if(k == KEY2_PRES&&kz == 1)
{
TH–;
if(TH<=TL)
TH++;
}
//湿度下限********
if(k == KEY1_PRES&&kz == 2 )
{
TL++;
if(TL>=TH)
TL–;
}
if(k == KEY2_PRES&&kz == 2)
{
TL–;
if(TL<-55)
TL++;
}
if(kz>2)
{
kz=0;
fls[0]=TH;
fls[1]=TL;
STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)fls,2);
}
}
void show()
{
u8 str[16]={“Temper:”};
if(temperature>=0)
{
if((temperature/1000%10)>0)
str[7]=temperature/1000%10+0x30;
else
str[7]=’ ‘;
if((temperature/100%10)>=0&&(temperature/1000%10)>0)
str[8]=temperature/100%10+0x30;
else if((temperature/100%10)>0&&(temperature/1000%10)<=0)
str[8]=temperature/100%10+0x30;
else
str[8]=’ ‘;
if((temperature/10%10)>=0)
str[9]=temperature/10%10+0x30;
str[10]=’.‘;
str[11]=temperature%10+0x30;
str[12]=0xdf;
str[13]=‘C’;
str[14]=’ ‘;
str[15]=’ ‘;
}
else if((temperature*-1)>=100)
{
str[7]=’-‘;
if((temperature*-1)/100%10>0)
str[8]=temperature*-1/100%10+0x30;
else
str[8]=’ ‘;
if(((temperature*-1)/10%10)>=0&&((temperature*-1)/100%10>0))
str[9]=temperature*-1/10%10+0x30;
else if(((temperature*-1)/10%10)>0&&(temperature*-1)/100%10<0)
str[9]=temperature*-1/10%10+0x30;
else
str[9]=’ ‘;
str[9]=temperature/10%10+0x30;
str[10]=’.‘;
str[11]=temperature%10+0x30;
str[12]=0xdf;
str[13]=‘C’;
str[14]=’ ‘;
str[15]=’ ‘;
}
else
{
str[7]=’ ‘;
str[8]=’-‘;
str[9]=temperature*-1/10%10+0x30;
str[10]=’.‘;
str[11]=temperature%10+0x30;
str[12]=0xdf;
str[13]=‘C’;
str[14]=’ ‘;
str[15]=’ ‘;
}
LCD1602_Show_Str(0,0,str);
delay_ms(10);
if(kz==1&&s0)
{
HL[3]=’ ‘;
HL[4]=’ ‘;
HL[5]=’ ‘;
}
else
{
if(TH>=0)
{
if((TH/100%10)>0)
HL[3]=TH/100%10+0x30;
else
HL[3]=’ ‘;
if((TH/10%10)>=0&&(TH/100%10)>0)
HL[4]=TH/10%10+0x30;
else if((TH/10%10)>0)
HL[4]=TH/10%10+0x30;
else
HL[4]=’ ';
if((TH%10)>=0)
HL[5]=TH%10+0x30;
}

		if(TH<0)
		{
			HL[3]='-';
			if(((TH*-1)/10%10)>0)
				HL[4]=0x30+(TH*-1)/10%10;
			else
				HL[4]=' ';
			if(((TH*-1)/10%10)>=0&&((TH*-1)/10%10)>0)
				HL[5]=0x30+(TH*-1)%10;
			else
				HL[5]=0x30+(TH*-1)%10;  
		}
	}
	if(kz==2&&s0)
	{
		HL[11]=' ';
		HL[12]=' ';
		HL[13]=' ';
	} 
	else
	{
		if(TL>=0)
		{
			if((TL/100%10)>0)
				HL[11]=TL/100%10+0x30;
			else
				HL[11]=' '; 
			if((TL/10%10)>=0&&(TL/100%10)>0)
				HL[12]=TL/10%10+0x30;
			else if((TL/10%10)>0)
				HL[12]=TL/10%10+0x30;
			else
				HL[12]=' ';
			if((TH%10)>=0)
				HL[13]=TL%10+0x30;
		}
		
		if(TL<0)
		{
			HL[11]='-';
			if(((TL*-1)/10%10)>0)
				HL[12]=0x30+(TL*-1)/10%10;
			else
				HL[12]=' ';
			if(((TL*-1)/10%10)>=0&&((TL*-1)/10%10)>0)
				HL[13]=0x30+(TL*-1)%10;
			else
				HL[13]=0x30+(TL*-1)%10;  
		}
	}
	LCD1602_Show_Str(0,1,HL);
	delay_ms(10);

}

void problem()
{
if(temperature>=TH10||temperature<=TL10) beep=1;
else beep=0;
if(temperature>=TH10) LED0=0;
else LED0=1;
if(temperature<=TL
10) LED1=0;
else LED1=1;
if(temperature<TH10&&temperature>TL10)
{
LED1=1;
LED0=1;
}

}
int main(void)
{
u16 datatemp[2];
delay_init();
KEY_Init();
BEEP_Init();
LED_Init();
uart_init(9600);
LCD1602_Init();
while(DS18B20_Init()) //DS18B20初始化
{
LCD1602_Show_Str(1,0, “DS18B20 Error”);
delay_ms(200);
}
STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,2);
TH=datatemp[0];
TL=datatemp[1];
if(TH>125&&TL<-55&&TH<=TL)
{
TH=40;
TL=10;
}
do
{
temperature=DS18B20_Get_Temp();
}while(temperature850);
while(1)
{
if(t%5
0) //每50ms读取一次
{
if(kz>0)
{
if(s01) s0=0;
else s0=1;
}
}
if(beep
1) BEEP1=!BEEP1;
else BEEP1=1;
if(t%10==0) //每100ms读取一次
{
temperature=DS18B20_Get_Temp();
t=0;
}
delay_ms(10);
t++;
key();
show();
problem();

}

}

致 谢

在这次毕业设计中,通过这一阶段的努力,我的毕业设计终于完成了,这意味着我的大学生活即将结束。在大学阶段,我在学习上和思想上都受益匪浅,这除了自身的努力外,与李作纪老师和陈乃周老师的关心、支持和教导是分不开的。
在本论文的完成过程中,我的两位老师倾注了大量的心血,从选题到开题报告,从写作提纲到一遍又一遍地指出每稿中的具体问题,严格把关,循循善诱,在此我衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友。
写作毕业论文是一次在系统学习的过程,毕业论文的完成,同样也意味着新的学习生活的开始,我将铭记我曾是一名沈城学子,在今后的工作中把沈城的优良传统发扬光大。
感谢各位老师的批评指导。

  • 21
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无线温度采集系统是一种集成了无线传输技术和温度传感器的采集与传输系统。本文主要介绍基于STM32的无线温度采集系统设计。 1.硬件设计 (1)温度传感器 温度传感器采用了DS18B20数字温度传感器,它能够准确地测量环境温度,并通过单线总线协议与控制器通讯,具有高精度、长寿命、稳定性好等特点。 (2)STM32微控制器 STM32是意法半导体推出的32位ARM Cortex-M3内核微控制器系列产品,具有高性能、低功耗、多功能以及丰富的外设等优点,被广泛应用于工业自动化、汽车电子、安防等领域。 (3)射频模块 本设计采用了NRF24L01+射频模块,它能够在2.4GHz频段进行无线通信,并且具有多通道、高速率、低功耗等特点,适用于短距离无线通信。 (4)LCD屏幕 LCD屏幕是系统的人机交互界面,能够显示环境温度、接收数据状态等信息,方便用户观察。 2.软件设计 软件设计方面,通过采用Keil MDK-ARM集成开发环境,结合STM32外设库、射频库和LCD屏幕库,实现了无线采集和传输功能。具体流程为:温度传感器采集环境温度并发送数据到STM32STM32通过射频模块将数据传输到接收端,接收端将数据解码并显示到LCD屏幕上,实现了温度采集和外部通信。 总之,基于STM32的无线温度采集系统设计,能够满足温度采集、无线传输和人机交互的需求,为工业自动化、智能建筑、环境监测等领域的应用提供了重要的技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值