聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> 武汉理工大学信息工程专业毕业设计(论文)

武汉理工大学信息工程专业毕业设计(论文)

时间:2017-06-05 10:05:32    下载该word文档

武汉理工大学毕业设计(论文)

基于单片机的数码管显示的K型热电偶温度计的设计与仿真

学院(): 信息工程学院

专业班级: 信息工程xxxx

学生姓名:

指导教师:



学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包括任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。

作者签名:

学位论文版权使用授权书

本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士论文评选机构将本学位论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

本学位论文属于1、保密囗,在 年解密后适用本授权书

2、不保密囗

作者签名:

导师签名:



摘  要

本文主要介绍了基于热电偶温度传感器的测温系统的设计。利用转换芯片MAX6675k型热电偶,将温度信号转换成数字信号,通过模拟SPI的串行通信方式输送数据,在通过单片机处理数据,最后由数码管显示数据。

本文采用了带有冷端补偿的温度转换芯片MAX6675K型热电偶、89C51单片机、数码管等元器件设计了相应温度采集电路、温度转换电路、温度数码管显示电路。结合硬件电路给出了相应的软件设计,测温精度可达到0.25。本系统的工作流程是:首先热电偶采集温度,数据经过MAX6675内部电路的处理后送给单片机进行算法处理,最后通过数码管电路显示出测量温度。本设计最后对系统进行了proteus的调试和仿真,实现了设计的要求。

关键词 温度传感器 热电偶 热时间常数 冷端补偿



ABSTRACT

This design describes the thermocouple temperature sensor based on the rapid temperature measurement system.  The temperature signal is converted into digital signals by useing conversion chip max6675 and k-type thermocouple, conveying data via serial communication simulation spi in processing the data through the microcontroller, the final data from the digital tube display

 This design uses a temperature conversion chip MAX6675K-type thermocouple, 89C51microcontroller, LED and other components, design corresponding temperature acquisition circuit, temperature converter circuit, the LED display circuit. With the hardware give out The corresponding software design, temperature measurement accuracy up to 0.25 The system works is: first acquisition thermocouple temperature data through the Treatment of the of the MAX6675 internal circuit and be then sent to 89C51 Aim for rapid algorithm processing. Finally, the LED circuit shows the measurement temperature values. In the last, the design of the system was proteus debugging and simulation,achieve the design requirements.

KEY WORDS Temperature sensor Thermocouple Thermal time constant Cold

junction compensation













1 绪论

  温度是反映物体冷热状态的物理参数,对温度的测量在冶金工业、化工生产、电力工程、机械制造和食品加工、国防、科研等领域中有广泛地应用。在某些特殊的场合对温度的检测速度有很高的要求,例如:在测量汽车发动机吸入空气的温度的时候,就要求热响应时间小于1s;航天飞机的主发动机的温度测量要求0.4s 内完成等。因此针对以上问题就有人提出温度快速测量的思想。

  通常用来测量温度的传感器有热电阻温度传感器、热敏电阻、热电偶、半导体温度传感器等几种。这些常用温度传感器一般的温度测量中可以满足响应速度的问题。但在特殊的场合就不能达到快速检测的要求,例如在气体温度测量时候,由于温度传感器自身的热滞特性,而气体传热过程又比较缓慢,气体温度测量就有很大滞后。工业常用的精度较高的温度传感器有铂热电阻、半导体温度传感器等。铂热电阻具有温度测量范围大、重复性好、精度高等特点,但是响应不是很快,特别是在对气体温度测量时至少要几秒钟1]。所以用温度传感器一般都存在着对气体温度变化响应较慢的问题。在对温度实时性测量要求比较高的系统,运用常用温度测量方法很难做到对温度的快速测量,对系统的精度影响就很大。

  但是将热电偶应用在基于单片机的嵌入式系统领域时,却存在着以下几方面的问题[2]。①非线性:热电偶输出热电势与温度之间的关系为非线性关系,因此在应用时必须进行线性化处理。②冷端补偿:热电偶输出的热电势为冷端保持为0时与测量端的电势差值,而在实际应用中冷端的温度是随着环境温度而变化的,故需进行冷端补偿。③数字化输出:与嵌入式系统接口必然要采用数字化输出及数字化接口,而作为模拟小信号测温元件的热电偶显然无法直接满足这个要求。在许多热工实验中,往往面临热电偶冷端温度问题,不管是采用恒温补偿法(冰点补偿法)还是电桥补偿法,都会带来实验费用较高、实际的检测系统较复杂.难以达到实时测量、接口转换电路复杂等问题,而随着计算机测控技术在工业生产制造领域的普遍应用,温度参数的微机化测量与控制已成为必然趋势。因此我们必须解决对热电偶测量信号的放大调理、非线性校正、冷端补偿、模数转换、数字输出接口等一系列复杂的问题,以及解决模拟与数字电路硬件设计过程和建表、查表、插值运算等复杂的软件编制过程,以达到使电路简化,成本减少,增加系统可靠性的目的。

  鉴于上面的分析,本论文主要任务是设计一种基于高精度K型热电偶传感器测温系统。采用带有冷端补偿的温度转换芯片MAX6675K型热电偶、89C51单片机、数码管等元器件设计出相应温度采集电路、温度转换电路、数码管显示电路。系统用单片机对带有冷端补偿的温度转换芯片MAX6675进行控制,要达到任务书中的技术指标,并对系统进行protues的调试和仿真试验,使其具有良好的实用性能,能够实现对固体表面、液体和气体温度的高精度测量。



2 系统原理概述

2.1 热电偶测温基本原理

  热电偶测温的基本原理是两种不同成份的材质导体组成闭合回路[2],当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在热电动势,这就是所谓的塞贝克效应。两种不同成份的均质导体为热电极,温度较高的一端为工作端(热端),温度较低的一端为自由端(冷端),自由端通常处于某个恒定的温度下。根据热电动势与温度的函数关系制成热电偶分度表;分度表是自由端温度在0时的条件下得到的,不同的热电偶具有不同的分度表。在热电偶回路中接入第三种金属材料时,只要该材料两个接点的温度相同,热电偶所产生的热电势将保持不变,即不受第三种金属接入回路中的影响。因此,在热电偶测温时,可接入测量仪表,测得热电动势后即可知道被测介质的温度。热电偶的热电势,应注意如下几个问题:①、热电偶的热电势是热电偶两端温度函数的差,而不是热电偶两端温度差的函数;②、热电偶所产生的热电势的大小当热电偶的材料是均匀时,与热电偶的长度和直径无关,只与热电偶材料的成份和两端的温差有关;③、当热电偶的两个热电偶丝材料成份确定后,热电偶热电势的大小,只与热电偶的温度差有关。若热电偶冷端的温度保持一定,这时热电偶的热电势仅是工作端温度的单值函数。

2.2 热电偶冷端补偿方案

  热电偶测量温度时要求其冷端(测量端为热端,通过引线与测量电路连接的端称为冷端)的温度保持不变,其热电势大小才与测量温度呈一定的比例关系。若测量时,冷端的(环境)温度变化,将影响严重测量的准确性。在冷端采取一定措施补偿由于冷端温度变化造成的影响称为热电偶的冷端补偿。

2.2.1 分立元气件冷端补偿方案

方案一的热电偶冷端温度补偿器件是由分立元件构成的,其体积大,使用不够方便,而且在改变桥路电源或热电偶类型时需要重新调整电路的元件值。主要包括温度采集电路、信号放大电路、A/D转换电路、热电偶冷端补偿电路、数码管显示电路等。其系统框图如图2.1

2.1 分立元气件冷端补偿

2.2.2 集成电路温度补偿方案

方案二采用热电偶冷端补偿专用芯MAX6675MAX6675温度转换芯片具有冷端温度补偿及对温度进行数字化测量这两项功能[5]。一方面利用内置温度敏感二极管将环境温度转换成补偿电压,另一方面又通过模数转换器将热电势和补偿电压转换为代表温度的数字量, 将二者相加后从串行接口输出的测量结果,即为实际温度数据。主要包括温度采集电路、MAX6675温度转换电路、数码管显示电路等。其系统框图如图2.2

2.2 集成电路温度补偿

2.2.3 方案确定

  综合对比以上两种方案,方案一电路复杂,且测量不精确照成误差较大,方案二采用集成温度转换芯片不仅能很好的解决冷端温度补偿及温度数值化问题,并消除由热电偶非线性而造成的测量误差,且精确度高,可实现电路的优化设计。故最后采用方案二。

2.3硬件组成原理

  本系统硬件主要由热电偶温度采集电路、MAX6675温度处理电路、89C51单片机控制电路、超量程报警电路和数码管显示电路组成。

  热电偶采用分度号为K的热电偶,为了减少外界信号的干扰通过双绞线跟MAX6675芯片直接相连接。MAX6675芯片通过模拟SPI串行接口传输数据,采用的89C51单片机对带有冷端补偿的温度转换芯片MAX6675进行控制。本系统设计还具有报警的特点,当所测量的温度低于零摄氏度或者高于400摄氏度时报警电路发出警报。显示电路由89C51单片机通过74LS373对六位共阴数码管控制,,当所测温度在规定范围内时就可以通过数码管快速显示出来

2.4软件系统工作流程

系统的软件工作流程为:热电偶采集的温度数据;温度数据经过MAX6675内部电路的AD转换、冷端补偿、内部校正[6];温度转换电路将处理后12位数字温度量以串行方式送给单片机;单片机将数字量进行软件算法处理;如果测量温度在测量范围内,最后通过数码管显示出测量温度;如果超出测量范围由单片机控制使报警电路报警。其软件工作流程图如图2.3。系统软件设计主要包含主程序,重新测量、超量程报警子程序、显示子程序等功能模块。。

2.3 软件设计总体流程图

其中,SPI串口通信,可以利用proteus硬件仿真来查看,而数据处理是由keil软件仿真来查看结果,最后还是由proteus来验证整个设计是否成功。

3 元件和软件介绍

3.1 单片机选择及最小系统

  MCU是整个系统的控制核心,由于温度测量系统的接口方便,综合考虑整个系统,选用美国ATMEL公司生产的AT89C51型单片机[3]AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8CPU和闪烁存储器组合在单个芯片中,ATMELAT89C51是一种高效微控制器,其外观引脚图如下:

3.7 AT89C51外观图

  AT89C51提供以下标准功能[4]4k字节的flash闪速存储器,128字节内部RAM32I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0hz的静态逻辑操作,并支持两种软件可选的节电工作模式、空闲方式停止CPU工作,但允许RAM,定时/技术器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作指导下一个硬件复位。

  AT89C51共有4个双向的8位并行I/O端口,分别为P0~P3,共有32根口线,端口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。P0~P3的端口寄存器属于特殊功能寄存器系列。这四个端口除了可以按字节寻址外还可以位寻址。其中P0口为漏极开路作为输出使用时应外加上拉电阻,P3口既可以做为普通I/O口使用,还可以作为特定的功能引脚。虽然51单片机只有一个串口接口,但其I/O口既可以用字节寻址也可以位寻址,这样在实际应用中,我们就可以通过模拟不同总线的时序特征来实现各种数据的传输。

  AT89C51单片机内部有一个功能强大的全双工的一部通信串口。其串行口有四种工作方式:分别为同步通信方式、8位异步收发、9位异步收发(特定波特率)、9位异步收发(定时器控制波特率)。它有两个物理上独立接收发送缓冲器SBUF,可同时发送、接收数据。波特率可由软件设置片内的定时器来控制,而且每当串行口接收或发送1B完毕,均可发出中断请求[5]

3.2 热电偶介绍

 热电偶是工程上应用最广泛的温度传感器。它是将温度量转换为电量变化的装置。它构造简单,使用方便,具有较高的准确度、稳定性及复现性,温度测量范围宽,在温度测量中占有重要的地位。

 当两种不同材料的导体或半导体连成闭合回路时,将两个接点分别置于温度为TT0的热源中,该回路内会产生热电势。热电势的大小反映两个接点温度差,保持T0不变,热电势随着温度T变化而变化。测得热电势的值,即可知道温度T的大小。

3.1热电偶测温原理图

  产生的热电势由两部分组成:温差电势和接触电势。

3.2.1 K型热电偶概述

  K型热电偶作为一种温度传感器,K型热电偶通常和显示仪表,记录仪表和电子调节器配套使用。K型热电偶可以直接测量各种生产中从01300范围的液体蒸汽和气体介质以及固体的表面温度[6]

3.2热电偶

  镍铬-偶(K)型热电偶是目前用量最大的廉金属热电偶,其用量为其他热电偶的总和。K型热电偶丝直径一般为1.24.0mm

  正极(KP)的名义化学成分为:NiCr=9212,负极(KN)的名义化学成分为:NiSi=993,其使用温度为-200~1300

  K型热电偶具有线性度好,热电动势较大,灵敏度高,稳定性和均匀性较好,抗氧化性能强,价格便宜等优点,能用于氧化性惰性气氛中广泛为用户所采用。

  K型热电偶不能直接在高温下用于硫,还原性或还原,氧化交替的气氛中和真空中,也不推荐用于弱氧化气氛.

3.3 数字温度转换芯片MAX6675简介

  MAX6675是美国Maxin公司生产的基于SPI总线的专用芯片[9],不仅能对K型热电偶进行冷端补偿,还能对热电势信号作数字处理,具有很高的可靠性和稳定性,可广泛应用于工业、仪器仪表、自动化领域等。其内部结构框图如图3.3所示。

3.3 MAX6675内部结构框图

3.3.1 冷端补偿专用芯片MAX6675性能特点

  MAX6675的主要特性如下:

  ①简单的SPI串行口温度值输出。

  ②0~+l024的测温范围。

  ③120.25的分辨率。

  ④片内冷端补偿。

  ⑤高阻抗差动输入。

  ⑥热电偶断线检测。

  ⑦单一+5V的电源电压.

  ⑧低功耗特性。

  ⑨工作温度范围-20℃~+85

  ⑩2000VESD保护。

  该器件采用8引脚50贴片封装。引脚排列如图3.4所示,引脚功能如表3-1

3.4脚功能图

3-1 引脚功能表

引脚

名称

功能

1

GND

接地端

2

T-

K型热电偶负极

3

T+

K型热电偶正极

4

VCC

正电源端

5

SCK

串行时钟输入

6

CS

片选端,CS为低时、启动串行接口

7

SO

串行数据输出

8

N.C.

空引脚

3.3.2 冷端补偿专用芯片MAX6675温度变换

  MAX6675内部具有将热电偶信号转换为与ADC输入通道兼容电压的信号调节放大器,T+T-输入端连接到低噪声放大器A1,以保证检测输入的高精度,同时使热电偶连接导线与干扰源隔离。热电偶输出的热电势经低噪声放大器A1放大,再经过A2电压跟随器缓冲后,被送至ADC的输入端。在将温度电压值转换为相等价的温度值之前,它需要对热电偶的冷端温度进行补偿,冷端温度即是MAX6675周围温度与0实际参考值之间的差值。对于K型热电偶,电压变化率为41μV/℃,电压可由线性公式Vout=(41μV/)×(tR-tAMB)来近似热电偶的特性。上式中,Vout为热电偶输出电压(mV),tR是测量点温度;tAMB是周围温度  

3.4 KEIL软件仿真软件介绍

keil c51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统[7],与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98NTWIN2000WINXP等操作系统。如果你使用C语言编程,那么keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

此次的毕业设计主要是利用KEIL来完成程序的编写,主要用汇编语言来编写程序,用计时器来完成数码管动态显示的。在16进制转换成10进制时,利用keil来查寄存器从而看程序是否能达到转换的目的。

3.5 PROTEUS硬件仿真软件介绍

proteus软件是英国Labcenter electronics公司出版的EDA工具软件[8]。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051HC11PIC10/12/16/18/24/30/DsPIC33AVRARM8086MSP430等,2010年即将增加CortexDSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IARKeilMATLAB等多种编译

此次设计中,利用proteus完成整个电路的硬件仿真,并且在开始的数据采集阶段,利用proteus的示波器来查看数据是否传输。以及最后的阶段,看数据是否正确显示。

  

4 程序设计及硬件仿真

在这个部分,是根据数据的采集,传输,处理,显示来逐渐完成的。其中,有的部分可以用keil来查看结果,有的部分可以用proteus来查看程序结果。

4.1 数据的采集

热电偶作为一种主要的测温元件,具有结构简单、制造容易、使用方便、测温范围宽、测温精度高等特点[14]。但是,热电偶的应用却存在着非线性、冷端补偿、数字化输出等几方面的问题。设计中采用的MAX6675是一个集成了热电偶放大器、冷端补偿、A/D转换器及SPI串口的热电偶放大器与数字转换器,其电路如图3-14所示。

K型热电偶的两端分别跟MAX6675芯片的T-T+相连,为了允许热电偶断路检测,T-引脚必须接地。MAX6675的测量精度对电源耦合噪声较敏感。为降低电源噪声影响,在MAX6675的电源引脚附近接入10.1μF陶瓷旁路电容。温度由热电偶采集,然后将数据直接送给冷端补偿芯片MAX6675芯片进行处理,处理后送给单片机控制电路,完成简单的温度采集过程[9]

4.1 温度采集硬件图

4.2 数据传输部分

数据传输,即用单片机读取max6675的数字信号,其通信模式为SPI

串行外围设备接口SPIserial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口[10]SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主SPI的时钟信号(SCK)使传输同步。其时序图如下:

4.2 SPI通信模式时序图

 对于不带SPI串行总线接口的AT89C51系列单片机来说,可以使用软件来模拟 SPI的操作,包括串行时钟、数据输入和数据输出[11]MAX6675SPI串行接口输出数据的过程如下:MCU使CS变低并提供时钟信号给SCK,由S0读取测量结果。CS变低将停止任何转换过程:CS变高将启动一个新的转换过程。一个完整串行接口读操作需16个时钟周期,在时钟的下降沿读16个输出位,第l位和第15位是一伪标志位,并总为0,第14位到第3位为以MSBLSB顺序排列的转换温度值;第2位平时为低,当热电偶输入开放时为高,开放热电偶检测电路完全由MAX6675实现,为开放热电偶检测器操作,T-必须接地,并使接地点尽可能接近GND脚;第1位为低以提供MAX6675器件身份码,第0位为三态。对于在SCK的下降沿输入数据和上升沿输出数据的器件,则应取串行时钟输出的初始状态为0,即在接口芯片允许时,先置P110,以便外围接口芯片输出1位数据(MCU接收1位数据),之后再置时钟为1,使外围接口芯片接收1位数据(MCU发送1位数据),从而完成1位数据的传送。Max6675因为是传输16位数据,所以要分为高8位和低8位的传输。

P1.0 SO

P1.1 SCK

P1.2 CS

.

4.3 SPI总线接口电路

其程序如下:

CS BIT P1.2 ;从机

SCK BIT P1.1 ;时钟

SO BIT P1.0 ;数据输入

DATAH DATA 30H

DATAL DATA 31H

ORG 0000H

REDAT: CLR CS ;CS低电平,停止数据转换,

CLR SCK ;时钟置为低电平

MOV R2, #08H ;读数据高位字节D15-D8

RDH: MOV C,SO ;SO端数据

RLC A ;累加器左移一位

SETB SCK

NOP

CLR SCK

DJNZ R2,RDH

MOV DATAH,A ;将数据高位移入缓冲区

MOV R2,#08H

RDL: MOV C,SO ;SO端数据;读数据低位字节D7-D0

RLC A ;累加器左移一位

SETB SCK

NOP

CLR SCK

DJNZ R2,RDL

MOV DATAL,A ;将数据低位移入缓冲区

SETB CS

相应的硬件仿真搭建如下:

4.4 SPI硬件仿真接线

数据传输的过程,可以用proutes自带的示波器查看,如下图:

4.5 SPI通信时序图

在上图中,第一行是单片机读取max6675的数据,第二行是单片机模拟的,给max6675的始终信号,第三行是cs信号。

4.3 数据处理部分

在此过程中,不好用protues来查看结果,不过可以利用keil来查看寄存器的结果,只要我们首先给个初始数据,然后最后再印证下就可以。

  MAX667多采用标准的SPI串行外设总线与MCU接口,且MAX6675只能作为从设备。MAX6675S0端输出温度数据的格式如图3.5所示[12]

4.6 MAX6675输出温度数据的格式

  D14D312位数据,其最小值为0,对应的温度值为0;最大值为4095,对应的温度值为1023.75;由于MAX6675内部经过了激光修正,因此,其转换结果与对应温度值具有较好的线性关系。温度值与数字量的对应关系为:

温度值= 1023.75×转换后的数字量/4095=转换后的数字量/4

所以第一步是得到数字量,第二步是得到温度值,但可以简化为,直接得到温度值,然后再进制转换。其程序流程图如4.2示。主要先是将非数据位的数据清零,然后将16位数据全部右移3为,可以得到转换后的数字量,然后再右移2位,得到温度值。其中,右移最后的两位会得到小数部分,这部分可以直接赋值。

4.7 温度转换程序流程图

4.3.1 数据转换

这部分主要进行的16位数据的整体右移和保存小数位。在整个程序中,DATAH保存高8位数据,DATAL保存低8位数据,DATAX保存小数数据。其程序流程图如下:

4.8 数据处理流程图

其中,保存小数百分位是直接根据右移后的标志位,然后直接置DATAX25,同理,十分位是50。在这个部分,DATAH保存数据高2位,DATAL保存数据低8位,而小数部分由于不需要进制转换,所以直接存放在DATAX中,直到最后显示的时候调出来。

对此,16位数据右移一位的程序如下:

MOV A,DATAH ;数据高位保存在A

CLR C ;清除标志位

RRC A ;A带位右移

MOV DATAH,A ;A保存在DATAH

MOV A,DATAL ;DATAL存储在A

RRC A ;带位右移,此时CYDATAH的最后一位

MOV DATAL,A;DATAL右移,并且高位是DATAH的末位

对于特殊要保存小数位的右移,其程序如下:

MOV A,DATAH

CLR C

RRC A

MOV DATAH,A 16位数据右移一位,

MOV A,DATAL ;并且若一出一个高位,则

RRC A ;使两位小数+25.

MOV DATAL,A

JNC SW

MOV A,#25H

MOV DATAX,A

SW: MOV A,DATAH ;同上,不过这次若是高位,则+50

CLR C ;这两步是为了得到温度值的

RRC A ;小数部分

MOV DATAH,A MOV A,DATAL

RRC A

MOV DATAL,A

MOV A,DATAX

ADD A,#50H

MOV DATAX,A

在整个调试过程中,这部分程序由于简单,也没有出现问题,所以就没有验证过。

4.3.2 进制转换

用汇编实现,可以用书中的程序。双字节二进制整数转换成3字节BCD码整数的子程序[13]。其采用的算法是,依次将整数的每位左移至CY位,再把CY位左移至一个3字节队列中,并进行十进制调整。通过16次移位完成运算,结果为压缩格式的3字节BCD编码。其程序如下:

ZH: MOV R6,DATAH ;将要保存的数据存放

MOV R7,DATAL ;高位存放在R6,低位R7

CLR A ;将要保存数据的寄存器清零

MOV R3,A

MOV R4,A

MOV R5,A

MOV R2,#10H;

RLOOP: MOV A,R7; ;完成十六进制到10进制的转换

RLC A

MOV R7,A

MOV A,R6

RLC A

MOV R6,A

MOV A,R5

ADDC A,R5

DA A

MOV R5,A

MOV A,R4

ADDC A,R4

DA A

MOV R4,A

MOV A,R3

ADDC A,R3

MOV R3,A

DJNZ R2,RLOOP

其运行结果如下图:



4.9 进制转换结果,转换前(坐),转换后(右)

经过运算,445H=1093,即完成了对数据的进制的转换。

4.4 显示部分程序及仿真

这部分,根据论文题目要求是用数码管来显示。数码管动态显示,可以用延时子程序方法,或者用计时器中断的方式来延时[14]。这部分最后选择用计时器中断的方式来完成数码管动态显示延时的需要。主要是开始用调用延时子程序的方法是,一直没有找对延时时间的比较好的设置,从而是数码管一直闪烁,不能正常的显示。而通过计时器中断的方式,最后得到了不错的显示效果。

4.4.1 显示部分硬件设计

LED显示器是单片机应用系统中常用的输出器件,是由若干个发光二极管组成的,当发光二极管导通时,相应的一个或一个笔画发光,控制不同组合的二极管导通,这就能显示出不同字符。

  点亮显示器有静态和动态两种方式。所谓静态显示就是显示器在显示某个字符时,相应的发光二极管恒定的导通或截止。这种显示方式每个显示器都需要一个8位输出口控制,需要硬件多,适用于显示位数较少的场合。当显示位数较多时采用动态显示。所谓动态显示就是一位一位的轮流点亮各位显示器,对于每位显示器来说,每隔一段时间点亮一次。显示器的点亮和点亮时的导通电流有关,还与点亮时间和间隔时间有关,调整电流和时间参数,可实现亮度较高较稳定的显示。

  如图3,是用6个共阴极数码管的动态显示借口电路,用74LS373接成直通的方式作为驱动电路,字型选择P0口提供,位选择由P3口提供。

4.10 数码管显示电路

74LS373三态输出的8D透明锁存器。锁存器的最主要作用是缓存,其次完成高速的控制器与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个 I/O 口既能输出也能输入的问题。自此利用74LS373既解决了P口驱动不足的问题,也解决了MCU和数码管速率不同,从而产生的拖影的感觉。

4.4.2 显示部分程序设计

先存放数据,用来测试,这部分是用计时器中断完成的。其程序流程图如下:

4.11 显示部分流程图

这部分软件设计如下:

MAIN: MOV SP,#70H ;初始化堆栈

MOV LEDBUF,#6

MOV LEDBUF+1,#6

MOV LEDBUF+2,#7

MOV LEDBUF+3,#5

MOV LEDBUF+4,#3

MOV LEDBUF+5,#1

MOV R0,#LEDBUF ;ledbuf的首地址给R0

MOV DPTR,#TABLE ;TABLE的首是址给DPTR

MOV R2,#06H ;R2作为循环次数寄存器

MOV R1,#01H ;R1中放片选信号

MOV TMOD, #01H ;定时器0工作在方式1

MOV TH0, #0DFH

MOV TL0,#0B0H ;初始代定时器0

SETB TR0 ;开定时器0

SETB EA ;开总中断

SETB ET0 ;开定时器0中断

SJMP $ ;动态停机

TIME0: DJNZ R2, LOOP1 ;建立一个循环,并且能初始值再次循环

MOV R2,#06H

MOV R1,#01H

MOV R0,#LEDBUF ;初始化数据

LOOP1: MOV TH0,#0DFH

MOV TL0,#0B0H ;初始化定时器0

CJNE R2,#03,WXUD ;4位有小数点,所以单独显示

MOV P3,A

RL A

MOV R1,A ;片选信号输入P1并且使其数据左移一位

MOV A,@R0

MOVC A,@A+DPTR

MOV P2,A ;通过查表,将字码送给偏、p2

CLR P2.7 ;使小数点显示出来

INC R0

RETI

WXUD: MOV A,R1 ;

MOV P3,A

RL A

MOV R1,A ;片选信号输入P1并且使其数据左移一位

MOV A,@R0

MOVC A,@A+DPTR

MOV P2,A

INC R0 ;通过查表将ledbuf中数据送往P2

RETI

其运行结果如下:

4.12 数码管动态显示硬件仿真结果

其中小数点的位置是根据需要而对其中的一位,在输出字形码之后,再对DP位对应的P2.7置零。从而是数据显示比较正常。

5  系统仿真

经过第4章的分部设计以及仿真,在第5章就汇总了各个部分,再利用proteus来测试其温度误差。由于只是硬件仿真,为了简洁,便省去了74LS373寄存器。

根据MAX6675芯片手册,其误差是0.25℃量程是01023.75℃。

当给k型热电偶加20.50℃时,其显示结果如下:

5.1 20.50℃的测量结果

K型热电偶加100.30℃时,其显示结果如下:

5.2 100.30℃测量结果

K型热电偶加150.25℃时,其显示结果如下:

5.3 150.25℃测量结果

由以上测试可以看出,其零点误差为0.75摄氏度,线性误差极低。当然,如果对零点误差进行修正。还有,猜测,因为硬件仿真也是由软件实现的,或许程序用在实物上,结果可能会更好一点[15]

  本文主要介绍了基于热电偶温度传感器的快速测温系统。对系统原理进行了简单的概述,着重分析了系统的硬件设计方案跟软件设计方案。最后对系统进行了仿真实验,很好的完成了设计要求。

  本文主要采用K型热电偶、K型热电偶专用数字转换芯片MAX6675AT89C51单片机进行了相关设计。MAX6675将热电偶测温应用时复杂的线性化、冷端补偿及数字化输出等问题集中在一个芯片上解决,简化了将热电偶测温方案应用于嵌入式系统领域时复杂的软硬件设计,因而该器件是将热电偶测温方案应用于嵌入式系统领域的理想选择。根据快速算法的原理通过AT89C51单片机软件编程实现了温度的快速测量。

  毕业设计是我们在大学期间的最后一门课程,也是能将大学期间最重要的几门理论课联系实际的课程,由此可知毕业设计的重要性。在路立平路老师的精心指导和其他同学的帮助下,经历三个多月的努力和实践,我终于完成了毕业设计,并在此次毕业设计的实践中获益良多。此次毕业设计让我们有机会将大学四年所学的专业课程与实际的实践紧密联系起来,加深了我们对理论知识的理解和掌握,开阔了我们的视野,最重要的是锻炼了我们勤于思考问题的能力,熟练使用电脑办公软件的能力,独立查阅资料的能力,分析问题与解决问题的能力,以及操作专业软件的能力,让我们基本具备了一个工程技术人员应有的基本素养。

  通过本学期的毕业设计巩固了我们的基础知识,培养了我们的创新意识,以及集体协作等多方面的综合素质。这些都将会在我们将来的工作和学习当中受益匪浅。 然而,由于基础知识的掌握还不够牢靠,准备的时间不够充分等原因。我在设计的实用性方面还存在不足之处,还有很多不尽人意的地方。希望在将来工作实践当中,进一步提高自己、完善自己。

参考文献

[1] 樊尚春. 传感器技术及应用[M].北京:北京航空航天大学出版社.2010.

[2] 胡向东.传感器与检测技术[M].北京:机械工业出版社.2009.

[3] 谢维成.单片机原理与应用及C51程序设计[M].北京:清华大学出版社.2009.

[4] 马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社.2013

[5] 清源科技.Protel99SE电路原理图与PCB设计及仿真M.北京:机械工业出版社.2011.

[6] 刘坤,高征红.Protel 99SE电路设计实例教程[M]. 北京:清华大学出版社.2008.

[7] 朱清慧.Proteus教程电子线路设计、制版与仿真[M]. 北京:清华大学出版社.2011.

[8] 陈海宴.51单片机原理及应用基于KeilProteus[M].北京:北京航空航天大学出版社.2013.

[9] 韩玉杰.基于MAX6675的烘炉温度追踪仪的研究及设计[J].自动化仪表,2006, 27(5):59- 61.

[10] 黄亮,郝晓剑.热电偶时间常数测量研究[J].传感器世界,2006,9:20-23.

[11] Anuradha Ranasinghe.[J].SAITM Research Synposium on Enigneering Advacnemengt.2013:68-71.

[12] M.Srinivasan Low cost digital measurement system for determination of temperature rise in dry type transformer[J]. Int. J. Instrumentation Technology, Vol. 1, No. 1, 2011:72-82.

[13] Su Jun, Orest Kochan. Investigations of Thermocouple Drift Irregularity Impact on

Error of their Inhomogeneity Correction[J]. MEASUREMENT SCIENCE REVIEW, Volume 14, No. 1, 2014:29-34

[14] Bardyla Tadey, Naumenko Vladimir. Correction of Static and Dynamic Errors of Thermometers[J]. TCSET'2012, February 21–24, 2012, Lviv-Slavske, Ukraine:510-511.

[15]沙占权,葛家怡,王彦朋.热电偶冷端补偿电路的优化设计[J].电测与仪表,2003,4517): 26-28.

附  录

附录1 电路原理图



附录2 硬件电路仿真图

附录3 源程序代码

CS BIT P1.2 ;从机控制

SCK BIT P1.1 ;时钟

SO BIT P1.0 ;数据输入

DATAH DATA 30H ;16位数据高8

DATAL DATA 31H ;16位数据低8

DATAX DATA 32H ;转换后小数数值

DATALM DATA 33H ;温度最大值设定

LEDBUF EQU 40H

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP TIME0

ORG 0030H

TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;共阳极数码管显示代码表

DB 92H, 82H, 0F8H ,80H,90H

MAIN: LCALL DAY ;延时,从而得到准确的数据

LCALL DAY

LCALL DAY

REDAT: MOV A,#00H

CLR C

CLR CS ;CS低电平,进行数据传输

CLR SCK ;时钟不变时,为低电平

MOV R2, #08H ;读数据高位字节D15-D8

RDH: MOV C,SO ;SO端数据

RLC A ;累加器左移一位

SETB SCK

NOP

NOP

CLR SCK

DJNZ R2,RDH

MOV DATAH,A ;将数据高位移入缓冲区

MOV R2,#08H

RDL: MOV C,SO ;SO端数据;读数据低位字节D7-D0

RLC A ;累加器左移一位

SETB SCK

NOP

NOP

CLR SCK

DJNZ R2,RDL

MOV DATAL,A ;将数据低位移入缓冲区

SETB CS ;CS高电平,停止数据输出D16T12: MOV A,DATAL ;这部分是保留D15D3的有效数据

ANL A,#0F8H ;清除低的3

MOV DATAL,A

MOV A,DATAH

ANL A,#7FH

MOV DATAH,A ;清除高一位

MOV A,DATAH ;16位数据,右移一位

CLR C

RRC A

MOV DATAH,A

MOV A,DATAL

RRC A

MOV DATAL,A

MOV A,DATAH ;16位数据,右移一位

CLR C

RRC A

MOV DATAH,A

MOV A,DATAL

RRC A

MOV DATAL,A

MOV A,DATAH

CLR C

RRC A

MOV DATAH,A 16位数据右移一位,

MOV A,DATAL ;并且若一出一个高位,则

RRC A ;使两位小数+25.

MOV DATAL,A

JNC SW

MOV A,#25H

MOV DATAX,A

SW: MOV A,DATAH ; ;同上,不过这次若是高

CLR C 位,则加50.这两步是

RRC A ;为了,得到温度值的

MOV DATAH,A ;小数部分

MOV A,DATAL

RRC A

MOV DATAL,A

MOV A,DATAX

ADD A,#50H

MOV DATAX,A

MOV A,DATAH

CJNE A,#01H,BJ ;利用比较和跳转,看

BJ: JC ZH ;温度值是否超过量程

SETB P3.7 ;若超过,则驱动led

LJMP MAIN

ZH: MOV R6,DATAH ;这部分是将2进制数据

MOV R7,DATAL ;转换成4bcd码,

CLR A ;也就是16进制转换成

MOV R3,A 10进制来显示

MOV R4,A

MOV R5,A

MOV R2,#10H;

RLOOP: MOV A,R7; ;完成十六进制到10进制的转换

RLC A

MOV R7,A

MOV A,R6

RLC A

MOV R6,A

MOV A,R5

ADDC A,R5

DA A

MOV R5,A

MOV A,R4

ADDC A,R4

DA A

MOV R4,A

MOV A,R3

ADDC A,R3

MOV R3,A

DJNZ R2,RLOOP

XS: MOV SP,#70H ;初始化堆栈

MOV B,#10H ;下面的部分主要将数据分别

MOV A,R4 ;送入内存中,用以后面显示

DIV AB

MOV LEDBUF,A

MOV LEDBUF+1,B

MOV A,R5

MOV B,#10H

DIV AB

MOV LEDBUF+2,A

MOV LEDBUF+3,B

MOV A,DATAX

MOV B,#10H

DIV AB

MOV LEDBUF+4,A

MOV LEDBUF+5,B

MOV R0,#LEDBUF ;ledbuf的首地址给R0

MOV DPTR,#TABLE ;TABLE的首是址给DPTR

MOV R2,#06H ;R2作为循环次数寄存器

MOV R1,#01H ;R1中放片选信号

MOV TMOD, #01H ;定时器0工作在方式1

MOV TH0, #0DFH

MOV TL0,#0B0H ;初始代定时器0

SETB TR0 ;开定时器0

SETB EA ;开总中断

SETB ET0 ;开定时器0中断

SJMP $ ;动态停机

TIME0: DJNZ R2, LOOP1 ;建立一个循环,并且能初始值再次循环

MOV R2,#06H

MOV R1,#01H

MOV R0,#LEDBUF ;初始化数据

LOOP1: MOV TH0,#0DFH

MOV TL0,#0B0H ;初始化定时器0

CJNE R2,#03,WXUD ;4位有小数点,所以单独显示

MOV P3,A

RL A

MOV R1,A ;片选信号输入P1并且使其数据左移一位

MOV A,@R0

MOVC A,@A+DPTR

MOV P2,A

CLR P2.7 ;这一步就是使小数点显示出来

INC R0 ;通过查表将ledbuf中数据送往P2

RETI

WXUD: MOV A,R1 ;

MOV P3,A

RL A

MOV R1,A ;片选信号输入P1并且使其数据左移一位

MOV A,@R0

MOVC A,@A+DPTR

MOV P2,A

INC R0 ;通过查表将ledbuf中数据送往P2

RETI

DAY: MOV R6,#0FFH ;延时,用来读取数据

DL2: MOV R7,#0FFH

DL1: NOP

DJNZ R7,DL1

DJNZ R6,DL2

RET

END

致  谢

  不知不觉,大学的四年已经过去,在这四年中,我在电子这个大集体中,感到非常的开心。我们在一起工作,一起学习,一起玩。我们共同度过了难忘的四年,感谢我们班的每一位同学,每一位朋友,你们陪我度过了人生中的大学时光。我非常感谢我的母校给了我们相聚的机会,同时也感谢母校在这四年里给予了我良好的教育和培养。在做毕业设计的这半年,不论是理论知识,还是实践动手能力,我都学了很多,这些都离不开老师、同学、朋友的帮助和支持,在这里对大家表示最真诚的谢意。

  首先,我要感谢我的师,本设计的完成的细心指导下进行的。在每次设计遇到问题时老师不辞辛苦的讲解才使得我的设计顺利的进行。从设计的选题到资料的搜集直至最后设计的修改的整个过程中,花费了路老师很多的宝贵时间和精力,在此向导师表示衷心地感谢!导师严谨的治学态度,开拓进取的精神和高度的责任心都将使我受益终生!

  同时,还要感谢和我同一设计小组的几位同学,是你们在我平时设计中和我一起探讨问题,并指出我设计上的误区,使我能及时的发现问题把设计顺利的进行下去,没有你们的帮助我不可能这样顺利地结稿,在此表示深深的谢意。

  再者,就是我的室友们,我们一起生活了四年,我很开心遇到你们,并和你们一起生活。在这四年,你们给与我了温暖与快乐,我祝福你们。

  最后,我感谢我的父母,他们的理解与支持,都是我人生前进的莫大动力。我祝福他们。

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服