基于某STM32的PT100温度测量

合集下载

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

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

单片机基于stm32的数字温度计设计
数字温度计是一种用于测量环境温度的设备。

在这个问题中,我们将使用基于STM32的单片机来设计一个数字温度计。

为了设计这个温度计,我们需要以下组件和步骤:
1. STM32单片机:STM32是一种基于ARM架构的单片机,它具有强大的计算能力和丰富的外设接口,适用于各种应用。

2. 温度传感器:我们需要选择一种适合的温度传感器,常用的有数字式温度传感器,如DS18B20。

3. 连接电路:将温度传感器连接到STM32单片机。

这通常需要使用一些电子元件,如电阻、电容和连接线等来建立电路连接。

4. 编程:使用适合STM32单片机的编程语言,如C语言,来编写程序。

程序将读取温度传感器的数据,并将其转换为数字值。

5. 温度显示:将温度数据显示在合适的显示设备上,如LCD显示屏或七段数码管。

可以使用STM32单片机的GPIO口控制这些显示设备。

6. 数据处理:可以对温度数据进行进一步处理,如计算平均温度、设定警报阈值等。

以上是一个基本的数字温度计设计的流程。

具体的实现细节和代码编写可能需要根据具体的硬件和软件平台进行调整。

iData_基于STM32的铂热电阻桥式测温系统设计与实现_刘刚

iData_基于STM32的铂热电阻桥式测温系统设计与实现_刘刚

传感器发热损坏造成测量误差。
由于电桥输出的电压差很小, 如果直接用
STM32 的 AD 输入来采集, 电压信号太弱造成数据
偏差较大;所以本系统中将电压差经过差分比例放
大后与电 压跟随器相 连, 再送给 STM32 单 片机采
集。 图 3 中用来调 节放大器增 益,R4 =R5,R6 =R7,通
过电路可以得到 RT 与 UOUT 的关系式:
文 章 编 号 :1001-9944(2014)01-0053-04
创意与实践
基于 STM32 的铂热电阻桥式测温系统设计与实现
刘 刚,陈树新
(北京科技大学 机械工程学院,北京 100083)
摘要:针对电传动实验中电机温度检测所遇到的问题,设计并实现了一种基 于STM32的 三 线制PT100铂热电阻桥式测温 系 统 , 可 以 将 测 量 结 果 通 过CAN总 线 远 程 传 输 到 任 何 具 备 CAN接口的设备,从而实现在线监测。 为解决不平衡电桥和铂热电阻非线性带来的误差问 题,该文采用精密电阻箱进行了阻值标定,将系统的测量结果用最小二乘法拟合得出一个 关 于 温 度 和 电 压 的 多 项 式 ,并 将 测 量 结 果 在 恒 温 箱 中 进 行 了 比 对 ,(0~250)℃范 围 内 绝 对 误 差控制在0.1 ℃以内,满足测量精度需求。 关 键 词 :STM32;PT100;桥 式 测 温 ;最 小 二 乘 法 中图分类号:TP216 文献标志码:A
VCC UD
U101 3
C1
R1 6.2k
lm336 104
GND
B RT
A
R7
U0
R2
VCC
8
6.2kR4 2 - U1A R8

基于STM32的无线多点式温度测量系统

基于STM32的无线多点式温度测量系统

基于STM32的无线多点式温度测量系统下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!无线传感网络(WSN)是一种广泛应用于各种领域的技术,其能够实现对各种环境参数的实时监测和数据传输。

基于某STM32的PT100温度测量

基于某STM32的PT100温度测量

基于STM32的PT100温度测量目录一、前言1二、系统描述12.1 综述12.2系统框图12.3 功能实现1三、硬件设计23.1 STM32 微控制器23.2 PT100温度传感器电路33.31602液晶屏4四、软件设计44.1ADC程序44.21602LCD显示程序54.3主程序5五、性能测试5六、课程设计心得6参考文献6附录1:系统实物图7附录2:系统主要程序7一、前言Cortex-M3 是 ARM 公司为要求高性(1.25DhrystoneMIPS/MHz)、低本钱、低功耗的嵌入式应用专门设计的内核。

STM32 系列产品得益于 Cortex-M3 在架构上进展的多项改良,包括提升性能的同时又提高了代码密度的 Thumb-2 指令集和大幅度提高中断响应的紧耦合嵌套向量中断控制器,所有新功能都同时具有业界最优的功耗水平。

本系统是基于 Cortex-M3 内核的 STM32 微控制器与PT100温度传感器的温度测量,在硬件方面主要有最小系统板、1602LCD 液晶屏以与PT100温度传感电路,在软件方面主要有 1602LCD液晶屏的驱动,ADC功能的驱动,与滤波算法设计。

整个设计过程包括电子系统的设计技术与调试技术,包括需求分析,原理图的绘制,器件采购,安装,焊接,硬件调试,软件模块编写,软件模块测试,系统整体测试等整个开发调试过程。

二、系统描述本系统是基于 STM32微控制器所设计的多功能画板,该画板具有根本的绘画功能与画布颜色的选择,触摸屏校正等功能。

整个系统模块分为三个模块:ALIENTEK MiniSTM32开发板、液晶显示。

MiniSTM32开发板是ALIENTEK开发的是一款迷你型的开发板,小巧而不小气,简约而不简单。

上面有芯片工作需要的资源,时钟控制电路、复位电路、JTAG 控制口以与与外围电路相连的接口。

液晶屏采用的是1602LCD液晶屏。

2.2 系统框图本设计采用 STM32F103RBT6 作为微控制器,其外围硬件模块主要包括电源模块﹑微处理器模块﹑按键与JAIG等。

基于STM32的温度测量系统毕业设计论文

基于STM32的温度测量系统毕业设计论文

基于STM32的温度测量系统梁栋(德州学院物理与电子信息学院,山东德州253023)摘要:温度是日常生活和农业生产中的一个重要参数,传统的温度计有反应缓慢,测量精度不高的和读数不方便等缺点,此外,通常需要人工去观测温度,比较繁琐,因而采用电子技术的温度测量就显得很有意义了。

面对电子信息技术的进步,生成了各种形式的温度测量系统。

本文设计了一个基于以STM32为核心的温度测量与无线传送的系统,温度信息采集使用数字化温度传感器DS18B20,无线传输使用ATK-HC05蓝牙模块的智能测温系统。

关键词 STM32; DS18B20; TFTLCD;智能测温系统1 绪论在现代社会的生产生活中,人们对于产品的精度要求越来越高,而温度是人们在生产生活中十分关注的参数,因此,对温度的测量以及监控就显得十分重要。

在某些行业中对温度的要求较高,由于工作环境温度的偏差进而引发事故。

如化工业中做酶的发酵,必须时刻了解所发酵酶的温度才可以得到所需酶;文物的保护同样也离不开温度的采集,不仅在考古文物的出土时间上,还是在档案馆和纪念馆中,温度的控制也是藏品保存关键,所以温度的检测对其也是具有重要意义的;另外大型机房的温度的采集,超出此范围会影响服务器或系统的正常工作等等。

传统方式监控温度往往很耗费人力,而且实时性差。

本文就设计了一个基于STM32的温度测量系统,在测量温度的同时能实现无线传输与控制。

STM32RBT6具有较低的价格、较高的测量精度、便捷的操作,同时在编程方面STM32也具有和其他单片机的优势之处,如51要求从基层编程,而STM32所有的初始化和一些驱动的程序都是以模板的形式提供给开发者,在此开发者只需要了些其他的模块功能和工作方式和少量的语法知识便可以进行编程,此优势不但节约了时间,也为STM32的发展做出了强有力的铺垫,而且STM32目前是刚刚被作为主流开发的单片机,所以其前景是无可估量的,这次毕业设计也是看好了其优越的发展趋势来选择的。

基于PT100热电阻的单片机温度检测系统设计

基于PT100热电阻的单片机温度检测系统设计

基于PT100热电阻的单片机温度检测系统设计摘要本文介绍了一种基于PT100热电阻的单片机温度检测系统设计。

该系统采用了Maxim的MAX31865芯片来测量PT100热电阻的电阻值,并通过单片机将电阻值转换为温度值。

该系统可以实现高精度的温度测量,并且具有较低的功耗和较高的稳定性。

背景在许多工业应用中,需要对温度进行精确的测量。

PT100热电阻是一种常用的温度传感器,它的电阻值随着温度的变化而变化。

由于PT100热电阻的电阻值变化很小,因此需要使用高精度的电路来进行测量。

单片机是一种常见的控制器,它可以方便地集成多种功能。

将单片机与PT100热电阻结合使用,可以实现精确的温度测量,并且具有较低的功耗和较高的稳定性。

设计硬件设计硬件设计采用了MAX31865芯片来测量PT100热电阻的电阻值。

MAX31865是一种高精度热电偶转换器,可以方便地测量PT100热电阻的电阻值。

MAX31865还提供了冗余检测和安全防护功能,可以提高系统的可靠性。

MAX31865芯片的引脚与单片机的引脚连接如下:MAX31865引脚单片机引脚SDI MOSISDO MISOSCK SCLKCS SS其中,MOSI、MISO、SCLK和SS是SPI总线的引脚,用于与MAX31865进行通信。

单片机的中断引脚连接到MAX31865的RDY引脚,用于检测MAX31865是否准备好进行测量。

PT100热电阻的引脚连接到MAX31865的RTD+和RTD-引脚。

为了减小测量误差,应尽量将RTD+和RTD-的长度保持一致,并且尽可能靠近MAX31865芯片。

软件设计软件设计采用了Arduino环境,可以方便地进行程序开发和调试。

首先需要初始化SPI总线和MAX31865芯片。

可以使用Arduino的SPI库来初始化SPI总线,使用MAX31865库来初始化MAX31865芯片。

MAX31865库提供了方便的接口来进行温度测量和数据读取。

基于STM32的多路数字式温度采集系统

基于STM32的多路数字式温度采集系统

湖北民族学院毕业论文(设计)多路数字式温度监测系统学生姓名:学号:*********系别:电气工程系专业:电子信息科学与技术指导教师:孙玲姣评阅教师:论文答辩日期答辩委员会主席摘要本设计是一个以微控制器、温度传感器、按键及TFT显示屏等为框架的数字式温度测量系统。

设计采用了STM32F103ZE芯片为主控制器,通过单总线制温度传感器DS18B20实现温度采集,将温度信息通过STM32F103ZE微控制器处理后在TFTLCD模块中显示,以实现多点的温度监测。

本设计一共使用了四个DS18B20,也就是说本系统可以同时采样四个地点的温度值。

待温度传感器的温度值采回来后,将所有的温度值显示在液晶屏上面。

在显示功能上,使用折线图显示,使显示更直观、更强大。

当然系统其他的功能也有显示,比如报警温度将会实时显示,其通过外围按键来调整极限温度。

本设计也将部分显示相关的功能性按键加到TFTLCD上,减少外围电路,也增加了人机交互,使系统更加人性化、智能化。

本设计功能齐全,在温度检测上面面聚到。

关键词:微控制器,TFTLCD,DS18B20,温度监测AbstractThis design is to a micro controller, temperature sensor, buttons and TFT screen for the framework of digital temperature measuring system.STM32F103ZE chips as the main controller is adopted, through the single bus temperature sensor DS18B20 temperature acquisition, temperature information through STM32F103ZE micro controller shown in TFTLCD module after processing, in order to realize the multi-point temperature monitoring.This design uses the altogether four DS18B20, that is to say, this system can sampling temperature of four locations at the same time.With temperature sensor temperature after you come back, all the temperature display on the LCD panel.On the display function, using the line chart shows that make the show more intuitive, more powerful.The function of the system, of course, other also have display, such as alarm temperature will real-time display, through the peripheral buttons to adjust the limit temperature.This design will also be part of a display related functional keys on TFTLCD, reduce the peripheral circuit, also increased the human-computer interaction, make the system more humane, intelligent.The design of the function is all ready, at the top surface temperature detection.Keywords:microcontroller,TFTLCD,DS18B20, the temperature measurement目录摘要 (I)Abstract (II)1 绪言1.1 课题背景 (1)1.2 国内外概况 (1)1.3 课题研究的目的和意义 (2)1.4 课题的主要研究工作 (3)2 系统设计方案的研究2.1 方案选择 (4)2.2 系统总体方案设计 (7)2.3 系统功能介绍 (7)3 硬件电路设计3.1 硬件元件介绍 (9)3.1.1 STM32F103ZE 介绍 (9)3.1.2 DS18B20介绍 (12)3.1.3 TFTLCD介绍 (15)3.1.4 FSMC介绍 (16)3.2 硬件电路详细设计 (17)3.2.1 温度采集模块设计 (17)3.2.2 显示模块设计 (18)3.2.3 按键模块设计 (19)3.2.4 报警模块设计 (19)3.2.5 系统总体电路图 (20)4 软件设计4.1 主程序流程图 (21)4.2 温度采集处理子程序 (21)4.3 显示子程序介绍 (22)4.4 按键子程序介绍 (23)5 系统调试及分析5.1 调试结果及分析 (26)6 总结 (29)致谢 (30)参考文献 (31)1 绪言本章阐述了温度测量的研究背景、当前现状以及发展方向,明确指出了现今温度测量所面临的问题。

基于STM32的温度测量系统

基于STM32的温度测量系统

基于ST M32的温度测量系统Te mper ature Measur ement Syste m Based on the STM32曹圆圆(华北电力大学控制科学与工程学院河北保定071003)[摘要]介绍一种基于STM32处理器的温度测量系统设计方案。

以ST M32F103RB T6微控制器为核心,采用AD590作温度传感器,测量温度用四位数码管显示,能够同PC机进行串口通信。

具有体积小、精度高、处理能力强等特点。

[关键词]温度测量;ST M32;AD590[中图分类号]TP273[文献标志码]B温度是日常生活与工农业生产中的一个重要参数,传统的温度计存在反应速度慢、测量精度不高以及读数麻烦等缺点,随着电子技术的发展,各种基于单片机的温度测量系统先后被提出。

温度传感器AD590具有线性度好、性能稳定、灵敏度高、抗干扰能力强等优点;鉴于目前ARM微处理器在国内的广泛应用和广阔的发展前景,本文采用AD590温度传感器,基于一款ARM微处理器ST M32F103RBT6作为系统核心,设计了一种温度测量系统。

它不仅可以通过四位数码管直观显示00.00~99.99e,还可以完成同PC机的通信,并详细介绍了其硬件设计和相关程序编写。

1系统结构温度测量系统主要有温度测量、温度显示电路、RS232串行通讯等模块。

主控电路由STM32F103RBT6及其外围电路组成,是系统的核心部分,主要完成数据的传输和处理工作。

温度传感器采集的模拟信号,经过处理器本身内嵌的ADC进行A/D转换后得到实时温度数据,再经处理器相关处理后通过温度显示电路进行实时显示,同时,处理器还可以实现与PC机的通信功能。

ST M32系列处理器是意法半导体ST公司生产的一种基于ARM v7架构的32位、支持实时仿真和跟踪的微控制器。

嵌入式处理器不能独立工作,必须给它提供电源、时钟以及复位电路。

这些提供给嵌入式处理器运行所必须的条件电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于STM32的PT100温度测量目录一、前言 (1)二、系统描述 (1)2.1 综述 (1)2.2 系统框图 (1)2.3 功能实现 (1)三、硬件设计 (2)3.1 STM32 微控制器 (2)3.2 PT100温度传感器电路 (3)3.3 1602液晶屏 (4)四、软件设计 (4)4.1 ADC程序 (4)4.2 1602LCD显示程序 (5)4.3 主程序 (5)五、性能测试 (5)六、课程设计心得 (6)参考文献 (6)附录1:系统实物图 (7)附录2:系统主要程序 (7)一、前言Cortex-M3 是ARM 公司为要求高性(1.25DhrystoneMIPS/MHz)、低成本、低功耗的嵌入式应用专门设计的核。

STM32 系列产品得益于Cortex-M3 在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2 指令集和大幅度提高中断响应的紧耦合嵌套向量中断控制器,所有新功能都同时具有业界最优的功耗水平。

本系统是基于Cortex-M3 核的STM32 微控制器与PT100温度传感器的温度测量,在硬件方面主要有最小系统板、1602LCD 液晶屏以及PT100温度传感电路,在软件方面主要有1602LCD液晶屏的驱动,ADC功能的驱动,及滤波算法设计。

整个设计过程包括电子系统的设计技术及调试技术,包括需求分析,原理图的绘制,器件采购,安装,焊接,硬件调试,软件模块编写,软件模块测试,系统整体测试等整个开发调试过程。

二、系统描述2.1综述本系统是基于STM32微控制器所设计的多功能画板,该画板具有基本的绘画功能及画布颜色的选择,触摸屏校正等功能。

整个系统模块分为三个模块:ALIENTEK MiniSTM32开发板、液晶显示。

MiniSTM32开发板是ALIENTEK开发的是一款迷你型的开发板,小巧而不小气,简约而不简单。

上面有芯片工作需要的资源,时钟控制电路、复位电路、JTAG 控制口以及与外围电路相连的接口。

液晶屏采用的是1602LCD液晶屏。

2.2 系统框图本设计采用STM32F103RBT6 作为微控制器,其外围硬件模块主要包括电源模块﹑微处理器模块﹑按键及JAIG等。

电源采用USB 供电,在设计过程中用PC 供电。

其系统框图如图2-1所示。

2.3 功能实现PI100温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,温度变化导致它的电阻变化,在电路中它的电阻变化会导致电压变化,STM32 微控制器的ADC将电压换成数字信号,通过处理运算以及PT100温度与电阻的函数关系,得到一个温度值,并将温度值输入1602液晶屏显示。

三、硬件设计3.1 STM32 微控制器STM32 微控制器最小系统包括晶振电路,电源模块,JTAG接口模块,串口ISP下载模块,系统复位模块。

本次课程设计采用的是ALIENTEK MiniSTM32开发板。

STM32F103RBT6 管脚图STM32 微控制器的部分工作电路图3.2 PT100温度传感器电路铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确度高、测量围大、复现性和稳定性好等,被广泛用于中温围的温度测量中。

PT100 是一种广泛应用的测温元件,在-50 ~600 ℃围具有其他任何温度传感器无可比拟的优势,包括高精度、稳定性好、抗干扰能力强等。

由于铂电阻的电阻值与温度成非线性关系,所以需要进行非线性校正。

校正分为模拟电路校正和微处理器数字化校正,模拟校正有很多现成的电路,其精度不高且易受温漂等干扰因素影响,数字化校正则需要在微处理系统中使用,将PT电阻的电阻值和温度对应起来后存入EEPROM中,根据电路中实测的AD值以查表方式计算相应温度值。

常用的PT电阻接法有三线制和两线制,其中三线制接法的优点是将PT100 的两侧相等的的导线长度分别加在两侧的桥臂上,使得导线电阻得以消除。

常用的采样电路有两种:一为桥式测温电路,一为恒流源式测温电路。

本设计采用的是三线制桥式测温电路,电路如图所示测温原理:电路采用TL31和电位器VR1调节产生4.096V的参考电源;采用R1、R2、VR2、RPT构成测量电桥(其中R1=R2,VR2为100Ω精密电阻),当RPT的电阻值和VR2的电阻值不相等时,电桥输出一个mV级的压差信号,这个压差信号经过运放LM3放大后输出期望大小的电压信号,该信号可直接连AD转换芯片。

差动放大电路中R3=R4、R5=R6、放大倍数=R5/R3,运放采用单一5V 供电。

设计及调试注意点:1. 同幅度调整R1和R2的电阻值可以改变电桥输出的压差大小;2. 改变R5/R3的比值即可改变电压信号的放大倍数,以便满足设计者对温度围的要求4. VR2为电位器,调节电位器阻值大小可以改变温度的零点设定,测量电位器的阻值时须在没有接入电路时调节,这是因为接入电路后测量的电阻值发生了改变。

5. 理论上,运放输出的电压为输入压差信号×放大倍数,但实际在电路工作时测量输出电压与输入压差信号并非这样的关系,压差信号比理论值小很多,实际输出信号为V O =4.096*(RPT /(R1+RPT)- VR2 /(R1+VR2 ))式中电阻值以电路工作时量取的为准。

4.096为基于源电压。

6. 电桥的正电源必须接稳定的参考基准,因为如果直接VCC的话,当网压波动造成VCC发生波动时,运放输出的信号也会发生改变,此时再到以VCC未发生波动时建立的温度-电阻表中去查表求值时就不正确了,这可以根据式进行计算得知。

3.3 1602LCD液晶屏1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD。

引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表所示:1602与STM32连接说明:四、软件设计4.1 ADC程序STM32F103RBT6部有3个ADC,实际上我们只需要软件设置就可以正常工作,不过我们需要在外部连接其端口到被测电压上面。

本系统通过ADC1的通道0(PA0)来读取外部电压值。

测量电压不能超过3.3V。

程序步骤1)启开启PA口和ADC1时钟,设置PA0为模拟输入。

2)复位ADC1,同时设置ADC1分频因子。

开启ADC1 时钟之后,我们要复位ADC1,将ADC1的全部寄存器重设为缺省值之后我们就可以通过RCC_CFGR 设置ADC1的分频因子。

分频因子要确保ADC1 的时钟(ADCCLK)不要超过14Mhz。

这个我们设置分频因子位6,时钟为72/6=12MHz。

3)初始化ADC1参数,设置ADC1的工作模式以及规则序列的相关信息。

设置单次转换模式、触发方式选择、数据对齐方式等都在这一步实现。

同时,我们还要设置ADC1 规则序列的相关信息,我们这里只有一个通道,并且是单次转换的,所以设置规则序列道数为1。

5)使能ADC并校准。

在设置完了以上信息后,我们就使能AD转换器,执行复位校准和AD校准,注意这两步是必须的!不校准将导致结果很不准确。

每次进行校准之后要等待校准结束。

这里是通过获取校准状态来判断是否校准是否结束。

6)读取ADC在上面的校准完成之后,ADC 就算准备好了。

接下来我们要做的就是设置规则序列1 里面的通道,采样顺序,以及通道的采样周期,然后启动ADC转换。

在转换结束后,读取ADC转换结果值就是了。

7)多次读取ADC值,求平均求平均使获得的ADC值稳定。

4.2 1602LCD显示程序程序步骤必要的声明定义等;写入指令数据到LCD;写入字符显示数据到LCD;写字符串函数;写数字函数;GPIO配置;LCD初始化设定;4.3 主程序各子函数初始化(SystemInit();delay_init(72);NVIC_Configuration();uart_init(9600);LED_Init();LCD_Init();Adc_Init();)while循环(获取ADC值,转换成电压值,写字符串,写数据值,LED闪烁)。

五、性能测试硬件调试比较简单,主要是调试PT100温度传感器电路,首先检查电路的焊接是否正确,然后用万用表测试,首先检测PT100传感器的电阻值是否随温度变化,并测量其在0°C和100°C的电阻值;然后在测量基准电压,将其调试到合适值(4.960V);然后测量电桥输出的最大电压差Umax,并确定运算放大器的放大倍数(放大器的输出电压不能大于3.3V,倍数A=R5/R3=3.3/Uma x,调试过程中可改变R5电阻值);最后测量运算放大器实际的输出电压,与电桥输出电压,计算实际放大倍数与理论放大倍数比较;调试完后可连接STM3 2进行软件编写。

软件调试可以先编写1602显示程序并进行硬件的正确性检验,然后分别进行ADC程序和主程序的编写和调试。

最后进行整体系统测试六、课程设计心得经过将近一段时间的设计、焊接、编程、调试,我们终于完成了温度测量的设计,基本能够达到设计要求,此次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我们所学到的知识运用到实践中去。

在大学课堂的学习只是给我们灌输专业知识,而我们应把所学的知识应用到我们现实的生活中去。

这次的设计不仅使我们将课堂上学到的理论知识与实际应用结合了起来,而且使我们对电子电路、电子元器件等方面的知识有了更进一步的认识,同时在软件编程、焊板调试、相关调试仪器的使用等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。

此次单片机设计也为我们以后进行更复杂的单片机系统设计提供了宝贵的经验。

通过此次的综合设计,我们初步掌握了单片机系统设计的基本原理。

充分认识到理论学习与实践相结合的重要性,对于书本上的很多知识,不但要学会,更重要的是会运用到实践中去。

在以后的学习中,我们会更加注重实践方面的锻炼,多提高自己的动手实践能力。

参考文献1、STM32F103RBT6 数据开发手册;2、ALIENTEK miniSTM32 开发板资料3、1602中文资料4、戴蓉,波峰。

传感器原理与工程应用,电子工业.2013.1附录1:系统实物图附录2:系统主要程序一、ADC程序,文件名(adc.c)#include "adc.h"#include "delay.h"void Adc_Init(void){ADC_InitTypeDef ADC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE ); //使能ADC1通道时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6); //72M/6=12,ADC最大时间不能超过14MGPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PA0GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚GPIO_Init(GPIOA, &GPIO_InitStructure);ADC_DeInit(ADC1); //将外设ADC1 的全部寄存器重设为缺省值ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在独立模式ADC_InitStructure.ADC_ScanConvMode = DISABLE; //模数转换工作在单通道模式ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//模数转换工作在单次转换模式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //转换由软件而不是外部触发启动ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC数据右对齐ADC_InitStructure.ADC_NbrOfChannel = 1; //顺序进行规则转换的ADC通道的数目ADC_Init(ADC1, &ADC_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器ADC_Cmd(ADC1, ENABLE); //使能指定的ADC1ADC_ResetCalibration(ADC1); //重置指定的ADC1的校准寄存器while(ADC_GetResetCalibrationStatus(ADC1)); //获取ADC1重置校准寄存器的状态,设置状态则等待ADC_StartCalibration(ADC1); //开始指定ADC1的校准状态while(ADC_GetCalibrationStatus(ADC1));//获取指定ADC1的校准程序,设置状态则等待ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能}//获得ADC值//ch:通道值0-3u16 Get_Adc(u8 ch){//设置指定ADC的规则组通道,设置它们的转化顺序和采样时间ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );//ADC1,,规则采样顺序值为1,采样时间为239.5周期ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能ADC的软件转换启动功能ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束return ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果}//获取通道ch的转换值,取times次,然后平均//ch:通道编号//times:获取次数//返回值:通道ch的times次转换结果平均值u16 Get_Adc_Average(u8 ch,u8 times){u32 temp_val=0;u8 t;for(t=0;t<times;t++){ temp_val+=Get_Adc(ch);delay_ms(5);}return temp_val/times;}二、LCD程序,文件名(lcd.c)#include "lcd.h"#include "stdlib.h"#include "delay.h"unsigned char digit[ ]={"0123456789 "}; void LCD_Writecmd(uchar cmd){LCD_RS=0; delay_us(1);LCD_RW=0; delay_us(1);DATAOUT(cmd);delay_us(300);LCD_EN=1;delay_us(300);//必要的延时LCD_EN=0; //下降沿,LCD1602开始工作}void LCD_Writedata(uchar dat){LCD_RS=1;delay_us(1);LCD_RW=0;delay_us(1);DATAOUT(dat);delay_us(300);LCD_EN=1; delay_us(300); //很重要的延时,经调试,延时300us以上才可以LCD_EN=0; //下降沿,开始写入有效数据}void LCD_DispString(char str[]){uchar i=0;for(i=0;str[i] != '\0';i++){LCD_Writedata(str[i]);}}void LCD_Dispnum(uint32_t num){ u16 R1=5000; u16 R2=5000;u16 R3=300;u16 Vin=40960; float x,y,z,rx;float t,VB; u16 T,RX,i;unsigned char B1,B2,B3,B4,B5;unsigned char C1,C2,C3,C4,C5;unsigned char D1,D2,D3,D4,D5;VB=(float)num/30;x=(float)VB/(float)Vin; //Rx = (R3*R2 + R2* (R1+R3)VB/Vin )/ (R1- (R1+R3)*VB/ Vin)y=R3*R2+(float)R2*(R1+R3)*x;z=R1- (R1+R3)*x;rx=y/z;RX=rx*1000/10;t=1.000/0.77*rx-300.000/0.77; //(0C,300)(100,377)T=t*1000/10;B5=num/10000;B4=num%10000/1000;B3=num%1000/100;B2=num%100/10;B1=num%10;C5=RX/10000;C4=RX%10000/1000;C3=RX%1000/100;C2=RX%100/10;C1=RX%10; if(C5==0){C5=11;if(C4==0){C4=11; }}D5=T/10000; D4=T%10000/1000;D3=T%1000/100;D2=T%100/10;D1=T%10;if(D5==0){ D5=12;if(D4==0){D4=12; }}LCD_Writecmd(0x80+0x06);LCD_Writedata(digit[B5]);LCD_Writedata('.');LCD_Writedata(digit[B4]);LCD_Writedata(digit[B3]);LCD_Writedata(digit[B2]);LCD_Writedata(digit[B1]);LCD_Writecmd(0x80+0x41);LCD_Writedata(digit[C5]);LCD_Writedata(digit[C4]);LCD_Writedata(digit[C3]);LCD_Writedata('.');LCD_Writedata(digit[C2]);LCD_Writedata(digit[C1]);LCD_Writecmd(0x80+0x48);LCD_Writedata(digit[D5]);LCD_Writedata(digit[D4]);LCD_Writedata(digit[D3]);LCD_Writedata('.');LCD_Writedata(digit[D2]);LCD_Writedata(digit[D1]);for(i=0;i<4;i++) //每1s采集一次数据)delay_ms(25);}void GPIO_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE );GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); //JTAG-DP 失能+ SW-DP使能GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3| GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_Write(GPIOB,0XFFFF); //PB口OD输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_SetBits(GPIOC, GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_8|GPIO_Pin_3);//如果每一位决定一个GPIO_Pin,则可以通过或的形式来初始化多个IO}void LCD_Init(void){ GPIO_Configuration();delay_ms(200); //延时200ms LCD_EN=0;LCD_Writecmd(0x38); delay_ms(5); LCD_Writecmd(0x38); delay_ms(5); LCD_Writecmd(0x38); delay_ms(5); LCD_Writecmd(0x08); delay_ms(5); LCD_Writecmd(0x06); delay_ms(5); LCD_Writecmd(0x01); delay_ms(5); LCD_Writecmd(0x0c); delay_ms(5); }三、主程序,文件名(main.c)#include "led.h"#include "delay.h"#include "sys.h"#include "usart.h"#include "lcd.h"#include "adc.h"int main(void){ u16 adcx;float V;u16 voltage;SystemInit();delay_init(72); //延时初始化NVIC_Configuration();uart_init(9600);LED_Init();LCD_Init();Adc_Init();while(1){adcx=Get_Adc_Average(ADC_CH1 ,200);V=(float)adcx*(3.3/4096);LCD_Writecmd(0x80);LCD_DispString("PA0 V: v");LCD_Writecmd(0x80+0x40);LCD_DispString("R T C");voltage=V*100000/10;LCD_Dispnum(voltage);LED0=!LED0;delay_ms(250);}}。

相关文档
最新文档