课程设计数字电压表.docx
- 文档编号:12695864
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:15
- 大小:109.53KB
课程设计数字电压表.docx
《课程设计数字电压表.docx》由会员分享,可在线阅读,更多相关《课程设计数字电压表.docx(15页珍藏版)》请在冰豆网上搜索。
课程设计数字电压表
单片机课程设计报告
数字电压表
院系:
专业:
姓名:
学号:
指导老师:
概述
在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用[1]。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础[2]。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型[4]。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC化),另一方面,精度也从0.01%-0.005%。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面[3]。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:
转换模块、数据处理模块及显示模块。
其中,A/D转换采用ADC0809对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号[11]。
一、设计目的
§1.1设计目的
利用单片机及ADC0809核心元件制作3位数字电压表,更好地学习掌握ADC0809的工作原理及A/D的转换编程方法。
二、总体设计任务和要求
§2.1系统设计
主要分为两部分:
硬件电路及软件程序。
硬件电路包括:
单片机及外围电路,模拟信号采集电路,A/D转换电路,数码管显示电路,各部分电路的衔接。
软件的程序可采用C语言或汇编,这里采用汇编语言,详细的设计思路在后面介绍。
§2.2设计方案
数字电压表的设计方案很多,但采用集成电路来设计较流行。
其设计主要是由模拟电路和数字电路两大部分组成,模拟部分包括A/D转换器,基准电源等;数字部分包括振荡器,数码显示,计数器等。
其中,A/D转换器将输入的模拟量转换成数字量,它是数字电压表的一个核心部件,对它的选择一般有两种选择方案:
1.采用双积分A/D转换器MC14433,它有多路调制的BCD码输出端和超量程输出端,采用动态扫描显示,便于实现自动控制。
但芯片只能完成A/D转换功能,要实现显示功能还需配合其它驱动芯片等,使得整部分硬件电路板布线复杂,加重了电路设计和实际焊接的工作。
2.逐次逼近式A/D转换器。
它的转换速度更快,而且精度更高,比如ADC0808、ADC0809等,它们通常具有8路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送单片机进行分析和显示。
这样电路设计简单,电路板布线不复杂,便于焊接、调试。
这里采用这种方案。
显示部分可以采用各类数码管或用LCD显示器显示。
在此简化采用4位八段共阴极数码管对A/D转换变换后的结果加以显示。
§2.3功能要求
利用ADC0809设计实现数字电压表的测量值为0~5V,用电位器模拟ADC0809的输入电压,用3位数码管显示,实时模拟数字电压表。
3、设计原理
根据设计要求,选择AT89C51单片机作为核心控制器件。
A/D转换采用ADC0809实现。
与单片机的接口为P1和P2端口的高四位引脚。
电压显示采用4位一体的LED数码管,LED数码管的段码输入,由并行端口P0产生;位码输入,由并行端口P2低四位产生。
设计原理图如图二所示。
四、硬件资源及其分配,硬件图
§4.1核心元器件介绍
§4.1.1芯片介绍
1.单片机AT89C51介绍
a.芯片引脚图:
b.描述:
AT89C51是一个低电压,高性能CMOS8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。
和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。
片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。
C.主要特性:
·与MCS-51兼容
·4K字节可编程闪烁存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
d.引脚描述
VCC:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。
作为输出口时,每一个管脚都能够驱动8个TTL电路。
当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。
P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。
P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。
P1口:
P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。
对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。
因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。
闪烁编程时和程序校验时,P1口接收低8位地址。
P2口:
P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。
对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。
因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。
闪烁编程或校验时,P2口接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。
对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。
P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表所示:
端口引脚
第二功能
P3.0
RXD
P3.1
TXD
P3.2
INT0
P3.3
INT1
P3.4
T0
P3.5
T1
P3.6
WR
P3.7
RD
P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。
RST:
复位输入。
当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。
ALE/
:
当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。
如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。
这个位置后只有一条MOVX和MOVC指令ALE才会被应用。
此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器时,这两次有效的PSEN信号不出现。
EA/VPP:
外部访问允许。
欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。
需要注意的是:
如果加密位LBI被编程,复位时内部会锁存EA端状态。
如EA端为高电平,CPU则执行内部程序存储器中的指令。
闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。
XTAL1:
震荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
震荡器反相放大器的输出端。
时钟震荡器:
AT89C51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。
外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。
对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
电路内部振荡外部振荡电路
2.ADC0809芯片
a.引脚图:
b.主要特性
1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz)
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
C.外部特性(引脚功能)
IN0~IN7:
8路模拟量输入端。
DB0-DB7:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
接地。
§4.1.2其它部分简介
1.四位八段共阴极数码管
这种数码管可显示4位值,每位由8个发光二极管(以下简称字段)即a、b、c、d、e、f、g、dp字段构成,通过控制不同的LED的亮灭的不同组合可用来显示数字09及小数点“”。
数码管又分为共阴极和共阳极两种结构。
结构和接法分别如下图
2.模拟电压输入部分
这里设计将实际的模拟信号采集电路简化成一个分压电路模型如右图
五、程序流程图及程序清单
§5.1流程图
§5.2程序清单
/-----头文件引用------
#include
#include
#include
//-----宏声明-----
#defineA_DPORTXBYTE[0xF230]//0809通道0地址
#defineD8255XBYTE[0xF22B]//8255状态/数据口地址
#defineD8255AXBYTE[0xF228]//8255PA口地址
#defineD8255BXBYTE[0xF229]//8255PB口地址
#defineD8255CXBYTE[0xF22A]//8255PC口地址
#defineucharunsignedchar
#defineuintunsignedint
//-----变量定义-----
bitbdatabz=0;//定义标志
ucharval,x4,x5,x6;
ucharcodeledseg1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};
ucharcodeledseg2[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,};
unsignedinty1,x0,x1,x2;
//-----延时子程序-----
voiddelay(intn)
{
unsignedintk,j;
for(k=0;k { for(j=0;j<200;j++); } } //-----初始化----- voidfirst() { IT0=1; EX0=1; EA=1;//INT0允许 delay(100);//延时 D8255=0x80;//置8255状态;PC口输出,PA输出,PB口输出 } //-----中断----- voidint_0()interrupt0 { val=A_DPORT;//读A_D数据 bz=1;//置读数标志 } //-----计算----- voidcount() { floaty2; unsignedinta,b; y1=P1; y2=y1/255.00*5*100; b=y2; x2=b/100; x4=ledseg2[x2]; a=b%100; x1=a/10; x5=ledseg1[x1]; x0=a%10; x6=ledseg1[x0]; } //-----显示----- voiddisp0() { D8255=0x80;//置8255状态;PC口输出,PA\PB口输出 D8255B=x6; D8255A=0x7f; } voiddisp1() { D8255=0x80;//置8255状态;PC口输出,PA\PB口输出 D8255B=x5; D8255A=0xbf; } voiddisp2() { D8255=0x80;//置8255状态;PC口输出,PA\PB口输出 D8255B=x4; D8255A=0xdf; } //-----主程序----- voidmain() { first();//初始化 while (1) { A_DPORT=0;//启动A_D while(bz==0);//A_D转换结束 val=A_DPORT; P1=val; count(); disp0();//显示 delay (1);//延时消抖 disp1(); delay (1); disp2(); delay (1); bz=0;//清读数标志 } } 六、设计总结与致谢 通过这次设计,我学到了许多课外的东西,加深了对单片机等知识的了解,提高了应用思考和设计能力。 在分析设计课题,查阅资料,了解设计原理并进行仿真的过程中尽管遇到了些许问题,但在老师的指导下,最终独立地完成了任务,不仅锻炼了分析解决问题的能力,更重要的是加强了我对电子应用学习的兴趣。 在设计的过程中老师给予一定的启发和指导,并叮嘱我们独立认真完成本次课程设计,在此表示衷心的感谢。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 数字 电压表