毕业论文智能型温度测量仪设计_第1页
毕业论文智能型温度测量仪设计_第2页
毕业论文智能型温度测量仪设计_第3页
毕业论文智能型温度测量仪设计_第4页
毕业论文智能型温度测量仪设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要随着技术的发展,智能化的产品越来越受人们的青睐。智能型温度测量仪作为一个智能化的温度计来说也是比较受欢迎的。通常,智能化的仪器仪表通常都有自动零点调整和仪表满度的校正,因此可以减小测量误差,同时可实现一表多用。智能型温度测量仪可配不同类型、不同分度号的温度传感器,故又称为温度万用表。它不但能实现对测量传感器(例如热电偶)的冷端自动补偿和非线性补偿,以及对热电阻的引线电阻影响的消除等,还可实现各类测量误差的自动修正。进行各种复杂运算(测量算法和控制算法),对获取的温度信息进行整理和加工;统计分析干扰信号特性,采用适当的数字滤波,达到抑制干扰的目的;实现各种控制规律,满足不同控制系统的需求;与

2、其他仪器和微机进行数据通信,构成各种计算机控制系统等。多种输出形式可以有数字显示、打印记录、声光报警,还可以多点巡回检测。它既可输出模拟量,也可输出数字量(开关量)信号。本身所具有的自诊断和声光报警功能对仪表内部各种故障能自动诊断出来,并能在出现故障时显示或报警。在智能仪表的设计中,由于采用了单片机技术,使得硬件电路大大简化,而其软件的强大功能又使仪表的性能得到了明显提高,功能的扩展也变得十分方便。加上通信功能后,其检测、控制方式也十分灵活、便捷。因此,仪器、仪表的智能化、可通信化是一个很好的发展方向。关键词:智能化 温度 测量 传感器目 录论文摘要1目 录2概述3设计要求1 设计项目42 设

3、计目的43 设计功能要求44 主要技术指标45采用方案46 方案论证与选择4设计说明1 智能型温度测量仪的基本结构与工作流程51.1 硬件结构51.2 系统软件51.3 工作流程52 硬件电路设计62.1 单片机的选取62.2 A/D转换器的选用62.3 传感器,I/U变换、滤波、标度变换电路的选取72.4 键盘显示电路的设计82.5报警电路92.6 AT89C51 I/O口分配103 软件电路设计123.1时钟频率的确定123.2 计算方法123.3 监控程序设计134 总结395 参考文献40智能型温度测量仪设计概述:智能化测量仪具有精度高、灵敏度高、测量速度快、测量的自动化以及多种输出形

4、式等一系列优点,受到科研、工业界的普遍欢迎。热工测量如温度、压力、流量等,正越来越广泛地采用智能化测量仪;智能型温度测量仪一般直接配接热电偶或热电阻等温度传感器,由于温度传感器本身的非线性,故仪器内部需增加进行非线性补偿的电路或软件。如果测温范围允许使用集成T/I或T/U变换器,由于其线性很好,不必采用非线性补偿。智能压力、流量显示仪,一般配接变送器即传感器和变送电路一体化的产品,这类传感器的输出信号为010mA或420mA的直流标准信号且线性很好。不需进行非线性补偿,仪表的软、硬件组成较简单。设计要求1、设计项目:智能型温度测量仪2、设计目的:(1)根据自己所学的知识来完成智能型温度测量仪的

5、设计。 (2)通过设计来巩固所学的单片机及电路方面的知识。(3)培养学生独立思考、阅读大量技术资料的能力,培养学生综合运用所学知识,结合实际独立完成课题的工作能力。(4)提高学生对工作认真负责、勇于开拓、勇于实践的基本素质!3、设计功能要求: (1)配合集成T/I变换器,实现温度的测量; (2)能够实现开机自检、自动调零的功能; (3)具有克服随机误差的数字滤波功能;(4)可以预置温度上限、下限,超限时声、光报警;(5)通过电脑USB接口来提供5V电源使温度仪正常工作。4、主要技术指标:(1)测量温度范围:-50150(2)测量误差:1%(最大引用误差)(3)分辨率:0.1(4)显示方式:4位

6、LED数码管显示被测温度值 5、采用方案:集成T/I变换器I/U变换器滤波器A/D转换器单片机6、方案论证与选择(1)从功能要求看,系统功能并不复杂,MCS-51单片机完全可以胜任主机角色;(2)从测温范围看,热电阻传感器或集成T/I(或T/U)变换器均可满足要求;(3)从分辨率看,普通运放和11位以上的A/D转换器可以满足精度要求;分辨率=0.1/(200-0)=1/2000(4)由于温度变化缓慢,采用双积分型A/D转换器,不需要采样保持器;也可选用片内带有12位A/D转换器的。设计说明1、智能型温度测量仪的基本结构与工作流程智能型温度测量仪与其他智能化仪器一样,也是由硬件和软件两大部分组成

7、的。1.1、硬件结构智能型温度测量仪的硬件部分由单片机主机电路、过程输入输出通道、键盘(人机联系部件)、接口和显示打印部分组成,如图1-1所示。图 1-1(硬件结构图)主机电路以单片机为核心,用来储存数据和程序,并进行一系列的运算和处理。过程输入输出通道由模拟量输入输出电路(A/D转换电路和D/A转换电路等)以及开关量输入输出电路等构成。模拟量输入输出电路用来输入或输出模拟量信号;而开关量输入输出电路则用来输入或输出开关量信号。利用键盘可以实现人与仪表之间的联系,而通信接口则用于使仪表与外界进行数据的交换。1.2、系统软件智能型温度测量仪的系统软件主要由监控程序、中断处理程序以及实现各种算法的

8、功能模块等组成。监控程序用于接受和分析各种指令,管理和协调整个系统各程序的执行;中断处理程序是用于人机联系或输入产生中断请求以后转去执行并及时完成实时处理任务的程序;软件的功能模块用来实现仪器的数据处理和各种控制功能。1.3、工作流程 智能型温度测量仪的工作流程如图1-2所示。由温度传感器进入的模拟信号(直流电势或电阻)经过输入信号处理,即经过交换、放大、整形和补偿后,由A/D转换成数字量。此数字信号通过接口送入缓冲寄存器以保存输入数据。微处理器CPU对输入的数据进行加工处理、分析、计算后,将运算结果存入读写存储器中。与此同时,将数据显示和打印出来;也可将输出的开关量经D/A 转换成模拟量输出

9、,或者利用串、并行标准接口实现数据通信。整机工作过程是在系统软件控制下进行的。工作程序编制好后写入只读存储器中,通过键盘可将必要的参数和命令存入读写存储器中。图 1-2(工作流程图)2、 硬件电路设计2.1、单片机的选择从性能、功能、仿真调试器的普及程度等各方面考虑,MCS-51系列单片机是一个很好的选择。此次设计所选为AT89C51单片机。2.2、A/D转换器的选用1、分辨率:温度分辨率要求为1/2000,须采用11位的A/D转换器。2、误差:系统误差要求1%,考虑到传感器、放大电路增益、A/D转换器、直流基准电压等都会产生误差,一般选A/D转换器的误差应(1/51/10)系统误差,故至少应

10、选择910位(0.1%)精度的。两者相比以要求较高的为准。3、转换速度:由于温度变化缓慢,对A/D转换器转换速度无特殊要求。4 、选择芯片:可考虑选择转换速度较慢、精度较高、抗干扰性能较好、价格低廉的双积分型A/D转换器,常用的芯片有MC14433(3位半-单极性输入时相当于11位)和ICL7135(4位半-单极性输入时相当于15位)。这两种A/D转换器的模拟输入电压范围均为:UI=±2V。MC14433已经完全可以满足精度要求,故选之。直流基准电压由MC1403提供。其各个引脚功能简介如图2-1图2-1(MC14433引脚排列及功能图)2.3、传感器、I/U变换、滤波、标度变换电路

11、的选取1、传感器:精密集成T/I变换器AD590的各项性能指标均能满足设计要求。2、I/U变换、滤波、标度变换电路:为简化硬件电路结构,I/U变换、滤波、标度变换电路由一个运放A实现,电路如图2-2所示。图2-2(摄氏温度检测电路)图中,MC1403是2.5V直流基准电压源,R6、R的作用是与MC1403的输出电压共同产生273.15A的电流I2,使其与AD590在0时所产生的273.15A电流相抵消,使0时输出电压Uo为零。调节RP2使输出电压灵敏度符合A/D转换器输入电压的要求。采用反相放大电路,使运放同相端、反相端电位均为零,对共模干扰的抑制能力优于同相放大电路。图中测量时:UO=I3(

12、R2+RP2)=(I1-I2)×(R2+RP2)=10(I1-273.15)(mV/)自检时:UO=I3(R2+RP2)=(5/(13.3+0.1)-I2)×(R2+RP2)=(373.13-273.15)×101V(1)、I/U变换器:反相比例放大电路实现了I/U变换。 (2)、标度变换:由MC1403提供的2.5V基准电压与RP1、R1共同产生237.15A的电流I2,由运放A对传感器输出电流I1和I2实现加法放大运算,使输出电压为:UO=I3(R2+RP2)=(I1-I2)(R2+RP2)=(I1-273.15)×(R2+RP2)=10(I1-27

13、3.15)(mV/)当t=0时,I1=273.15A,UO=0V,经A/D转换,D=0当t=-50时,I1=223.15A,UO=-500mV,经A/D转换,D=-500当t=150时,I1=423.15A,UO=1500mV,经A/D转换,D=1500可见,D/10(小数点左移一位),即得测量温度值,从而实现了标度变换。此设计采用硬件实现标度变换的,使当tmin=-100时放大器输出电压Umin=-0.1V,对应的A/D转换值为Nmin=-1000;当tmax=+1500时放大器输出电压Umax=1.5V,对应的A/D转换值为Nmax=15000。则A/D转换的结果可以直接送显示器,仅需要将

14、小数点左移一位即可。此方法的优点是软件编程简单,缺点是使仪器的通用性受限制。(3)、滤波器:若测温现场干扰较严重,可考虑使用硬件滤波器,由于被测温度变化很缓慢,可考虑采用由运放构成截止频率很低的有源低通滤波器,在反馈电阻两端并联一个电容,即可实现一阶低通滤波,取其截止频率fH=15Hz,则C2为:C2=1/2fH(R2+RP2)=1/(2×3.14×15×10×103)1.06FC2选用1F/50V的电解电容。2.4、键盘、显示电路的设计1、显示:为4位LED数码显示器;为少占用I/O口,采用软件译码动态扫描显示。小数点固定在十位,正号不显示,负号由百位

15、的“g”字段显示。2、键盘:设置4个按键,设功能键1个,每按下1次,K1状态计数器加1,使用“+”、“-”依次逐位预置上限温度百位、十位、个位和下限温度百位、十位、个位,预置完毕后,K1状态回0,为简化键处理程序设计,预置上、下限温度范围限制为-59+159,而非-50+150。另设预置温度查询键1个,测温时可查询预置的上、下限温度。按键设置如附表1-1:附表1-1按键设置表K1态按键2DH.4F0显示操作0K10/1*测温值关A/D中断,K1状态+1,清预置寄存器,关预置错误报警,显示“0灭灭.H”/“0灭灭.L”,0K2、K3*无效0K4*每按1次K4,依次显示“XYZ.H”“XYZ.L”

16、“测温值”13K4*无效1K2000灭灭.H百位数字加11K2001灭灭.H无效1K3000灭灭.H无效1K3001灭灭.H百位数字减11K100X灭灭.HK1状态+1,显示“X0灭.H”2K2000Y灭.HY=9时无效,Y9时Y+12K2001Y灭.HY=5时无效,Y5时Y+12K201-Y灭.HY-1,当Y-1=0时置F0=0,显示“00灭.H”2K3001Y灭.HY0,Y-1;Y=0,无效2K3000Y灭.HY0,Y-1;Y=0,置F0=1,显负号,Y+12K301-Y灭.HY=5时无效,Y5时Y+12K10*XY灭.HK1状态+1,显示“XY0.H”3K200XYZ.HZ=9时无效,Z

17、9时Z+13K201-YZ.HZ=0时无效,Z0时Z-13K300XYZ.HZ=0时无效,Z0时Z-13K301-YZ.HZ=9时无效,Z9时Z+13K10*XYZ.H上限变补码保存,若-49上限150,上限预置成功,2DH.4=1,K1回状态1,否则上限预置错误,开报警,显示“E4”, K1回0态,按K1重新预置。1K2100灭灭.L百位数字加11K2101灭灭.L无效1K3100灭灭.L无效1K3101灭灭.L百位数字减12K2100Y灭.LY=9时无效,Y9时Y+12K2101Y灭.LY=5时无效,Y5时Y+12K211-Y灭.LY-1,当Y-1=0时置F0=0,显示“00灭.L”2K3

18、101Y灭.LY0,Y-1;Y=0,无效2K3100Y灭.LY0,Y-1;Y=0,置F0=1,显负号,Y+12K311-Y灭.LY=5时无效,Y5时Y+12K11*XY灭.LK1状态+1,显示“XY0.L”3K210XYZ.LZ=9时无效,Z9时Z+13K211-YZ.LZ=0时无效,Z0时Z-13K310XYZ.LZ=0时无效,Z0时Z-13K311-YZ.LZ=9时无效,Z9时Z+13K11*XYZ.L下限变补码保存,若-50下限上限,预置成功,2DH.4=0,开A/D中断,K1回0态。否则预置错误,开报警,显示“E5”,K1回状态0,按K1重新预置。注:表中XYZ为预置的上限和下限温度值

19、,2DH.4=0置上限温度、2DH.4=1置下限温度,F0=0预置温度为正,F0=1预置温度为负。2.5、报警电路面板上设置红色LED报警灯一只,机内设蜂鸣器一只,开机自检有故障时、测温值超过预置的上限和下限温度时、预置的温度不满足-49上限温度150和-50下限温度上限温度时,发出声光报警信号。2.6、AT89C51 I/O口分配:如附表1-2附表1-2I/O口分配表用途说明P0.0P0.7显示段码输出经74LS07同相驱动接ag,dpP1.0P1.7接A/D转换数据输出P2.0P2.3显示位选信号输出经74LS06反相驱动接个位千位P2.4接超温/故障报警灯、蜂鸣器高电平有效P2.6接电子

20、开关K5控制端“0”调零/“1”-自检、测温P2.7接电子开关K6控制端“0”自检/“1”-测温P3.2()接A/D转换结束信号EOC中断方式,边沿触发方式P3.4P3.7接K1K4键一键一线,查询方式,低电平有效其硬件各部分原理图如图2-2、图2-3、图2-4:图2-3(TC14433与AT89C51的接口电路图)图2-4(人机接口电路图)硬件电路图如图2-5所示:图2-5(智能温度测量仪原理图)3、 软件部分3.1、时钟频率的确定1、 单片机时钟频率fosc:单片机的时钟频率越高,运算速度越快;但耗电量增加、抗干扰能力变差。本设计是测温系统,对测量速度要求不高也无串行通信功能,对时钟无特殊

21、要求,选为fosc=6MHz。2、 A/D转换时钟频率fCP:正向积分时间应是干扰信号周期的整倍数,考虑到抗50Hz工频干扰,取正向积分时间为60 mS 则TCP=60000S/4000=15S fCP=1/TCP=1/15S66.7kH。即完成一次A/D转换所需时间T016400×TCP=16400×15×10-6=0.246S,即每秒完成4次A/D转换。3.2、计算方法1、 数字滤波与自动调零:考虑到MC14433是双积分型A/D转换器,对随即干扰具有较好的平滑滤波作用且转换速度较慢,零漂值和测量值均采用简单的平均值滤波法,取N=4,即,测量结果。为简化计算,

22、将计算公式变为:,即先求和,再去零漂,最后取平均。2、数据类型:在计算机中,凡是带符号数一律用补码表示,其运算结果也是用补码表示。A/D转换器MC14433的转换结果为BCD码,读入到RAM中以压缩BCD码存放。无论自检、测量或,为便于带符号数的加、减法、除法和比较大小的运算,先将双字节压缩BCD码转换为双字节二进制数并求其补码,再进行求和运算求出和,进而用上述算法求出并求其原码,将其转换为BCD码后送显缓区。3.3、监控程序设计1、RAM地址分配:见RAM附表1-3所示。约定:多字节定点数存放在RAM中地址连续的单元中时,地址小的单元存放数据的高字节。附表1-3 RAM地址分配表 地址用途说

23、明0组工作寄存器R1、R4、R5显示器自检子程序,R0、R2 ROM、RAM自检子程序,R1、R3通道自检子程序,R0、R2、R6、R7显示子程序1组工作寄存器A/D转换中断服务,BCD码变二进制、二进制变BCD码、二进制数求补码子程序,双字节二进制补码比较大小子程序2组工作寄存器K1K4键处理子程序,R7功能键K1状态计数器,R6查询键K4状态计数器,R4R6预置上、下限温度计数器百位个位,BCD码20H21H存放A/D转换结果,压缩BCD码,符号存F0,变换为二进制补码22H23H存放4次A/D值的和、去零漂、取平均求测温值的补码24H25H保存预置温度BCD码,符号暂存F0,转换为二进制

24、、求补码26H27H存放测温值,压缩BCD码2CH显示字段码暂存2FH32H显示缓冲区,BCD码,千位个位33H34H存放4次测零漂的和,二进制补码35H37H保存预置上温度,百位个位,BCD码,符号在35H最高位38H3AH保存预置下温度,百位个位,BCD码,符号在38H最高位3BH3CH预置上限温度值,二进制补码3DH3EH预置下限温度值,二进制补码3FH40H允许预置的上限温度最大值,二进制补码41H42H允许预置的上限温度最小值,二进制补码43H44H允许预置的下限温度最小值,二进制补码45H中断次数计数器46H定时测零漂计数器60H7FH堆栈F0暂存A/D和预置上、下限温度的符号位,

25、“0”正/“1”负2DH.02DH.0=1ROM有故障2DH.12DH.1=1RAM有故障2DH.22DH.2=1输入通道有故障2DH.32DH.3=1开机自检有故障2DH.4置上、下限标志,2DH.4=0置上限温度,2DH.4=1置下限温度2DH.52DH.5=1,超测温上限2DH.62DH.6=1,超测温下限2DH.7测零漂/自检、测温标志,“1”测零漂/“0”自检、测温2、系统初始化参数及控制字(P1)=0FFH,置P1口为输入口(P2)=00H,关显示器,关报警灯和蜂鸣器(P3)=0FFH,置P3口为输入口(SP)=5FH,堆栈底设为60H(IP)=01H,设为高级中断IT0=1,设外

26、部中断0为边沿触发方式(IE)=00H,禁止所有中断请求(IE)=81H,仅允许中断请求(17H)=00H,清零功能键K1状态计数器2组R7(16H)=00H,清零查询键K4状态计数器2组R63、 主程序:本程序主要考虑各个模块功能的划分与衔接。主程序主要实现开机自检、系统初始化、自检故障和超量限报警、扫描显示器和键盘等操作,故障标志2DH.3的设置与清除由自检子程序完成,而将A/D转换结果的读取、数据处理、过载标志的设置与清除、结果送入显示缓冲区等操作由A/D中断服务程序实现。程序流程图如图3-1所示:图3-1(主程序流程图)主程序源程序为:ORG 0000HLJMP ZCX00 ;首先运行

27、主程序 ORG 0003H LJMP INT00 ;中断向量 ORG 0030H ;主程序ZCX00:MOV P2,#40H ;关报警、关显示MOV P3,#0FFH ;P3设为输入口MOV SP,#5FH ;设堆栈底为60HMOV IP,#01H ;为高级中断SETB IT0 ;为边沿触发CLR A MOV IE,A ;禁止所有中断请求 MOV 16H,A ;置查询键为初始状态 MOV 17H,A ;置功能键为初始状态 MOV 20H,A MOV 22H,A MOV 23H,A MOV 2DH,A ;置故障、超限等标志为初始状态MOV 33H,A ;清零4次测零漂的和 MOV 34H,AMO

28、V 45H,#4 ;置中断计数器初值 MOV 46H,#240 ;置定时测零漂计数器初值 ACALL TDIS0 ;调显示器自检子程序ZCX01:ACALL TROM0 ;调ROM自检子程序 ACALL TRAM0 ;调RAM自检子程序 ACALL TSRZJ ;调输入通道自检子程序 ACALL DIS00 ;调显示子程序JB 2DH.0,ERR01 ;自检故障判断 JB 2DH.1,ERR02 JB 2DH.2,ERR03 CLR 2DH.3 ;清故障标志 CLR P2.4 ;关故障报警 CLR P2.5SJMP ZCX02ERR01:MOV 32H,#01H ;置个位显示“1” SJMP

29、ERR04ERR02:MOV 32H,#02H ;置个位显示“2”SJMP ERR04ERR03:MOV 32H,#03H ;置个位显示“3”ERR04:MOV 31H,#0EH ;置十位显示“E”MOV 30H,#0CH ;置百位显示“熄灭”MOV 2FH,#0CH ;置千位显示“熄灭”SETB 2DH.3 ;置开机自检故障标志SETB P2.4 ;开故障报警SETB P2.5SJMP ZCX01 ;重新自检ZCX02:MOV SP,#5FH ;系统初始化SETB P2.7 ;通道开关置测温状态ZCX03:ACALL DIS00 ;调显示子程序JNB P3.4,ZCX0A ;有键按下,转键处

30、理JNB P3.5,ZCX0AJNB P3.6 ZCX0AJNB P3.7,ZCX0AZCX04:JB 2DH.5,ZCX05 ;超上限,超上限报警 JB 2DH.6,ZCX06 ;超下限,超下限报警 JB 2EH.0,ZCX07 ;转A/D过载报警CLR P2.4 ;关超限报警CLR P2.5SJMP ZCX03ZCX05:MOV R5,#0AH ;显示“HHHH” SJMP ZCX08ZCX06:MOV R5,#0BH ;显示“LLLL” SJMP ZCX08ZCX07:MOV R5,#0FH ;显示“8.8.8.8.”ZCX08:MOV R4,#4MOV R0,2FHZCX09:MOV

31、R0,R5 INC R0 DJNZ R4,ZCX09SETB P2.4 ;开超限报警 SETB P2.5 SJMP ZCX03ZCX0A:ACALL KEY00 SJMP ZCX044、 显示器自检程序:原理:使显示器所有字段“全亮”、“全熄灭”循环3次,每次两和灭均为0.5秒。有使用者观察判断是否有故障。显示器自检子程序为:ORG 0100HTDIS0:MOV R4,#3 ;循环3次TDIS1:MOV R1,#2FH ;置显缓区首址(最高位)MOV R5,#4 ;置显缓区为全亮TDIS2:MOV R1,#0FHINC R1DJNZ R5,TDIS2SETB P2.4 ;点亮报警灯SETB P

32、2.5 ;打开蜂鸣器MOV R5,#125 ;字段全亮约0.5STDIS3:ACALL DIS00 DJNZ R5,TDIS3MOV R1,#2FH ;置显缓区首址MOV R5,#4 ;置显缓区为全灭TDIS4:MOV R1,#0CHINC R1DJNZ R5,TDIS4CLR P2.4 ;熄灭报警灯CLR P2.5 ;关闭蜂鸣器MOV R5,#125 ;全熄灭约0.5STDIS5:ACALL DIS00 DJNZ R5,TDIS5 DJNZ R4,TDIS1RET5、 开机自检程序:流程图如图3-2所示。若发现故障,建立相应故障标志后返回,若无故障,清除故障标志后返回。ROM、RAM的自检程

33、序流程图分别如图3-3、图3-4,输入通道自检程序流程见图3-5所示。输入通道自检时A/D转换器的输入电压约为1V,转换后送到显示缓冲区的数据应为1000,考虑到各种误差,该数字量为9501050即视为输入通道正常,检测显缓区数据的正常与否,还可检测软件运算部分是否正常。图3-2(开机自检子程序流程图)图3-3(ROM自检流程图)ROM自检子程序ORG 0160HTROM0:MOV DPTR,#data1 ;data1为程序的结束地址 PUSH DPH ;程序的结束地址进栈 PUSH DPL MOV DPTR,#0000H ;0000H为程序的起始地址 CLR BTROM1:CLR A MOV

34、C A,A+DPTR ;读ROM XRL B,A ;异或运算结果存B POP A ;结束地址低8位出栈 MOV R2,A CJNE A,DPL,TROM3 ;当前地址低8位结束地址低8位,转移至TROM3 POP A ;结束地址高8位出栈 CJNE A,DPH,TROM2 ;当前地址高8位结束地址高8位,转移至TROM2 AJMP TROM4 ;ROM中程序代码全部读出并求异或和,转移至TROM4TROM2:PUSH A ;结束地址高8位进栈 MOV A,R2TROM3:PUSH A ;data1低8位进栈 INC DPTR ;当前地址加1 AJMP TROM1 ;继续异或和运算TROM4:M

35、OV DPTR,#data2 ;指向校验和地址 CLR A MOVC A,A+DPTR ;读代码校验和 XRL A,B ;A、B相等时,(A)=0 JNZ TROM5 ;(A)0,ROM故障CLR 2DH.0 ;清故障标志 RETTROM5:SETB 2DH.0 ;置故障标志RET 图3-4(RAM自检流程图)RAM自检子程序有的纯仿真软件不允许向SP以上的地址写入数据TRAM0:MOV SP,#7FHMOV R0,#7FH ;置初始地址指针TRAM1:MOV R0,#55H MOV A,R0 CJNE A,#55H,TRAM2 MOV R0,#0AAH MOV A,R0 CJNE A,#0A

36、AH,TRAM2 DJNZ R0,TRAM1 CLR 2FH.1 ;RAM无故障,清除标志 RETTRAM2:SETB 2FH.1 ;RAM有故障,置标志 MOV SP,#5FHRET图3-5(输入通道自检流程图)输入通道自检子程序TSRZJ:SETB P2.6 ;置为自检状态 CLR P2.7CLR 2DH.7 ;置自检标志MOV IE,#81H ;开中断MOV R3,#250TSR00:LCALL DISOO ;延时1sDJNZ R3,TSR00MOV R1,#30H ;指向显缓百位JB 2FH.0,TSR04CJNE R1,#09H,TSR03INC R1CJNE R1,#05H,TSR

37、02TSR01:CLR 2DH.2 ;清故障标志RETTSR02:JNB CY,TSR01TSR03:SETB 2DH.2 ;置故障标志 RETTSR04:CJNE R1,#00H,TSR03 INC R1CJNE R1,#05H,TSR05SJMP TSR03TSR05:JB CY,TSR01 SJMP TSR036、 显示子程序:如附图3-6所示。本程序添加上了符号显示和小数点定点显示。在这里有几点需注意:l 由于在显缓区中千位与符号存放在同一个字节,查表前需屏蔽掉符号位,否则当符号位是1时(负),将造成查表错误;l 千位使用的是普通数码管,当千位是“-0”时,按正常软件译码时会显示“8”

38、,所以当千位是“-0”时需要单独处理,仅让代表负号的g段亮;l 测温时小数点dp应在的十位,查出某位的段码后还需要判断该位是否是应加dp的位,处理后才能将段码送段码口。图3-6(显示自检流程图)显示子程序源程序:ORG 0230HDIS00:MOV R0,#2FH ;置显缓区首址 MOV R2,#08H ;送起始字位码DIS01:CLR A ;关显示器 MOV P0,AMOV A,R0 ;取显示数字 ANL A,#0FH ;屏蔽高4位 MOV DPTR,#TAB01 MOVC A,A+DPTR ;查表取自段码 CJNE R2,#08H,DIS03 ;是千位吗? JB 2FH.0,DIS02 ;

39、千位是1转加符号 CLR A ;千位是0将其消隐DIS02:MOV C,2FH.4 ;取符号位 MOV ACC.6,C ;字段码加符号DIS03:MOV 2CH,A ;字段码暂存 MOV A,R2 ;取字位码CJNE A,#02H,DIS04 ;不是十位转送段码SETB 2CH.7 ;是十位,加小数点DIS04:MOV P0,2CH ;字段码送字段口 MOV A,P2 ;取P2.7P2.4 ANL A,#0F0H ORL A,R2 MOV P2,A ;字位码和送字位口 ACALL DL001 ;延时1mS增亮 MOV A,R2 JB ACC.0,DIS05 ;查验4位显示器是否显示一遍 RR

40、A ;修改字位码 MOV R2,A INC R0 ;指向显示缓冲区下一个单元 SJMP DIS01 ;继续显示下一位DIS05:RETTAB01:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH(09)DB 76H,38H,00H,40H,79H,FFH(A-“H”,B-“L”,C-“全灭”,D-“-”,E,F-“全亮”)DL001:MOV R7,#02H ;1mS延时子程序(fosc=6MHz时)DL002:MOV R6,#0FFH DJNZ R6,$ DJNZ R7,DL002 RET7、 键处理子程序:R7为功能键K1的状态计数器,每按1次K1(R7)

41、+1。上限预置范围-49+150,预置下限温度必须小于上限温度,预置错误需重新预置。键处理子程序流程图如附图3-7所示。K1K4键处理子程序流程图分别如附图3-8附图3-11所示。图3-7(键处理子程序流程图)键处理源程序:ORG 02B0HKEY00:LCALL DIS00 ;延时12ms LCALL DIS00 LCALL DIS00JNB P3.4,KEY10 ;转K1键处理JNB P3.5,KEY20 ;转K2键处理JNB P3.6,KEY30 ;转K3键处理JNB P3.7,KEY40 ;转K4键处理KEYX1:RET ;无键按下,返回KEY10:MOV IE,#00H ;K1键功能

42、程序KEY11:JB P3.4,KEY12 ;K1释放转键处理 ACALL DIS00 ;未释放延时再测 SJMP KEY11KEY12:PUSH PSW PUSH A MOV PSW,#10H ;R0R7换为2组KEY13:INC R7 ;K1状态计数 CJNE R7,#01H,KEY15 CLR F0 ;准备预置百位温度 CLR A MOV R4,A MOV R5,A MOV R6,A CLR P2.4 ;关报警CLR P2.5MOV 2FH,#00H ;千位显示“0”MOV 30H,#0CH ;百位显示“灭” MOV 31H,#0CH ;十位显示“灭.”JB 2DH.4,KEY14MOV

43、 32H,#0AH ;个位显示“H”AJMP KEY1DKEY14:MOV 32H,#0BH ;个位显示“L” AJMP KEY1DKEY15:CJNE R7,#02H,KEY16 ;若不是预置十位温度值,转去K1下一状态检测 MOV 30H,#00H ;百位显示“0”,准备预置十位温度值AJMP KEY1D图3-8(K1键处理流程图)KEY16:CJNE R7,#03H,KEY17 ;若不是预置个位温度值,转去变压缩BCD码,变补码MOV 31H,#00H ;显缓区十位显“0”,准备预置个位温度值 AJMP KEY1DKEY17:MOV A,R5 ;预置温度变压缩BCD码,存24H25H S

44、WAP A ORL A,R6 MOV 25H,A MOV 24H,R4 PUSH PSW MOV PSW,#08H ;1组为当前工作寄存器 MOV R3,25H MOV R2,24H ACALL BCDH0 ;调双字节BCD-二进制转换子程序 ACALL QBM00 ;调双字节二进制求补码子程序 MOV 25H,R3 MOV 24H,R2 JB 2DH.4,KEY18 ;转去判断预置下限温度是否正确 MOV R0,#25H ;指向预置上限温度低字节 MOV R1,#42H ;指向允许预置的上限温度最小值 ACALL BJDX0 JB ACC.7,KEY19 ;ACC.7=1时转预置上限错误处理

45、 MOV R0,#40H ;指向允许预置的上限温度最大值 MOV R1,#25H ;指向预置上限温度低字节 ACALL BJDX0 JB ACC.7,KEY19 MOV 3CH,25H ;预置上限温度满足-49上限150,存上限 MOV 3BH,24H MOV 37H,R6 ;保存预置上限温度BCD码 MOV 36H,R5 MOV 35H,R4 MOV C,F0 ;预置上限温度符号送37H最高位 CLR A MOV ACC.7,C ORL A,35H MOV 35H,A SETB 2DH.4 ;置预置下限温度标志MOV R7,#00H AJMP KEY13KEY18:MOV R0,#25H ;指向预置下限温度低字节 MOV R1,#44H ;指向允许预置的下限温度最小值 ACALL BJDX0 JB ACC.7,KEY1A ;ACC.7=1时转预置下限错误处理 MOV R0,#3CH ;指向预置上限温度低字节 MOV R1,#25H ;指向预置下限温度低字节 JB ACC.7,KEY1A ;ACC.7=1时转预置下限错误处理 MOV 3EH,25H ;预置下限温度满足-50下限上限,存下限 MOV 3DH,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论