简易数字电压表设计.docx
《简易数字电压表设计.docx》由会员分享,可在线阅读,更多相关《简易数字电压表设计.docx(12页珍藏版)》请在冰豆网上搜索。
简易数字电压表设计
简易数字电压表设计
本课题实验主要采用AT89C51芯片和ADC0809芯片来完成一个简易的数字电压表,能够对输入的0~5V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示,测量误差约为0.02V。
该电压表的测量电路主要由三个模块组成:
1、A/D转换模块
2、数据处理模块
3、显示控制模块
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。
数据处理则由芯片AT89C51来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。
显示模块主要由7段数码管及相应的驱动组成,显示测量到的电压值。
实现方案:
本实验采用AT89S51单片机芯片配合ADC0809模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1所示。
该电路通过ADC0809芯片采样输入口IN2输入的0~5V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89C51芯片的P0口。
AT89S51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1口经驱动再传送给数码管。
同时它还通过其四位I/O口P3.4、P3.5、P3.6、P3.7产生位选信号,控制数码管的亮灭。
另外,AT89C51还控制着ADC0809的工作。
其ALE管脚为ADC0809提供了1MHz工作的时钟脉冲;P2.7控制ADC0809的地址锁存端(ALE);及控制ADC0809的启动端(START);P2.6控制ADC0809的输出允许端(OE);P3.2控制ADC0809的转换结束信号(EOC)。
系统框图如图1-2所示。
图1-1电路原理图
图1-2系统框图
一.主要元器件的介绍
1.模数转换芯片ADC0809:
ADC0809是典型的8位8通道逐次逼近式A/D转换器,其实物如图1-3所示。
它可以和微型计算机直接接口。
ADC0809转换器的系列芯片是ADC0808,可以相互替换。
图1-3ADC0809实物图
1)ADC0809内部逻辑结构
图1-4ADC0809的内部逻辑结构及引脚图
ADC0809的内部逻辑结构如图1-4所示。
图中多路模拟开关可选通8路模拟通道,允许8路模拟量分时输入,并共用一个A/D转换器进行转换。
地址锁存与译码电路完成对A、B、C三个地址位进行锁存与译码,如表1-1所示。
表1-1ADC0809通道选择表
C(ADDC)
B(ADDB)
A(ADDA)
选择的通道
0
0
0
IN0
0
0
1
IN1
0
1
0
IN2
0
1
1
IN3
1
0
0
IN4
1
0
1
IN5
1
1
0
IN6
1
1
1
IN7
2)ADC0809的引脚
ADC0809芯片为28引脚双列直插式封装,其引脚排列如图1-4所示。
(1)IN0~IN7:
8路模拟量输入通道。
(2)A、B、C:
模拟通道地址线。
这3根地址线用于对8路模拟通道的选择,其译码关系如表1-1所示。
其中,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。
(3)ALE:
地址锁存允许信号。
对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
(4)START:
转换启动信号。
START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。
本信号有时简写为ST。
(5)D7~D0:
数据输出线。
为三态缓冲输出形式,可以和单片机的数据线直接相连。
D0为最低位,D7为最高。
(6)OE:
输出允许信号。
用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
(7)CLK:
时钟信号。
ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。
通常使用频率为500KHz的时钟信号。
(8)EOC:
转换结束信号。
EOC=0,正在进行转换;EOC=1,转换结束。
使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
(9)Vcc:
+5V电源,GND:
地。
(10)Vref:
参考电压。
参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。
其典型值为+5V(Vref(+)=+5V,Vref(-)=0V)。
3)ADC0809的工作原理:
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。
直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
(注意:
ALE信号常与START信号连在一起,这样连接可以在信号的前沿写入地址信号,在其后沿启动A/D转换,图1-5为ADC0809信号的时序配合图)。
图1-5ADC0809信号的时序配合
2.数据处理及控制芯片STC89C51:
STC89C51片内含有4k字节Flash闪速存储器。
ALE:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
3.AT89C51与ADC0809的连接
AT89C51与ADC0809的连接电路如图1-1所示。
AT89C51与ADC0809的连接必须注意处理好3个问题:
(1)在START端送一个100ns宽的启动正脉冲;
(2)获取EOC端上的状态信息,因为它是A/D转换的结束标志;
(3)给“三态输出锁存器”分配一个端口地址,也就是给OE端送一个地址译码器的输出信号。
4.4位一体7段LED数码管
本实验的显示模块主要由一个4位一体的7段LED数码管(SM410564)构成,用于显示测量到的电压值。
它是一个共阳极的数码管,每一位数码管的原理图如图1-13所示。
每一位数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收AT89C51的P1口产生的显示段码。
1,2,3,4引脚端为其位选端,用于接收AT89C51的P3口产生的位选码。
图1-4和图1-5分别为其实物图和引脚图。
图1-4一位数码管的原理图
图1-5SM410564数码管实物图
1.主程序设计
初始化中主要对AT89C51,ADC0809的管脚和数码管的位选及所用到的内存单元70H,78H,79H,7AH进行初始化设置。
准备工作做好后便启动ADC0809对IN2脚输入进的0~5V电压模拟信号进行数据采集并转换成相对应的0~255十进制数字量。
在数据处理子程序中,运用标度变换知识,编写算法将0~255十进制数字量转换成0.00~5.00V的数据,输出到显示子程序进行显示。
整个主程序就是在A/D转换,数据处理及显示程序循环执行。
整个程序流程框图如图1-6所示。
图1-6主程序流程图
2.各子程序设计
1)A/D转换子程序
启动ADC0809对模拟量输入信号进行转换,通过判断EOC(P3.2引脚)来确定转换是否完成,若EOC为0,则继续等待;若EOC为1,则把OE置位,将转换完成的数据存储到70H中。
程序流程图如图1-7所示。
图1-7A/D转换程序流程图
2)数据处理子程序
3)显示子程序
显示子程序采用动态扫描法实现三位数码管的数值显示。
测量所得的A/D转换数据放在70H内存单元中,测量数据在显示时需转换成10进制BCD码放在78H~7AH单元中。
寄存器R1用作显示数据地址指针。
程序流程图如图1-8所示。
图1-8显示子程序流程图
程序如下:
ORG0000H
LJMPSTART
ORG0030H
START:
CLRA
MOV70H,A
MOV78H,A
MOV79H,A
MOV7AH,A
MOV7BH,A
LOOP:
LCALLAD_SUB
LCALLTRN_SUB
LCALLDISP_SUB
LJMPLOOP
AD_SUB:
CLRP2.6
SETBP3.2
CLRP2.7
SETBP2.3
SETBP2.4
CLRP2.5
MOVR0,#70H
SETBP2.7
NOP
NOP
CLRP2.7
WAIT:
JBP3.2,DSAVE
SJMPWAIT
DSAVE:
MOVP0,#0FFH
SETBP2.6
MOVA,P0
MOV@R0,A
CLRP2.6
RET
TRN_SUB:
MOVA,@R0
MOVB,#51
DIVAB
MOV78H,A
MOVA,B
MOVB,#10
MULAB
MOVB,#51
DIVAB
MOV79H,A
MOVA,B
MOVB,#10
MULAB
MOVB,#51
DIVAB
MOV7AH,A
RET
DISP_SUB:
MOVR1,#78H
MOVA,@R1
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVP1,A
CLRP3.4
LCALLDELAY
SETBP3.4
INCR1
MOVA,@R1
MOVDPTR,#TAB2
MOVCA,@A+DPTR
MOVP1,A
CLRP3.5
LCALLDELAY
SETBP3.5
INCR1
MOVA,@R1
MOVDPTR,#TAB2
MOVCA,@A+DPTR
MOVP1,A
CLRP3.6
LCALLDELAY
SETBP3.6
MOVA,#0C1H
MOVP1,A
CLRP3.7
LCALLDELAY
SETBP3.7
RET
DELAY:
MOVR5,#3
S1:
MOVR6,250
DJNZR6,$
DJNZR5,S1
RET
TAB1:
DB40H,79H,24H,30H,19H,12H
TAB2:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H
END