Subido por Alex Kana

ad590

Anuncio
图-1
设计原理框图如图-1 所示。
1.2 系统工作原理
如图—1所示,传感器AD590将温度信号转换成电流信号,再转换为电压信号,然后送入
A/D变换器ADC0809中,输出BCD码送入AT89S52单片机中,运算控制器根据接收数据进行处理
同时将数据保存,以便与下一次采样值进行比较,通过软件对所测电压进行数字非线性校正,
同时由显示器进行实时显示。根据系统程序控制,当所测的温度高于65摄氏度时发生报警。
1.4 温度采集电路设计
AD590是一种恒流形式的温度传感器,其校准精度达+0.5摄氏度,测温范围为-55摄氏度
至+150摄氏度,AD590的参数满足设计要求,因此电路中的温度传感器采用AD590。
采用LM358放大器,具体连接图见图-3
图-3
ADC0809是CMOS单片型逐次逼近式A/D转换器。它由8路模拟开关、地址锁存与译码器、
比较器、8位开关树型D/A转换器、逐次逼近。且有三态输出能力,既可与各种微处理器相
连,也可单独工作。输入输出与TTL兼容。
ADC0809的管脚功能如下:
IN0~IN7:8路模拟量输入端。通过模拟开关实现8路模拟输入信号分时选通。
2-1~2-8:8位数字量输出端。
ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路。
ALE:地址锁存允许信号,输入,高电平有效。
START: A/D转换启动信号,输入,高电平有效。
EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直
为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才
能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。
ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此
地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启
动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高
电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高
电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
1.5 LED显示电路设计
图-3
LED显示电路见图-3
1.6 报警电路设计
此系统的报警系统为高温报警,AT89S52管脚P3.4控制高温报警, P3.7控制喇叭,电路
图见设计图(见附录1)。
1.7 电源电路设计
交流电压220V通过变压器,得到双16V和7V的交流电压,再通过整流桥整流、滤波电容滤
波后供给三个集成稳压块7815、7915、7805,得到+5V、+15V或+15V直流电压。
电源设计图见图-4
图-4
2.软件设计
详细程序如下:
;==============================
;定义
;==============================
LED_0 EQU
30H
LED_1 EQU
31H
LED_2 EQU
32H
ADC
EQU
35H
H_TEMP EQU
38H
H_ALM BIT
P3.4
SOUND BIT
P3.7
CLOCK BIT
P2.6
ST
BIT
P2.7
EOC
BIT
P2.5
OE
BIT
P2.4
ORG
00H
;复位地址 ORG origin缩写
SJMP
START
;跳转 START 开始的意思
ORG
03H
;外部中断INT0
AJMP
INT_0
ORG
0BH
LJMP
INT_T0
;==============================
;初始化
;==============================
START: MOV
SP,#70H
CLR
SOUND
MOV
LED_0,#00H
MOV
LED_1,#00H
MOV
LED_2,#00H
MOV
H_TEMP,#65
MOV
TMOD,#02H
MOV
TH0,#245
MOV
TL0,#0
MOV
IE,#8AH
CLR
C
CLR
60H
MOV
TCON,#01H
SETB
EA
SETB
EX0
SETB
TR0
;==============================
;0809对电压进行AD转换
;==============================
AD:
SETB
H_ALM
CLR
ST
SETB
ST
CLR
ST
JNB
EOC,$
SETB
OE
MOV
ADC,P1
LCALL TWO
CLR
OE
MOV
A,H_TEMP
MOV
R0,ADC
SUBB
A,R0
JC
HALM
CLR
60H
LJMP
ZH
;==============================
;高温警报
;==============================
HALM: JB
60H,ZH
CLR
H_ALM
;T0中断入口
;堆栈初始化
;设置高温温度
;定时/计数方式选择(高4位T1,低4位T0)
;定时10ms
;开放T1,T0中断
;INT0复位
;定时/计数控制
;允许中断总控制
;外部中断,INT0启动
;定时器T0启动,为ADC0808提供时钟
;启动转换
;允许输出数字量
;读取AD转换结果
;调用数值转换摄氏度
;停止输出数字量
;比较判断是否高于上限
;设置开关复位
;INT0中断报警
;高温LED报警
SETB
SOUND
CALL
DELAYDISP
SETB
H_ALM
CLR
SOUND
CALL
DISDISP
LJMP
ZH
;==============================
;0809输出数值转换BCD
;==============================
ZH:
MOV
A,ADC
MOV
B,#100
DIV
AB
MOV
LED_2,A
MOV
A,B
MOV
B,#10
DIV
AB
MOV
LED_1,A
MOV
LED_0,B
LCALL DISP
SJMP
AD
;==============================
;方式2 定时器
;==============================
INT_T0: CPL
CLOCK
RETI
;==============================
; 输出显示程序
;==============================
DISP: MOV
A,LED_0
MOV
DPTR,#TABLE0
MOVC
A,@A+DPTR
CLR
P2.3
MOV
P0,A
LCALL DELAY250US
SETB
P2.3
MOV
A,LED_2
JNZ
NCT
MOV
A,LED_1
JZ
CT
SJMP
NCT
CT:
MOV
DPTR,#TABLE
NCT:
MOV
A,LED_1
MOVC
A,@A+DPTR
CLR
P2.2
;高温喇叭报警
;数值转换
;百位
;十位
;个位
;AT89C51提供ADC0808时钟
;个位赋值
;开启个位位型
;个位输出
;根据百位情况 十位需要灭零与否
;百位不为零 十位不灭零则跳转NCT
;百位为零 判断十位是否为零
;十位也为零 灭零采用字形表TABLE
;十位不为零 正常赋值
;十位(不灭零)正常赋值
MOV
P0,A
LCALL DELAY250US
SETB
P2.2
MOV
A,LED_2
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
CLR
P2.1
MOV
P0,A
LCALL DELAY250US
SETB
P2.1
RET
;==============================
;2字节除1字节程序(R4,R5除R7)
;==============================
TWO:
MOV
R7,# 255
MOV
A,ADC
MOV
B,#100
MUL
AB
MOV
R5,A
MOV
R4,B
MOV
A,R4
SUBB
A,R7
JC
DV50
SETB
OV
RET
DV50: MOV
R6,#8
DV51: MOV
A,R5
RLC
A
MOV
R5,A
MOV
A,R4
RLC
A
MOV
R4,A
MOV
F0,C
CLR
C
SUBB
A,R7
ANL
C,/F0
JC
DV52
MOV
R4,A
DV52: CPL
C
MOV
A,R3
RLC
A
MOV
R3,A
DJNZ
R6,DV51
MOV
A,R4
;百位直接采用灭零字形表
;商溢出
;求平均值(R4R5/R7-→R3)
;四舍五入
ADD
A,R4
JC
DV53
SUBB
A,R7
JC
DV54
DV53: INC
R3
DV54: CLR
OV
MOV
A,R3
MOV
ADC,A
RET
;==============================
;延时250US程序
;==============================
DELAY250US: MOV
R0,#5
DL1:
MOV
R1,#24
DL2:
DJNZ
R1,DL2
DJNZ
R0,DL1
RET
;=============================
;延时10MS程序
;=============================
DELAY10MS : MOV
R2,#50
DL3:
MOV
R3,#50
DL4:
DJNZ R3,DL4
DJNZ R2,DL3
RET
;=============================
;显示--延迟
;=============================
DELAYDISP: MOV
R7,#200
;显示延时
C1:
CALL
DISP
DJNZ
R7,C1
RET
;=============================
;灭灯--延迟
;=============================
DISDISP:
MOV LED_0,#0AH
MOV LED_1,#0H
MOV LED_2,#0H
MOV R7,#200
;显示延时
C2:
CALL DISP
DJNZ R7,C2
RET
;==============================
;外部中断(开关 改变电平)
;==============================
INT_0: CPL
60H
;开关给INT0下降沿--取反
CALL
DELAY250US
RETI
;=============================
;字形表 0,1,2,3,4,5,6,7,8,9,灭
;=============================
TABLE0: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH,00H
;=============================
;灭零字形表灭 灭,1,2,3,4,5,6,7,8,9
;=============================
TABLE: DB 00H,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
3 功能介绍
正常温度(65-摄氏度)即时显示温度。高温(65+摄氏度)LED 以及喇叭报警,数码管
显示的即时温度数字开始同时闪烁。具有报警开关设置,温度降低自动取消报警。
4 总结
20 世纪末,随着计算机科学的发展,计算机已深入地渗透到我们的生活中。温度测控
技术也在各个领域应用越来越广泛,越来越成熟,使用单片机使得电路的成本低廉,性价
比较高,修改方便而广加运用。
Descargar