ADC0809是美国国家半导体(National Semiconductor)生产的CMOS工艺8通道,8位逐次逼近型A / D模数转换器。
内部有一个8通道多路开关,它可以根据地址代码锁存解码信号,并且仅选择8通道模拟输入信号之一进行A / D转换。
目前,它仅在MCU初学者的设计中相对普遍。
因此,本文介绍一种数字电压表,该电压表使用ADC0809进行电压采集和模数转换,并使用AT89S52单片机作为电压测量和显示的控制单元。
1.系统硬件设计1.1系统组成系统主要包括几个主要模块:数据采集模块,A / D转换模块,控制模块,显示模块,按钮模块等。
A / D转换模块,ADC0809本身具有8个模拟输入端口,通过C,B,A,3位地址输入端子,可以选择8个通道之一进行转换。
如果以固定的间隔依次更改3位地址输入端子的地址,则可以依次测量8通道输入电压。
LED数码管的显示采用软件解码和动态显示。
通过按钮模块的操作,可以选择8通道圆形显示,也可以选择单通道显示。
1.2数据采集电路数据采集电路是系统的主要部分。
ADC0809具有8个模拟输入通道IN0〜IN7,可以通过3位地址输入端子C,B,A(引脚23〜25)进行选择。
引脚22是地址锁存控制端子ALE。
当输入为高电平时,由C,B和A引脚输入的地址被锁存在ADC0809内部锁存器中,并且相应的模拟通道由内部解码电路选择。
。
引脚6是启动转换控制端子START。
当输入2μs宽的高电平脉冲时,ADC0809启动,开始转换输入通道的模拟量。
引脚7是A / D转换器。
转换开始时,EOC信号为低电平。
一段时间后,转换结束,并且转换结束信号EOC输出高电平。
转换结果存储在ADC0809的输出数据寄存器中。
引脚9是允许控制端子OE的A / D转换数据输出。
当OE为高电平时,存储在输出数据锁存器中的数据通过ADC0809的数据线D0〜D7输出。
引脚10是ADC0809的时钟信号输入端子CLOCK。
连接时,ADC0809的数据线D0〜D7连接至AT89S52的端口P1,ADC0809的地址引脚,地址锁存端子ALE,启动信号START,数据输出允许。
控制端子OE分别连接至AT89S52的P3端口。
AT89S51和AT89S52的P3.2连接了转换结束信号EOC。
时钟信号输入端CLOCK信号由单片机的地址锁存信号ALE获得,采集电路如图1所示。
图1数据采集电路2.软件设计2.1主程序主程序包含初始化部分,调用A / D转换子例程并调用显示子例程,如图2所示。
图2的主程序流程图的初始化部分包括通道数据缓冲区的初始化和显示缓冲区的初始化。
另外,对于单通道显示和循环显示,系统设置初始标志。
初始化期间,标志位设置为0,默认为循环显示。
当它为1时,它是单通道显示,并且标志位由外部按钮控制。
2.2数据处理子程序ADC0809转换后的输出是一个8位二进制数。
根据公式(1),当ADC0809的输出为(111111111)时,输入电压值VI = 5.00V;当ADC0809的输出为(00000000)时,输入电压值VI = 0.00V;当ADC0809输出为(10000000)时,输入电压值VI = 2.50V。
由于单片机数学运算的结果仅取整数部分,因此当输出为(10000000)时,计算出的电压值VI = 2.00V,这是非常不准确的。
为了提高精度,必须保留小数部分。
具体方法是:如果小数点后有两位数字,则在运算过程中将分子乘以100,并保留该三位数再乘以1000;原始设计是在小数点后保留两位数字,并进行计算,方法如公式(2)所示。
VI = Dout / 255×5(1)VI = Dout / 255×5×100 = Dout×100/51(2)从公式(2)中我们可以看到,当ADC0809输出为(10000000)时,单片机运算结果为250;然后用单片机将250除以10得到20的商和0的余数,然后用25除以10的商得到2的商和5的余数。
因此,可以获得更准确的值。
结束语