现实中的很多量,都是模拟量,如温度,压力等,单片机要去了解它们,首先就要把这些量进行数字化,AD转换即把模拟量转变为数字量。这次书上介绍的AD芯片为ADC0804,8位并行AD转换芯片。关于AD转换的详细原理,我就不抄了,网上有的是。 ADC0804的使用,比前面用过的锁存器74LS573难用得多,主要是读写数据都要根据时序图,进行电位的变化,而且芯片的接法也相对麻烦一点。下面记录一下引脚定义: VIN(+),VIN(-):待测量的模拟信号输入 DB0~DB7:测量结果输出 AGND:模拟信号地 DGND:数字信号地 CLK:时钟信号输入端 CLKR:内部时钟发生器的外接电阻端,与CLK端配合可由芯片自身产生时钟脉冲,其频率为1/(1.1RC) :片选信号,低电平有效 :写信号输入,低电平启动A/D转换 :读信号输入,低电平有效 :A/D转换结束信号,低电平表示本次转换已经完成 VREF/2:参考电平输入,决定量化单位(可以调节该电平,调节最终准确度) VCC:电源输入
关于时钟:如果使用内部时钟的话,官方的建议是用10K电阻和150pF电容,如上图; 模拟地和数字地一般直接接地即可。参考电平在2.5V左右,我试了一下,调到2.55的时候比较准确。关于待测量的模拟信号,如电压,可以向上图一样连接,负直接接地即可。 这里没有用到,即没用中断,而是直接用延时的方法,等待A/D转换完成后,读取DB0~DB7的值。 -------------------------------------------------------------------- 读写芯片都要根据芯片的时序来,其写时序如下: 可以看到,首先要使片选信号置低电平,然后写信号下降,上升后,芯片开始A/D转换,转换完成后通知已经完成。
读时序如下: 可以看到,转换完成后,选使片选有效,然后使读引脚下降,再上升,即可读取数据。 由于不管读写,都要使片选有效,即CS脚置低,所以CS脚置一次低就可以了。
换算的规则是,8位数据的高四位,相当于每单位0.32V,低四位,相当于每单位0.02V,所以总电压就是: (val>>4)*0.32 + (val&0x0f)*0.02)
|
|
来自: kequansodo > 《我的图书馆》