图-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 世纪末,随着计算机科学的发展,计算机已深入地渗透到我们的生活中。温度测控 技术也在各个领域应用越来越广泛,越来越成熟,使用单片机使得电路的成本低廉,性价 比较高,修改方便而广加运用。