资源描述
课程设计
—温度测量仪
学 院:南昌工程学院
班 级:09电气自动化技术一班
姓 名:周亲萍
学 号:2009010089
日 期:2012-02-24
智能型温度测量仪
一 设计任务与要求
⑴.功能要求
1.配合电阻温度传感器,实现温度的测量;
2.具有开机自检、自动调零功能;
3.具有克服随机误差的数字滤波功能;
4. 使用220V/50Hz交流电源,设置电源开关、电源指示灯和电源保护功能。
⑵.主要技术指标
1.测量温度范围:0~200℃
2.测量误差:≤1%
3.显示方式:4位LED数码管显示被测温度值。
二 总体方案论证与选择
1. 从功能要求看:在智能型温度测量仪中,采用的单片机型号以MCS—51系列居多。本课程设计系统功能并不复杂,MCS-51单片机完全可以胜任主机的角色;
2. 从测温范围看:常用的温度传感器有热电阻、热敏电阻温度传感器,热电偶及集成对管温度传感器等,由于电阻温度传感器测量精度高、对非温度量不敏感,且有较大的测量范围,线性度好热便于测量。因此本设计采用电阻传感器温度检测;
3.人机接口部件:由于编码式键盘的硬件结构较为复杂,本设计采用非编码式键盘,且采用按键容易识别的、一键一线式的独立式键盘;数据显示采用软件译码动态扫描显示。显示器为共阴极LED。
4. 从分辨率看,普通运放和11位以上的A/D转换器可以满足精度要求;
分辨率=0.1℃/(200-0)℃=1/2000
5. 由于温度变化缓慢,采用双积分型A/D转换器,不需要采样保持器
这样,系统组成方案的雏形已经建立。
方案1
差分放大器
单电桥测温电路
电阻温度传感器
单片机(键盘、显示器)
A/D转换器
电压放大器
滤波器
方案2
集成T/I变换器
A/D转换器
滤波器
I/U变换器
单片机(键盘、显示器)
以上两个方案的主要区别是选用的传感器不同,两种传感器都具有测量精度较高的特点。电阻温度传感器不但测量精度高,而且灵敏度高,对非温度量不敏感;集成电路温度传感器线性很好,不需要非线性校正,但测温范围较窄。本设计采用方案1。
三、总体设计流程图
温度测量仪电路设计流程图
图1温度测量仪电路设计流程图
流程图简单说明
先由电阻温度传感器传递温度信号,因为温度信号较小,因此要在电路中加入电压放大电路将信号放大,以满足测量的要求。信号经过放大之后分为两路:一路直接输入数字显示电路模块的显示信号,另一路经继电器驱动电路模块中作为电压比较器的一个输入信号。
四、各单元电路设计
1.电源设计
在各种电子设备中,直流稳压电源是必不可少的组成部分,它是电子设备唯一能量来源, +5V输出电压,就需将交流220V的电压经过变压器、整流电路、滤波电路和稳压电路四个部分。
其电路图如下所示:同时输出正、负电压的电路图。
2.测温部分
测温部分采用全桥电路,
PT100温度感测器是一种以白金(Pt)作成的电阻式温度检测器,属于正电阻系数,其电阻和温度变化的关系式如下:R=Ro(1+αT) 其中α=0.00392,Ro为100Ω(在0℃的电阻值),T为摄氏温度<br>因此白金作成的电阻式温度检测器,又称为PT100。
3.温度检测电路模块
电阻电桥的两个输出端电压的差值(此即为Pt电阻在温度变化时导致的电阻变化所引起的电压值的改变量)可由以下公式求得。
其中,U为10V,R0为100,为Pt电阻在不同温度下的电阻值与在0℃时标称电阻的差值,并且当铂电阻传感器所处温度为零下时,差值为负值;当铂电阻传感器所处温度为零上时,差值为正值。
4.电压放大电路模块
电压放大模块采用仪用放大器
5.温度数字显示部分
5.1 ICL7107电路部分
ICL7107简介
ICL7107是高性能、低功耗的三位半A/D转换器电路。它包含七段译码器、显示驱动器、参考源和时钟系统。ICL7107可直接驱动发光二极管(LED)。
ICL7107将高精度、通用性和真正的低成本很好地结合在一起,它有低于10μV的自动校零功能,零源小于1μV/°C,低于10pA的输入电流,极性转换误差小于一个字。真正的差动输入和差动参考源在各种系统中都很有用。在用于测量负载单元、压力规管和其它桥式传感器时会有更突出的优点。
主要特点:
★保证零电平输入时,各量程的读值均为零。 ★很低的噪声。(小于15μVP-P )
★1pA典型输入电流。 ★片上时钟。
★真正的差动输入和差动参考源,直接LED ★低功耗(典型值小于10mW)。
显示驱动 ★ 不需外接有源电路。
5.2 显示电路部分
5.3 键盘、显示电路设计
键盘:设置4个按键,设功能键1个,每按下1次,K1状态计数器加1,使用“+”、“-”依次逐位预置上限温度百位、十位、个位和下限温度百位、十位、个位,预置完毕后,K1状态回0,为简化键处理程序设计,预置上、下限温度范围限制为-50~+250℃,而非0~+200℃。另设预置温度查询键1个,测温时可查询预置的上、下限温度,各键功能分配见附表4-1所示。
K1~K4状态功能表
K1态
按键
2DH.4
F0
显示
操作
0
K1
0 0/1
*
测温值
关A/D中断,K1状态+1,清预置寄存器,关预置错误报警,显示“0灭灭.H”/“0灭灭.L”,
0
K2、K3
*
*
*
无效
0
K4
*
*
*
每按1次K4,依次显示“XYZ.H”→“XYZ.L”→“测温值”
1~3
K4
*
*
*
无效
1
K2
0
0
0灭灭.H
百位数字加1
1
K2
0
0
1灭灭.H
无效
1
K3
0
0
0灭灭.H
无效
1
K3
0
0
1灭灭.H
百位数字减1
1
K1
0
0
X灭灭.H
K1状态+1,显示“X0灭.H”
2
K2
0
0
0Y灭.H
Y=9时无效,Y<9时Y+1
2
K2
0
0
1Y灭.H
Y=5时无效,Y<5时Y+1
2
K2
0
1
-Y灭.H
Y-1,当Y-1=0时置F0=0,显示“00灭.H”
2
K3
0
0
1Y灭.H
Y≠0,Y-1;Y=0,无效
2
K3
0
0
0Y灭.H
Y≠0,Y-1;Y=0,置F0=1,显负号,Y+1
2
K3
0
1
-Y灭.H
Y=5时无效,Y≠5时Y+1
2
K1
0
*
XY灭.H
K1状态+1,显示“XY0.H”
3
K2
0
0
XYZ.H
Z=9时无效,Z<9时Z+1
3
K2
0
1
-YZ.H
Z=0时无效,Z≥0时Z-1
3
K3
0
0
XYZ.H
Z=0时无效,Z≠0时Z-1
3
K3
0
1
-YZ.H
Z=9时无效,Z≠9时Z+1
3
K1
0
*
XYZ.H
上限变补码保存,若-49℃≤上限≤150℃,上限预置成功,2DH.4=1,K1回状态1,否则上限预置错误,开报警,显示“E4”, K1回0态,按K1重新预置。
1
K2
1
0
0灭灭.L
百位数字加1
1
K2
1
0
1灭灭.L
无效
1
K3
1
0
0灭灭.L
无效
1
K3
1
0
1灭灭.L
百位数字减1
2
K2
1
0
0Y灭.L
Y=9时无效,Y<9时Y+1
2
K2
1
0
1Y灭.L
Y=5时无效,Y<5时Y+1
2
K2
1
1
-Y灭.L
Y-1,当Y-1=0时置F0=0,显示“00灭.L”
2
K3
1
0
1Y灭.L
Y≠0,Y-1;Y=0,无效
2
K3
1
0
0Y灭.L
Y≠0,Y-1;Y=0,置F0=1,显负号,Y+1
2
K3
1
1
-Y灭.L
Y=5时无效,Y≠5时Y+1
2
K1
1
*
XY灭.L
K1状态+1,显示“XY0.L”
3
K2
1
0
XYZ.L
Z=9时无效,Z<9时Z+1
3
K2
1
1
-YZ.L
Z=0时无效,Z≥0时Z-1
3
K3
1
0
XYZ.L
Z=0时无效,Z≠0时Z-1
3
K3
1
1
-YZ.L
Z=9时无效,Z≠9时Z+1
3
K1
1
*
XYZ.L
下限变补码保存,若-50℃≤下限<上限,预置成功,2DH.4=0,开A/D中断,K1回0态。否则预置错误,开报警,显示“E5”,K1回状态0,按K1重新预置。
表中XYZ为预置的上限和下限温度值,2DH.4=0置上限温度、2DH.4=1置下限温度,F0=0预置温度为正,F0=1预置温度为负。
硬件电原理图
五、软件设计
一 时钟频率的确定
单片机时钟频率fosc:单片机的时钟频率越高,运算速度越快;但耗电量增加、抗干扰能力变差。本设计是测温系统,对测量速度要求不高也无串行通信功能,对时钟无特殊要求,初选fosc=6MHz。
A/D转换时钟频率fCP:正向积分时间应是干扰信号周期的整倍数,考虑到抗50Hz工频干扰,取正向积分时间为60 mS 则TCP=60000μS/4000=15μS ,fCP=1/TCP=1/15μS≈66.7kHz。查RC~fCP曲线得:RC=470kΩ。完成一次A/D转换所需时间T0≈16400×TCP=16400×15×10-6=0.246S,即每秒完成4次A/D转换。
三 监控程序设计
1 RAM地址分配:见RAM附表4-3所示。约定:多字节定点数存放在RAM中地址连续的单元中时,地址小的单元存放数据的高字节。
2 系统初始化参数及控制字
(P1)=0FFH,置P1口为输入口
(P2)=00H,关显示器,关报警灯和蜂鸣器
(P3)=0FFH,置P3口为输入口
RAM地址分配表
地址
用途说明
0组工作寄存器
R1、R4、R5显示器自检子程序,R0、R2 ROM、RAM自检子程序,R1、R3通道自检子程序,R0、R2、R6、R7显示子程序
1组工作寄存器
A/D转换中断服务,BCD码变二进制、二进制变BCD码、二进制数求补码子程序,双字节二进制补码比较大小子程序
2组工作寄存器
K1~K4键处理子程序,R7功能键K1状态计数器,R6查询键K4状态计数器,R4~R6预置上、下限温度计数器百位~个位,BCD码
20H~21H
存放A/D转换结果,压缩BCD码,符号存F0,变换为二进制补码
22H~23H
存放4次A/D值的和、去零漂、取平均求测温值的补码
24H~25H
保存预置温度BCD码,符号暂存F0,转换为二进制、求补码
26H~27H
存放测温值,压缩BCD码
2CH
显示字段码暂存
2FH~32H
显示缓冲区,BCD码,千位~个位
33H~34H
存放4次测零漂的和,二进制补码
35H~37H
保存预置上温度,百位~个位,BCD码,符号在35H最高位
38H~3AH
保存预置下温度,百位~个位,BCD码,符号在38H最高位
3BH~3CH
预置上限温度值,二进制补码
3DH~3EH
预置下限温度值,二进制补码
3FH~40H
允许预置的上限温度最大值,二进制补码
41H~42H
允许预置的上限温度最小值,二进制补码
43H~44H
允许预置的下限温度最小值,二进制补码
45H
中断次数计数器
46H
定时测零漂计数器
60H~7FH
堆栈
F0
暂存A/D和预置上、下限温度的符号位,“0”正/“1”负
2DH.0
2DH.0=1—ROM有故障
2DH.1
2DH.1=1—RAM有故障
2DH.2
2DH.2=1—输入通道有故障
2DH.3
2DH.3=1开机自检有故障
2DH.4
置上、下限标志,2DH.4=0置上限温度,2DH.4=1置下限温度
2DH.5
2DH.5=1,超测温上限
2DH.6
2DH.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组R6
六、部分程序
ORG 0000H
LJMP ZCX00 ;首先运行主程序
ORG 0003H
LJMP INT00 ;中断向量
ORG 0030H ;主程序
ZCX00:MOV P2,#40H ;关报警、关显示
MOV P3,#0FFH ;P3设为输入口
MOV SP,#5FH ;设堆栈底为60H
MOV IP,#01H ;为高级中断
SETB IT0 ;为边沿触发
CLR A
MOV IE,A ;禁止所有中断请求
PUSH PSW
SET RS0
MOV R0,A ;置上限设置为初始状态
MOV R1,A ;置下限设置为初始状态
POP PSW
MOV 20H,A
MOV 21H,A
MOV 22H,A
MOV 23H,A
MOV 2DH,A ;置故障、超限等标志为初始状态
MOV 29H,A ;清零4次测零漂的和(始终为补码)
MOV 33H,A
MOV 34H,A
SETB RS1
MOV R5,A ;置A/D转换次数
MOV R7,#4 ;置定时测零漂计数器初值
CLR RS1
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.2 ;关故障报警
SJMP ZCX02
ERR01:MOV 32H,#01H ;置个位显示“1”
SJMP ERR04
ERR02:MOV 32H,#02H ;置个位显示“2”
SJMP ERR04
ERR03:MOV 32H,#03H ;置个位显示“3”
ERR04:MOV 31H,#0EH ;置十位显示“E”
MOV 30H,#0CH ;置百位显示“熄灭”
MOV 2FH,#0CH ;置千位显示“熄灭”
SETB 2DH.3 ;置开机自检故障标志
SETB P2.2 ;开故障报警
SJMP ZCX01 ;重新自检
ZCX02:MOV SP,#5FH ;系统初始化
SETB P2.7 ;通道开关置测温状态
ZCX03:ACALL DIS00 ;调显示子程序
JNB P3.4,ZCX0A ;有键按下,转键处理
JNB P3.5,ZCX0A
JNB P3.6 ZCX0A
JNB P3.7,ZCX0A
ZCX04:JB 2DH.5,ZCX05 ;超上限,超上限报警
JB 2DH.6,ZCX06 ;超下限,超下限报警
JB 2EH.0,ZCX07 ;转A/D过载报警
CLR P2.2 ;关超限报警
SJMP ZCX03
ZCX05:MOV R5,#0AH ;显示“HHHH”
SJMP ZCX08
ZCX06:MOV R5,#0BH ;显示“LLLL”
SJMP ZCX08
ZCX07:MOV R5,#0FH ;显示“8.8.8.8.”
ZCX08:MOV R4,#4
MOV R0,2FH
ZCX09:MOV @R0,R5
INC R0
DJNZ R4,ZCX09
SETB P2.2 ;开超限报警
SJMP ZCX03
ZCX0A:ACALL KEY00
SJMP ZCX04
ORG 0100H ; 显示器自检子程序
TDIS0:MOV R4,#3 ;循环3次
TDIS1:MOV R1,#2FH ;置显缓区首址(最高位)
MOV R6,#4 ;置显缓区为全亮
TDIS2:MOV @R1,#0FH
INC R1
DJNZ R6,TDIS2
SETB P2.2 ;点亮报警灯
;打开蜂鸣器
MOV R6,#125 ;字段全亮约
TDIS3:ACALL DIS00
DJNZ R6,TDIS3
MOV R1,#2FH ;置显缓区首址
MOV R6,#4 ;置显缓区为全灭
TDIS4:MOV @R1,#0CH
INC R1
DJNZ R6,TDIS4
CLR P2.2 ;熄灭报警灯
;关闭蜂鸣器
MOV R6,#125 ;全熄灭约0.5S
TDIS5:ACALL DIS00
DJNZ R6,TDIS5
DJNZ R4,TDIS1
RET
ROM自检
清零A、B
读ROM A
清故障标志
修改指针
A异或B B
校验和 A
置故障标志
返回
最后字节?
A=B?
ROM自检程序流程图
ROM自检子程序
ORG 0160H
TROM0:MOV DPTR,#5A3AH ;为程序的结束地址
PUSH DPH ;程序的结束地址进栈
PUSH DPL
MOV DPTR,#0000H ;0000H为程序的起始地址
CLR B
TROM1:CLR A
MOVC 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中程序代码全部读出并求异或和,转移至TROM4
TROM2:PUSH A ;结束地址高8位进栈
MOV A,R2
TROM3:PUSH A ;data1低8位进栈
INC DPTR ;当前地址加1
AJMP TROM1 ;继续异或和运算
TROM4:MOV DPTR,#5A42H ;指向校验和地址
CLR A
MOVC A,@A+DPTR ;读代码校验和
XRL A,B ;A、B相等时,(A)=0
JNZ TROM5 ;(A)≠0,ROM故障
CLR 2DH.0 ;清故障标志
RET
TROM5:SETB 2DH.0 ;置故障标志
RET
RAM自检子程序
TRAM0: MOV SP,#7FH
MOV R0,#7FH ;置初始地址指针
TRAM1: MOV @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 ;清故障标志
RET
TRAM2:SETB 2DH.1 ;置故障标志
MOV SP,#5FH ;恢复栈指针
RET
RAM自检
置地址指针
写入并读出
清故障标志
写入并读出
返回
相等?
相等?
置故障标志
修改指针
检验完?
RAM自检流程图
七.总结
通过这次设计,我感觉到了这次课题设计的难度。经过多次的修改编译,和同学们的帮助终于把一个个让人头疼的错误修改正确,若没有老师与同学的帮助我想我不可能在有限的时间里完成任务。同时我也体会到了合作的快乐。通过这次设计我学到了很多,在余下的时间里我会更加努力,在以后的工作中也会珍惜每次机会。
由于本人学识和水平优先,课程设计中不妥之处和错误之处在所难免,敬请同仁与读者批评指正。
八、主要参考文献
《智能仪器原理与设计》 赵新民 哈尔滨工业大学出版社
《单片机原理与接口技术》 李朝青 北京航空航天大学出版社
《单片机原理与应用》 李建忠 西安电子科技大学出版社
《单片机应用系统设计应用》 何立民主编 北京航空航天大学出版社
《智能化仪器原理及应用》 曹建平 西安电子科技大学出版社
网址:
设计总体原理图
展开阅读全文