ADC0804是逐次比较型A/D转换器,它采用CMOS工艺20引脚集成芯片,分辨率为8位,转换时间100us,输入电压范围0~5V芯片内具有三态输出数据锁存器,科直接连接在数据总线上。
ADC0804引脚
ADC0804引脚分布图
Vin(+)Vin(-):两模拟信号输入端,用以接收单极性、双极性和差模输入信号
DB7~DB0:具有三态特性数字信号输出口
AGND:模拟信号地DGNA:数字信号地
CLK:时钟信号输入端
CLKR:内部时钟发生器的外接电阻端,与CLK端配合可由芯片自身产生时钟脉冲,其频率为1/(1.1RC)
CS:片选信号输入端,低电平有效,一旦CS有效,表明AD转换器被选中,可启动工作WR:写信号输入,低电平启动AD转换。
RD:读信号输入,低电平输出端有效。
INTR:AD转换结束信号,低电平表示本次转换已完成。
Vref/2:参考电平输入,决定量化单位
Vcc:芯片电源5V输入
TX-1C开发板上的ADC0804接法
分析图如下:
1.ADC0804的片选CS连接U2锁存器的Q7输出端,我们可以通过控制锁存器来控
制CS,这样接是因为开发板扩展的外围太多,没有多余的IO口来独立控制ADC0804的CS,所以选择U2
2.Vin(+)接电位器的中间滑动端,Vin(-)接地,因为这两端可以输入查分电压,即它可测量Vin(+)和Vin(-)之间的电压,当Vin(-)接地时,Vin(+)端的电压即为ADC0804的模拟输入电压,Vin(+)与电位器之间串联一个10K的电阻,目的是限制输入Vin(+)的电流,防止电流过大而烧坏AD芯片,当用短路帽接插针ADIN后,电位器的中间滑动端便通过电阻R12与Vin(+)连接,此时调节电位器的旋钮,其中间滑动端的电压便在0~Vcc间变化,进而ADC0804的数字输出端也在0x00~0xFF变化。
3.CLKR、CLK、GND之间用电阻电容组成RC振荡器,用来给ADC0804提供工作所需的脉冲,其脉冲的频率为1/(1.1RC),按芯片手册上说明,R取10K,C取150pF。
4.Vref/2端用两个1K的电阻分压得到Vcc/2的电压,将该电压作为AD芯片工作时内部的参考电压
5.WR、RD分别接单片机的P3.6和P3.7引脚,数字输出端接单片机的P1口。
6.将AGND和DGND同时连接到实验板的GND上,实际应用电路要考虑精确度和稳定度最好将器件的模拟地和数字地分别连接,最后将模拟地和数字地仅在一点相连。
ADC0804启动转换时序
ADC0804启动转换时序图
序分析:CS先为低电平,WR随后置低,经过至少tw(WR)L(min100ns)时间后,WR拉高,随后AD转换器被启动,并且在经过(1~8个AD时间周期+内部Tc)时间后,模/数完成转换,转换结果存入数据锁存器,同时INTR自动变为低电平,通知单片机本次转换已结束。
时序分析:当INTR变为低电平后,将CS先置低,接着再将RD置低,在RD置低至少经过tacc(max200ns)时间后,数字输出口上的数据达到稳定状态,此时直接读取数字输出端口的数据便可得到转换后的数字信号,读走数据后,马上将RD拉高,然后再将CS拉高,INTR是自动变化得,当RD置低tr1时间后,INTR自动拉高。上面是启动一次和读取一个数据的时序图,当我们需要连续转换并且连续读走数据时,就没有必要每次都把CS置低再拉高,因为CS是片选信号,只要开始就把CS置低,以后当要启动转换盒读取数据时只需操作WR和RD即可。
实例程序:
#include《reg52.h》
sbitadrd=P3^7;//IO口定义
sbitadwr=P3^6;sbitdiola=P2^5;sbitdula=P2^6;sbitwela=P2^7;
unsignedcharj,k,adval;voidmain()//主程序{
uchara,A1,A2,A2t,A3;while(1){
wela=1;P0=0;//选通ADCS
adwr=0;//AD写入(随便写个什么都行,主要是为了启动AD转换)_nop_();adwr=1;P0=0xff;//关闭ADCSdelay(10);
wela=0;//关闭有AD片选信号锁存器的锁存端以防止在操作数码管时使AD的片选发生变化
for(a=20;a》0;a--)//需要注意的是ADC0804在写和读之间的时间间隔要足够长否则
无法读出数据
{//这里把显示部分放这里的原因也是为了增加写读之间的时间间隔
display(A1,A2,A3);}//送去显示各位。wela=1;//重新打开有AD片选信号锁存器的锁存端P1=0xff;//读取P1口之前先给其写全1P0=0;//选通ADCS
adrd=0;//AD读使能adval=P1;//AD数据读取赋给P1口adrd=1;P0=0xff;//关闭ADCSadwr=0;P1=adval;//同时把AD的值送八个发光二极显示
A1=adval/100;//分出百,十,和个位
A2t=adval%100;
A2=A2t/10;
A3=A2t%10;
};
}
1.零点和满刻度调节
ADC0804的零点无需调整。满刻度调整时,先给输入端加入电压VIN+,使满刻度所对应的电压值是
其中Vmax是输入电压的最大值,Vmin是输入电压的最小值。当输入电压与VIN+值相当时,调整VREF/2端电压值是输出码为FEH或FFH。
2.参考电压的调节
在使用A/D转换器时,为保证其转换精度,要求输入电压满量程使用,如输入电压动态范围较小,则可调节参考电压VREF,以保证小信号输入时ADC0804芯片8位的转换精度。
3.接地
模数、数模转换电路中要特别注意到地线的正确连接,否则干扰很严重,以致影响转换结果的正确性。A/D、D/A及取样-保持芯片上都提供了独立的模拟地(AGND)和数字地(DGND)的引脚。在线路设计中,必须将所有的器件的模拟地和数字地分别相连,然后将模拟地与数字地仅在一点上相连接。地线的正确连接方法如图所示: