1.输入模拟电压的连接
a/d转换器的输入模拟电压可以是单端输入也可以是双端输入。如单通道8位a/d转换器adc0804的两个输入端为vin(-)、vin(+),如果用单端输入的正向信号,则把vin(-)接地,信号加到vin(+)端;如果用单端输入的负向信号,则把vin(+)接地,信号加到vin(-)端;如果用双端输入,则模拟信号加在vin(-)端和vin(+)端之间。
adc0808/0809可以从in0~in7接8路模拟电压输入,通常接成单端、单极性输入,这时uref(+)=5v、uref(-)=0v,也可以接成双极性输入,这时uref(+)和uref(-)应分别接+、-极性的参考电压。ad574是单端输入模拟电压,在10vin和20vin中任一端和agnd之间,可输入单极性电压或双极性电压,输入模拟电压的极性不同,其输入电路也不同(可参阅图5-54、图5-55)。
2.数据输出和系统总线的连接
a/d转换器的数据输出有两种方式。一种是a/d芯片内部带有三态输出门,其数据输出线可以直接挂到系统数据总线上去。另一种是a/d芯片内部不带三态输出门,或虽有三态输出门,但它不受外部信号控制,而是当转换结束时自动开门,如ad570就是这种芯片。
3.a/d转换启动信号
a/d转换器是由cpu发出启动转换信号的。启动信号有电平启动和脉冲启动两种方式。如ad570、ad571、ad572等要求用电平启动信号,在整个a/d转换期间,启动电平信号不能撤消。cpu一般要通过并行接口输出端或用d触发器发出和保持有效的电平启动信号。adc0804、adc0808/0809和ad574都要求用脉冲启动信号。通过读/写信号或程序控制得到足够宽度的脉冲信号。
4.转换结束信号及转换数据的读取
a/d转换结束时,a/d转换芯片输出转换结束信号。转换结束信号也有两种:电平信号和脉冲信号。cpu检测到转换结束信号后,即可读取转换后的数据。cpu一般可以采用以下3种方式和a/d转换器进行联络来实现对转换数据的读取:
(1)程序查询方式
(2)中断方式
(3)固定的延迟程序方式
可画出adc0808/0809和8086cpu的连接原理图如图1所示。
图1 adc0808/0809与8086cpu的连接原理图
由于adc0808/0809的数据输出带三态输出门,故可直接接到cpu数据总线上。按图5-56所示接线,74ls138译码出的地址范围正好是78h~7fh。低3位地址线a2~a0分别直接接到adc0808/0809的采样地址输入端c、b、a上,用于选通8路输入通路中的其中一路。那么用一条输出指令即可启动某一通路开始转换(使adc0808/0809的start端和ale端得到一个启动正脉冲信号):
contv1:moval,00h;可以是不为00h的其他数字
out78h,al;选通in0通路并开始转换
…contv7:moval,00h;
out7fh,al;选通in7通路并开始转换
…
转换结束,adc0808/0809从eoc端发出一个正脉冲信号,通过中断控制器8259a向cpu发出中断请求,cpu响应中断后,转去执行中断服务程序。在中断服务程序中,执行一条输入指令,即可读取转换后的数据。
例 ad574与8031的连接。
图2为ad574与8031单片机的接口电路。
图2 ad574与8031的接口电路
利用该接口电路完成一次a/d转换,并把转换结果的高8位放入r2中,低8位放入r3中的
工作程序如下:
main:movr0,#7ch;选择ad574,并令a0=0
movx@r0,a;启动a/d转换,全12位
loop:nop
jbp3.2,loop;查询转换是否结束
movxa,@r0;读取高8位
movr2,a;存入r2中
movr0,#7dh;令a0=1
movxa,@r0;读取低4位,尾随4个0
movr3,a;存入r3中
…
例 位a/d转换器ad574与外部的连接。
图3是ad574与外部的连接电路。
图3 ad574与外部的连接电路
设转换结束信号sts接8255a的pa,8255a初始化设定为a口输入。用查询法启动和
读取ad574的转换数据的接口程序如下:
outadport,al;
启动a/d按12位转换,adport是ad574的一个偶地址
wait1:inal,pa;
读取转换结束信号,pa是8255a的a端口地址
movcl,03;
rcral,cl;右移三次
jcwait1;如为高电平,则等待
inal,adport;读取转换后的高8位数据
movah,al;高8位数据传送到ah
inal,adport+1;
读取转换后的低4位数据(后跟4个0)
…