基于单片机的数字温度计设计

目 录

摘 要 I
Abstract II
引 言 1
1 整体方案设计 3
1.1 主控芯片类型选择 3
1.2 测温电路选择 3
1.3 系统总体方案 4
2 系统的硬件电路设计 5
2.1 单片机系统设计 5
2.2 显示模块设计 8
2.3 温度读取电路的设计 10
3 系统软件设计 13
3.1 软件开发环境的介绍 13
3.2 系统重要函数 13
4 系统调试 17
4.1 系统硬件测试 17
4.2 系统软件测试 17
结 论 19
参考文献 20
附录1 总体原理图设计 22
附录2 源程序清单 23
致 谢 26

摘 要

数字温度计系统是一种快速直观的检测环境温度的设备,用于快速生成生活中对周围环境温度检测的设备,它也是快速提高各个测温效率的必要设备之一。为了满足生活中对数字温度计的这一需求,本文设计了一款精度高、可靠性高、操作简便的数字温度计系统。
本文利用STM32单片机控制DS18B20感温芯片,结合8段数码管、独立按键模块完成数字温度计功能,该系统不仅可以实时直观检测当前环境温度而且提供设置温度上限和下限,在超过温度上限或者降低到温度下限以后,报警灯开始闪烁。
通过对本系统的测试,结果表明本设计很好地实现了数字测温显示功能和超限报警功能。成熟的DS18B20模块增加了系统的稳定性,它不需经过模拟信号与数字信号的转换,只需要三线就可以完成温度的采集,简化了外围电路。高效的32位单片机STM32增加该系统的可扩展性。该系统不仅可以单独应用于生活中测量温度,还可以和其他模块连接起来组成一个全新的、更加高端的系统,例如恒温大棚温控系统,温度检测联动报警系统等。

关键词:数字温度计;温度传感器DS18B20;STM32单片机

Abstract

Digital thermometer system is a kind of rapid and intuitive equipment to detect the ambient temperature, which is used to quickly generate the equipment to detect the ambient temperature in life, and it is also one of the necessary equipment to rapidly improve the efficiency of each temperature measurement. In order to meet the demand of digital thermometer, this paper designs a digital thermometer system with high precision, high reliability and easy operation.
For the most part, a single STM32 chip can control the DS18B20 thermometer, which is combined with eight digital tubes and individual modules. The system can now not only measure the temperature of the surrounding air in real time, but also act as a threshold and a lower temperature limit. If you hit a temperature threshold or drop, the blue light starts flashing.
Through the test of this system, the result shows that this design has realized the digital temperature display function and the over-limit alarm function well. Mature DS18B20 module increases the stability of the system, it does not need to go through the analog signal and digital signal conversion, only need three lines to complete the temperature acquisition, simplifying the peripheral circuit. Efficient 32-bit SCM Stm32 increases the scalability of the system. The system can not only be used to measure the temperature in life, but also be connected with other modules to form a new and more high-end system, such as thermostatic greenhouse temperature control system, temperature detection linkage alarm system and so on.

Keywords: Digital thermometer; Temperature sensor DS18B20; STM32 Single Chip Microcomputer

引 言

如今快速发展的科技给我们生活带来了翻天覆地的变化,其中单片机技术更是在我们生活中起到了无足轻重的地位,逐渐的崭露头角发展特别的快。它具有高可靠性低功耗的优势,这就奠定了它在各种消费类产品、工业控制系统、通信终端中的地位。
随着人们提高生活水平,单片机控制无疑是人们追求的目标,数字温度计就是一个典型的例子,但人们对于现代工作、科研、生活的要求越来越高,需要先从微控制器技术,数字化控制,智能化控制方向发展。温度是日常生活、工业、医学、环境保护、化学工业和石油中最常用的物理量之一。测量温度的基本方法是用温度计直接读出温度。最常见的温度测量工具是各种各样的温度计,例如:水银玻璃温度计、酒精温度计、热电偶温度计或耐热温度计。
这些年随着数字电路的发展,以前只能靠人纯机械的读取温度数据逐渐转变到数字电路处理显示温度,提高了精度和准确度,这不仅使生活更加便利同时也使工业控制领域注入了新的活力。越来越多的新技术和新产品步入了这个领域,并且朝着更加精准和高度集成方向发展。也使得数字温度计在工业控制领域是种不可或缺的设备之一。
温度计用途广泛,数量众多,在各类传感器中居首位。其发展大体经过三个阶段:(1)传统的离散式温度计(含干扰素)(2)模拟集成温度计/控制器。集成传感器是利用硅半导体集成技术制成的,又称单面集成温度计。(3)智能温度计。那是微电子技术,计算机技术和自动测量技术的结晶。智能型温度传感器包括温度传感器,A/D传感器,信号处理装置,存储器(或寄存器)和接口电路。本课题将针对这一问题设计一种新型智能电子温度计,它在稳定性和响应时间上比传统水银温度计有显著优势,精度要求也可与传统水银温度计媲美。
在各种各样的传感器中,DS18B20系列温度芯片在市场上获得了极大的普及率,属于新一代适配微处理器的改进型的温度传感器,与传统的热敏电阻相比,他能够直接读取被测温度,减少板载模数信号转换,一般来说数字处理好过于模拟处理。主要的原因如下:首先,数字处理具有低成本,小型化和稳健性的特征。其次模拟信号容易被干扰,设计电路也比较麻烦,最后,数字温度传感器利于大众普及。
因此,本文提出了一种通过单片机系统采集温度显示的系统,采取STM32F103单片机作为主控制器,DS18B20作为测温芯片完成系统的温度采集功能。本篇文章共分为四个章节,具体内容如下:
第一章阐述了系统的设计目标和功能模块,说明了系统的方案设计,做出了系统的功能框图,重点介绍了选取单片机型号以及选择最适合的测温模块、8段数码管。
第二章介绍了数字温度计系统的总体硬件设计,包含各模块的设计原理图和释义,本章重点介绍了测温芯片的电路设计。
第三章讲述了系统的软件设计;介绍了芯片与单片机之间的通讯协议,简要介绍了系统的开发环境以及重要函数和系统流程图。
第四章是硬件调试部分,包括了系统的软硬件测试,并就本设计出现的问题,做了简单的论述以及解决办法。

1 整体方案设计

1.1 主控芯片类型选择
数字温度计系统可以使用一个主控制器来完成,在各项资料的收集与对比之后总结出本系统可供选择的控制方案有单片机控制和DSP控制,具体方案如下:
方案一:系统可以使用单片机作为主控芯片,单片机是一种虽然小但很完整的芯片,应用在集成电路中,也可以称之为微型计算机系统。它包括RAM、CPU、ROM、中断控制器,定时器和I/O模块,更先进的单片机还包括PWM、SPI、AD、IIC等电路[1]。在工业控制中,单片机已经应用在多个场景,以其强大的系统处理能力和稳定性著称。
方案二:系统能够采用DSP作为主控芯片,DSP即数字信号处理器,是一种研究用数字对信号进行分析,转换,滤波,检测,调制,解调和高速算法的元件。数字处理器的主要功能是完成各模块之间的通信,主要包括上电自举,键盘读取值,音频编码芯片和LCD屏幕初始化,以及通过LCD屏幕指示数字编解码芯片的运行状态。将音频数字信号存储在闪存中。
综上,DSP的运行速度很快,但其控制算法相对复杂。而单片机的系统的控制方法相对简单,且可靠性高、价格较低、功耗低,虽然单片机相比DSP功能比较简单,但是完全满足本设计需求。本设计考虑到后续的功能扩展,应选取高性能、低成本、低功耗的单片机。单片机系统功能强大,调试简便,可以很方便的组成测温系统。采用单片机作为本设计的控制部分,后续可以基于单片机高性能进行功能性扩展,比如一些恒温大棚温控系统中自动送风大型无刷电机精准控制驱动,工业节点温度检测回传系统等等,因此本设计选用单片机作为主控芯片。
1.2 测温电路选择
测温系统即对周围环境的温度进行收集并且传递至单片机,因为环境温度并不是恒定的温度,所以对于测温元件的要求会比较高,本测温电路可供选择的有光敏电阻测温电路和DS18B20测温模块控制方式,具体方案如下:
方案一:可以使用热敏电阻一类的温感效应器件,利用其某个参数会随着温度变化进行变化的特性,如电压或者电流,通过A/D转换后进入单片机处理从而可以得到对应的温度值[2],此方案需要用到A/D转换芯片,需要考虑模拟量在整个系统可靠性以及抗干扰能力,以及单片机运算能力,调试的功能点多,温度误差大等缺点。
方案二:可以使用DS18B20温测芯片,通过单线协议,在规定时序下即可读取温度值,DS18B20为全数字温度转换和输出芯片[3],先进的单总线数据通信。单线协议使外围电路简单只需要一根数据两个电源线即可完成温度的采集。
两种方案都可以读取到当前环境的温度值,但很容易看出方案二的DS18B20温测芯片实现起来更为简单,经过比较,第二种方案测量的温度数值比较稳定,所以选择方案二为测温电路更为合适。
1.3 系统总体方案
数字温度计系统要求实现实时温度的采集显示和监测。按照设计的要求,系统可分为三个部分,即对于温度数据的采集部分、对于温度检测的报警部分、对于数据的显示部分。其中的数据采集是运用单片机通过单线协议读取测温芯片数据,采集数据后通过显示部分对环境进行显示,方便用户读取实时温度,温度检测报警部分通过独立按键设置温度门限值,实时对比环境温度和门限温度,超出门限温度后控制LED闪烁报警。
本设计具体的系统方案如图1.1所示。
在这里插入图片描述

图1.1 系统设计方案

2 系统的硬件电路设计

2.1 单片机系统设计
2.1.1 单片机型号的选择
为了保证系统更好更快的运行,应该选择性价比高,可靠性高,低功耗的控制器。由于温度测量需要掉电保护来防止温度测量时出现太大误差,所以需要使用掉电存储数据的时候可以直接使用单片机内部的存储,因此应选择含有2k字节的EEPROM存储的单片机。基于此有以下方案可供选择:
方案一:使用STC89C51单片机作为主控制器。它采用8051内核,它是一个8位通用CPU外加一些闪存单元组成。用户代码可以通过串行通信口下载到芯片中,成本低是它的一个优势。
方案二:使用MSP430混合信号处理器作为它的主控单元,它是一个16位能量消耗超低的精简指令集[5] 的CPU。一般来说,需要使用电池供电的设备仪表使用该系列的单片机。开发难度一般比较大、价格稍微贵些。
方案三:使用STM32F103C8T6单片机作为主控单元,STM32F103是以低功耗、高性能、高稳定性32位的CONTESTM3内核的单片机,满足高稳定系和后续处理复杂控制的可扩展性。
MSP430单片机价格稍微贵些,且属于16位CPU,STC89C51单片机开发难度较低但是满足不了复杂程度高的处理,STM32系列单片机价格低,性能出众满足设计所需,因此本系统使用STM32系列单片机。
2.1.2 单片机的引脚说明
本设计是以STM32F103C8T6为最小系统作为主控单元,主要引脚说明见表2.1。它将所有的引脚以插针形式全部引出,板载晶振和复位逻辑,采用3.3V供电。该封装在焊接的时候可以采用一个IC插座进行先焊接然后焊接完成后再将芯片插到IC插座上这样做方便更换单片机单元。STM32F103一共具有48只引脚,其中可以用来控制的引脚有32个分别是PA0-15、PB0-15、PC13-15。这些引脚默认都可以当做GPIO来使用,可输入可输出,在这些引脚上同时也提供了第二功能,比如SPI,IIC,AD等等。
在这里插入图片描述

图2.1 STM32封装形式

表2.1 单片机引脚功能

引脚 功能
PA12 普通I/O口,与DS18B20相连
PA11 普通I/O口输入,与按键相连
PA10 普通I/O口,与DS18B20相连
PA9 普通I/O口输出,与LED相连
PA8 普通I/O口,与ISD4004相连
PB13 IPU(上拉输入口),上拉输入
PB12 OD(开漏输出口),开漏输出
2.1.3 单片机的最小系统
一个芯片的最小系统主要包括电源电路、晶振电路、复位电路和调试电路。
本设计中STM32单片机的工作电压在3.3V可以正常工作。电源部分使用的是5V电源适配器,通过一个mini USB口供给最小系统使用。
在晶振电路中使用了两个无源晶振,8MHZ晶振是给HSE用,主时钟,32.768KHZ晶振是外部低频晶振,用于计时或者系统在待机低功耗时使用。两个晶振通过输入端两个负载电容进入单片机,如图2.2。
在这里插入图片描述

图2.2 晶振电路
复位电路分为手动按键复位和上电自动复位。如图2.3所示,电容器C2两端的电压在上电时不会快速变化。此时,电容器的负端子连接到RST,并且电压全部施加到电阻器R2,RESET输入高电平,芯片复位。由于之后3.3V直流电源对电容供电,导致电阻两端电压不断降低,直到变为0的时候芯片开始照常工作。有一个与电容器C2并联的复位按钮,当它没有被按下的时候,系统完成上电复位。在系统照常工作后,可以通过按钮使RST引脚变为高电平,完成手动复位。
在这里插入图片描述

图2.3复位电路
调试电路采用SWD模式,其中只使用4根线就可以很方便的通过JLINK调试器进行在线调试程序,原理图如图2.4
在这里插入图片描述

图2.4 SWD调试电路
图2.5为STM32单片机最小系统的电路图。
在这里插入图片描述

图2.5 单片机最小系统
2.2 显示模块设计
2.2.1 显示器件的选择
数字温度计为了方便用户读取当前实时温度,直观的展现出温度数据需要通过显示器件将温度信息显示出来,温度信息占用两位数字,不用太过复杂的显示器件,显示器件可以有以下选择:
方案一:使用LCD1602液晶显示屏[4]作为用于显示的设备。LCD1602液晶显示器将最多32个字母分成两行显示,也称为文字液晶显示器,显示数字、字母、符号或文字。LCD1602液晶显示器由大量的位图字符构成,每个位图字符可以显示一个字符,字符与每个位的每行分开,这称为字符间距和行间距。因此,图像在画面上不能很好地工作。而为了更完美的显示,该液晶需要采用控制器,大多使用的是HD44780,才能完成字符的功能。
方案二:使用LED数码管[5]作为系统的显示设备。其对于展示数字和字母有很好的效果,并且价位低廉。本设计显示温度只有两位数字位,因此直接将所有16位引脚可以直接接到单片机上,为了克服主控制器端口的电流输出不足问题,可以用三极管对电流进行放大后控制数码管。实现简单方便。
液晶显示屏造成资源浪费,且实现方式比较复杂,使用LED数码管可以满足本设计的功能要求。因此本系统采用LED数码管实现。
2.2.2 显示模块的工作原理
LED数码管分为共阳极和共阴极两种,共阳极就是把每位数码管的8个显示LED的正极连接到一起,用控制端把每个段的负极连接,控制端为低有效;共阴极就是讲每位数码管的8个显示LED的负极连接到一起,控制端连接每个段的正极,控制端为高有效,本设计采用共阳极设计;
因为单片机输出引脚的驱动电流太小,不足以驱动LED数码管或者驱动LED数码管太暗,就需要通过三极管增加驱动电流[6],现选型C9012 PNP型三极管,封装如2.6图所示,发射级接VCC,基级接GND,集电极接数码管公共脚。LED接线原理图如图2.7所示;
在这里插入图片描述

图2.6 C9012三极管封装

在这里插入图片描述

图2.7显示部分电路原理图
2.3 温度读取电路的设计
2.3.1 温感芯片的选择
本设计选择的单线数字温度传感器DS18B20[7]为主要的温感器件,这种器件是一种新型的“一线器件”,它适用的电压范围比较宽,外型小巧,价格经济实惠,也是世界上第一片支持一线总线接口的温度传感器,多片温度传感器还可以使用一个接口并联在一起做多点温度检测,线路简单节省逻辑电路和引线,扩展性强。
DS18B20的通常可以采用的供电方式有两种。一种是寄生电源供电方式见图2.8[8],寄生电源供电方式,DS18B20从单线信号线上汲取能量;在信号线DQ处于高电平期间把能量储存在内部电容里,信号线在低电平时,消耗电容器上的电能,工作到高电平,再对寄生电源(电容器)充电。
在这里插入图片描述

图2.8寄生电源供电
这种供电方式带来的好处有:
(1)电路简单,连接单一,一根线连接就可以;
(2)在进行远距离测温的时候,无需主机电源支持。
另外一种供电方式就是对外部的电源进行供电的方法,如图2.9所示,DS18B20的工作电源通过VDD引脚连接。此时,I/O线不需要强上拉,也不存在供电电流不足的问题,保证了转换精度。同时,任意数量的DS18B20传感器理论上可以连接在总线上,形成多点温度测量系统;
在这里插入图片描述

图2.9 外部电源方式供电
本系统采用外部电源供电方式,一是为了以后扩张多节点系统做准备,二是保证充足的电源供应,可以保证转换精度,同时工作稳定可靠,抗干扰能力强。
2.3.2 温度传感器电路设计
DS18B20的工作电源可以在3V~5.5V之间,STM32的工作电源为3.3V,同样IO支持3.3V驱动,因此可以直接将DS18B20连接到单片机的通用IO口上,虽然STM32有些IO口可以支持5V驱动电压,不过为了电路原理图简单,现用3.3V驱动方式,原理图如图2.10所示;
在这里插入图片描述

图2.10温度传感器电路设计
DS18B20引脚3接供电电源3.3V,引脚2(数据口)通过供电电源3.3V接入到单片机PB5上,引脚1接入电源地。

3 系统软件设计

3.1 软件开发环境的介绍
本应用程序使用Keil MDK μVision5[9]实现。Keil MDK μVision5是Keil公司对于ARM微控制器,尤其是ARM Cortex-M内核微控制器最好的一款集成开发工具。MDK-ARM包含了工业标准的Keil C编译器、宏汇编器、调试器、实时内核等组件。Keil MDK μVision5具有业行领先的ARM C/C++编译工具链,完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件,包含世界上品牌的芯片。比如:ST、Atmel、Freescale、NXP、TI等众多大公司微控制器芯片。
3.2 系统重要函数
3.2.1 主函数设计
基本上所有的嵌入式程序都是以main()函数作为程序的入口点,main函数中最开始部分一般都是各个外围设备的初始化,然后主函数轮训处理任务。
本设计中首先对定时器、延时模块、LED数码管和按键的初始化,初始化一般是打开需要用到的资源的时钟,中断,分配GPIO等等。然后初始化DS18B20器件最后进入主轮询任务。流程图如图3.1,轮询任务中首先读取温度值,然后读取按键值并且做一些温度上下限的温度调节,再然后就是现实控制逻辑。

在这里插入图片描述

图3.1 系统流程图
3.2.2 显示函数的设计
8段数码管的显示的分为共阳极和共阴极两种方式。它们区别就是在输出口低有效还是高有效,只要在控制端取反既可以相互通用。显示控制提供三个接口函数,这三个接口函数分别是引脚初始化、温度高位显示字符、温度低位显示字符:
void c8ledInit(void);
void updateChar0(u8 numb);
void updateChar1(u8 numb);
对于显示接口,入口参数只需要输入0-15即可在相应位置上显示十六进制0到F字符,输入16为空值,LED数码管全部熄灭。函数内部通过预制映射数组查找入口参数的LED显示数值,通过GPIO_WriteBit函数写入到相应的引脚实现;
初始化参数主要是初始化LED引脚对应的GPIO值。设置为强推输出模式等。
3.2.3 读取温度模块设计和温控报警实现
DS18B20温度传感器采用的“一线协议”,连接结构简单,但是通信要求有严格的时序。其实我们可以大概分为两个周期:第一个周期首先是复位、紧接着就是跳过ROM的指令、然后就是执行温度转换存储器操作指令、等待500uS温度转换时间。在此之后紧接着执行第二个周期为复位、接着是跳过ROM的指在这里插入图片描述
令、执行由RAM存储器接收的操作指令、读数据,流程图见图3.2;

图3.2 流程图
读取到温度数据以后,首先转变为高低位调用显示接口将温度显示到LED数码管上,同时判断当前温度是否在温度上下限内,如果超出上下限后,温度显示将开始闪烁提示温度超出设置温度。

4 系统调试

4.1 系统硬件测试
在系统的焊接过程中,上电前需要对系统进行开路和短路测试,尤其是电源的两极是不是有短路现象,找出一些具有方向的元件,查看是否有设计和焊接出错的。需要将实物电路板对照着原理图,首先检查每一个器件的位置以及焊接时候是否虚焊的地方。然后对于短路、短路、虚焊这些情况,只能采用仪器进行测量,如数字万用表,将数字万用表打到蜂鸣档,检测短路、断路、虚焊。
在使用万用表检测时,将数字万用表打到蜂鸣档,如果红笔和黑笔出现短路,万用表就会给出嘟嘟提示,根据这个原理可以用来检测电路短路、断路、虚焊。在需要检测元件或电线两端是否连接有两支笔时,蜂鸣器的声音是正常的,反之异常。
确认硬件没有问题以后就可以上电,注意观察电流值,如果电流值过大肯定电路板有短路的地方,用手可以触碰一下芯片,如果瞬间发热严重也代表有问题。
系统硬件调试遇到的问题:
(1)DS18B20过热
初次上电后,发现DS18B20芯片瞬间发热严重,断电检查电路发现官方器件原理图画法有问题,特别容易让用户搞反1脚和3脚,重新焊接问题解决。所以在画原理图部分时候一定要仔细核对各个引脚的相对位置。
(2)测温距离过短
在项目初期测温时测温距离过短,与设计预期相差甚远,后经过查阅资料发现连接DS18B20的总线电缆长度有限。当电缆每米扭转次数越多,通信距离越远。因此,在设计使用DS18B20的远程温度测量系统时,要充分考虑母线分布电容与阻抗的匹配问题。
4.2 系统软件测试
系统软件用Keil5集成开发工具编写,Keil5集成开发工具可以连接JLINK ARM调试工具,通过SWD调试口可以非常方便的进行系统软件在线调试。SWD调试口为串行线调试口,我们常见的JTAG有20pin接口,拥有太多的Pin接口自然会会导致PCB布线会非常麻烦,而支持SWD接口调试,只需要使用4个Pin口:GND、3.3V、SWIO、SWCLK。
程序同样可以通过SWD调试口下载到单片机中。
系统软件调试主要遇到以下问题:
(1)DS18B20双向口实时切换问题。
GPIO可以设置IO方向,在51单片机,如果需要输入则直接给引脚赋值1即可读取引脚数据,对于STM32单片机来说,如果是双向口,就不可以这样处理,最开始DS18B20一直没有发现回应,数据口是双向的,必须要随着逻辑变化GPIO口的方向,通过查找资料,用寄存器赋值方式简化了切换方向的方式,解决了问题。
(2)DS18B20返回信号问题。
在DS18B20测温程序设计过程中,系统向DS18B20发出温度转换的命令之后,程序通常会等待来自DS18B20的返回信号。但是如果DS18B20中有不不恰当的接触或错误的断线,会在读DS18B20时无法接收到返回信号,程序就会陷入死循环,不能继续进行。因此,调试前应该仔细检查硬件的连接。
在这里插入图片描述

图4.1 软件调试成功图

结 论

本篇论文提出了解决水银温度计等机械温度系统无法准确读取温度的问题,应用本设计用户可以准确的读取到当前的环境温度,对于工业设计来说可以很方便的应用数字温度数据,提高工业检测水平。
本设计是由STM32F103单片机、温度传感器、独立按键以及外围电路组成。温度传感器采用的是DS18B20数字温度传感器,它通过“一线总线”连接到单片机处理单元。单片机每经过100ms读取一次温度信息,同时将温度信息通过LED数码管展现给用户。用户也可以设置温度的最大值和最小值,经由单片机比对后生成报警信号。独立按键部分可以调整温度的最大值和最小值,它有两个独立的按键组成,可组合成多种功能,如:调节最大值,调节最小值,数值增加,数值减少,返回到温度显示等等;
本设计经过原理图绘制,硬件元器件采购、焊接以及软件程序的编码调试,各部分均达到了预期功能:实现了实时采集温度以及显示功能,独立按键实现了温度阈值的调整,实现了温度超出阈值以后报警显示温度功能。该温度系统可靠性高、抗干扰能力强,可以使用户精确的读取到当前的温度。应用本设计还可以扩展多种应用,如实时温度网络推送,恒温大棚温控系统等等。

参考文献

[1] 邵志刚. 基于单片机的数字示波器的设计[J]. 数字技术与应用, 2015,12(05) :88-89
[2] 林海波. 基于单片机STC89C52的串联型移位步进控制器的设计[J]. 电气自动化, 2018,2(1) :95-97
[3] 邹建基. 基于Zigbee技术的危化品车辆监测无线传感网络设计[M]. 广东: 广东工业大学, 2015.4:25-30
[4] 李全利, 仲伟峰, 徐军. 单片机原理及应用[M]. 北京: 清华大学出版社, 2006.8:10-15
[5] 杨路明. C语言程序设计教程[M]. 北京: 北京邮电大学出版社, 2005.2:3-4
[6] 马忠梅. 单片机的C语言应用程序设计[M]. 北京: 北京航空航天大学出版社, 1997.3:39-48
[7] 李全利. 单片机原理及应用技术[M]. 北京: 高等教育出版社, 2004.7:29-30
[8] 马忠梅. 单片机C语言Windows环境编程宝典[M]. 北京: 北京航空航天大学出版社, 2003.11:10-11
[9] 赵晶编. 电路设计与制版[M]. 北京: 人民邮电出版社, 2000.3:19-21
[10] 邵惠鹤. 工业过程高级控制[M]. 上海: 上海交通大学出版社, 1997.6:20-30
[11] 林君主. 智能仪器[M]. 北京: 机械工业出版社, 2005.4:39-42
[12] 李伯成. 基于MCS-51单片机的嵌入式系统设计[M]. 北京: 电子工业出版社, 2004.8:28-30
[13] 周文龙. 基于单片机控制的电子温度计设计[J]. 天津工业大学,2009,23(05) :2
[14] 阎石. 数字电子技术基础[M]. 北京: 高等教育出版社, 1989.7:338-420
[15] 何立民. 单片机高级教程[M]. 北京: 北京航空航天大学出版社, 2000.12:219-222
[16] 赵晶. 电路设计与制版[M]. 北京: 人民邮电出版社, 2000.2:190-192
[17] 马忠梅. 单片机的C语言应用程序设计[M]. 北京: 北京航空航天大学出版社, 1997.3:31-39
[18] 朱定华, 戴淑萍. 单片机微机原理与应用[M]. 北京:清华大学出版社, 2003.3:105-120
[19] 朱华光.LCD1602编程中一些问题怎样解决[J]. 电脑编程技巧与维护.2010.15 : 90-91
[20] 刘丹,穆林丽,余晓锷. 一种七段数码管式医用仪表的自动识别方法[J]. 科学技术与工程,2010,10:89-91
[21] 李梦. 一种新型LED驱动电路设计[J]. 物联网技术,2014,(10) : 99-110
[22] 王云飞. DS18B20温度传感器的应用设计[J]. 电子世界,2014,(12) : 71-76
[23] 宫铭举,魏雪丽,董玉涛. 基于Proteus和Keil的单片机教学探讨[J]. 职业教育,2012,1(02) : 128-136

附录1 总体原理图设计

在这里插入图片描述

附录2 源程序清单

#include “stm32f10x.h”
#include “main.h”
#include “timer2.h”
#include “c8LedShow.h”
#include “delay.h”
#include “ds18b20.h”
#include “key.h”

void systemInit()
{
timer2_init(); //初始化定时器2,提供运行时间判断
c8ledInit(); //8段数码管初始化
KEY_Init(); //IO初始化
}
short temperature;
u32 lsRdTempTime = 0;
u32 lsShowTempTime = 0;
u8 lsJustSta = 0;
u16 showTime_h = 0;
u16 showTime_l = 0;
int main(void)
{
int hVal,lVal;
u8 t;
//延时函数初始化
delay_init();
//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//系统初始化
systemInit();
//DS18B20初始化
while(DS18B20_Init())
{
delay_ms(200);
delay_ms(200);
}
lsRdTempTime = timer2_getCurTime();
lsShowTempTime = timer2_getCurTime();
while(1)
{
justThreshold();
//100ms延时进入读取一次温度
if(timer2_getInterval(lsRdTempTime) >= 100)
{
lsRdTempTime = timer2_getCurTime();
temperature=DS18B20_Get_Temp();
}
//如果现在是调整温度高阈值
if(g_tempJust == JUST_HSHOLD)
{
hVal = g_tempHshold/10;
lVal = (g_tempHshold - hVal10);
showTime_h = 300;
showTime_l = 300;
}
//如果现在是调整温度低阈值
else if(g_tempJust == JUST_LSHOLD)
{
hVal = g_tempLshold/10;
lVal = (g_tempLshold - hVal
10);
showTime_h = 300;
showTime_l = 300;
}
//在在正常显示模式
else
{
int temp = temperature/10;
hVal = temp/10;
lVal = (temp - hVal*10);
//如果超出温度阈值,则进行闪烁显示温度
if((temp > g_tempHshold) || (temp < g_tempLshold))
{
showTime_h = 100;
showTime_l = 100;
}
else
{
showTime_h = 300;
showTime_l = 0;
}
}
//if(g_tempJust != JUST_NJUST)
//显示控制电路
{
if(showTime_l == 0)
{
updateChar0(hVal);
updateChar1(lVal);
}
//300ms亮 100ms灭
//设置亮的时间
else if((lsJustSta == 0) &&(timer2_getInterval(lsShowTempTime) >= showTime_h)) //100ms定时处理
{
updateChar0(16);
updateChar1(16);
lsJustSta = 1;
lsShowTempTime = timer2_getCurTime();
}
//设置灭的时间
else if((lsJustSta == 1) &&(timer2_getInterval(lsShowTempTime) >= showTime_l))
{
updateChar0(hVal);
updateChar1(lVal);
lsJustSta = 0;
lsShowTempTime = timer2_getCurTime();
}
}

}

}

致 谢

感谢培养教育我的沈阳城市学院,学院拥有浓厚的学术氛围,舒适的学习环境让我将终生难忘!感谢对我倾囊赐教、鞭策鼓励的诸位师长,诸位恩师的谆谆教诲我将铭记在心。感谢论文中引文的原作者,他们都是学界的名师大家,大师风范,高山仰止。感谢同窗好友以及更多我无法逐一列出名字的朋友,他们和我共同度过了四年美好难忘的大学时光,我非常珍视和他们的友谊!
感谢我的指导老师:沈洪洋老师和台闯老师;我做毕业设计的每个阶段,从选题到查阅资料,论文提纲的确定,中期论文的修改,后期论文格式调整等各个环节中都给予了我悉心的指导。这几个月以来,导师们不仅在学业上给我以精心指导,同时还在思想给我以无微不至的关怀,在此谨向两位老师致以诚挚的谢意和崇高的敬意。另外,我要感谢参与我论文评审和答辩的各位老师,是他们让我能够明确今后的发展方向。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433074.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图像分类技术在城市垃圾分类与处理中的应用与实践

一、引言 在当今世界&#xff0c;城市化进程不断加快&#xff0c;随之而来的是日益增长的垃圾处理压力。城市生活垃圾、工业固体废物和危险废物的处理已经成为环境保护领域的一大挑战。为了应对这一挑战&#xff0c;卫生填埋、垃圾堆肥和垃圾焚烧等技术路线应运而生。其中&…

(文末送书)直击前沿技术:《低代码平台开发实践:基于React》

目录 前言 一、React与低代码平台的结合优势 二、基于React的低代码平台开发挑战 三、基于React的低代码平台开发实践 四、书籍推荐 《低代码平台开发实践&#xff1a;基于React》 1、图书介绍 2、适用人群 3、 作者简介 4、写书原由 5、解决问题 6、书…

2024年冲刺年薪40w,java面试常问知识点

前言 刚刚过去的双十一&#xff0c;让“高性能”“高可用”“亿级”这3个词变成了技术热点词汇&#xff0c;也让很多人再次萌发成为「架构师」的想法。先问大家一个问题&#xff1a;你觉得把代码熟练、完成需求加上点勤奋&#xff0c;就能成为架构师么&#xff1f;如果你这么认…

数据结构详解①——诸论

目录 前言 引入&#xff1a; 基本概念和术语 数据 数据元素 数据项 数据对象 数据结构 逻辑结构 物理结构 数据类型 为什么要设计出来数据类型呢&#xff1f; 数据类型的分类 抽象数据类型 数据结构与算法的关系 算法 定义 特性 设计要求 效率度量方法 事…

nodejs版本管理工具nvm安装和环境变量配置

1、下载nvm.exe https://github.com/coreybutler/nvm-windows/releases2、安装 1.在D盘根目录新建一个dev文件夹&#xff0c;在dev里面再新建一个nodejs。 2.双击下载好的nvm.exe 修改文件路径&#xff0c;且路径中不能有中文 3.安装完成后在D:\dev\nvm打开settings.txt&…

网络信息安全:11个常见漏洞类型汇总

一、SQL注入漏洞 SQL注入攻击&#xff08;SQL Injection&#xff09;&#xff0c;简称注入攻击、SQL注入&#xff0c;被广泛用于非法获取网站控制权&#xff0c;是发生在应用程序的数据库层上的安全漏洞。 在设计程序&#xff0c;忽略了对输入字符串中夹带的SQL指令的检查&…

C语言写学生信息管理系统

说明:本博文来自CSDN-问答板块,题主提问。 需要:用C语言设计一个学生信息管理系统(尽量不使用指针),学生信息包括学号,姓名,数学成绩,C语言成绩,英语成绩和每个学生的总成绩这几项。系统要实现如下几个功能:1.添加学生2.删除学生3.修改学生信息4.查询学生信息5进行学…

阿里云服务器ECS u1实例性能怎么样?有用过的吗?

阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

自学高效备考2024年AMC10:2000-2023年1250道AMC10真题解析

我们今天继续来随机看5道AMC10真题&#xff0c;以及详细解析&#xff0c;这些题目来自1250道完整的官方历年AMC10真题库。通过系统研究和吃透AMC10的历年真题&#xff0c;参加AMC10的竞赛就能拿到好名次。即使不参加AMC10竞赛&#xff0c;初中和高中数学一定会学得比较轻松、游…

【深度学习应用】基于Bert模型的中文语义相似度匹配算法[离线模式]

1、准备中文离线模型 配置文件夹 文件获取方法&#xff1a; 访问官网&#xff1a;https://huggingface.co/bert-base-chinese/tree/main 下载以下文件 2、测试代码 # -*- coding: utf-8 -*- #pip install transformers -i https://mirrors.aliyun.com/pypi/simple/ #pip …

在整个价值链构建负责任的 AI

在整个价值链构建负责任的 AI&#xff1a;从数据到部署&#xff0c;以合乎伦理道德的方式构建 AI 构建合乎伦理道德的 AI 是所有人工智能企业的责任&#xff0c;这一点再怎么强调都不为过。负责任或合乎伦理道德的 AI 能够做到公正、公平&#xff0c;并能改善AI服务人群的生活…

2024年主攻外贸爆款产品,聚焦10个重要国家

2024年中企出海趋势明显&#xff0c;中小微企业纷纷布局。提供15个国家重点进口产品供参考&#xff0c;助力选品和行业开发。 以下是15个重点国家的爆款产品&#xff1a; 一、美国进口频次前10位 二、俄罗斯进口频次前10位 三、英国进口频次前10位 四、越南进口频次前10位 五…

Claude 3超越GPT-4?Anthropic发布新一代AI模型,Opus在多领域展现行业新水准,你不得不看的全面解析!

Anthropic发布了新一代AI模型——Claude 3。 这个系列包括Haiku、Sonnet和Opus三个模型。 特别是Opus&#xff0c;在多个基准测试中&#xff0c;它的表现都超过了我们熟知的GPT-4和Gemini 1.0 Ultra。 在数学、编程、多语言理解和视觉处理等多个方面&#xff0c;Opus都展现了…

期货开户交易切勿满仓操作

平时我们交易主要是仓位管理风险&#xff0c;切勿不要满仓操作&#xff0c;满仓相当于一锤子买卖&#xff0c;我们做交易要有交易计划&#xff0c;计划中除了开仓点.止损点.止盈点外&#xff0c;还有加仓点&#xff0c;所以我们要留下充足的加仓仓位&#xff0c;有很多投资者是…

如何处理Docker容器占用空间不断变大

在使用Docker容器时&#xff0c;一个常见的问题是容器占用的空间会不断增大&#xff0c;导致磁盘空间的快速耗尽。这种情况可能会给系统带来不必要的负担&#xff0c;因此需要及时处理。本文将介绍一些解决Docker容器占用空间不断增大问题的方法。 首先&#xff0c;我们需要了…

基于vgg16进行迁移学习服装分类

pytorch深度学习项目实战100例 的学习记录 我的环境&#xff1a; 白票大王&#xff1a; google colab 用其他的话&#xff0c;其实实现也行&#xff0c;但是让小白来重环境来开始安装的话&#xff0c;浪费时间 数据集 Clothing dataset 20 个不同类别的 5000 多张图片。 该…

基于springboot+vue实现电子商务平台管理系统项目【项目源码+论文说明】

基于springboot实现电子商务平台管理系统演示 研究的目的和意义 据我国IT行业发布的报告表明&#xff0c;近年来&#xff0c;我国互联网发展呈快速增长趋势&#xff0c;网民的数量已达8700万&#xff0c;逼近世界第一&#xff0c;并且随着宽带的实施及降价&#xff0c;每天约有…

【机器学习】包裹式特征选择之递归特征消除法

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

基于Arduino的智能寻迹小车设计

目 录 摘 要 Ⅰ Abstract Ⅱ 引 言 1 1系统方案设计 3 1.1 方案论证 3 1.2 项目的总体设计 4 2 项目硬件设计 6 2.1 Arduino平台简介 6 2.2 ATmega328P单片机的最小系统 8 2.3 寻迹模块的设计 9 2.4 驱动模块的设计 11 2.5 电源模块的设计 14 2.6 按键电路的设计 15 2.7 蜂鸣器…

c++|内存管理

c|内存管理 C/C内存分布strlen 和 sizeof的区别 c语言动态内存管理方式malloccallocrealloc例题 c管理方式new/delete操作内置类型new/delete操作自定义类型证明 new 和 delete 的底层原理operator new与operator delete函数operator new 和 operator delete的 用法构造函数里面…