直流数字电压表设计Word下载.docx
- 文档编号:17099980
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:13
- 大小:182.56KB
直流数字电压表设计Word下载.docx
《直流数字电压表设计Word下载.docx》由会员分享,可在线阅读,更多相关《直流数字电压表设计Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
5.8总设计图……………………………………………………………………………10页
5.9仿真图………………………………………………………………………………10页
六、设计程序……………………………………………………………………………11页
七、心得体会……………………………………………………………………………14页
直流数字电压表电路设计报告
一、题目及设计要求
利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电压值,精度越高越好。
二、主要技术
用ADC0808集成电压转换芯片和AT89C51单片机设计制作的数字直流电压表。
在测量仪器中,电压表是必须的,而且电压表的好坏直接影响到测量精度。
具有一个精度高、转换速度快、性能稳定的电压表才能符合测量的要求。
为此,我们设计了数字电压表,此作品主要由A/D0808转换器和单片机AT89C51构成,A/D转换器在单片机的控制下完成对模拟信号的采集和转换功能,最后由数码管显示采集的电压值。
此设计通过调试完全满足设计的指标要求。
电路设计简单,设计制作方便有较强的实用性。
三、方案选择
主要设计方框图如下:
数码管显示
单片机处理
模数转换
电压采集
1、主控芯片
选用单片机AT89C51和A/D转换芯片ADC0809实现电压的转换和控制,用四位数码管显示出最后的转换电压结果。
缺点是价格稍贵;
优点是转换京都高,且转换的过程和控制、显示部分可以控制。
2、显示部分
选用一个四联的共阴极数码管,外加四个三极管驱动。
这个电路几乎没有缺点;
优点是便于控制,价格低廉,焊接简单。
四、电路设计原理
模拟电压经过档位切换到不同的分压电路筛减后,经隔离干扰送到A/D转换器进行A/D转换。
然后送到单片机中进行数据处理。
处理后的数据送到LED中显示。
同时通过串行通讯与上位通信。
硬件电路及软件程序。
而硬件电路又大体可分为A/D转换电路、LED显示电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;
程序的设计使用汇编语言编程,利用Keil和PROTEUS软件对其编译和仿真。
一般I/O接口芯片的驱动能力是很有限的,在LED显示器接口电路中,输出口所能提供的驱动电流一般是不够的尤其是设计中需要用到多位LED,此时就需要增加LED驱动电路。
驱动电路有多种,常用的是TTL或MOS集成电路驱动器,在本设计中采用了74LS244驱动电路。
本实验采用AT89C51单片机芯片配合ADC0808模/数转换芯片构成一个简易的数字电压表,原理电路如图1所示。
该电路通过ADC0808芯片采样输入口IN0输入的0~5V的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89C51芯片的P0口。
AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过其P1口传送给数码管。
同时它还通过其三位I/O口P1.0、P1.1、P1.2、P1.3产生位选信号,控制数码管的亮灭。
另外,AT89C51还控制着ADC0808的工作。
其ALE管脚为ADC0808提供了1MHz工作的时钟脉冲;
P2.4控制ADC0808的地址锁存端(ALE);
P2.1控制ADC0808的启动端(START);
P2.3控制ADC0808的输出允许端(OE);
P2.0控制ADC0808的转换结束信号(EOC)。
4.1、模数转换
电路原理图如下所示,三个地址位ADDA,ADDB,ADDC均接高电平+5V电压,因而所需测量的外部电压可由ADC0808的IN7端口输入。
由于ADC0808
在进行A/D转换时需要有CLK信,本设计中利用AT89C51的定时中断产生一个100KHZ的脉冲,由P1.4口送给ADC0808的时钟端,通过软件给其输入一个正脉冲,可立即启动A/D转换。
在软件设计中,由于我们对单片机知识还没能很熟练的掌握,用中断方式较复杂,且这个程序CPU工作量不大,查询方式对速度不会产生影响,所以我们采用查询方式,确保仿真的进度和准确度。
系统原理图
在A/D转换开始之前,逐次逼近寄存器的SAR的内容为0,在A/D转换过程中,SAR存放“试探”数字量,在转换完毕后,它的内容即为A/D转换的结果数字量。
逻辑控制与定时电路在START正脉冲启动后工作,没来一个CLK脉冲,该电路就可能告知向SAR中传送一次试探值,对应输出U0与U1比较,确定一次逼近值,经过8次逼近,即可获得最后转换的结果数字量。
此处,EOC端口的信号显示ADC0808的状态,开始A/D转换时,EOC为低电平,转换结束后,输出高电平。
4.2、数据处理及控制
A/D转换完毕后,单片机的P1.6口接收到一高电平,立马通过P2将OE置1,ADC0808的三态输出锁存器被打开,转换完的数字信号经过与D0~D7相连的P0口进入AT89C51。
AT89C51根据公式1-1将数字信号转换为模拟量,然后利用程序获取模拟量的每一位,分别通过P2口输出到LED上。
与此同时,AT89C51会通过P2.0~P2.3口选择用哪一段LED显示所传出的数据。
例如,当P2.0~P2.3=1110,则LED接收到的数据会在第四段LED上显示。
五、电路图的介绍
5.1、AT89C51介绍
AT89C51是51系列单片机的一个型号,它是ATMEL公司生产的。
AT89C51是一个低电压、高性能CMOS8为单片机。
将通用的微处理器和Flash存储器结合在一起,可反复擦写的Flash存储器可有效地降低开发成本。
AT89C51有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
主要功能特性:
1、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。
2、兼容MCS51指令系统,8K可反复擦写(>
1000次)FlashROM。
3、3个16位可编程定时/计数器中断,时钟频率0-24MHz。
4、32个双向I/O口,256B内部RAM。
5、2个串行中断,可编程UART串行通道。
6、2个外部中断源,共6个中断源。
7、2个读写中断口线,3级加密位。
5.2、排阻介绍
排阻一般应用在数字电路上,比如:
作为某个并行口的上拉或者下拉电阻用。
使用排阻比用若干只固定电阻更方便.
排阻的特点:
排阻具有方向性,与色环电阻相比具有整齐、少占空间的优点。
5.3、晶振电路
接12MHz晶振,根据芯片手册,适合并联30pf微调电容,从而构成并联谐振,帮助和稳定输出波形。
5.4、复位电路
AT89C51单片机要求至少两个高电平,以便单片机做好准备工作。
当上电时
,由于电容的电压不能突变,会输出高电平,当电容充电到一定程度,就会输出低电平,单片机利用输出高电平的这段时间复位。
电阻和电容的值选择要合适。
在这要求R1<
<
R2,所以选取R1=1
,R2=10
。
5.5、ADC0808模数转换芯片简介
ADC0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
ADC0808是ADC0809的简化版本,功能基本相同。
一般在硬件仿真时采用ADC0808进行A/D转换,实际使用时采用ADC0809进行A/D转换。
引脚功能(外部特性)
ADC0808芯片有28条引脚,采用双列直插式封装,如右图所示。
各引脚功能如下:
1~5和26~28(IN0~IN7):
8路模拟量输入端。
8、14、15和17~21:
8位数字量输出端。
22(ALE):
地址锁存允许信号,输入,高电平有效。
6(START):
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端
11(Vcc):
主电源输入端。
13(GND):
地。
23~25(ADDA、ADDB、ADDC):
3位地址输入线,用于选通8路模拟输入中的一路。
5.6、四位共阴极数码管简介
数码管是一种半导体发光器件,其基本单元是发光二极管v数码管是一种半导体发光器件,其基本单元是发光二极管数码管是一种半导体发光器件,其基本单元是发光二极管.
5.7、模拟输入电路
通过可变电阻一端接电源+5v,一端接地GND,通过改变电阻的阻值,从而改变所测电压值,实现电压的模拟信号输入。
5.8总设计图:
设计原理:
将模拟量通过IN0输入,经过ADC0808芯片转换,得到数字量输出到单片机P0口,经过单片机处理后,送到四位共阴极数码管上显示。
5.9仿真图:
六、设计程序:
#include<
absacc.h>
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitSTART=P3^0;
sbitOE=P3^1;
sbitEOC=P3^2;
sbitP07=P0^7;
sbitCLK=P3^4;
uchardataled[4];
uintdatatvdata;
ucharcodetv[]={0xfe,0xfd,0xfb,0xf7};
ucharcodea[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voiddelay(void)//延时程序
{
uinti;
for(i=0;
i<
10;
i++);
}
voidledxianshi(void)//显示模块
uchark,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();
}
voidmain(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;
ledxianshi();
voidt0(void)interrupt1using0
CLK=~CLK;
七、心得体会
本次课程设计让我温习了单片机的基本原理、功能以及构造,以及ADC0808/ADC0809的基本工作原理,学会了使用KeilCx51和Protuse这两个软件的基本使用方法,利用C语言在KeilCx51下进行编程实现所需要的功能,同时在Protuse软件上画电路图并进行仿真,通过硬件的制作提高了动手能力和分析问题的能力。
软件部分的编程,主要是通过看芯片的基本资料进行编写的,所以我意识到了当你需要某个东西时,一定要去了解它,弄清楚其工作原理、实现方案以及需要注意的地方,特别是像一些芯片工作的时序图,这是编程之前必须去了解的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流 数字 电压表 设计