数字电压表设计

  • 格式:doc
  • 大小:79.50 KB
  • 文档页数:4

一、设计题目:数字电压表设计。

1、设计目的
(1)掌握交、直流电压测量方法;
(2)掌握单片机A/D通道接口设计及软件编程方法;
(3)掌握单片机应用系统的设计开发步骤。

2、设计内容
(1)设计测量直流电压信号用的信号调理电路,要求对不同范围
的输入信号分别设计,如:0-10mV、0-10V等,画出电路图;
(2)设计一用于测量交流电压的交-直流转换电路,画出电路图;
(3)在实验板上连接实现一直流电压测量电路;
(4)编程实现上述算法,并在LED上显示出相应的电压值。

3、实验设备及器件
单片机开发系统一套、实验装置一台、电压信号发生器一台、直流稳压电源一台、LM324一片、电位器一支及电阻、电容。

二、设计流程图:
三、硬件芯片介绍:
1、ADC0809原理和应用:
ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

IN0-IN7:8条模拟量输入通道
ADC0809对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

ALE为地址锁存允许输入线,高电平有效。

当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。

数字量输出及控制线:11条
ST为转换启动信号。

当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。

EOC为转换结束信号。

当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。

OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。

OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。

D7-D0为数字量输出线。

CLK为时钟输入信号线。

因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,本次实验中用51单片机内部时钟产生500KHZ
五、程序源代码:
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define com8155 XBYTE[0xff20]
#define pa8155 XBYTE[0xff21]
#define pb8155 XBYTE[0xff22]
#define ad0809 XBYTE[0x8000]
//*********************************************
//MON51必须用到的
code unsigned char stop[3] _at_ 0x3b;
//*********************************************
void delay(unsigned int i)
{
unsigned int j,k;
for(k=0;k<i;k++)
for(j=0;j<100;j++);
}
void main(void)
{ uchar idata disbuf[3]={0,8,0};
uchar code table1[6]={ 0x40,0x79,0x24,0x30,0x19,0x12 };
uchar code table[20]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
com8155=0x43;
while(1)
{uchar x,y=0x20,m,t=0x0f;
unsigned int n;
y=~y;
ad0809=0x00;
delay(1);
m=ad0809;
(int)n=m*1.96;
disbuf[2]=n%10; //得出每位数存入数组
disbuf[1]=n/10%10;
disbuf[0]=n/100%10;
for(x=0;x<1;x++) //led display
{pb8155=table1[disbuf[x]];
pa8155=y;
delay(2);
y=_cror_(y,1);}
for(x=1;x<4;x++) //led display
{pb8155=table[disbuf[x]];
pa8155=y;
delay(2);
y=_cror_(y,1);
}
}
}。