|
4 应用实例
硬件原理图见图5。这是一个评估电路,可同时安装三片数字温度传感器:AD7414、AD7416、AD7814,软件轮流显示各器件所测得的环境温度,并模拟OTI输出,用LED指示。现作如下几点说明:
(1)各器件的地址不同,而SDA、DOUT引线可直接相连;AD7414、AD7416的OTI输出线与(低电平有效),现作超限报警指示。
(2)因温度的惯性系数较大,可采用简便有效的移动平均法、中值法、低通滤波法等进行软件滤波。在实际应用中,可边采样,边计算其平均值,以其平均值作为温度采样值。采样次数为8~16次即可。
(3)本系统采用LCM103液晶模块作温度显示,X25045作上电复位及看门狗用。
(4)AD7414、AD7416、AD7814的温度数据采样参考程序如下:
| ;伪定义 |
|
|
|
|
ADCH |
EQU |
32H |
;采样值高字节 |
|
ADCL |
EQU |
31H |
;采样值低字节 |
|
ADCNUM |
EQU |
30H |
;采样次数 |
|
ADCS |
BIT |
P1.5 |
;AD7814片选 |
|
ADSCLK |
BIT |
P1.1 |
;AD7814时钟 |
|
ADDOUT |
BIT |
P1.7 |
;AD7814数据输出 |
|
ADSCL |
BIT |
P1.1 |
;AD7416时钟 |
|
ADSDA |
BIT |
P1.7 |
;AD7416数据I/O |
|
······ |
|
|
|
| ;程序初始化 |
|
|
|
|
······ |
|
|
|
| ;AD7814的采样参考程序 |
|
| SAMPLE78: |
MOV |
ADCNUM, #8
;采样8次 |
| SE078: |
CLR |
ADCS
;选中AD7814 |
|
MOV |
R7, #16
;产生16个取数脉冲 |
|
MOV |
ADCH, #0
;A/D值高字节 |
|
MOV |
ADCL, #0
;A/D值低字节 |
| SE178: |
CLR |
ADSCLK |
|
NOP |
|
|
NOP |
|
|
JB |
ADDOUT,
SE178 |
| SE378: |
CLR |
ADSCLK |
|
NOP |
|
|
NOP |
|
|
MOV |
C, ADDOUT |
|
MOV |
A, ADCL |
|
RLC |
A |
|
MOV |
ADCL, A |
|
MOV |
A, ADCH |
|
RLC |
A |
|
MOV |
ADCH, A |
|
SETB |
ADSCLK |
|
NOP |
|
|
NOP |
|
|
DJNZ |
R7, SE378 |
|
SETB |
ADCS |
|
······ |
;进行数据处理 |
|
DJNZ |
ADCNUM,
SE078 |
|
RET |
|
| ;AD7416的采样参考程序;AD7414、AD7415与AD7416相似,但地址不同。 |
| SAMPLE74: |
MOV |
ADCNUM, #8
;连续采样8次 |
| SE074: |
MOV |
R6, #9EH
;片选AD7416的地址写操作 |
|
MOV |
R5, #1
;选中配置寄存器 |
|
MOV |
R4, #18H
;给配置寄存器赋值 |
|
LCALL |
WRCOM
;三字节的写操作 |
|
MOV |
R6,#10011110B |
|
MOV |
R5,#3
;选中温度上限寄存器 |
|
MOV |
R4,#40H
;上限温度=64 |
|
LCALL |
WRCOM |
|
MOV |
R6,#10011110B |
|
MOV |
R5,#2
;选中温度下限寄存器 |
|
MOV |
R4,#20H
;上限温度=32 |
|
LCALL |
WRCOM |
|
MOV |
R6,#10011110B |
|
MOV |
R5,#0
;选中温度寄存器 |
|
MOV |
WREXE
;两字节的写操作 |
|
MOV |
DATA1,#10011111B
;片选AD7416,读操作 |
|
LCALL |
RDCOM |
|
······ |
;数据处理 |
|
DJNZ |
ADCNUM,SE074
;采样未完,返回 |
| WRCOM: |
LCALL |
BEGIN
;三字节的写操作 |
|
MOV |
DATA1,R6 |
|
LCALL |
OUTBYTE
;输出字节 |
|
MOV |
DATA1,R5 |
|
LCALL |
OUTBYTE |
|
MOV |
DATA1,R4 |
|
LCALL |
OUTBYTE |
|
LCALL |
STOP |
|
RET |
|
| WREXE: |
LCALL |
BEGIN
;两字节的写操作 |
|
MOV |
DATA1,R6 |
|
LCALL |
OUTBYTE |
|
MOV |
DATA1,R5 |
|
LCALL |
OUTBYTE |
|
LCALL |
STOP |
|
RET |
|
| RDCOM: |
LCALL |
BEGIN ;读操作 |
|
LCALL |
OUTBYTE |
|
LCALL |
INBYTE
;输入字节 |
|
MOV |
ADCH,DATA1 |
|
LCALL |
NACK
;MCU使ADSDA数据线变为低电平 |
|
LCALL |
INBYTE |
|
MOV |
ADCL,DATA1 |
|
LCALL |
ACK
;MCU使ADSDA数据线变为高电平 |
|
LCALL |
STOP |
|
RET |
|
| OUTBYTE: |
MOV |
R7,#8
;输出字节 |
| OE1: |
MOV |
A,DATA1 |
|
RLCA |
|
|
MOV |
ADSDA,C |
|
MOV |
DATA1,A |
|
LCALL |
CLOCK |
|
DJNZ |
R7,OE1 |
|
LCALL |
ACK
;AD7416产生应答 |
|
RET |
|
| INBYTE: |
SETB |
ADSDA
;输入字节 |
|
MOV |
R7,#8 |
| INE1: |
LCALL |
CLOCK |
|
MOV |
A,DATA1 |
|
RLCA |
|
|
MOV |
DATA1,A |
|
DJNZ |
R7,INE1 |
|
RET |
|
| NACK: |
CLR |
ADSDA
;AD7416无应答 |
|
LCALL |
CLOCK
;ADSDA数据线为0,一个时钟脉冲之后,ADSDA为1 |
|
RET |
|
| ACK: |
SETB |
ADSDA
;AD7416有应答 |
|
LCALL |
CLOCK
;ADSDA为1,一个时钟脉冲之后,ADSDA为0 |
|
RET |
|
| STOP: |
CLR |
ADSDA
;产生停止信号 |
|
SETB |
ADSCL |
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
SETB |
ADSDA |
|
RET |
|
| BEGIN: |
SETB |
ADSDA
;产生开始信号 |
|
SETB |
ADSCL |
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
CLR |
ADSDA |
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
CLR |
ADSCL |
|
RET |
|
| CLOCK: |
NOP |
;产生时钟脉冲
|
|
SETB |
ADSCL |
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
NOP |
|
|
MOV |
C,ADSDA |
|
CLR |
ADSCL |
|
RET |
|
总之,采用数字温度传感器,可使设计者完全打破传统的设计模式:传感器-运放-A/D转换,从而大大简化了设计方案,提高了电路的可靠性,轻松地实现标度变换过程。
参 考 文 献
1
AD7416具有二线接口的10位低功耗数字温度传感器数据手册. 武汉力源电子股份有限公司, 1999.8 2 AD7414 Data
sheet. AD公司 3 AD7415 Data sheet. AD公司 4 AD7814 Data sheet.
AD公司
|
|