使用AT89S51和ADC0809构建数字电压表

需积分: 10 17 下载量 106 浏览量 更新于2024-11-11 2 收藏 166KB DOC 举报
"这篇文章介绍如何使用单片机AT89S51与ADC0809设计一个能够测量0-5V直流电压的数字电压表。该设计采用四位数码显示,要求元器件数量最少。实验中,单片机通过硬件连线与ADC0809、动态数码显示模块和模数转换模块进行通信。程序设计包括生成ADC0809所需的CLK信号以及对转换结果的数据处理,以便在数码管上正确显示电压值。文中还提及了汇编源程序和C语言实现的可能性,但未提供具体代码。" 在该设计中,主要涉及以下几个知识点: 1. AT89S51单片机:这是一款8位微控制器,具有4KB的闪存和256B的RAM,广泛用于嵌入式系统设计。在本项目中,它负责控制整个系统的运行,包括产生模数转换所需的时钟信号、读取ADC0809的转换结果并进行数据处理,最后将结果显示在数码管上。 2. ADC0809:这是一个8位模拟-to-数字转换器,能将模拟电压转换为数字值。在这个数字电压表中,ADC0809接收输入的直流电压,然后通过8个引脚D0-D7输出对应的数字信号。转换过程需要由单片机提供的CLK信号触发,OE和EOC引脚则用来控制转换的启动和结束。 3. 模数转换原理:ADC0809的转换过程基于积分型ADC的工作方式,需要一个时钟脉冲来完成一次转换。转换后的数字信号为8位,表示的电压范围为0-256*(VREF/256),其中VREF是参考电压,这里为VCC。因此,实际电压值是数字值除以256再乘以VCC。 4. 动态数码显示:利用P1和P2端口,单片机逐位点亮数码管的段码,实现四位数码的显示。这种显示方式可以节省I/O口资源,但需要精确的时间控制来确保正确的显示效果。 5. 硬件连线:单片机的P0、P2、P3端口分别与ADC0809、动态数码显示模块和模数转换模块相连,实现数据传输和控制信号的传递。 6. 软件设计:程序设计包括两部分,一是生成ADC0809所需的CLK信号,这部分可能需要编写定时器或中断服务程序;二是对ADC转换结果的处理,根据VREF调整数据,使得显示的电压值与实际输入电压成正比。 7. 编程语言:尽管文中没有给出具体代码,但提到了汇编源程序和C语言的实现,表明两种编程语言都可用于这类系统设计。汇编语言可以直接操作硬件,效率高,而C语言则更便于程序的移植和维护。 这个项目是一个典型的嵌入式系统设计实例,结合了硬件电路设计和软件编程,展示了如何用单片机和ADC实现一个实用的测量工具。