(9)VREF(+)、VREF(-)——基准参考电压。
参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。本电路中VREF(+)=5V,VREF(-)=0V。
2.2.2 ADC0808的内部结构
ADC0808的内部逻辑结构如图5所示。
图5 ADC0808内部结构
它是有带有8位A/D转换器、8路多路开关、三态输出锁存器及与微处理机兼容的控制逻辑的CMOS组件[6]。它的工作过程如下:
先确定ADDA、ADDB、ADDC的值,决定选择8路输入信号的哪一路模拟信号;
然后给一正脉冲信号送到ALE引脚,使所选择的那一路模拟信号经选择开关送达比较器的输入端;
START接收到一正脉冲信号,信号的上升沿将逐次逼近寄存器复位,信号下降沿将启动A/D转换;
此时EOC信号变低,转换正在进行;
转换结束后,EOC变为高电平,数据保存到8位三态输出锁存器中;
此时CPU可以将OE引脚变为高电平,打开三态输出锁存器,将转换完成的信号送给CPU进行数据处理。
2.2.3 ADC0808时序图
ADC0808的时序图如图6所示:
图6 ADC0808时序图
2.3 显示模块
数字电压表的显示模块如图7所示。该模块的主要组成部分为四位为一体的7段数码显示器、数码管锁存器74LS374和AT89C51单片机。因为数码管已经内置译码器了,因此没有外置译码器了。数码管的驱动方式有两种,一种是硬件驱动,即外接驱动器;另一种是软件驱动,为了节省硬件成本及空间,本设计使用的是软件驱动方式[7]。
单片机的P2.0引脚作为74LS374的片选信号,片选信号P2.0和WR信号一起经或非门及反相器接到74LS374的CLK端,因此显示器的数字端口地址为0FEFFH。51单片机的P1.4~P1.7引脚作为数码管的数位选择。为了保证显示的稳定性,显示时先将数据通过数字端口写入74LS374,再通过数位选择点亮相对应的数码管。
图7 数码显示方式
2.4报警模块
为了保证电压表的寿命安全,增加了报警模块。具体工作原理为:当量程为2V时,若采集到的电压值大于2V,黄色发光二极管点亮,蜂鸣器发出声音警告用户所测值过载;同理当量程为20V时,也会出现相应的警告。具体的电路如图8所示。
图8 过载报警电路
2.5 测量信号选择模块
该数字电压表被设计成能测量0~1000Ω的电阻,1~100mA的直流电流,0~20V的交直流电压,测量时需要鉴别信号来提示所测量的是电阻、电压还是电流信号,因此增加了此模块。原理图如图9所示。
图9 测量信号选择电路图
单片机的P1.0为测电阻信号,P1.2为测电压信号,P1.3为测电流信号,通过一个三路转换开关进行控制,开关一端接地。通过判断P1.0~P1.3引脚的电平高低来决定是否进行电阻测量、电压测量和电流测量。
电阻测量
该数字电压表的电阻测量输入电路如图10所示。
图10 电阻测量输入电路
运算放大器的反馈电阻RX作为待测电阻,通过1000Ω的电阻R2接到电源-5V.假定运算放大器为理想放大器,那么
RV=(5V×RX)/R2
将RV送给ADC0808进行模数值转换,因为ADC0808的分辨率是8位,因此转换得到的数字量为
DV=(RV×255)/5
然后单片机读取A/D转换值进行数据处理,再经过逆向运算可以得到
RX=(DV×R2)/255
此时得到的RX值为二进制数,必须转换为十进制数才能送给数码管显示。程序中采用4B无符号数除法,连续进行除以10的除法,一次取得四位数值。 AT89C51单片机的数字电压表设计+电路图+源程序(4):http://www.751com.cn/zidonghua/lunwen_10026.html