利用单片机测量温度:
ad7416的地址A0A1A2为111:
ADSCL BIT P1.1
ADSDL BIT P1.7
.............
;程序初始化
............
;AD7416的采样参考程序:
SAMPLE74:MOV ADCNUM,#8 ;连续采样8次
SEO74: MOV R6,#9EH ;片选AD7416的地址写操作
MOV R5,#1 ;选中配置寄存器
MOV R4,#28H ;给配置寄存器赋值
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 ;选中温度寄存器
LCALL WREXE ;两字节写操作
MOV DATA1,#10011110B ;片选AD7416.读操作
LCALL RDCOM
................
;数据处理
...............
DJNZ ADCNUM,SE074 ;采样没完,返回
RET
WRCIM: 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
RLC A
MOV ADSDA,C
MOV DATA1,A
LCALL CLOCK
DJNZ R7,OE1
LCALL ACK
RET
INBYTE: SETB ADSDA ;输入字节
MOV R7,#8
INE1: LCALL CLOCK
MOV A,DATA1
RCL A
MOV DATA1,A
CJNZ 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
CLR ADSDA
NOP
NOP
NOP
NOP
CLR ADSCL
RET
CLOCK: NOP ;产生时钟脉冲
SETB ADSCL
NOP
NOP
NOP
NOP
MOV C,ADSDA
CLR ADSCL
RET
AD7416简单描叙:
1:10位温度至数字转换器
2:漏极开路超温掉电输出,可以实现“线与”
3:I2C兼容的串行接口
4:可选的串行总线地址,允许在单一总线上连接多达8个AD7416
5:低功耗掉电方式(典型2mA)
6:400ms更新速率
7:-128℃至+128℃温度测量范围
AD7416表示温度的数据是10位二进制数码,以2的补码格式储存。上面给出了几个温度数据的格式。
AD7416有5个内部寄存器。其中四个是数字寄存器,一个是地址指针寄存器。地址指针寄存器是一个8位寄存器,它储存指向四个数据寄存器之一的地址。对AD7416每一次串行写操作的第一个数据字节是数据寄存器的地址,这就是随后的数据字节要写入的地址。这个寄存器只须最低两位被用来选择一个数据寄存器。
温度值寄存器是一个16位只读寄存器,它的高10位以2的补码格式储存由AD转换器送来的10位温度读数;配置寄存器是一个8位读/写寄存器,它用来设置AD7416的工作方式;THYST设点寄存器是一个16位读/写寄存器,它的9个最高位储存以2的补码格式表示的低温度门限设点;TOTI设点寄存器是一个16位读/写寄存器,它的9个最高位储存以2 的补码格式表示的高温度门限设点。AD7416上电时地址指针指向温度值寄存器,TOTI=80℃,THYST=75℃,这些缺省使得AD7416可以用于标准的恒温器而不需要与任何串行总线连接。
AD7416与AT89C2051的接口
如所有的I2C兼容器件一样,AD7416有一个7位串行地址。这个地址的高4位设定为1001,而低3位可由用户通过将A2至A0引脚连接到无论是+VS或GND来设置。通过它们不同的设定地址,可将多达8个AD7416接到一条串行总线,超过8个则将与总线上的其它器件发生冲突。
D0,D1,D2,D3,D4,D5没用!
数据是在D15——D6
完全正确!
谢谢!