智能温度测量仪_第1页
智能温度测量仪_第2页
智能温度测量仪_第3页
智能温度测量仪_第4页
智能温度测量仪_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、1 设计题目2 设计任务和设计要求3 总体方案论证与选择(设计23个可以实现设计要求的总体方案,简要说明各方案的工作原理和优缺点,简要说明被选中方案的特点)。画出系统组成方框图。4 各单元电路设计(各单元电路图设计,简述单元电路工作原理,电路参数和元件参数的计算,元器件的选择)。5 程序流程图。6 评价自己的设计是否满足设计要求?总结所设计电路的特点与不足,提出改进意见。设计过程中的体会、收获和建议。7 参考文献:作者、文献名称、出版单位和出版时间。8 附录:.总电原理图(需标注元件编号和元件的主要特征参数)。.元器件表(包括序号、元件编号、元件名称、元件型号与规格、元件数量及必要说明)。.源

2、程序清单。六.主要参考书单片机原理与接口技术 李朝青 北京航空航天大学出版社单片机原理与应用 李建忠 西安电子科技大学出版社智能仪器原理,设计及调试 季建华等 华东理工大学出版社单片机应用系统设计应用 何立民主编 北京航空航天大学出版社 智能化仪器原理及应用 曹建平 西安电子科技大学出版社 智能仪器原理与设计 赵新民 哈尔滨工业大学出版社智能仪器原理及应用 赵茂泰 电子工业出版社现代科学仪器 中国分析测试协会主办自动化仪表 中国仪器仪表学会 上海工业自动化仪表研究所主办仪器仪表学报 中国仪器仪表学会主办仪器仪表网 (http:/www.china_)仪器商城网 (http:/)附录:各个题目的

3、功能要求与技术指标1.智能型温度测量仪的设计功能要求配合电阻温度传感器,实现温度的测量;具有开机自检、自动调零功能;具有克服随机误差的数字滤波功能;. 使用220V/50Hz交流电源,设置电源开关、电源指示灯和电源保护功能。主要技术指标测量温度范围:0200或(-50150)测量误差:1%显示方式:4位LED数码管显示被测温度值。4.4.1 智能型温度测量仪的设计要求一 功能要求1 配合电阻温度传感器(或集成T/I(或T/U)变换器),实现温度的测量;2 具有开机自检、自动调零功能;3 具有克服随机误差的数字滤波功能;4(可以预置温度上限、下限,超限时声、光报警);5 使用220V/50Hz交

4、流电源,设置电源开关、电源指示灯和电源保护功能。二 主要技术指标1 测量温度范围:0200(或-50+150)2 测量误差:1%(最大引用误差)3 分辨率:0.14 显示方式:4位LED数码管显示被测温度值。注意:()中的内容是与智能仪器课程设计指导书要求不同的。4.4.2 总体方案论证与选择A 从功能要求看,系统功能并不复杂,MCS-51单片机完全可以胜任主机的角色;B 从测温范围看,热电阻传感器或集成T/I(或T/U)变换器均可满足要求;C 从分辨率看,普通运放和11位以上的A/D转换器可以满足精度要求;分辨率=0.1/(150-(-50)=1/2000D 由于温度变化缓慢,采用双积分型A

5、/D转换器,不需要采样保持器;也可选用片内带有12位A/D转换器的单片机。这样,系统组成方案的雏形已经建立。二 方案集成T/I变换器I/U变换器滤波器A/D转换器单片机(键盘、显示器)以上两个方案的主要区别是选用的传感器不同,两种传感器都具有测量精度较高的特点。热电阻传感器测温范围更宽,但需要非线性校正;集成电路温度传感器测温范围较窄,但线性很好,不需要非线性校正,软、硬件设计较简单。当测温范围和精度满足设计要求时,应首选集成T/I变换器。本设计采用方案2。三 软、硬件分工: 1 硬件:T/I变换、I/U变换、滤波、A/D转换、标度变换等功能由硬件实现。2 软件:自检、故障报警控制、自动调零、

6、数字滤波、按键识别、显示译码等功能由软件实现。4.4.3硬件电路设计(以方案2为例)一 单片机的选择:从性能、功能、仿真调试器的普及程度等各方面考虑,MCS-51系列单片机是一个很好的选择。初选应用广泛的AT89C51单片机。二 A/D转换器1 分辨率:温度分辨率要求为1/2000,须采用11位的A/D转换器。2 误差:系统误差要求1%,考虑到传感器、放大电路增益、A/D转换器、直流基准电压等都会产生误差,一般选A/D转换器的误差应(1/51/10)系统误差,故至少应选择910位(0.1%)精度的。两者相比以要求较高的为准。3 转换速度:由于温度变化缓慢,对A/D转换器转换速度无特殊要求。4

7、选择芯片:可考虑选择转换速度较慢、精度较高、抗干扰性能较好、价格低廉的双积分型A/D转换器,常用的芯片有MC14433(3位半-单极性输入时相当于11位)和ICL7135(4位半-单极性输入时相当于15位)。这两种A/D转换器的模拟输入电压范围均为:UI=±2V。MC14433已经完全可以满足精度要求,选之。直流基准电压由MC1403提供。智能型温度测量仪的设计一 试验目的通过智能型温度测量仪的设计,了解智能型模拟量测量仪器设计的一般方法。二 功能要求1 配合电阻温度传感器(或集成T/I(或T/U)变换器),实现温度的测量;2 具有开机自检、自动调零功能;3 具有克服随机误差的数字滤

8、波功能;4 使用220V/50Hz交流电源,设置电源开关、电源指示灯和电源保护功能。三 主要技术指标1 测量温度范围:0200(或-50+150)2 测量误差:1%(最大引用误差)3 分辨率:0.14 显示方式:4位LED数码管显示被测温度值。总体方案论证与选择A 从功能要求看,系统功能并不复杂,MCS-51单片机完全可以胜任主机的角色;B 从测温范围看,热电阻传感器或集成T/I(或T/U)变换器均可满足要求;C 从分辨率看,普通运放和11位以上的A/D转换器可以满足精度要求;分辨率=0.1/(150-(-50)=1/2000D 由于温度变化缓慢,采用双积分型A/D转换器,不需要采样保持器;也

9、可选用片内带有12位A/D转换器的单片机。一 方案:集成T/I变换器I/U变换器滤波器A/D转换器单片机(键盘、显示器)特点:集成电路温度传感器测温范围较窄,但线性很好,不需要非线性校正,软、硬件设计较简单。当测温范围和精度满足设计要求时,应首选集成T/I变换器。二 软、硬件分工:1 硬件:T/I变换、I/U变换、滤波、A/D转换、标度变换等功能由硬件实现。2 软件:自检、故障报警控制、自动调零、数字滤波、按键识别、显示译码等功能由软件实现。硬件电路设计一 单片机的选择:从性能、功能、仿真调试器的普及程度等各方面考虑,MCS-51系列单片机是一个很好的选择。初选应用广泛的AT89C51单片机。

10、二 A/D转换器1 分辨率:温度分辨率要求为1/2000,须采用11位的A/D转换器。2 误差:系统误差要求1%,考虑到传感器、放大电路增益、A/D转换器、直流基准电压等都会产生误差,一般选A/D转换器的误差应(1/51/10)系统误差,故至少应选择910位(0.1%)精度的。两者相比以要求较高的为准。3 转换速度:由于温度变化缓慢,对A/D转换器转换速度无特殊要求。4 选择芯片:可考虑选择转换速度较慢、精度较高、抗干扰性能较好、价格低廉的双积分型A/D转换器,常用的芯片有MC14433(3位半-单极性输入时相当于11位)和ICL7135(4位半-单极性输入时相当于15位)。这两种A/D转换器

11、的模拟输入电压范围均为:UI=±2V。MC14433已经完全可以满足精度要求,选之。直流基准电压由MC1403提供。三 传感器、I/U变换、滤波、标度变换电路1 传感器:精密集成T/I变换器AD590的各项性能指标均能满足设计要求。2 I/U变换、滤波、标度变换电路:为简化硬件电路结构,I/U变换、滤波、标度变换电路由一个运放A实现,附图4-2所示。 I/U变换器:反相比例放大电路实现了I/U变换。 标度变换:由MC1403提供的2.5V基准电压与RP1、R1共同产生237.15A的电流I2,由运放A对传感器输出电流I1和I2实现加法放大运算,使输出电压为:UO=I3(R2+RP2)

12、=(I1-I2)(R2+RP2)=(I1-273.15)×(R2+RP2)=10(I1-273.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(小数点左移一位),即得测量温度值,从而实现了标度变换。 滤波器:若测温现场干扰较严重,可考虑使用硬件滤波器,由于被测温度变化很缓慢,可考虑采用由运放构成截止频率很低的有源低通滤波器,在反馈电阻两端并联一个电容,即可实现一阶低通滤

13、波,取其截止频率fH=15Hz,则C2为C2=1/2fH(R2+RP2)=1/(2×3.14×15×10×103)1.06FC2选用1F/50V的CBB电容。四 键盘、显示电路设计1 显示:为4位LED数码显示器;为少占用I/O口,采用软件译码动态扫描显示。小数点固定在十位,正号不显示,负号由百位的“g”字段显示。2 键盘:本设计不需要键盘。如果增加输入预置温度上、下限,可选两种键盘方案: 功能键+“+”“-”键。按键数量少,占用口线少,编程较方便。 功能键+数码键。按键数量多,占用口线多,输入数据快捷方便,编程较繁。 键功能分配:设置4个按键,设功能键

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

15、数字加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时无效,Z9时Z+13K201-YZ.HZ=0时无效,Z0

16、时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”2K3101Y灭.LY0,Y-1;Y=0,无效2K31

17、00Y灭.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为预置的上限和下限温度值,2DH.4=0置上限温度、2DH.4=1置下限温度

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

19、D转换结束信号EOC中断方式,边沿触发方式P3.4P3.7接K1K4键一键一线,查询方式,低电平有效至此可以画出硬件电原理图。参见附图4-2、4-5和4-6所示。软件设计一 时钟频率的确定1 单片机时钟频率fosc:单片机的时钟频率越高,运算速度越快;但耗电量增加、抗干扰能力变差。本设计是测温系统,对测量速度要求不高也无串行通信功能,对时钟无特殊要求,初选fosc=6MHz。2 A/D转换时钟频率fCP:正向积分时间应是干扰信号周期的整倍数,考虑到抗50Hz工频干扰,取正向积分时间为60 mS 则TCP=60000S/4000=15S ,fCP=1/TCP=1/15S66.7kHz。查RCfC

20、P曲线得:RC=470k。完成一次A/D转换所需时间T016400×TCP=16400×15×10-6=0.246S,即每秒完成4次A/D转换。二 算法1 数字滤波与自动调零:考虑到MC14433是双积分型A/D转换器,对随即干扰具有较好的平滑滤波作用且转换速度较慢,零漂值和测量值均采用简单的平均值滤波法,取N=4,即,测量结果。为简化计算,将计算公式变为:,即先求和,再去零漂,最后取平均。2 数据类型:在计算机中,凡是带符号数一律用补码表示,其运算结果也是用补码表示。A/D转换器MC14433的转换结果为BCD码,读入到RAM中以压缩BCD码存放。无论自检、测量

21、或,为便于带符号数的加、减法、除法和比较大小的运算,先将双字节压缩BCD码转换为双字节二进制数并求其补码,再进行求和运算求出和,进而用上述算法求出并求其原码,将其转换为BCD码后送显缓区。3 全部数据均为定点数,显示时小数点的位置也固定。三 监控程序设计1 RAM地址分配:见RAM附表所示。约定:多字节定点数存放在RAM中地址连续的单元中时,地址小的单元存放数据的高字节。2 系统初始化参数及控制字(P1)=0FFH,置P1口为输入口(P2)=00H,关显示器,关报警灯和蜂鸣器(P3)=0FFH,置P3口为输入口附表 RAM地址分配表地址用途说明0组工作寄存器R1、R4、R5显示器自检子程序,R

22、0、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,转换为二进制、求补码26H27H存放测温值,压缩BCD码2CH显

23、示字段码暂存2FH32H显示缓冲区,BCD码,千位个位33H34H存放4次测零漂的和,二进制补码35H37H保存预置上温度,百位个位,BCD码,符号在35H最高位38H3AH保存预置下温度,百位个位,BCD码,符号在38H最高位3BH3CH预置上限温度值,二进制补码3DH3EH预置下限温度值,二进制补码3FH40H允许预置的上限温度最大值,二进制补码41H42H允许预置的上限温度最小值,二进制补码43H44H允许预置的下限温度最小值,二进制补码45H中断次数计数器46H定时测零漂计数器60H7FH堆栈F0暂存A/D和预置上、下限温度的符号位,“0”正/“1”负2DH.02DH.0=1ROM有故

24、障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”自检、测温(SP)=5FH,堆栈底设为60H(IP)=01H,设为高级中断IT0=1,设外部中断0为边沿触发方式(IE)=00H,禁止所有中断请求(IE)=81H,仅允许中断请求(17H)=00H,清零功能键K1状态计数器2组R7(16H)=00H,清零查询键K4状态计数器2组R63

25、 主程序流程图:本程序主要考虑各个模块功能的划分与衔接。主程序主要实现开机自检、系统初始化、自检故障和超量限报警、扫描显示器和键盘等操作,故障标志2DH.3的设置与清除由自检子程序完成,而将A/D转换结果的读取、数据处理、过载标志的设置与清除、结果送入显示缓冲区等操作由A/D中断服务程序实现,程序流程图如附图4-7所示,应是一个有始无终的程序。源程序如下。源程序:1、 主程序 ORG 0000H LJMP ZCX00 ;首先运行主程序 ORG 0003H LJMP INT00 ; 中断向量 ORG 0030H ;主程序ZCX00:MOV P2,#40H ;关报警、关显示MOV P3,#0FFH

26、 ;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,AMOV 45H,#4 ;置中断计数器初值 MOV 46H,#240 ;置定时测零漂计数器初值 ACALL TDIS0 ;调显示器自检子程序ZCX01:ACALL TR

27、OM0 ;调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 ERR04ERR02:MOV 32H,#02H ;置个位显示“2”SJMP ERR04ERR03:MOV 32H,#03H ;置个位显示“3”ERR04:MOV

28、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 ;有键按下,转键处理JNB P3.5,ZCX0AJNB P3.6,ZCX0AJNB P3.7,ZCX0AZCX04:JB 2DH.5,ZCX05 ;超上限,超上限报警 JB 2D

29、H.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 ;显示“.”ZCX08:MOV R4,#4MOV R0,2FHZCX09:MOV A,R5 MOV R0,A INC R0 DJNZ R4,ZCX09SETB P2.4 ;开超限报警 SETB P2.5 SJMP ZCX03ZCX0A:A

30、CALL KEY00 SJMP ZCX042、 显示器自检子程序 ORG 0100HTDIS0:MOV R4,#3 ;循环3次TDIS1:MOV R1,#2FH ;置显缓区首址(最高位)MOV R5,#4 ;置显缓区为全亮TDIS2:MOV R1,#0FHINC R1DJNZ R5,TDIS2SETB P2.4 ;点亮报警灯SETB P2.5 ;打开蜂鸣器MOV R5,#125 ;字段全亮约0.5STDIS3:ACALL DIS00 DJNZ R5,TDIS3MOV R1,#2FH ;置显缓区首址MOV R5,#4 ;置显缓区为全灭TDIS4:MOV R1,#0CHINC R1DJNZ R5,

31、TDIS4CLR P2.4 ;熄灭报警灯CLR P2.5 ;关闭蜂鸣器MOV R5,#125 ;全熄灭约0.5STDIS5:ACALL DIS00 DJNZ R5,TDIS5 DJNZ R4,TDIS13、 开机自检若发现故障,建立相应故障标志后返回,若无故障,清除故障标志后返回。输入通道自检时A/D转换器的输入电压约为1V,转换后送到显示缓冲区的数据应为1000,考虑到各种误差,该数字量为9501050即视为输入通道正常,检测显缓区数据的正常与否,还可检测软件运算部分是否正常。开机自检程序:(1) ROM自检子程序 ORG 0160HTROM0:MOV DPTR,#0FFFH ;data1为

32、程序的结束地址 PUSH DPH ;程序的结束地址进栈 PUSH DPL MOV DPTR,#0000H ;0000H为程序的起始地址 MOV B , #0TROM1:CLR A MOVC A,A+DPTR ;读ROM XRL B,A ;异或运算结果存B POP ACC ;结束地址低8位出栈 MOV R2,A CJNE A,DPL,TROM3 ;当前地址低8位结束地址低8位,转移至TROM3 POP ACC ;结束地址高8位出栈 CJNE A,DPH,TROM2 ;当前地址高8位结束地址高8位,转移至TROM2 AJMP TROM4 ;ROM中程序代码全部读出并求异或和,转移至TROM4TRO

33、M2:PUSH ACC ;结束地址高8位进栈 MOV A,R2TROM3:PUSH ACC ;data1低8位进栈 INC DPTR ;当前地址加1 AJMP TROM1 ;继续异或和运算TROM4:MOV 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(2)RAM自检子程序TRAM0:MOV SP,#7FHMOV R0,#7FH ;置初始地址指针TRAM1:MOV

34、 R0,#55H MOV A,R0 CJNE A,#55H,TRAM2 MOV R0,#0AAH MOV A,R0 CJNE A,#0AAH,TRAM2 DJNZ R0,TRAM1 ;未检完,继续 CLR 2DH.1 ;清故障标志 RETTRAM2:SETB 2DH.1 ;置故障标志 MOV SP,#5FH ;恢复栈指针RET(2) 输入通道自检子程序TSRZJ:SETB P2.6 ;置为自检状态 CLR P2.7CLR 2DH.7 ;置自检标志MOV IE,#81H ;开中断MOV R3,#250TSR00:LCALL DISOO ;延时1sDJNZ R3,TSR00MOV R1,#30H

35、;指向显缓百位JB 2FH.0,TSR04CJNE R1,#09H,TSR03INC R1CJNE R1,#05H,TSR02TSR01:CLR 2DH.2 ;清故障标志RETTSR02:JNB CY,TSR01TSR03:SETB 2DH.2 ;置故障标志 RETTSR04:CJNE R1,#00H,TSR03 INC R1CJNE R1,#05H,TSR05 SJMP TSR03TSR05:JB CY,TSR01 SJMP TSR034、 显示流程该程序是典型的软件译码动态扫描显示程序,可参考单片机原理与应用方面的教材,本程序添加上了符号显示和小数点定点显示。在这里有几点需注意,第一,由于

36、在显缓区中千位与符号存放在同一个字节,查表前需屏蔽掉符号位,否则当符号位是1时(负),将造成查表错误;第二,由于千位使用的是普通数码管,当千位是“-0”时,按正常软件译码时会显示“8”,所以当千位是“-0”时需要单独处理,仅让代表负号的g段亮;第三,测温时小数点dp应在的十位,查出某位的段码后还需要判断该位是否是应加dp的位,处理后才能将段码送段码口。显示子程序源程序:ORG 0230HDIS00:MOV R0,#2FH ;置显缓区首址 MOV R2,#08H ;送起始字位码DIS01:CLR A ;关显示器 MOV P0,AMOV A,R0 ;取显示数字 ANL A,#0FH ;屏蔽高4位

37、MOV DPTR,#TAB01 MOVC A,A+DPTR ;查表取自段码 CJNE R2,#08H,DIS03 ;是千位吗? JB 2FH.0,DIS02 ;千位是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 MO

38、V P2,A ;字位码和送字位口 ACALL DL001 ;延时1mS增亮 MOV A,R2 JB ACC.0,DIS05 ;查验4位显示器是否显示一遍 RR 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时)D

39、L002:MOV R6,#0FFH DJNZ R6,$ DJNZ R7,DL002 RET5、 键处理流程R7为功能键K1的状态计数器,每按1次K1(R7)+1。上限预置范围-49+150,预置下限温度必须小于上限温度,预置错误需重新预置。键处理子程序流程图如附图4-11所示。K1K4键处理子程序流程图分别如附图4-12附图4-15所示。键处理子程序:ORG 02B0HKEY00:LCALL DIS00 ;延时12ms LCALL DIS00 LCALL DIS00JNB P3.4,KEY10 ;转K1键处理JNB P3.5,KEY20 ;转K2键处理JNB P3.6,KEY30 ;转K3键处

40、理JNB P3.7,KEY40 ;转K4键处理KEYX1:RET ;无键按下,返回KEY10:MOV IE,#00H ;K1键功能程序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 ;千位显

41、示“0”MOV 30H,#0CH ;百位显示“灭” MOV 31H,#0CH ;十位显示“灭.”JB 2DH.4,KEY14MOV 32H,#0AH ;个位显示“H”AJMP KEY1DKEY14:MOV 32H,#0BH ;个位显示“L” AJMP KEY1DKEY15:CJNE R7,#02H,KEY16 ;若不是预置十位温度值,转去K1下一状态检测 MOV 30H,#00H ;百位显示“0”,准备预置十位温度值AJMP KEY1DKEY16:CJNE R7,#03H,KEY17 ;若不是预置个位温度值,转去变压缩BCD码,变补码MOV 31H,#00H ;显缓区十位显“0”,准备预置个位

42、温度值 AJMP KEY1DKEY17:MOV A,R5 ;预置温度变压缩BCD码,存24H25H SWAP 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 ;指向允许预置的上限

43、温度最小值 ACALL BJDX0 JB ACC.7,KEY19 ;ACC.7=1时转预置上限错误处理 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

44、;置预置下限温度标志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,24H MOV 3AH,R6 ;保存预置下限温度BCD码 MOV 39H,R

45、5 MOV 38H,R4 MOV C,F0 CLR A MOV ACC.7,C ORL A,38H MOV 38H,A POP PSW CLR 2DH.4 ;置预置下限温度标志 MOV IE,#81H ;开中断 SJMP KEY1CKEY19:MOV 32H,#04H ;显示“灭灭E4”SJMP KEY1BKEY1A:MOV 32H,#05H ;显示“灭灭E5”KEY1B:MOV 31H,#0EH MOV 30H,#0CHMOV 2FH,#0CHSETB P2.4 ;预置温度错误报警 SETB P2.5KEY1C:MOV R7,#00HKEY1D:POP APOP PSWRETKEY20:JB P3.5,KEY21 ;K2键功能程序,K2释放转K2键处理 ACALL DIS00 ;K2未释放,延时再检测SJMP KEY20KEY21:PUSH PSW PUSH AMOV PSW,#

温馨提示

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

评论

0/150

提交评论