基于单片机的数码管显示的K型热电偶温度计的设计与仿真(共40页).doc

上传人:飞****2 文档编号:13894404 上传时间:2022-05-01 格式:DOC 页数:40 大小:922.50KB
返回 下载 相关 举报
基于单片机的数码管显示的K型热电偶温度计的设计与仿真(共40页).doc_第1页
第1页 / 共40页
基于单片机的数码管显示的K型热电偶温度计的设计与仿真(共40页).doc_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《基于单片机的数码管显示的K型热电偶温度计的设计与仿真(共40页).doc》由会员分享,可在线阅读,更多相关《基于单片机的数码管显示的K型热电偶温度计的设计与仿真(共40页).doc(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上武汉理工大学毕业设计(论文)基于单片机的数码管显示的K型热电偶温度计的设计与仿真学院(系): 信息工程学院 专业班级: 信息工程xxxx班学生姓名: xx 指导教师: xx 专心-专注-专业学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包括任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。作者签名: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印

2、件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士论文评选机构将本学位论文的全部或部分内容编入有关数据进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密囗,在 年解密后适用本授权书2、不保密囗 。作者签名: 年 月 日导师签名: 年 月 日摘要本文主要介绍了基于热电偶温度传感器的测温系统的设计。利用转换芯片MAX6675和k型热电偶,将温度信号转换成数字信号,通过模拟SPI的串行通信方式输送数据,在通过单片机处理数据,最后由数码管显示数据。本文采用了带有冷端补偿的温度转换芯片MAX6675、K型热电偶、89C51单片机、数码管等元器件设计了相应温度采集

3、电路、温度转换电路、温度数码管显示电路。结合硬件电路给出了相应的软件设计,测温精度可达到0.25。本系统的工作流程是:首先热电偶采集温度,数据经过MAX6675内部电路的处理后送给单片机进行算法处理,最后通过数码管电路显示出测量温度。本设计最后对系统进行了proteus的调试和仿真,实现了设计的要求。关键词温度传感器热电偶热时间常数冷端补偿ABSTRACTThis design describes the thermocouple temperature sensor based on the rapid temperature measurement system. The temperat

4、ure 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 displayThis design uses a temperature conversion chi

5、p MAX6675,K-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 s

6、ystem 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 prot

7、eus debugging and simulation,achieve the design requirements.KEY WORDS Temperature sensor Thermocouple Thermal time constant Cold junction compensation目 录第1章绪论温度是反映物体冷热状态的物理参数,对温度的测量在冶金工业、化工生产、电力工程、机械制造和食品加工、国防、科研等领域中有广泛地应用。在某些特殊的场合对温度的检测速度有很高的要求,例如:在测量汽车发动机吸入空气的温度的时候,就要求热响应时间小于1s;航天飞机的主发动机的温度测量要求0.

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

9、要求比较高的系统,运用常用温度测量方法很难做到对温度的快速测量,对系统的精度影响就很大。但是将热电偶应用在基于单片机的嵌入式系统领域时,却存在着以下几方面的问题2。非线性:热电偶输出热电势与温度之间的关系为非线性关系,因此在应用时必须进行线性化处理。冷端补偿:热电偶输出的热电势为冷端保持为0时与测量端的电势差值,而在实际应用中冷端的温度是随着环境温度而变化的,故需进行冷端补偿。数字化输出:与嵌入式系统接口必然要采用数字化输出及数字化接口,而作为模拟小信号测温元件的热电偶显然无法直接满足这个要求。在许多热工实验中,往往面临热电偶冷端温度问题,不管是采用恒温补偿法(冰点补偿法)还是电桥补偿法,都会

10、带来实验费用较高、实际的检测系统较复杂.难以达到实时测量、接口转换电路复杂等问题,而随着计算机测控技术在工业生产制造领域的普遍应用,温度参数的微机化测量与控制已成为必然趋势。因此我们必须解决对热电偶测量信号的放大调理、非线性校正、冷端补偿、模数转换、数字输出接口等一系列复杂的问题,以及解决模拟与数字电路硬件设计过程和建表、查表、插值运算等复杂的软件编制过程,以达到使电路简化,成本减少,增加系统可靠性的目的。鉴于上面的分析,本论文主要任务是设计一种基于高精度K型热电偶传感器测温系统。采用带有冷端补偿的温度转换芯片MAX6675、K型热电偶、89C51单片机、数码管等元器件设计出相应温度采集电路、

11、温度转换电路、数码管显示电路。系统用单片机对带有冷端补偿的温度转换芯片MAX6675进行控制,要达到任务书中的技术指标,并对系统进行protues的调试和仿真试验,使其具有良好的实用性能,能够实现对固体表面、液体和气体温度的高精度测量。第2章系统原理概述2.1热电偶测温基本原理热电偶测温的基本原理是两种不同成份的材质导体组成闭合回路2,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在热电动势,这就是所谓的塞贝克效应。两种不同成份的均质导体为热电极,温度较高的一端为工作端(热端),温度较低的一端为自由端(冷端),自由端通常处于某个恒定的温度下。根据热电动势与温度的函数关系制成热电偶

12、分度表;分度表是自由端温度在0时的条件下得到的,不同的热电偶具有不同的分度表。在热电偶回路中接入第三种金属材料时,只要该材料两个接点的温度相同,热电偶所产生的热电势将保持不变,即不受第三种金属接入回路中的影响。因此,在热电偶测温时,可接入测量仪表,测得热电动势后即可知道被测介质的温度。热电偶的热电势,应注意如下几个问题:、热电偶的热电势是热电偶两端温度函数的差,而不是热电偶两端温度差的函数;、热电偶所产生的热电势的大小当热电偶的材料是均匀时,与热电偶的长度和直径无关,只与热电偶材料的成份和两端的温差有关;、当热电偶的两个热电偶丝材料成份确定后,热电偶热电势的大小,只与热电偶的温度差有关。若热电

13、偶冷端的温度保持一定,这时热电偶的热电势仅是工作端温度的单值函数。2.2热电偶冷端补偿方案热电偶测量温度时要求其冷端(测量端为热端,通过引线与测量电路连接的端称为冷端)的温度保持不变,其热电势大小才与测量温度呈一定的比例关系。若测量时,冷端的(环境)温度变化,将影响严重测量的准确性。在冷端采取一定措施补偿由于冷端温度变化造成的影响称为热电偶的冷端补偿。2.2.1分立元气件冷端补偿方案方案一的热电偶冷端温度补偿器件是由分立元件构成的,其体积大,使用不够方便,而且在改变桥路电源或热电偶类型时需要重新调整电路的元件值。主要包括温度采集电路、信号放大电路、A/D转换电路、热电偶冷端补偿电路、数码管显示

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

15、X6675温度信号转换芯片单片机控制器数码管显示电路报警电路图2.2 集成电路温度补偿2.2.3方案确定综合对比以上两种方案,方案一电路复杂,且测量不精确照成误差较大,方案二采用集成温度转换芯片不仅能很好的解决冷端温度补偿及温度数值化问题,并消除由热电偶非线性而造成的测量误差,且精确度高,可实现电路的优化设计。故最后采用方案二。2.3硬件组成原理本系统硬件主要由热电偶温度采集电路、MAX6675温度处理电路、89C51单片机控制电路、超量程报警电路和数码管显示电路组成。热电偶采用分度号为K的热电偶,为了减少外界信号的干扰通过双绞线跟MAX6675芯片直接相连接。MAX6675芯片通过模拟SPI

16、串行接口传输数据,采用的89C51单片机对带有冷端补偿的温度转换芯片MAX6675进行控制。本系统设计还具有报警的特点,当所测量的温度低于零摄氏度或者高于400摄氏度时报警电路发出警报。显示电路由89C51单片机通过74LS373对六位共阴数码管控制,当所测温度在规定范围内时就可以通过数码管快速显示出来2.4软件系统工作流程系统的软件工作流程为:热电偶采集的温度数据;温度数据经过MAX6675内部电路的AD转换、冷端补偿、内部校正6;温度转换电路将处理后12位数字温度量以串行方式送给单片机;单片机将数字量进行软件算法处理;如果测量温度在测量范围内,最后通过数码管显示出测量温度;如果超出测量范围

17、由单片机控制使报警电路报警。其软件工作流程图如图2.3。系统软件设计主要包含主程序,重新测量、超量程报警子程序、显示子程序等功能模块。开始读取max6675数据数据是否稳定 否是从16位数据中得到12位温度数据 是否超出量程报警电路 是否将数据进行进制转换调用显示子程序 返回图2.3 软件设计总体流程图其中,SPI串口通信,可以利用proteus硬件仿真来查看,而数据处理是由keil软件仿真来查看结果,最后还是由proteus来验证整个设计是否成功。第3章 元件和软件介绍3.1单片机选择及最小系统MCU是整个系统的控制核心,由于温度测量系统的接口方便,综合考虑整个系统,选用美国ATMEL公司生

18、产的AT89C51型单片机3。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,其外观引脚图如下:图3.7 AT89C51外观图 AT89C51提供以下标准功能4:4k字节的flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内

19、振荡器及时钟电路。同时,AT89C51可降至0hz的静态逻辑操作,并支持两种软件可选的节电工作模式、空闲方式停止CPU工作,但允许RAM,定时/技术器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作指导下一个硬件复位。AT89C51共有4个双向的8位并行I/O端口,分别为P0P3,共有32根口线,端口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。P0P3的端口寄存器属于特殊功能寄存器系列。这四个端口除了可以按字节寻址外还可以位寻址。其中P0口为漏极开路作为输出使用时应外加上拉电阻,P3口既可以做为普通I/O口使用,还可以作为特定的功能引脚。

20、虽然51单片机只有一个串口接口,但其I/O口既可以用字节寻址也可以位寻址,这样在实际应用中,我们就可以通过模拟不同总线的时序特征来实现各种数据的传输。AT89C51单片机内部有一个功能强大的全双工的一部通信串口。其串行口有四种工作方式:分别为同步通信方式、8位异步收发、9位异步收发(特定波特率)、9位异步收发(定时器控制波特率)。它有两个物理上独立接收发送缓冲器SBUF,可同时发送、接收数据。波特率可由软件设置片内的定时器来控制,而且每当串行口接收或发送1B完毕,均可发出中断请求5。3.2 热电偶介绍热电偶是工程上应用最广泛的温度传感器。它是将温度量转换为电量变化的装置。它构造简单,使用方便,

21、具有较高的准确度、稳定性及复现性,温度测量范围宽,在温度测量中占有重要的地位。当两种不同材料的导体或半导体连成闭合回路时,将两个接点分别置于温度为T和T0的热源中,该回路内会产生热电势。热电势的大小反映两个接点温度差,保持T0不变,热电势随着温度T变化而变化。测得热电势的值,即可知道温度T的大小。图3.1热电偶测温原理图产生的热电势由两部分组成:温差电势和接触电势。3.2.1K型热电偶概述K型热电偶作为一种温度传感器,K型热电偶通常和显示仪表,记录仪表和电子调节器配套使用。K型热电偶可以直接测量各种生产中从0到1300范围的液体蒸汽和气体介质以及固体的表面温度6。图3.2热电偶镍铬-偶(K)型

22、热电偶是目前用量最大的廉金属热电偶,其用量为其他热电偶的总和。K型热电偶丝直径一般为1.24.0mm。正极(KP)的名义化学成分为:Ni:Cr=92:12,负极(KN)的名义化学成分为:Ni:Si=99:3,其使用温度为-2001300。K型热电偶具有线性度好,热电动势较大,灵敏度高,稳定性和均匀性较好,抗氧化性能强,价格便宜等优点,能用于氧化性惰性气氛中广泛为用户所采用。K型热电偶不能直接在高温下用于硫,还原性或还原,氧化交替的气氛中和真空中,也不推荐用于弱氧化气氛.3.3 数字温度转换芯片MAX6675简介MAX6675是美国Maxin公司生产的基于SPI总线的专用芯片9,不仅能对K型热电

23、偶进行冷端补偿,还能对热电势信号作数字处理,具有很高的可靠性和稳定性,可广泛应用于工业、仪器仪表、自动化领域等。其内部结构框图如图3.3所示。图3.3 MAX6675内部结构框图3.3.1冷端补偿专用芯片MAX6675性能特点MAX6675的主要特性如下:简单的SPI串行口温度值输出。0+l024的测温范围。12位0.25的分辨率。片内冷端补偿。高阻抗差动输入。热电偶断线检测。单一+5V的电源电压.低功耗特性。工作温度范围-20+85。2000V的ESD保护。该器件采用8引脚50贴片封装。引脚排列如图3.4所示,引脚功能如表3-1。图3.4脚功能图表3-1引脚功能表引脚名称功能1GND接地端2

24、T-K型热电偶负极3T+K型热电偶正极4VCC正电源端5SCK串行时钟输入6CS片选端,CS为低时、启动串行接口7SO串行数据输出8N.C.空引脚3.3.2冷端补偿专用芯片MAX6675温度变换MAX6675内部具有将热电偶信号转换为与ADC输入通道兼容电压的信号调节放大器,T+和T-输入端连接到低噪声放大器A1,以保证检测输入的高精度,同时使热电偶连接导线与干扰源隔离。热电偶输出的热电势经低噪声放大器A1放大,再经过A2电压跟随器缓冲后,被送至ADC的输入端。在将温度电压值转换为相等价的温度值之前,它需要对热电偶的冷端温度进行补偿,冷端温度即是MAX6675周围温度与0实际参考值之间的差值。

25、对于K型热电偶,电压变化率为41V/,电压可由线性公式Vout=(41V/)(tR-tAMB)来近似热电偶的特性。上式中,Vout为热电偶输出电压(mV),tR是测量点温度;tAMB是周围温度3.4 KEIL软件仿真软件介绍 keil c51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统7,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT

26、、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 此次的毕业设计主要是利用KEIL来完成程序的编写,主要用汇编语言来编写程序,用计时器来完成数码管动态显示的。在16进制转换成10进制时,利用keil来查寄存器从而看程序是否能达到转换的目的。3.5 PROTEUS硬件仿真软件介绍proteus软件是英国Labcenter electronics公司出版的EDA工具软件8。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿

27、真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译

28、方面,它也支持IAR、Keil和MATLAB等多种编译。此次设计中,利用proteus完成整个电路的硬件仿真,并且在开始的数据采集阶段,利用proteus的示波器来查看数据是否传输。以及最后的阶段,看数据是否正确显示。第4章 程序设计及硬件仿真 在这个部分,是根据数据的采集,传输,处理,显示来逐渐完成的。其中,有的部分可以用keil来查看结果,有的部分可以用proteus来查看程序结果。4.1 数据的采集热电偶作为一种主要的测温元件,具有结构简单、制造容易、使用方便、测温范围宽、测温精度高等特点14。但是,热电偶的应用却存在着非线性、冷端补偿、数字化输出等几方面的问题。设计中采用的MAX667

29、5是一个集成了热电偶放大器、冷端补偿、A/D转换器及SPI串口的热电偶放大器与数字转换器,其电路如图3-14所示。K型热电偶的两端分别跟MAX6675芯片的T-跟T+相连,为了允许热电偶断路检测,T-引脚必须接地。MAX6675的测量精度对电源耦合噪声较敏感。为降低电源噪声影响,在MAX6675的电源引脚附近接入1只0.1F陶瓷旁路电容。温度由热电偶采集,然后将数据直接送给冷端补偿芯片MAX6675芯片进行处理,处理后送给单片机控制电路,完成简单的温度采集过程9。图4.1 温度采集硬件图4.2 数据传输部分数据传输,即用单片机读取max6675的数字信号,其通信模式为SPI。 串行外围设备接口

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

31、位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。主SPI的时钟信号(SCK)使传输同步。其时序图如下: 图4.2 SPI通信模式时序图对于不带SPI串行总线接口的AT89C51系列单片机来说,可以使用软件来模拟 SPI的操作,包括串行时钟、数据输入和数据输出11。MAX6675从SPI串行接口输出数据的过程如下:MCU使CS变低并提供时钟信号给SCK,由S0读取测量结果。CS变低将停止任何转换过程:CS变高将启动一个新的转换过程。一个完整串行接口读操作需16个时钟周期,在时钟的下降沿读16个输出位,第l位和第15位是一伪标志位,并总为0,第14位到第3位为

32、以MSB到LSB顺序排列的转换温度值;第2位平时为低,当热电偶输入开放时为高,开放热电偶检测电路完全由MAX6675实现,为开放热电偶检测器操作,T-必须接地,并使接地点尽可能接近GND脚;第1位为低以提供MAX6675器件身份码,第0位为三态。对于在SCK的下降沿输入数据和上升沿输出数据的器件,则应取串行时钟输出的初始状态为0,即在接口芯片允许时,先置P11为0,以便外围接口芯片输出1位数据(MCU接收1位数据),之后再置时钟为1,使外围接口芯片接收1位数据(MCU发送1位数据),从而完成1位数据的传送。Max6675因为是传输16位数据,所以要分为高8位和低8位的传输。MAX6675MC5

33、1 P1.0 SOP1.1SCKP1.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 ;将数据高位移入缓

34、冲区 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来查看结果,不过可以利用k

35、eil来查看寄存器的结果,只要我们首先给个初始数据,然后最后再印证下就可以。 MAX667多采用标准的SPI串行外设总线与MCU接口,且MAX6675只能作为从设备。MAX6675S0端输出温度数据的格式如图3.5所示12。图4.6 MAX6675输出温度数据的格式 D14D3为12位数据,其最小值为0,对应的温度值为0;最大值为4095,对应的温度值为1023.75;由于MAX6675内部经过了激光修正,因此,其转换结果与对应温度值具有较好的线性关系。温度值与数字量的对应关系为:温度值= 1023.75转换后的数字量/4095=转换后的数字量/4 所以第一步是得到数字量,第二步是得到温度值,

36、但可以简化为,直接得到温度值,然后再进制转换。其程序流程图如4.2示。主要先是将非数据位的数据清零,然后将16位数据全部右移3为,可以得到转换后的数字量,然后再右移2位,得到温度值。其中,右移最后的两位会得到小数部分,这部分可以直接赋值。开 始 SPI得到的16位数据 将无关4位数据置零 将数据右移5位,得到真实的温度值值 与设定的温度值进行比较报警并结束是 否进制转换返回图4.7 温度转换程序流程图4.3.1 数据转换 这部分主要进行的16位数据的整体右移和保存小数位。在整个程序中,DATAH保存高8位数据,DATAL保存低8位数据,DATAX保存小数数据。其程序流程图如下:开始将无关数据位

37、置零分别右移3位右移一位,得到小数百分位右移移位,得到小数十分位将数据存放在寄存器和内存中结束图4.8 数据处理流程图其中,保存小数百分位是直接根据右移后的标志位,然后直接置DATAX为25,同理,十分位是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 ;

38、带位右移,此时CY是DATAH的最后一位 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,#25HMOV DATAX,ASW: MOV A,DATAH ;同上,不过这次若是高位,则+50 CLR C ;这两步是为了得到温度值的 RRC A ;小数部分 MOV DATAH,A MOV A,DATAL RRC

39、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,AMOV A,R6RLC AMOV R6,AMOV A,R5ADDC A,R5DA AMOV R5,AMOV A,R4ADDC

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁