ADC0809电压检测
- 格式:doc
- 大小:414.50 KB
- 文档页数:21
AD0809实现的数字电压表利用单片机AT89S51与ADC0809设计一个数字电压表,能够测量0-5V 之间的直流电压值,四位数码显示,但要求使用的元器件数目最少。
1、AD0809 的逻辑结构ADC0809 是 8 位逐次逼近型 A/D 转换器。
它由一个 8 路模拟开关、一个地址锁存译码器、一个 A/D 转换器和一个三态输出锁存器组成(见图 1)。
多路开关可选通 8 个模拟通道,允许 8 路模拟量分时输入,共用 A/D 转换器进行转换。
三态输出锁器用于锁存 A/D 转换完的数字量,当 OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。
2、AD0809 的工作原理IN0-IN7:8 条模拟量输入通道。
ADC0809 对输入模拟量要求:信号单极性,电压范围是 0-5V ,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,IN7IN0ADDA ADDB ADDC ALEVREF+ VREF- OEADC0809功能方框图则需在输入前增加采样保持电路。
地址输入和控制线:4 条ALE 为地址锁存允许输入线,高电平有效。
当ALE线为高电平时,地址锁存与译码器将A,B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。
A,B 和C 为地址输入线,用于选通IN0-IN7上的一路模拟量输入。
通道选择ST:为转换启动信号。
当ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST 应保持低电平。
EOC:为转换结束信号。
当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。
OE:为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。
OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。
D7-D0:数字量输出线。
CLK 为时钟输入信号线。
因ADC0809 的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,V REF(+),V REF(-)为参考电压输入。
实验十三并行A/D(电压测量)实验一、实验目的:1、了解ADC0809的转换性能及编程方法;2、掌握ADC0809与8051单片机的接口方法;二、实验内容:1、为了方便观察,将实验例程中ADC0809采集到的数字量以十进制格式显示在右边三位数码管上;原理图:流程图:开始外中断0入口数码管扫描子程序开外中断0 (DPTR)->A R3->A、TAB->DPTR(A+DPTR)->A 0809通道0->DPTR 个十百->R1/R2/R3 PA->DPTR,A->(DPTR)01H->P1,延时启动A/D转换数码管扫描R2->A、TAB->DPTR 原地跳转启动A/D转换(A+DPTR)->APA->DPTR,A->(DPTR)中断返回02H->P1,延时R2->A、TAB->DPTR(A+DPTR)->APA->DPTR,A->(DPTR)02H->P1,延时返回汇编源程序:}2、将实验仪上DAC0832的输出”OUT”接线柱接到ADC0809的通道3(IN3),程序运行时自动调整写入DAC0832的数字量,使得ADC0809测量到的值为100+5。
原理图:流程图:开始外中断0入口8255初始化0832开中断0 0809->DPTR0809通道3地址->DPTR (DPTR)->AA->R0启动A/D转换个百十->R1/R2/R3数码管扫描原地跳转启动A/D转换0832 R0->A0832->DPTR A=5B? 是R0->A 否A->(DPTR) A>5B? 是延时否R0+1->R0返回R0-1->R0返回汇编源程序:3、将试验仪上电位器输出“0-5V”接ADC0809的通道0(IN0),DAC0832的输出“OUT”接ADC0809的通道3(IN3),先调整电位器输出2.5V的电压,程序运行时根据通道0读入的数值对DAC0832的输出进行校准,自动调整写入DAC0832的数字量,使DAC0832输出地电压随电位器输出电压变化。
基于ADC0809的数字电压表课程设计1. 概述数字电压表是一种用于测量电路中电压的仪器,它将电压值转换为数字信号以便显示和记录。
本课程设计将以ADC0809集成电路为基础,设计一种数字电压表,并通过实验验证其功能和性能。
2. ADC0809介绍ADC0809是一种8位的模数转换器,能够将模拟输入信号转换为对应的8位二进制数字输出。
它具有较高的精度和稳定性,被广泛应用于模拟-数字转换电路中。
3. 课程设计目标本课程设计旨在帮助学生了解数字电压表的工作原理和设计过程,培养学生的电路设计和实验能力。
具体目标包括:- 了解ADC0809的基本特性和工作原理- 设计数字电压表电路- 调试和验证数字电压表电路- 进行实际测量和性能评估4. 课程设计内容4.1 ADC0809特性分析学生将学习ADC0809的特性和工作原理,包括输入范围、精度、时序要求等。
通过理论学习和实验验证,学生将掌握ADC0809的基本参数和限制条件。
4.2 数字电压表电路设计在掌握了ADC0809的基本特性后,学生将开始设计数字电压表的电路。
设计过程将包括模拟输入和参考电压的设定、时钟信号的生成、数字显示和控制逻辑的设计等。
4.3 电路调试和验证设计完成后,学生将进行电路的调试和验证工作。
他们需要确保电路能够正常工作,并对其性能进行评估。
如果有必要,他们还可以进行一些改进和优化。
4.4 实际测量和性能评估学生将使用数字电压表进行实际测量,并对其测量精度、稳定性和速度进行评估。
他们还可以与市售数字电压表进行对比,验证自己设计的数字电压表的性能和特点。
5. 实验设备和材料为了完成这个课程设计,学生将需要以下设备和材料:- ADC0809芯片及支持器件- 电压源和参考电压源- 模拟输入信号源- 时钟脉冲发生器- 数字显示器和控制电路- 示波器和信号发生器等测试设备6. 实验步骤和过程学生将按照以下步骤完成课程设计实验:6.1 学习ADC0809的特性和工作原理6.2 进行数字电压表电路设计6.3 搭建电路并进行调试6.4 进行性能评估和实际测量7. 结果分析和总结学生将对实验结果进行分析,总结数字电压表的性能和特点,并讨论可能的改进方向和应用场景。
1 引言随着微电子技术的不断发展与进步,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。
数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC化),另一方面,精度也从0.01%-0.005%。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面。
本文是以数字电压表的设计为研究内容,主要包括数据的A/D转换、数字数据处理及LED显示。
其中,A/D转换采用ADC0809对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号。
2 设计总体方案2.1 设计要求基本要求:采用51系列单片机和ADC设计一个数字电压表,输入为0~5V线性模拟信号,输出通过LED显示,要求显示两位小数。
程序/*---------------------------------------------------------------------------------名称:ADC0808模拟检测电压数码管显示编写:人言者007日期:2013.5.20说明:ADC0808的其中两路去检测电压,电压范围0~5V, 电压用电阻器调节模拟出来。
检测到模拟电压转化为数字量后转变为16进制在数码管中显示,每两位数码管显示一路电压的数字量,声明:显示的数不是实际电压,只是与电压呈现性关系。
----------------------------------------------------------------------------------*/#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar temp,dianya0,dianya1;uchar code LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管断码0~9~a~fuchar disbuff[4]; //显示缓冲器(数组)sbit clk=P3^3; // 芯sbit EOC=P3^2; // 片sbit OE=P3^0; // 引sbit start=P3^1; // 脚sbit adress_A=P3^4; // 定// 义void delay(uint z){while(z--);}void timer0init(){TMOD=0x01; //设置定时器0为工作方式1TH0=(65536-1)/256; //定时器0高八位赋值1us中断一次TL0=(65536-1)%256; //定时器0低八位赋值EA=1; //开总中断ET0=1; //开定时器0中断TR0=1; //启动定时器0void display(){// disbuff[0]=dianya%10; //个位// disbuff[1]=dianya/10%10; //十// disbuff[2]=dianya/100%10; //百// disbuff[3]=dianya/1000; // 千P2=0xfe; //打开第一个数码管P0=LED[disbuff[3]]; //给数码管送数据(段码)delay(60); //延时,防止数码管重影P2=0xfd; // 以P0=LED[disbuff[2]]; // 下delay(60); // 功P2=0xfb; // 能P0=LED[disbuff[1]]; // 类delay(60); // 同P2=0xf7;P0=LED[disbuff[0]];delay(60);}void main(){timer0init(); //定时器0初始化while(1){adress_A=0; //打开通道0delay(10); //延时等待芯片反应start=1; //开始ADC转换// while(!EOC); //等待转换完成标志(未知原因,此语句导致数码管不能显示)OE=1; //输出允许P1=0XFF; //输入前P1口需置1dianya0=P1; //AD转换完成,读取值OE=0; //关闭输出start=0; //关闭AD转换disbuff[0]=dianya0%16;//将二进制数据转换为16进制低位disbuff[1]=dianya0/16;//将二进制数据转换为16进制高位delay(10); //延时等待芯片反应adress_A=1; //打开通道1delay(10);start=1;OE=1;// while(!EOC);P1=0XFF;dianya1=P1;OE=0;start=0;disbuff[2]=dianya1%16;disbuff[3]=dianya1/16;display(); //显示}}void timer0() interrupt 1{TH0=(65536-1)/256; //重装初值TL0=(65536-1)%256;clk=~clk; //模拟给ADC0808提供时钟}硬件图(protues仿真)。
实验十三并行A/D(电压测量)实验一、实验目的:1、了解ADC0809的转换性能及编程方法;2、掌握ADC0809与8051单片机的接口方法;二、实验内容:1、为了方便观察,将实验例程中ADC0809采集到的数字量以十进制格式显示在右边三位数码管上;原理图:流程图:开始外中断0入口数码管扫描子程序开外中断0 (DPTR)->A R3->A、TAB->DPTR(A+DPTR)->A0809通道0->DPTR 个十百->R1/R2/R3 PA->DPTR,A->(DPTR)01H->P1,延时启动A/D转换数码管扫描R2->A、TAB->DPTR原地跳转启动A/D转换 (A+DPTR)->APA->DPTR,A->(DPTR)中断返回 02H->P1,延时R2->A、TAB->DPTR(A+DPTR)->APA->DPTR,A->(DPTR)02H->P1,延时返回汇编源程序:C语言源程序:bai = bai/0x0a;shi = bai%0x0a;bai = bai/0x0a;show(bai,shi,ge);ADDR_0809 = 0;}main(){COM_ADDR = 0x80; //PA输出IT0 = 1;EX0 = 1;EA = 1;ADDR_0809 = 0;while(1){;}}2、将实验仪上DAC0832的输出”OUT”接线柱接到ADC0809的通道3(IN3),程序运行时自动调整写入DAC0832的数字量,使得ADC0809测量到的值为100+5。
原理图:流程图:开始外中断0入口8255初始化 0832开中断0 0809->DPTR0809通道3地址->DPTR (DPTR)->AA->R0 启动A/D转换个百十->R1/R2/R3数码管扫描原地跳转启动A/D 转换0832 R0->A0832->DPTR A=5B? 是R0->A 否A->(DPTR) A>5B? 是延时否R0 +1->R0返回 R0-1->R0返回汇编源程序:C语言源程序:show(bai,shi,ge);//;与91比较,本来是该与100比较的,调试的时候数据传递过程中会自动加9或10左右while(a0!=0x5B){if(a0>0x5b) a0--;else if(a0<0x5b) a0++;}ADDR_0809 = 0;}main(){COM_ADDR = 0x80;IT0 = 1;EX0 = 1;EA = 1;a0 = 0x64;ADDR_0809 = 0;while(1){;}}3、将试验仪上电位器输出“0-5V”接ADC0809的通道0(IN0),DAC0832的输出“OUT”接ADC0809的通道3(IN3),先调整电位器输出2.5V的电压,程序运行时根据通道0读入的数值对DAC0832的输出进行校准,自动调整写入DAC0832的数字量,使DAC0832输出地电压随电位器输出电压变化。
届微机接口技术课程设计用ADC0809做成的数字电压表学生姓名学号所属学院专业班级指导教师日期大学教务处数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
本系统用单片机AT89S51构成数字电压表控制系统, 具有精度高、速度快、性能稳定和电路简单且工作可靠等特点, 具有很好的使用价值。
数字电压表(DVM)是诸多数字化仪表的核心与基础。
以数字电压表为基础,可扩展成各种数字仪表及非电量的数字化仪表,其应用覆盖电子电工测量、工业测量、自动化仪表等领域。
与指针式电压表相比,数字电压表具有很多优点:读数直观、准确,以数字形式显示电压,避免读数视差和视觉疲劳;显示范围宽、分辨力高,指针电压表准确度由0.1~5.0分为7个等级,数字电压表由0.000 5~1.0分为11个等级,数字电压表分辨力目前可做到从2到lo};转入阻抗(转入电阻)高(1~104Mft),吸收被测二二信号电流极小,测量误差小,几可忽略;集成度高,功耗小;可扩展能力强。
数字电压表结构如图1。
其中A/D转换器将转入的模拟量转换成数字信号,是数字电压表的核心。
目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DVM 扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的以指针加刻度盘进行读数的方法, 避免了读数的视差和视觉疲劳。
实验3 ADC0809并行模数转换实验【实验目的】熟悉A/D转换的工作原理,学习使用并行模数转换芯片ADC0809进行电压信号的采集和数据处理。
【实验设备及器件】IBM PC机一台DP - 51PROC 单片机综合仿真实验仪一台数字万用表一台【实验内容】通过片外总线方式访问并行模拟数字转换器芯片ADC0809,掌握模拟电压的通用采集方法。
【实验要求】理解掌握ADC009的A/D转换原理和并行A/D转换器接口的编程方法,学会使用ADC0809并行模数转换器实现电压信号采集的方案设计。
【实验步骤】1.使用2×10的排线连接D7区的J28接到A7区的J84;2.将D2区1K电位器和10K电位器的左端金属孔通过导线连接到该区的GND金属孔,而右端金属孔通过导线连接到该区的VCC金属孔;3.将D2区1K电位器的中间金属孔连接到A7区的P2_IO2金属孔,而D2区10K电位器的中间金属孔连接到A7区的P2_IO1金属孔;4.将A7区的P2_IO3~P2_IO5分别连接到A2区的A2~A0;5.将A7区的P2_CS连接到A2区的A15;6.运行编写好的软件程序,每次跑到断点就会停止,此时观察转换的结果和用数字万用表测量的结果相比较是否正确(所需观察的存储单元或者变量在程序中依照注释执行);7.改变1K电位器和/或10K电位器的旋钮位置,用数字万用表测量中间金属孔的电压,再次运行程序至断点处,观察转换的结果是否正确。
【实验预习要求】认真预习本节实验内容,按照实验的要求提前做好实验准备工作,认真阅读ADC0809的数据手册。
图3.18155引脚接线图【实验参考程序】汇编语言程序清单;使用该程序前请先按照实验指导手册连接好连线,;运行程序至断点,观察30H单元和31H单元转换的十六进制;数据换算成实际电压值是否与万用表的测量结果相等?;扭动电位器,改变IN0或/和IN1模拟输入电压,再次运行程序至;断点,观察30H或/和31H单元的数值是否随之改变,改变的是否正确?ORG 8000HLJMP MAINORG 8100HMAIN: MOV SP,#70HMOV R1,#30H ;置数据区首地址,用于存放A/D转换结果MOV DPTR,#7FF8H ;P2.7=0,且指向通道0MOV R7,#02H ;置通道数LOOP: MOVX @DPTR,A ;启动A/D转换MOV R6,#20H ;软件延时,等待转换结束DELAY: NOPNOPNOPDJNZ R6,DELAYMOVX A,@DPTR ;读取转换结果MOV @R1,A ;转存INC DPTR ;指向下一个通道INC R1 ;修改数据区指针DJNZ R7,LOOP ;IN0、IN1两个通道全采样完了吗?LJMP MAINENDC51程序清单//使用该程序前请先按照实验指导手册连接好连线,//运行程序至断点,观察result0和result1的转换结果//浮点数值是否与数字万用表的测量结果相等?//扭动电位器,改变IN0或/和IN1模拟输入电压,再次运行程序至断点,//观察result0或/和result1的转换结果浮点数值是否随之改变,改变的是否正确?#include <reg52.h>#include <intrins.h>#include <absacc.h>#define PIN0 XBYTE[0x7ff8]#define PIN1 XBYTE[0x7ff9]typedef unsigned char byte;typedef unsigned int word;void main(void){float result0,result1; //两个通道A/D转换结果的存储变量float result0_reg,result1_reg; //浮点数据输出存储byte i,j;while(1){for(i=0;i<2;i++) //对IN0、IN1两个通道进行采样{if(!i)PIN0=0xff; //启动通道0的A/D转换elsePIN1=0xff; //启动通道1的A/D转换for(j=0;j<0x50;j++); //延时,等待转换的完成if(!i)result0_reg=PIN0; //读取通道0的转换结果elseresult1_reg=PIN1; //读取通道1的转换结果}result0=result0_reg*5/256;result1=result1_reg*5/256;}}【实验思考题】1.本实验采用了延时等待的方式等待ADC0809转换结束,请用户改用中断方式做一次这个实验,并说出这个实验采用中断方式与延时等待方式相比有哪些优点;2.请将D5区上的ZLG7290芯片和数码管与本实验相结合,设计出一个数字电压表,并与商品化的数字电压表测量值比较。