第1章 绪论1.1系统开发背景
在电量测量中,电压、电流和频率是三个最基本的测量,其中电压测量是最常见的。而且随着电子技术的发展,往往需要测量高精度电压,因此数字电压表成为必不可少的测量仪器。简称数字电压表DVM,采用数字测量技术,将连续模拟量转换为不连续、离散的数字形式并显示。数字仪器因其读数准确方便、精度高、误差小、测量速度快而得到广泛应用。
传统的指针式刻度电压表功能单一,进度低,易引起视差和视觉疲劳,不能满足数字时代的需要。采用单片机数字电压表,将直流电压等连续模拟量转换为不连续离散的数字形式并显示,精度高,抗干扰能力强,可扩展性强,集成方便,也可与PC实时通信。数字电压表是许多数字仪表的核心和基础。以数字电压表为核心,可扩展成各种通用数字仪表、专用数字仪表和各种非电量数字仪表。目前,由各种单片机和A/D有必要对转换器构成的数字电压表有全面深入的了解。
近几十年来,随着半导体技术和集成电路的发展(IC)随着微处理器技术的发展,数字电路和数字测量技术也取得了巨大的进步,促进了数字电压表的快速发展,并不断出现新的类型。自1952年数字电压表问世以来,它经历了不断改进的过程,从最早的继电器、电子管和形式发展到当前的全固化和集成(IC另一方面,精度也从0开始.01%-0.005%。
目前,数字电压表的核心部件是A/D转换器的转换精度极大地影响了数字电压表的准确性。因此,未来数字电压表的发展将重点关注高精度和低成本。.2 本文的研究对象
该系统主要包括三个模块:转换模块、数据处理模块和显示模块。A/D转换采用ADC0808转换输入的模拟信号,控制核心AT89C51然后计算转换结果,最后驱动输出装置LED显示数字电压信号。 方案设计与论证2.设计方案与论证
数字电压表有很多设计方案,但集成电路更受欢迎。其设计主要由模拟电路和数字电路组成,包括模拟部分A/D转换器、基准电源等;数字部分包括振荡器、数字显示器、计数器等。A/D转换器将输入的模拟量转换为数字量,是数字电压表的核心部件,通常有三种选择:
方案一,采用双积分A/D转换器MC14433,多路调制BCD采用动态扫描显示代码输出端和超量程输出端,便于自动控制。但芯片只能完成A/D为了实现显示功能,还需要配合其他驱动芯片,使整个硬件电路板布线复杂,加剧电路设计和实际焊接。
方案二、 A/D转换器采用ICL三位半显示的芯片,输入信号,通过取样电路取样,送到ICL7107型三位半A/D转换器可以形成数字电流表模块,直接驱动三位半LED最后,输入电流显示在显示部分。由于ICL7107做的LED数字表最大的缺点是数字跳跃不稳定,尤其是最后一个。接口模块:使用数字电路,使用译码芯片CD该方案作为接口芯片,可实现功能,但稳定性低,结构复杂。
方案三,逐步接近A/D转换器。转换速度更快,精度更高。ADC0808转换芯片,其中A/D转换器用于实现模拟量向数字量的转换,单电源供电。它具有8路模拟输入和8位数字输出功能A/D转换器的转换时间为100μs,模拟输入电压范围为0V~5V,不需要零点和满刻度校准,功耗低,约15mW。 通过考虑转换速度、精度和价格,模拟转换电路种类繁多。
综上所述,选择方案3。ADC0808是本次设计的转换芯片。采用单片机模块AT89S51单片机作为系统的控制单元,通过A/D转换将测值转换为数字量,然后由单片机显示。该方案易于实现各种功能,成本低,功耗低,显示稳定。
可以使用各种数码管或显示部件LED显示器显示。这里简化了四位八段共阴极数字管对A/D显示转换后的结果。.2 系统设计要求
基于单片机或数字逻辑电路设计数字电压表A/D转换电路、密码验证电路、控制输出和显示电路,实现用户按键输入密码解锁功能。
1、以单片机为控制核心设计数字电压表;
可测量0~5V8路输入电压值;
3、LED数字管轮流显示或单路选择显示电压值;
最小分辨率为0.01V,测量误差约为±0.01V。2.3整体设计框图
本设计采用以AT89C51单片机控制方案。 灵活的编程设计和丰富的单片机IO端口及其控制的准确性。系统结构框图如图2所示.1所示。
图2.1系统结构框图
第3章 单元电路设计3.最小系统设计
晶振模块采用内部时钟设计,单片机内部高增益反向放大器,外部电路简单,只需要晶振和 2个电容器,如图3所示.1所示。
图3.1 时钟电路
可通过计算和实验确定电路中的设备选择,也可参考一些典型的电路。参数、电路中的电容器C1和C2对冲击频率有微调作用,一般值范围为30±10pF,该系统选择30pF;石英晶振可选24MHz,它决定了单片机电路产生的时钟信号冲击频率,该系统选择12MHz,因此,时钟信号的振荡频率为12MHz。
复位模块设计AT89C51单片机在启动或死机时需要复位CPU其它功能部件处于确定的初始状态,并从此开始工作。复位信号(高电平有效)由复位电路产生RST对AT89C单片机复位至少需要两个高电平,以便为单片机做好准备。上电时,由于电容器的电压不能突变,会输出高电平。当电容器充电到一定程度时,会输出低电平。单片机在输出高电平时复位。适当选择电阻和电容值。在这要求R1
AT89C51芯片的各引脚功能为:
P0口:8位,漏极开路双向I/O嘴。这组引脚有8条,P0.0是最低的。这八个引脚有两种不同的功能,适用于不同的情况。
P1:8位,准双向I/O口,内部上拉电阻。这八个引脚和P0口的8个引脚
类似,P1.7为最高位,P1.0是最低的,当P1口作为通用I/O口使用时,P1.0-P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。
P2口:这组引脚的第一个功能与上述两组引脚的第一个功能相同,即可作为通用I/O口腔使用,它的第一个功能和P配合0口引脚的第二个功能,输出片外存储器的高8位地址,共同选择片外存储器单元,但不像P像0口那样传输存储器的读写数据。
P三口:该组引脚的第一个功能与其他三个端口的第一个功能相同,第二个功能是控制功能,每个引脚不完全相同,如下表2所示:
ALE/PROG:地址锁定允许信号,输出。P访问外部存储器时,使用0口的第二个功能,89C51的CPU在P0.0-P0.7引脚线传输随后的片外存储器读写数据。C51自动在ALE脉冲序列在线输出频率为1/6。脉冲序列可用作外部时钟源或定时脉冲。
/EA:片外存储器访问允许信号,低电平有效。C51使用片内ROM或使用片外ROM,若/EA=允许使用片内ROM,若/EA=只使用片外ROM。
/PSEN:片外ROM低电平选择通信号是有效的。访问片外ROM时,89C51自动在/PSEN在线产生负脉冲作为片外ROM芯片读选通信号。
RST:复位线,可使89C51处于复位(即初始化)工作状态。通常89C51复位有两种:自动上电复位和手动按键复位。
XTAL1和XTAL2:冲击电路输入线用于连接石英晶体和微调电容,即连接89C51片内OSC定振荡器)定期反馈回路。.2 A/D转换设计
A/D转换器是模拟量输入通道的一个环节,单片机通过A/D在处理之前,转换器将输入模拟量转换为数字量。ADC0808是一种采样分辨率为8位的装置,采用模/数转换近的装置。有一个8通道多路开关,可以根据地址码锁定译码后的信号,只选择8通道模拟输入信号中的一个A/D转换。A/D如图3所示.4所示。
图3.4 ADC0808 转换电路
ADC0808芯片有28个引脚,采用双列直插式包装,各引脚功能如下:
(1) IN0~IN7:8路模拟量输入端。
(2) D0~D7:8位数字输出端口。
(3) START:A/D转换启动信号输入端。
(4) ALE:地址锁定允许信号,高电平有效。
(5) EOC:输出允许控制信号,高电平有效。
(6) OE: 输出允许控制信号,高电平有效。
(7) CLK:时钟信号输入端。
(8)ADDA、ADDB、ADDC:转换通道地址,控制8路模拟通道的切换。ADDA、ADDB、ADDC与地址线或数据线分别连接,三位代码对应8个通道地址端口,ADDA、ADDB、ADDC=000~111分别对应IN0~IN7通道地址端口。
使用方法:
ADC0808采用逐步比较的方法完成A/D由单一转换 5V电源供电。由具有锁定功能的8路选1模拟开关组成ADDA、ADDB、ADDC选定的通道由编码决定。ADC0808完成一次转换需要1000μs左右,它有输出TTL三态锁存缓冲器可直接连接AT89C在51数据总线上。通过适当的外部电路,ADC0808可对0~5V转换模拟信号。3.5 显示电路设计
电压显示采用四位共阴极数码管,可显示四位值,每位8个发光二极管(以下简称字段)a、b、c、d、e、f、g、dp通过控制不同的字段构成LED亮灭的不同组合可以用来显示数字09和小数点。数字管分为共阴极和共阳极。本课程设置采用共阴极。
图3.5 四位数码管电路
共阴极数码管0~9的C51编码为:uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f};
uchar code table[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
其中1不带小数点,2带小数点。
共阳极就是数码管的每段都接高电平,这样要是哪段亮就这段就得接地。
通道选择显示采用7SEG-BCD,该数码管内含译码器,外部不需要再配,适用于直接加BCD码,即直接加四位二进制数,显示0到F。这个数码管用于显示ADC0808的选择输入通道。
图3.6 数码管电路
3.6 模拟输入设计
通过可变电阻一端接电源+5v,一端接地GND,通过改变电阻的阻值,从而改变所测电压值,实现电压的模拟信号输入。分别将八个输入接入ADC0808中IN0到IN7引脚实现八路的输入电压。将通过按键选择某一路输入,实现单路选择输出电压。
图3.7 模拟输入电路3.7 按键设计
通过两个按键控制ADC0808的输入通道同时将通道数传递给通道显示的数码管。按键一的功能为加一,即每按下一次,通道数加一。按键二的功能为减一,即每按一下,通道数减一。实现单路选择显示电压。按键模型如图3.8所示。
图3.8 按键电路
要实现按键的功能需要知道ADC0808的ADDA、ADDB、ADDC的功能。ADC0808一个8路模拟开关,一个地址锁存与译码器、一个8位A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道IN0—IN7,允许8路模拟分量输入,共用A/D转换器 进行转换。地址输入和控制线:4条,ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转化器进行转换。A,B,C为地址输入线,用于选通IN0—IN7上的一路模拟量输入。
第4章 系统软件设计4.1 主程序的设计
由于ADC0808在进行A/D转换时需要有CLK信号,而此时的ADC0808的CLK是连接在AT89C51单片机的30管脚,也就是要求从30管脚输出CLK信号供ADC0808使用。因此产生CLK信号的方法就等于从软件产生。电压表系统有主程序,A/D转换子程序、按键子程序和显示子程序。主程序框图如图4.1所示。
图4.1 主程序流程图4.2 A/D转换程序设计
ADC0808对模拟量输入信号进行转换通过判断EOC(P3.2来确定转换是否完成若EOC为0则继续等待若EOC为1则把OE置位,将转换完成。加入按键控制,通过按键控制ADC0808对输入电路的选择,从而实现单路选择电路电压满足设计要求。程序流程图如4.2所示。
图4.2 A/D程序流程图
其中A/D转换子程序的C语言代码如下
sbit START=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
uint data tvdata;
void main(void)
{
ET0=1;
EA=1;
TMOD=0x02;
TH0=216;
TL0=216;
TR0=1;
while(1)
{
START=1;
START=0; //启动转换
while(EOC==0);
OE=1;
tvdata=P1;
tvdata*=20-0.01;
OE=0;
}
}4.3 显示程序设计
系统上电后,配置数码管个引脚,然后对其进行初始化,再调用的读写函数,可将采集处理后的电压数值实时显示。其程序流程图如图4.3所示。
图4.3 显示程序流程图
其中显示子程序的C语言代码如下:
uchar code tv[]={0xfe,0xfd,0xfb,0xf7};
uchar code a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void ledxianshi(void)
{
uchar k,i;
if(tvdata>5000)
tvdata=5000;
led[0]=tvdata%10;
led[1]=tvdata/10%10;
led[2]=tvdata/100%10;
led[3]=tvdata/1000;
for(k=0;k<4;k++)
{
P2=tv[k];
i=led[k];
P0=a[ i];
if(k==3)
{
P07 =1;
}
delay();
}
}4.4 按键程序设计
通过按键控制ADC0808选择的输入通道。开始之后,进行通道选择,一个按键使通道加1,一个减1,从而选择输入,影响输出。按键按下之后,重新进行AD转换,重新显示电压值与通道。
图4.3 按键程序流程图
其中按键子程序的C语言代码如下:
void xuan( uint a)
{
if(a==0)
{
P37=0;P36=0;P35=0;
}
if(a==4)
{
P37=0;P36=0;P35=1;
}
if(a==2)
{
P37=0;P36=1;P35=0;
}
if(a==6)
{
P37=0;P36=1;P35=1;
}
if(a==1)
{
P37=1;P36=0;P35=0;
}
if(a==5)
{
P37=1;P36=0;P35=1;
}
if(a==3)
{
P37=1;P36=1;P35=0;
}
if(a==7)
{
P37=1;P36=1;P35=1;
}
}
if( KEY2==0)
{
b--;
delay();
xuan(b);
delay();
if(b==0)
b=7;
}
if( KEY1==0)
{
b++;delay( );
xuan(b);
if(b==7)
b=0;
}
第5章 系统仿真与调试
使用Proteus绘制原理图,然后将Keil生成的hex程序文件载入到单片机中,点击运行:
按下按键,选择IN5即通道5时,仿真与如图5.1所示。
图5.1 通道5仿真图
如图所示,通过按键选择通道五实现显示单路电压,数码管显示数字5。测量电压为2.038V,实际电压为2.03V,误差小于0.01,满足设计要求。
为确定结果的准确性,需要多次测量对比。
按下按键,选择IN7即通道7时,仿真与如图5.2所示。
图5.2 通道7仿真图
如图所示,测量电压为0.919V,实际电压为0.92V,误差小于0.01,满足设计要求,且可通过按键选择通道七实现显示单路电压,数码管显示数字7。
仿真结果分析:输入的电压从0~5V变化时,数字电压表能够测量出并利用数码管显示出来。测量的精度与要求的一致,前两位精确,百分位不作精确。要更精确,只需修改相应的源程序代码即可。
第6章 总结
本系统由单片机系统、A/D转化电路、LCD显示和按键系统组成。数字电压表能完成测量0~5V的8路输入电压值并且通过按键控制可以使LED数码管单路选择显示电压值的功能。本系统利用单片机控制,LCD显示,按键配合,系统成本低廉,功能强大实用。
本文设计的基于AT89C51的数字电压表具有简单的软硬件设计电路、低廉的开发成本、简便的操作方法,在实际应用工作应能好,测量电压准确,精度高。并通过Proteus仿真实现了预期的功能,实现八路输入电压单路选择输入显示电路电压值,且可以满足现在的误差要求最小分辨率为0.01V,测量误差约为±0.01V。。
但是设计数字电压表需要结合实际综合考虑很多因素,因此该数字电压表设计需要在实际中进一步完善和改进。 要想在现实生活中推广,还必须针对实际应用场合的需要,进一步完善系统功能的程序具有一定的推广价值。
附录I:整体电路原理图
附录II:元器件清单序号标号元器件名称元器件参数
1U1单片机AT89C51
2U2A/D转化器ADC0808
3RV0-RV7滑动变阻器1K
4R1-R10电阻10K
5LED1四位数码管7SEG-MPX4-CC
6LED2一位数码管7SEG-BCD
7C1、C2电容33pF
8C3电容1uF
9KEY1-KEY3按键6*6*5
以上文档下载(word格式 可编辑):
数字电压表的设计.doc
(736.36 KB, 下载次数: 111)
2017-7-1 17:39 上传
点击文件名下载附件