天天看点

两分钟学会用ADC0804采集数据两分钟学会用ADC0804采集数据

两分钟学会用ADC0804采集数据

ADC分辨以输出二进制的位数表示。从理论上讲,n位输出的ADC能区分 2 n 2^n 2n个不同的级别的输入模拟电压,能区分输入电压的最小值为满量程输入的 1 / 2 n 1/2^n 1/2n。在最大输入电压一定时,输出位数越大,量化单位越小,分辨率越高。ADC0804芯片分辨率为8位,转换时间为100us,输入电压范围为0-5v,内具有三态输出数据锁存器,可以直接在数据总线上。其能区分输入信号的最小电压为 19.53 m V ( 5 V × 1 2 8 ≈ 19.53 m V ) 19.53mV\left( 5V\times \frac{1}{2^8}\approx 19.53mV \right) 19.53mV(5V×281​≈19.53mV)。下图为ADC0804与STC89C52单片机的接线图。

两分钟学会用ADC0804采集数据两分钟学会用ADC0804采集数据

VIN(+)接需要采集信号的正极+,VIN(-)接需要采集信号的负极-如果需要采集的信号为单端输出,则VIN(-)接GND即可。CLKR、CLR、GND之间用电阻和电容组成RC振荡电路,给ADC0804提供工作需要的脉冲,脉冲频率为1/1.1RC。VREF/2端用两个 1 K Ω 1K\varOmega 1KΩ的电阻分压得到VCC/2,即2.5v,将该电压作为A/D芯片工作时的内部参考电压。 W R _ _ _ _ \overset{\_\_\_\_}{WR} WR____、 R D _ _ _ _ \overset{\_\_\_\_}{RD} RD____分别接单片机的P3.6和P3.7引脚,数字输出端接单片机的P1口。将AGND和DGND同时接地。由于都要去A/D数据不使用中断,故引脚 I N T R _ _ _ _ _ _ _ \overset{\_\_\_\_\_\_\_}{INTR} INTR_______没有连接。

下图为ADC0804启动的时序图, C S _ _ _ _ \overset{\_\_\_\_}{CS} CS____先为低电平, W R _ _ _ _ \overset{\_\_\_\_}{WR} WR____随后置低,经过至少 t w t_w tw​时间后, W R _ _ _ _ \overset{\_\_\_\_}{WR} WR____拉高,随后 A D C 0804 ADC0804 ADC0804启动,在经过 ( 1   8 个 A / D 时钟周期 + 内部 T C ) \left( 1~8\text{个}A/D\text{时钟周期}+\text{内部}T_C \right) (1 8个A/D时钟周期+内部TC​)时间后, A / D A/D A/D转换完成,转换结果存入数据锁存器。

两分钟学会用ADC0804采集数据两分钟学会用ADC0804采集数据

下图为 A D C 0804 ADC0804 ADC0804读取数据时序图, I N T R _ _ _ _ _ _ _ \overset{\_\_\_\_\_\_\_}{INTR} INTR_______变为低电平后, S T C 89 C 52 STC89C52 STC89C52将 C S _ _ _ _ \overset{\_\_\_\_}{CS} CS____先置低,再将 R D _ _ _ _ \overset{\_\_\_\_}{RD} RD____置低,在 R D _ _ _ _ \overset{\_\_\_\_}{RD} RD____置低至少经过 t A C C t_{ACC} tACC​时间后,数字输出口上的数据达到稳定状态。此时直接读取数字输出端口数据,便可以得到转换后的数字信号。读走数据后,立刻将 R D _ _ _ _ \overset{\_\_\_\_}{RD} RD____拉高,再将 R D _ _ _ _ \overset{\_\_\_\_}{RD} RD____置低,当 R D _ _ _ _ \overset{\_\_\_\_}{RD} RD____置低 t R 1 t_{R1} tR1​时间后, I N T R _ _ _ _ _ _ _ \overset{\_\_\_\_\_\_\_}{INTR} INTR_______自动拉高。

两分钟学会用ADC0804采集数据两分钟学会用ADC0804采集数据

实际测量充电时的端口电压,,由于 C S _ _ _ _ \overset{\_\_\_\_}{CS} CS____为片选信号,置低表示该芯片可被操作或处于能够正常工作状态, S T C 89 C 52 STC89C52 STC89C52在一开始就将 C S _ _ _ _ \overset{\_\_\_\_}{CS} CS____置低,此后,只要操作 W R _ _ _ _ \overset{\_\_\_\_}{WR} WR____和 R D _ _ _ _ \overset{\_\_\_\_}{RD} RD____就可以启动转换和读取数据。

enjoy it!