一、模数转换器ADC0809内部框图
ADC0809是一个8通道8位a/d转换器,ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
ADC0809的地址锁存与译码电路完成对A、B、C3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,下表为通道选择表。
C |
B |
A |
被选择的通道 |
0 |
0 |
0 |
IN0 |
0 |
0 |
1 |
IN1 |
0 |
1 |
0 |
IN2 |
0 |
1 |
1 |
IN3 |
1 |
0 |
0 |
IN4 |
1 |
0 |
1 |
IN5 |
1 |
1 |
0 |
IN6 |
1 |
1 |
1 |
IN7 |
二、ADC0809与MCS-51的连接电路
ADC0809与MCS-51单片机的连接如下图1所示。电路连接主要涉及两个问题。一是8路模拟信号通道的选择,二是A/D转换完成后转换数据的传送。
图1ADC0809的部分信号连接
1、8路模拟通道选择
如图1所示模拟通道选择信号A、B、C分别接最低三位地址A0、A1、A2即(P0.0、P0.1、P0.2),而地址锁存允许信号ALE由P2.0控制,则8路模拟通道的地址为0FEF8H~0FEFFH。此外,通道地址选择以WR作写选通信号,这一部分电路连接如图2所示。
图2信号的时间配合
从图中可以看到,把ALE信号与START信号接在一起了,这样连接使得在信号的前沿写入(锁存)通道地址,紧接着在其后沿就启动转换。
启动A/D转换只需要一条MOVX指令。在此之前,要将P2.0清零并将最低三位与所选择的通道好像对应的口地址送入数据指针DPTR中。例如要选择IN0通道时,可采用如下两条指令,即可启动A/D转换:
MOVDPTR,#FE00H;送入0809的口地址
MOVX@DPTR,A;启动A/D转换(IN0)
注意:此处的A与A/D转换无关,可为任意值。
2、转换数据的传送
A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。
1)定时传送方式
对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128µs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
2)查询方式
A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可却只转换是否完成,并接着进行数据传送。
3)中断方式
把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。不管使用上述那种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以RD信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。不管使用上述那种方式,只要一旦确认转换结束,便可通过指令进行数据传送。所用的指令为MOVX读指令,则有指令:MOVDPTR,#FE00H;MOVXA,@DPTR。
该指令在送出有效口地址的同时,发出有效信号RD,使0809的输出允许信号OE有效,从而打开三态门输出,是转换后的数据通过数据总线送入A累加器中。
这里需要说明的示,ADC0809的三个地址端A、B、C即可如前所述与地址线相连,也可与数据线相连,例如与D0~D2相连。这是启动A/D转换的指令与上述类似,只不过A的内容不能为任意数,而必须和所选输入通道号IN0~IN7相一致。