数字电压表.docx
- 文档编号:17275978
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:31
- 大小:225.97KB
数字电压表.docx
《数字电压表.docx》由会员分享,可在线阅读,更多相关《数字电压表.docx(31页珍藏版)》请在冰点文库上搜索。
数字电压表
《电子技术》课程设计报告
题目函数信号发生器
学院(部)信息工程学院
专业电子信息工程专业
班级24030901
学生姓名
学号zaza
12月19日至12月30日共2周
指导教师(签字)
函数信号发生器
摘要
此函数信号发生器的设计,可以产生正弦波、三角波、方波,频率范围在1HZ~100KHZ,输出幅值为0~10V。
对于输出波的幅值的测量,数字电压表由于其易读、误差小,设计简便而逐步被广泛使用。
因此此处设计一个数字电压表进行测量,测量的电压幅值范围为0~10V。
本设计运用ADC0809转换芯片AT89S51单片机制作数字电压表,并将结果用数码芯片四位数码显示LED84S进行显示。
即对于输出模拟电压幅值利用A/D转换,转换为数字量,经过数据处理,用数码管将其进行显示。
设计的该电路误差小,电路抗干扰能力强,有较强实用性。
关键词AT89S51单片机A/D转换ADC0809数据采样数码显示
技术要求
1、信号频率范围1HZ~100KHZ;
2、输出波形应有:
方波、三角波、正弦波;
3、输出信号幅值范围0~10V;
4、具有数字显示输出信号频率和电压幅值功能。
一、系统综述
此系统的设计主要包括三个功能模块:
1)波形产生。
包括产生方波、三角波、正弦波。
且输出的波形可以通过改变电路元件参数来改变其输出频率与输出电压幅值。
使频率值在1HZ~1OOKHZ范围内变化,电压值在0~10V范围内变化。
其输出框图如下:
图1-1
2)电压测量。
对于输出的电压,需要对其电压幅值的大小进行测量。
由于此处需要数字电压表,而输出为模拟量,故最终对电压的数字测量的显示,需要将测量值进行A/D转换。
此处有两个方案论证:
(1)采用双积分式实现
双斜积分式DMV也称双斜式DMV(数字电压表)。
测量过程中用同一积分器先后进行两次积分。
首先对被测电压Ux的定时积分,然后对参考电压Ur的定值积分,通过两次积分过程的比较,将Ux变换成与之成正比的时间间隔。
对时间间隔进行计数,利用数码显示就可以实现对电压值的测量。
由于此电路一次只能测量一个端口电压,而系统有三个输出,若测量的话,就必须用三个此电路,无论从成本还是占用空间都不是理想的。
此外,该电路对电路参数要求严格,实际中比较难实现。
该电路实现图如下:
图1-2
(2)采用ADC0809数模转换,AT89S51单片机来实现
a)AT89S51:
内部有一个可编程的、全双工的串行接口。
它串行收发存储在特殊功能寄存器SFR的串行数据缓冲器SBUF中的数据。
at89s51单片机是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4Kbytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器,既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价at89s51单片机可提供许多高性价比的应用场合,可灵活应用于各种控制领域。
此处不对其做主要介绍,可参考单片机有关介绍。
此处给出其引脚图:
图1-3
主要功能特性:
兼容MCS-51指令系统·4k可反复擦写(>1000次)ISPFlashROM
32个双向I/O口·4.5-5.5V工作电压
2个16位可编程定时/计数器·时钟频率0-33MHz
全双工UART串行中断口线·128x8bit内部RAM
2个外部中断源·低功耗空闲和省电模式
中断唤醒省电模式·3级加密位
看门狗(WDT)电路·软件设置空闲和省电功能
灵活的ISP字节和分页编程·双数据寄存器指针
b)ADC0809:
字长为8位,时钟频率可有单片机编程设定,减少了外围电路。
转换精度高,符合要求。
ADC0809的参考电压为V=5v;
精度:
2∧(-8)=0.39%;
分辨力:
5/(2∧8-1)=0·0196v
可见其精度和误差均满足一般的需求。
特点:
5v电压供电
具有三态输出,可与单片机连接
允许0~5v模拟电压输入
图1-4
引脚介绍如下:
IN7~IN0——模拟量输入通道
ALE——地址锁存允许信号。
对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
START——转换启动信号。
START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。
本信号有时简写为ST.
A、B、C——地址线。
通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。
其地址状态与通道对应关系见表9-1。
CLK——时钟信号。
ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。
通常使用频率为500KHz的时钟信号
EOC——转换结束信号。
EOC=0,正在进行转换;EOC=1,转换结束。
使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
D7~D0——数据输出线。
为三态缓冲输出形式,可以和单片机的数据线直接相连。
D0为最低位,D7为最高,最大表示的数位255.
OE——输出允许信号。
用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
Vcc——+5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。
其典型值为+5V(Vref(+)=+5V,Vref(-)=-5V).
0809内部转换原理
0809是典型的A/D转换芯片,其内部采用了逐次比较方式进行转换,具有数据锁存的功能,有8位输出,最大值为256。
转换速率高,稳定性好,得到了很好的应用。
其内部结构如图:
图1-5
c)LED84S:
四位数码显示,最大可显示9999,采用共阴极接法,刷新速率满足要求。
引脚特性如下:
图1-6
a/b/c/d/e/f/g/dp:
控制每一位数码管哪个段亮;
s1/s2/s3/s4:
选择哪一个位的数码管工作
所以,转换后的数据经过处理,在LED上显示的实际值为
D/256*Vref
D:
ADC0809输出的数值;
Vref;参考电压值,一般为4.5-5.5v;
综上所述,方案2更加具有可实现性,具有设计简单,所用元件最少,抗干扰能力强。
综合考虑,选用方案2。
3)输出频率测试对于输出信号的频率,需要测量其大小并用显示器显示出来。
由于此处需要数字频率计,而输出信号为方波、三角波、正弦波,通过对过零的次数计数,再利用数码显示计数值,该值就是频率值。
图1-7
二、单元电路设计
(一)函数信号发生器
(1)总的原理框图
图2-1.1
(2)波形产生
方波发生电路
从一般原理来分析,555构成的施密特触发器输出方波幅值的大小由Vcc决定且输出Uo=2/3Vcc,输出频率的大小由输入交流信号Ui决定,所以要实现对幅值和频率的调控可在Vcc处接入一电位器,用以调节输出幅值的大小,在Ui端加一可调电容用以实现对频率的调控。
方波发生电路仿真电路模型如图
图2-1.2
三角波发生电路
在产生方波之后,利用此波形输入到一个积分电路便可输出一个三角波。
由于三角波信号是电容的充放电过程形成的指数形式,所以线性度较差,为了能得到线性度较好的三角波,可以将运放和几个电阻,电容构成积分电路。
三角波发生电路仿真电路模型如图
图2-1.3
正弦波发生电路
利用差分放大器传输曲线的非线性,将三角波信号转化成正弦波信号。
其传输特性曲线越对称,线性区越窄越好,三角波的幅值Upp应正好是晶体管接近饱和截止区。
正弦波发生电路仿真电路模型如图
图2-1.4
方波—三角波转换电路的工作原理
图2-1.4
工作原理如下:
若开关断开,运放与R4,RP2及R5组成反向积分器,其输入信号为方波Uo1,则积分器的输出电压Uo2
若开关闭合,即方波发生器与积分器首尾相连,形成闭环电路,则自动产生方波—三角波。
由此可见积分器在输入为方波时,输出是一个上升速度与下降速度相等的三角波。
由以上两式可以得到以下结论:
1.电位器RP2在调整方波—三角波的输出频率时,不会影响输出波形的幅度。
若要求输出频率的范围较宽,可用C2改变频率的范围,RP2实现频率微调。
2.方波的输出幅度应等于电源电压+Vcc。
三角波的输出幅度应不超过电源电压+Vcc。
电位器RP1可以实现幅度微调,但会影响方波—三角波的频率。
三角波—正弦波装换电路工作原理
图2-1.5
为使输出波形更接近正弦波,由图可知:
(1)传输特性曲线越对称,线性区越窄越好;
(2)三角波的幅度Um应正好使晶体管接近饱和区或截止区
(3).总电路图
图2-1.6
(二).输出电压幅值测量
输出电压幅值的测量的总体框图如下:
图2-2.1
1、输入电路:
输入电路主要对输入电压的幅值进行修正,包括电压的比例缩小、对电压的采样。
1)、由于输出电压幅值范围为0~10V,而0809允许输入的模拟量为0~5V,显然超出了其范围,故需要对其进行电压比例缩小为原来的一般即可,此处使用同相比例放大电路来实现。
图2-2.2
Uo1=(R1/R2+1)Ui
Ui为输入电压幅值,Uo为输出电压幅值,若R1=R2,则可以实现同相比例缩小原来的1/2。
2)、采样-保持。
输出为模拟量,进行数模转换前需要对数据采样。
利用两个电跟随器和一个电容、开关控制电路构成简易的采样电路。
利用开关闭合对电容的充电,开关断开,后级电压跟随的特性,对输入的值进行保存,之后就可以对该值进行A/D转换了。
输入频率为1~100KHZ,若选1KHZ,则可以尽量的满足各信号的要求。
已知,0809的分辨力为0.02V,即可以识别0.02v的电压值。
则应以此值为间隔对输入的1/4T采样
5/0.0196≌256
1/4T=0.25ms,1/(0.25/256)=1MHZ
即开关的闭合频率为1MHZ
又在开关闭合的时间内最大的对电容充电值为5V,故有Uo=5/(RC)tt为闭合时间此时Uo=5v
由上面算出的开关闭合频率,得出RC=0.5s,R、C的值有多种组合,选择R=50Ω,C=0.01uf.这样在任何时间接入,都可以测量输入电压幅值。
图2-2.3
注意,此处的开关控制电路由与逻辑门以1MHZ脉冲信号与第一级电压跟随器输出信号作为输入信号来实现。
综上,完整的采样-保持电路如图:
图2-2.4
2、A/D转换及显示
经过采样后,就可以对于一定时间区间内的电压恒值A/D转换。
此模块的核心是采用0809与89S51两个芯片完成数模转换。
简化过程是输入电压值由0809经过数字化,即数模转换,输出进入89S51中,其内部经过处理,包括译码、定时等操作,输出接到LED84S,进行显示。
具体框图如下:
图2-2.5
1)输入端口选择由于0809有可以有8个模拟输入口,所以可用其中三个对输出的三个波形的幅值测量,通过三个开关编码,对三个输入口进行选择。
图2-2.6
2)单片机外部复位一个数字显示的仪器必然会有复位功能,以便清除现有的值更好的显示当前值。
复位电路一般是指将仪器的显示值或存储的值全部复位归0,主要有手动复位、程控复位。
此处采用手动外部复位。
主要原理是将仪器的电平输入端接地。
图2-2.7
3)芯片启动地址锁存允许信号ALE由P2.0控制,则8路模拟通道的地址为0FEF8H~0FEFFH.此外,通道地址选择以
作写选通信号,这一部分电路连接如图所示:
图2-2.8
图2-2.9信号的时间配合
从图中可以看到,把ALE信号与START信号接在一起了,这样连接使得在信号的前沿写入(锁存)通道地址,紧接着在其后沿就启动转换。
图2-8是有关信号的时间配合示意图。
启动A/D转换只需要一条MOVX指令。
在此之前,要将P2.0清零并将最低三位与所选择的通道好像对应的口地址送入数据指针DPTR中。
4)幅值还原前面已经讲过,0809只能允许0~5V的电压输入,对输入已经采用同相比例放大缩小为原来一半。
所以这里需要对数字量的输出还原,即放大一倍,也就是对0809的输出进行乘2运算。
我们知道,数字逻辑量乘2就是将数字量左移一位。
所以这里需要两片74LS194移位寄存器来进行该操作。
其时钟脉冲的频率应为采样的2倍,这样才能保证在锁存模拟值期间可以对寄存器进行置数、移位两步的操作。
即此处的时钟频率应为2MHZ。
74LS194的控制端S1.S0控制是置数还是移位,S1.S0=11置数,S1.S0=10左移。
所以还需要对S1.S0的值进行控制,即在锁存的一个周期里,寄存器操作的两个周期中,第一个周期置数,S1.S0=11,第二个周期S1.S0=10左移。
发现仅是S0在每来一个脉冲翻转一次,故可以考虑给S0端接一个T触发器,该T触发器由D触发器(74LS74)转换而成,D=T⊕Q,即可构成。
注意,此处也需要对D触发器和194复位,否则将导致结果无法正确显示。
所以,此处也需要复位电路,仍采用外部手动复位。
该移位寄存器的数据输入端接的是0809的8位输出端,而移位寄存器的输出端则接的是89S51单片机。
电路如图:
图2-2.10
5)A/D转换实现
LED84S、ADC0809与AT89S51的连接连接如下:
a)把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
c)把“单片机系统”区域中的P3.1与“模数转换模块”区域中的OE端子用导线相连接。
d)把“单片机系统”区域中的P3.2与“模数转换模块”区域中的EOC端子用导线相连接。
e)把“单片机系统”区域中的P3.3与“模数转换模块”区域中的CLK端子用导线相连接。
f)把“模数转换模块”区域中的A2A1A0端子用导线连接到“电源模块”区域中的GND端子上。
g)把“模数转换模块”区域中的IN0、INR1、INR2端子用导线连接到三个波形输出端的采样电路输出端。
h)把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到8位“移位寄存器”的Q0Q1Q2Q3Q4Q5Q6Q7Q端子上。
i)将“数模转换模块”区域的D0D1D2D3D4D5D6D7的8个端子连接到8位“移位寄存器”的A1B1C1D1A2B2C3D2端子上。
连接图如下:
图2-2.11
注意,由于ADC0809在进行A/D转换时需要有CLK信号,而此时的ADC0809的CLK是接在AT89S51单片机的P3.3端口上,也就是要求从P3.3输出CLK信号供ADC0809使用。
因此产生CLK信号的方法就得用软件来产生了。
这里给出对于AT89S51的C语言编程实例:
#include
unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsignedchardispbuf[8]={10,10,10,10,0,0,0,0};
unsignedchardispcount;
unsignedchargetdata;
unsignedinttemp;
unsignedchari;
sbitST=P3^0;
sbitOE=P3^1;
sbitEOC=P3^2;
sbitCLK=P3^3;
voidmain(void)
{
ST=0;
OE=0;
ET0=1;
ET1=1;
EA=1;
TMOD=0x12;
TH0=216;
TL0=216;
TH1=(65536-4000)/256;
TL1=(65536-4000)%6;
TR1=1;
TR0=1;
ST=1;
ST=0;
while
(1)
{
if(EOC==1)
{
OE=1;
getdata=P0;
OE=0;
temp=getdata*235;
temp=temp/128;
i=5;
dispbuf[0]=10;
dispbuf[1]=10;
dispbuf[2]=10;
dispbuf[3]=10;
dispbuf[4]=10;
dispbuf[5]=0;
dispbuf[6]=0;
dispbuf[7]=0;
while(temp/10)
{
dispbuf[i]=temp;
temp=temp/10;
i++;
}
dispbuf[i]=temp;
ST=1;
ST=0;
}
}
}
voidt0(void)interrupt1using0
{
CLK=~CLK;
}
voidt1(void)interrupt3using0
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%6;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==7)
{
P1=P1|0x80;
}
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}
改变其中clk的初值就可以设置满足要求的时钟频率,如此处要求的频率为2MHZ。
以满足对于转换速度和数据处理速率的要求。
此外,还应注意,ADC0809转换结果在输出显示之前先要进行数据处理,其原理如下:
转换输出结果在0—255之间分别对应着0~+5V之间的256个电压值,因此单片机必须把A/D转换输出的结果转换成可以显示的电压值,具体方法是:
VIN=DOUT*5/255,其中DOUT是ADC0809输出的八位二进制数。
由上述公式可知:
当ADC0809输出为(11111111)B时,输入电压的值为VIN=5.00V;
当ADC0809输出为(00000000)B时,输入电压的值为VIN=0.00V;当ADC0809输出为(10000000)B,输入电压值为VIN=2.50V,但是单片机进行数学运算时结果只去整数部分,因此输出为(10000000)B时计算出来的电压值为VIN=2V。
由此可以看出这样运算输出的结果很不准确,在0~+5V之间只有0,1,2,3,4,5六个电压值,所以必须把单片机运算结果中的小书部分保留下来。
具体方法是:
如果保留小数点后两位,在运算时分子乘以100,保留三位就乘以1000。
小数点后保留两位的公式如下:
VIN=DOUT*5*100/255=DOUT*100/51,有公式可知,单片机的运算结果为250。
然后单片机将250除以10得到商为25,余数为0,再将25除以10得到商为2余数为5。
这样就可以得到电压值的三个数字,最后分别将2,5,0三个数送出显示。
这里,事实上正是AT89S51单片机完成了该功能。
6)LED84S显示LED84S数码显示块,有共阴极和共阳极两种,这里采用了共阴极的办法,即高电平有效,驱动数码段二极管发光。
由0809输出的数码,经过单片机处理,(已由程序设计指定),可以准确的显示,包括,数码显示器上的位、段。
其显示没有小数点,最大只有三位显示,最高位为单位1,如显示752,即为7.52V。
连接图上面已经给出,在此不再赘述。
(三)、频率测量
输出电压频率的测量的总体框图如下:
图2-3.1
1)、时间基准产生电路
这部分的作用就是提供准确的计数时间T。
它由高稳定度的石英晶体振荡器、分频器和控制器组成。
晶体振荡器输出的正弦信号,通过分频器16次分频,形成周期为2s的信号。
图2-3.2
分频电路使用的是4片74LS161芯片级联而成,将石英晶体震荡频率经过65536次分频,形成周期为2s的矩形波,其宽度为1s。
如图所示
图2-3.4
输入端为石英晶体震荡器的输出,它作为CP脉冲接各芯片CLK。
各芯片使能端接前芯片的进位输出端。
其中第一片的使能端接入高电平。
清零端和置数端接入高电平。
控制器用555
用555组成多谐振荡器,通过是否给电子开关供电,来控制信号通过的时间。
图2-3.5
输入处有一按键控制开关,开关闭合后,输入电压通过电阻R3给电容C3充电,开关断开后,电容C3通过电阻R2,R3放点,总时间T=0.7(R2+2R3)C3=1s,正好用与门控制输入信号通过与门的时间。
1s之内,输入信号通过与门输入计数器,计数器所得的数值即为输入信号的频率
2)计数脉冲形成电路
这部分电路的作用是将被测的周期信号转换为可计数的窄脉冲。
图2-3.6
3)计数显示电路
这部分电路的作用,简单的说,就是计数被测周期信号的重复次数,显示被测信号的频率。
计数电路使用5片74LS160芯片级联而成,74LS160为8421十进制计数器,经过显示器译码,可直接转换成十进制数。
图2-3.7
由于频率范围在1Hz-100KHz之间,此处使用6片74LS160计数器芯片作为计数器,
74LS160为二-十进制计数器,可直接接在显示数码管上,经过数码管译码显示。
从第一
片至第六片依次为个位十位百位千位万位十万位频率的值的8421BCD码,接在各数码管上
后,可自动译码显示.
输入端为经过与门控制产生的输出,它被接在各74LS160芯片的CLK端作为CP脉冲。
三、系统综述
对整个电路进行分析之后,可以看出电路的总体由三部分构成。
第一部分产生频率为1HZ~100KHZ、电压幅值为0~10V方波、三角波、正弦波;第二部分即为测量部分,其中又可以分为两块,即对频率测量和对电压测量。
图3-1
四、结束语
1)此系统的设计有极强的实用性,整个系统实现有模拟电路、数字电路以及集成芯片,可以说充分显示了现代电子知识的理念,达到了综合引用的能力的目的。
2)课本上的知识没有应运是没有意义的,所以“纸上得来终觉浅,绝知此事要躬行”,通过实际的操作翻阅资料才发现原来很所知识都没有吃透,很多问题没有注意到位,通过课程设计,实际的应运,加深了对他们的理解,如芯片的使用与选择、电路故障的分析、实现控制的常用方法等等,都得到了了解并深化。
坚信,通过自己现在的努力,不断丰富知识,继续探索,突破自我,加强练习。
相信孰能生巧,必然逐渐会对有一定功能的电路的设计得心应手。
五、参考文献
1、数字电路与系统刘宝琴著清华大学出版社
2、现代电子技术基础臧春华郑步生刘方崔小平著北京航空航天出版社
3、电子测量技术李希文赵健著西安电子科技大学出版社
4、电子测量技术基础张永瑞刘振起杨林耀顾玉昆著西安电子科技大学出版社
5、电子测量技术李崇维朱英华著西安交通大学出版社
6、单片机原理及应运紫钰著西安科技大学出版社
7、数字电子技术林薇林涛著清华大学出版社
六、鸣谢
长安大学电子与控制学院
指导老
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 电压表