1 引言
单片机是一种集成电路芯片,随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。由于单片机具有简单实用、高可靠性、良好的性能价格比以及体积小等优点,已经在各个技术领域得到了迅猛发展。数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。本设计重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。
2 总体设计方案
2.1 设路计思路
按系统功能要求,决定控制系统采用AT89S51单片机,A/D转换采用ADC0809.系统除能确保实现要求的功能外,还可以方便地进行其功能的扩展。本文采用AT89S51作为核心元件,AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
采用NS公司的分辨率为8位的逐次比较型的高精度的模数转换器ADC0809,ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。把采取的电压进行处理然后通过单片机的P口送到单片机然后经过程序处理,由LED电路把电压数值显示出来。单片机加上外围的串口显示电路由74LS245和数码管三极管组成。
器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价AT89s51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
2.2 设计方框图
图1 数字电压表系统设计方案
3 设计原理分析
3.1 单片机AT89S51
AT89S51单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。
3.2 AT89S51的特点
40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器 此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
主要特性在:
● 与MCS-51单片机产品兼容
● 4K字节在系统可编程Flash存储器
● 1000次擦写周期
● 全静态工作:0Hz-33MHz
● 32个可编程I/O口线
● 2个16位定时器/计数器
● 6个中断源
● 全双工UART串行通道
● 低功耗空闲和掉电模式
● 掉电后中断可唤醒
● 看门狗定时器
● 双数据指针
● 灵活的ISP编程(字或字节模式)
● 4.0---5.5V电压工作范围
3.3 ADC0809的内部逻辑结构
八路数字电压表主要利用A/D转换器,处理过程是先用A/D转换器对各路电压值进行采样,得到相应的数字量,再按数字量与模拟量成正比关系运算得到对应的模拟电压值,然后把模拟值通过显示器显示出来。设计时假设待测的输入电压为八路,电压值的范围为0~5V,要求能在4位LED数码管上轮流显示或单路选择显示。测量的最小分辨率为0.0119V,c测量误差为±0.02V。
ADC0809是8路8位ADC芯片,片内有8路模拟开关、地址锁存与译码、256电阻梯形网络、电子开关树、逐次逼近寄存器、比较器和3态输出锁存器等,特别适合与微机接口。时钟频率=1.26MHz,转换时间=100μs,转换误差≤±1LSB,内含8路数据选择器以便进行8路ADC。8路8位2进制码LSTTL电平输出,28脚封装。ADC0809多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。ADC0809的内部逻辑结构如图3.1所示。
图2 ADC0809的内部逻辑结构
3.4 引脚结构
ADC0809具有8路模拟量输入通道IN0~IN7,通过3位地址输入端C、B、A(因脚23、24、25)进行选择。引脚22为地址锁存控制端ALE,当输入为高电平时,C、B、A引脚输入的地址锁存与ADC0809内部的锁存器中,经内部译码电路译码选中相应的模拟通道。引脚6为启动转换控制端START,当输入一个2 us宽的高电平脉冲时,就启动ADC0809开始对输入通道的模拟量进行转换。引脚7为A/D转换的结束信号EOC。ADC0809为逐次比较型A/D转换器,当开始转换时,EOC信号为低电平,经过一定时间,转换结束,转换结束信号EOC输出高电平,转换结果存放与ADC0809内部的输出数据锁存器中。引脚9为A/D转换数据输出允许控制端OE,当OE为高电平时,存放与输出数据存储器中的数据通过ADC0809的数据线D0~D7输出。引脚10为ADC0809的时钟信号输入端CLOCK。在连接时,ADC0809的数据线D0~D7与AT89S51的P0口相连,ADC0809的地址引脚、地址锁存端ALE、启动信号START、数据输出允许控制端OE分别与AT89S51的P2口相连,转换结束信号EOC与AT89S51的P3.7口相连。时钟信号输入端CLOCK信号,由单片机的地址锁存控制端ALE提供。单片机的系统时钟为12MHZ。
IN0-IN7:8条模拟量输入通道 。ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。
地址输入和控制线:4条 。ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
数字量输出及控制线:11条 。ST为转换启动信号,当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。
CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为1MHZ,VREF(+),VREF(-)为参考电压输入。
3.5 ADC0809应用说明
ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。 初始化时,使ST和OE信号全为低电平。送要转换的哪一通道的地址到A,B,C端口上。在ST端给出一个至少有100ns宽的正脉冲信号。是否转换完毕,我们根据EOC信号来判断。当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机。
3.6 ADC0809工作原理
8路模拟信号由ADC0809的IN0~IN7端输入,AT89S51单片机的ALE端口输出的脉冲信号送ADC0809的10脚作为ADC的时钟信号(产生CLK信号的方法就得用软件来产生)。A/D转换完成之后,从EOC端返回AT89S51一个转换结束信号,单片机随即用信号将A/D转换的数字输出从D0~D7端经P0口数据总线读入自己的存储器中。A/D转换过程全部结束。再经软件程序转换成a~g 7段码输出,驱动LED数码管。各位数码管由位控信号P3.0、P3.1、P3.2、P3.3控制,由74LS245反相驱动将依次巡回点亮数码管。
3.7 复位电路的设计
本设计采用了上电自动复位和手动复位,上电自动复位是再加电瞬间电容通过充电来实现的,其电路如图3.2所示。在充电瞬间,电容C通过复位电阻R充电,RST端出现正脉冲,以复位。只要电源VCC的上升时间不超过1MS,就可以实现自动复位,既接通电源就完成了系统的复位初始化,手动复位是通过按钮实现的。
图3 复位电路
3.8 时钟电路的设计
任何一块单片机的正常工作都离不开时钟信号,本设计中利用8951内部的高增益反相放大器,外加石英晶体以及两个电容就构成了稳定的自激振荡器。给单片机提供了时钟信号,保持单片机按正常的时序工作。
图4 时钟电路