由于AT89C51单片机没有SPI接口,因此使用P12、P13虚拟SPI接口的串行数据输出端(DOUT)和同步时钟输入端(DCLOCK)。图4为ADS7822启动转换和读取转换结果的工作时序图。

图4中tCYC为采样周期(75 kHz),tCONVE为转换时间(12个CLK周期),如果一次转换结束后,CS仍保持为低电平,ADS7822将继续输出12位转换结果,但再次的输出将是低位在前,因此在读出转换结果后,应将CS变为高电平,使ADS7822处于掉电状态。
以下是采用软件虚拟方式,对ADS7822启动转换和读取转换结果的程序,CLK和DAT为使用AT89C51的P1.2和P1.3虚拟的串行时钟线和数据线。


从以上转换程序中可以看出,一次转换,从启动到读取转换结果,约需要100个机器周期以上,如果单片机使用12 MHz的外部晶振,则一次转换的时间应该在100μs以上。如果在转换过程中需要多次采样均值滤波,则不满足高速采样的需要。
4 结束语
串行A/D虽然在使用中有接口电路简单的优点,但在需要软件虚拟串行通信协议的情况下,转换时间与同样分辨率的并行A/D相比要逊色的多。如果要实现与并行A/D同样的转换速度,则需要选择本身具有同类串口的单片机。