51单片机AD0809电路设计程序+原理图

合集下载

ADC0809引脚图与接口电路

ADC0809引脚图与接口电路

ADC0809引脚图与接口电路A/D转换器芯片ADC0809简介 8路模拟信号的分时采集,片内有8路模拟选左右。

通开关,以及相应的通道抵制锁存用译码电路,其转换时间为100μs图9.8 《ADC0809引脚图》1. ADC0809的内部结构ADC0809的内部逻辑结构图如图9-7所示。

图9.7 《ADC0809内部逻辑结构》图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。

地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。

表9-1 通道选择表2.信号引脚ADC0809芯片为28引脚为双列直插式封装,其引脚排列见图9.8。

对ADC0809主要信号引脚的功能说明如下:IN7~IN——模拟量输入通道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为最高OE——输出允许信号。

用于控制三态输出锁存器向单片机输出转换得到的数据。

ADC0809与MCS-51的连接电路

ADC0809与MCS-51的连接电路

ADC0809 与MCS-51 的连接电路
ADC0809 与MCS-51 单片机的连接如图9.10 所示。

电路连接主要涉及两个问题。

一是8 路模拟信号通道的选择,二是A/D 转换完成后转换数据的传送。

1. 8 路模拟通道选择
如图9.11 所示模拟通道选择信号A、B、C 分别接最低三位地址A0、A1、A2 即(P0.0、P0.1、P0.2),而地址锁存允许信号ALE 由P2.0 控制,则8 路模拟通道的地址为0FEF8H~0FEFFH.此外,通道地址选择以WR 作写选通信号,这一部分电路连接如图9.12 所示。

图9.11 ADC0809 的部分信号连接图9.12 信号的时间配合
从图中可以看到,把ALE 信号与START 信号接在一起了,这样连接使得
在信号的前沿写入(锁存)通道地址,紧接着在其后沿就启动转换。

图9.19 是
有关信号的时间配合示意图。

启动A/D 转换只需要一条MOVX 指令。

在此之前,要将P2.0 清零并将最
低三位与所选择的通道好像对应的口地址送入数据指针DPTR 中。

例如要选
择IN0 通道时,可采用如下两条指令,即可启动A/D 转换:。

ADC0809与51单片机接口电路及应用程序

ADC0809与51单片机接口电路及应用程序

ADC0809与51单片机接口电路及应用程序最近研究了下ADC0809这个芯片,做了个电路,和大家分享电路原理图如下:500)this.width=500;" border=0>说明:D0~D7接51单片机的P2口(P2.0~P2.7)ADIN1和ADIN2为通道IN0和IN1的电压模拟量输入(0~5V)应用程序如下:#include"reg52.h"#define uchar unsigned charsbit ST=P1^0;sbit EOC=P1^1;sbit OE=P1^2;sbit CLK=P1^3;sbit ADDCS=P1^4;uchar AD_DATA[2]; //保存IN0和IN1经AD转换后的数据/**********延时函数************/void delay(uchar i){uchar j;while(i--){for(j=125;j>0;j--);}}/*********系统初始化***********/void init(){EA = 1; //开总中断TMOD = 0x02; //设定定时器T0工作方式 TH0=216; //利用T0中断产生CLK信号 TL0=216;TR0=1; //启动定时器T0ET0=1;ST=0;OE=0;}/***********T0中断服务程序************/void t0(void) interrupt 1 using 0{CLK=~CLK;}/***********AD转换函数**********/void AD(){ST=0;ADDCS=0; //选择通道IN0delay(10);ST=1; //启动AD转换delay(10);ST=0;while(0==EOC);OE=1;AD_DATA[0]=P2;OE=0;ST=0;ADDCS=1; //选择通道IN1 delay(10);ST=1; //启动AD转换delay(10);ST=0;while(0==EOC);OE=1;AD_DATA[1]=P2;OE=0;}/*****************主函数**************/。

ADC0809模块制作

ADC0809模块制作

基于51的ADC0809的AD转换模块一.模块介绍:本模块用ADC0809采集模拟信号后在LCD1602上显示数字量1.ADC0809芯片的引脚介绍电源地引脚:GND,VCC输入引脚:IN0~IN7:模拟量8通道的输入VREF+,VREF-:正负参考电压输入输出引脚:D0~D7:数字量8位输出(和单片机连接时注意D0为最高位)通道选择引脚:CBA: 对应二进制为所选输入通道(如:000 为通道0)ALE: Address latch enable. Input to latch in the digital address(ADDR2–0) on the rising edge of the multiplexer.(通道使能:上升沿使能)控制引脚:ST: Start of conversion. Active high digital input pulse initiatesconversion.(开始转换信号,输入高电平脉冲有效)EOC:End of conversion. This output goes low after a START pulse occurs,stays low for the entire A/D conversion, and goes high afterconversion is completed. Data on DB0–DB7 is valid on rising edgeof EOC and stays valid until next EOC rising edge.(转换结束信号,转换开始时拉低,拉高后转换结束)OE:Output enable input.When OE = 1,DB0–DB7 active outputs.(置高时输出使能)CLK:Clock. Clock input provides timing for A/D converter, S/H, and digitalInterface. (转换时钟信号,范围100KHZ~1024KHZ)2.LCD1602引脚介绍:电源地引脚:VDD,A(背光电源) Vss,K(背光地)VO: 接一电位器分压来调节LCD亮度输入引脚:DB0~DB7 在控制引脚的情况下输出数据或指令控制引脚:RS: 数据命令选择(H~数据L~命令)R/W:读写选择(H~读L~写)二.仿真分析:1.仿真图:D7D6D5D4D3D2D1D0D0D1D2D3D4D5D6D7C2OEST ST C3EOC C1C3C2C1STEOC CLK OE CLK XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51OUT121ADD B 24ADD A 25ADD C 23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START 6OUT58EOC 7OE9CLOCK 10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE 22U3ADC08094%RV11000k 234567891RP1D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LVCC V=5U3(IN0)V=0.208798D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LC34%RV11000k U3(IN0)V=0.2087982.数据记录:Vin(V) 3.67734 2.49999 4.68766 5.0 0.208798 V out(V) 3.6848 2.4892 4.6844 4.9980 0.2156 误差+0.2%-0.4%-0.06%-0.04%3.257%3.数据分析:由表中可知:仿真数据精度满足要求!三.硬件制作: 1.PCB 原理图:2.PCB图:121921031141251361471581612345678910111314151612123111314212019181615282726123456*********25242322123412341234567812312341514131211109876543211612111098765432112321123456789101112131415163.实物图:ADC0809LCD16024.测试方法:将板上参考电压分压后的电压ref(如图中)接入IN0~IN7中的一个通道,连接好其他的各数据接口后,调节电位器,将在LCD1602上看到相应的电压值,并用电压表测出ref的电压记录后可得到精确度!(注意给ADC0809提供的电源电压要求是稳定直流电压,其中芯片参考电压加接了一个跳帽用来接VCC或外部稳定直流电压)四.软件分析:源代码:文件1:AD0809.c头文件:#include <reg52.h>#include "1602.h" //自己编写的头文件宏定义:sbit OE = P1^0;sbit EOC = P1^1;sbit START = P1^2;sbit CLK = P1^3; //ADC0809控制端口sbit AD_A = P1^4;sbit AD_B = P1^5;sbit AD_C = P1^6;sbit ALE = P1^2; //ADC0809通道选择#define Data_OUT P3 //ADC0809数据输出全局变量:long int dat; //AD数据输出量long int result; //AD数据转换后的量long int a[5]; //转换量存入数组unsigned char *b = {"0123456789"};//1602显示字符函数接口:1.adc转换函数接口:void adc0809(){AD_A = 0;AD_B = 0;AD_C = 0; //选好通道0START = 0;OE = 0;START = 1;START = 0; //开始数模转化while(EOC == 0); //等待转化结束OE = 1; //数据输出使能dat = Data_OUT;DelayMs(10); //延时等待输出转换结果OE = 0;result = dat*196; //模拟转换为数字量,每位数字约为Vref/255 = 0.0196,此处Vref为5V}2.1602显示函数接口:void display(int a[]){int i;a[0] = result/10000;a[1] = result%10000/1000;a[2] = result%1000/100;a[3] = result%100/10;a[4] = result%10; //将数字量存入数组a中LCD_Init(); //LCD1602初始化LCD_Write_String(0,0,"volit:");LCD_Write_Char(12,0,'V');LCD_Write_Char(7,0,'.');LCD_Write_Char(6,0,b[a[0]]);for(i=0; i<4; i++){LCD_Write_Char(8+i,0,b[a[i+1]]);}//写入要显示的数据及提示信息}3.主函数:void main(){SCON=0x50;TMOD=0x01; //定时器0工作于方式一TH0=(65536-2)/256;TL0=(65536-2)%256;//初始化T0的计数寄存器,2uss溢出申请中断//定时器中断,提供AD转换的时钟源EA=1; //打开总中断ET0=1; //打开定时器零中断TR0=1; //暂不启动T0while(1){adc0809();DelayMs(150); //每150ms转换更新一次display(a); //显示转换结果}}4.中断函数:(为AD提供时钟信号)void t0(void) interrupt 1{TH0=0xff;TL0=(65536-2)%256; //重装定时器中断值CLK=~CLK; //电平反向得到时钟脉冲}//AD时钟频率范围100khz~1024khz文件2:1602.h //1602头文件void DelayUs2x(unsigned char t); //延时~ T=2*t + 5us void DelayMs(unsigned char t); //延时tMsbit LCD_Check_Busy(void); //判断忙void LCD_Write_Com(unsigned char com); //写命令void LCD_Write_Data(unsigned char Data); //写数据void LCD_Clear(void); //清屏void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s); //在坐标(x,y)处写字符void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data); //从坐标(x,y)处开始写字符串void LCD_Init(void); //初始化文件3:1602.c头文件及宏定义:#include <reg52.h>sbit RS = P2^0; //数据(1)命令(0)选择位sbit RW = P2^1; //读(1)写(0)选择位sbit EN = P2^2; //使能信号(高有效)#define DATA_IN P0 //数据接口函数接口:1.延时函数接口(两个)void DelayUs2x(unsigned char t){while(--t);} //延时约为2*t+5usvoid DelayMs(unsigned char t){while(t--){DelayUs2x(245);DelayUs2x(245);}}2.1602函数接口判断忙函数:(函数返回值为bit )bit LCD_Check_Busy(void){DATA_IN = 0XFF;RS = 0;RW = 1;EN = 0; //读(1)命令(0)DelayUs2x(1); //等待加载数据EN = 1; //拉高加载数据return (bit)(DATA_IN & 0X80);}写命令函数:void LCD_Write_Com(unsigned char com)while(LCD_Check_Busy()); //判断忙RS = 0;DATA_IN = com;RW = 0;EN = 0; //写(0)命令(0)DelayUs2x(1); //等待加载数据EN = 1; //拉高加载数据}写数据函数:void LCD_Write_Data(unsigned char Data) {while(LCD_Check_Busy()); //判断忙RS = 1;DATA_IN = Data;RW = 0;EN = 0; //写(0)数据(1)DelayUs2x(1); //等待加载数据EN = 1; //拉高加载数据}清屏函数:void LCD_Clear(void)LCD_Write_Com(0x01);DelayMs(5); //等待清屏完成}写字符串函数:void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s){if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}while (*s){LCD_Write_Data( *s);s ++;}}写字符函数:void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data){if (y == 0){LCD_Write_Com(0x80 + x);}else{LCD_Write_Com(0xC0 + x);}LCD_Write_Data( Data);}初始化函数:void LCD_Init(void){LCD_Write_Com(0x38); /*显示模式设置*/LCD_Write_Com(0x08); /*显示关闭*/LCD_Clear(); /*显示清屏*/LCD_Write_Com(0x06); /*显示光标移动设置*/LCD_Write_Com(0x0C); /*显示开及光标设置*/}。

AD0809的工作原理

AD0809的工作原理

A D0809的工作原理(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--AD0809的工作原理1. AD0809的芯片说明:ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

(1)ADC0809的内部逻辑结构由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

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

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

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

地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。

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

A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择表如下表所示。

C B A 选择的通道000IN0数字量输出及控制线:11条ST为转换启动信号。

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

EOC为转换结束信号。

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

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

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

D7-D0为数字量输出线。

CLK为时钟输入信号线。

因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。

ADC0809程序原理及逻辑结构

ADC0809程序原理及逻辑结构
2)具有转换起停控制端。
3)转换时间为100&mu;s(时钟为640KHz时),130&mu;s(时钟为
500KHz时)。
4)单个+5V电源供电。
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度。7)低功耗,约15mW。
ADC0809逻辑结构:
ADC0809是带有8位A/D转换器、8路模拟开关以及微处理机兼容
ADC0809信号引脚:
对ADC0809主要信号引脚的功能说明如下:
IN~ IN一一模拟量输入通道
ALE一一地址锁存允许信号。对应ALE上跳沿,A、B、C地址
状态送入地址锁存器中。
START一一转换启动信号。START上升沿时,复位ADC0809;
START下降沿时启动
芯片,开始进行A/D转换;在A/D转换期间,START应保持低
的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,是目前应用比较
广泛的A/D转换芯片之一,主要适用于对精度和采样速率要求不高的场合或
一般的工业控制领域,可以和单片机直接相连。它具有8个通道的模拟量输
入线,可在程序控制下对任意通道进行A/D转换得到8[1]位二进制数字
量。
ADC0809内部结构图:
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共
用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存
与译码电路完成对A、B.C3个地址位进行锁存和译码,其译码输出用于通
道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统
数据总线相连。
ADC0809应用电路原理图:
Vcc-- +5V电源。

单片机课程设计——基于ADC0809的多路模数转换电路的设计

单片机课程设计——基于ADC0809的多路模数转换电路的设计

最小系统电路图单片机最小系统电路图主要由主要由8051单片机、复位电路和晶振电路组成。

复位电路复位电路有两种:上电自动复位和上电/按键手动复位。

在这里我们采用上电/按键手动复位,如图所示按下按键SW,电源对电容C充电,使RESET端快速达到高电平。

松开按键,电容向芯片的内阻放电,恢复为低电平,从而使单片机可靠复位。

既可上电复位,又可按键复位。

一般R1选470欧姆,R2选8.2K欧姆,C选22uF。

晶振电路晶振电路的两端接到单片机的18(XTAL2)和19(XTAL1)引脚,晶振采用12MHZ,两端各接一个30pF的电容。

如图所示模数转换电路图模数转换电路主要由ADC0809模数转换芯片、74LS02或非门、CC4013D触发器(ALE引脚4分频)ADC0809 CLK信号产生电路ADC0809的CLK(10号引脚)所需的时钟输入信号的典型值为640kHz,鉴于640kHz频率的获取比较复杂,我们采用在8051的ALE信号的基础上分频的方法。

单片机的晶振频率为12MHz时,ALE引脚上的频率大约为2MHz,经4分频后能达到500kHz,4分频是由CC4013两个D触发器实现的,如图所示,在D触发器中,当Q与D相接时,输出是输入的二分频。

所以采用两个D触发器就能实现4分频。

ADC0809的8路通道的地址锁存电路地址锁存采用74LS373芯片,如图所示,OE(1号引脚)端接低电平,锁存控制端LE(11号引脚)可以直接与CPU的地址锁存控制信号ALE相连,当LE 为高电平时,Q端等于D端,当LE端从高电平下降到低电平时,输入端D的数据锁入锁存器中。

D0~D7与8051的P0.0~P0.7相连。

A0,A1,A2分别接ADC0809的A,B,C端,当A0A1A2=000~111时,就实现了对ADC0809的8路通道的选择。

读写控制信号电路读写控制电路由或非门实现的。

74LS02是4输入或非门,其中A,B为输入,Y为输出。

单片机AD电路设计程序原理图

单片机AD电路设计程序原理图

AD0809在51单片机中的应用我们在做一个单片机系统时,常常会遇到这样那样的数据采集,在这些被采集的数据中,大部分可以通过我们的I/O口扩展接口电路直接得到,由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠A/D或V/F实现。

下现我们就来了解一下AD0809与51单片机的接口及其程序设计。

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,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。

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

A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择表如下表所示。

C B A 选择的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN31 0 0 IN41 0 1 IN51 1 0 IN61 1 1 IN7数字量输出及控制线:11条ST为转换启动信号。

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

EOC为转换结束信号。

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

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

8.4 ADC0809接口电路及程序设计

8.4 ADC0809接口电路及程序设计

分频模块(clock)



clock:process(clk) --对系统时钟进行分频,得到ADC0809转 换工作时钟 begin if clk'event and clk='1' then qq<=qq+1; --在clk1的上升沿, 转换至下一状态 if QQ="01111111" THEN clk1<='1'; current_state <=next_state; elsif qq<="01111111" then clk1<='0'; end if; end if; end process; q<=regl; abc_out<=abc_in; end behav;
ADC0809 VHDL采样控制程序设计
ADC0809的工作时序图





START是转换启动信号,一个正脉冲过后A/D开 始转换;ALE是3位通道选择地址(ADDC、 ADDB、ADDA)信号锁存信号。 当模拟量送至某一输入端(如IN-0或IN-1)等, 由3位地址信号选择,而地址信号由ALE锁存。 EOC是转换情况状态信号,当启动转换约100μs 后,EOC产生一个负脉冲,以示转换结束。 在EOC的上升沿后,且输出使能信号ENABLE为 高电平,则控制打开三态缓冲器,把转换好的8 位数据送至数据总线。 至此ADC0809的一次转换结束
FPGA与ADC0809接口电路原理图
ADC0809与FPGA接口电路设计


FPGA_IO1~8接收ADC0809 8位数数据; FPGA_IO9接收ADC0809 转换结束信号EOC; FPGA_IO10~12 为ADC0809提供8路模拟信号开 关的3位地址选通信号(ADD-A~C); FPGA_IO13 为ADC0809提供地址锁存控制信号 ALE:高电平时把三个地址信号送入地址锁存器, 并经译码器得到地址输出,以选择相应的模拟输 入通道;

ADC0809逻辑结构图

ADC0809逻辑结构图

ADC0809逻辑结构图ADC0809是典型的8位8通道逐次逼近式A/D转换器,CMOS工艺;片内有8路模拟开关,可对8路模拟电压量实现分时转换。

ADC0809的引脚如下图所示,逻辑结构图如下图所示。

1 2 3 4 5 6 7 8 910111213142827262524232221201918171615ADC0809IN2IN1IN0ABCALED7D6D5D4D0V REF(-)D2IN3IN4IN5IN6IN7STARTEOCD3OECLKV CCV REF(+)GNDD1ADC0809其引脚定义如下:IN7-IN0:8条模拟量输入通道。

D7-D0 :输出数据端。

其中D7是最高位M SB,D0为最高位LSB。

START:启动转换命令输入端。

高电平有效。

EOC:转换结束指示脚。

平时它为高电平,在转换开始后及转换过程中为低电平,转换结束,它又变回高电平。

OE:输出使能端。

此脚为高电平,即打开输出缓冲器三态门,读出数据。

C、B和A:通道号选择输入端。

其中A是LSB位,这三个引脚上所加电平的编码为000~111时,分别对应于选通通道IN7~IN0。

ALE:通道号锁存控制端。

当它为高电平时,将C、B和A三个输入引脚上的通道号选择码锁存,也就是使相应通道的模拟开关处于闭合状态。

实际使用时,常把ALE和START连在一起,在START端加上高电平启动信号的同时,将通道号锁存起来。

CLK:外部时钟输入。

ADC809典型的时钟频率为640KHz ,转换时间为100µs。

时钟信号一般由单片机ALE经分频得到;VREF(+)、VREF(-):两个参考电压输入端。

ADC0809逻辑结构图。

MCS-51单片机接口技术4(ADC0809)ppt课件

MCS-51单片机接口技术4(ADC0809)ppt课件
……
;存储转换结果 ;指向下一个通道 ;修改数据区指针 ;8个通道全采样完否?未完则继续
最新版整理ppt
21
8.2.3 ADC574芯片及其与单片机的接口
主要性能
逐次逼近式,可工作于12位,也可工作于8位。数 据有两种读出方式:12位一次读出;8位、4位两 次读出。
可控三态输出缓冲器,逻辑电平为TTL电平 非线性误差:AD574AJ为±1LSB
结果存储到片内RAM以DATA为起始地址的连续单 元中。
MAIN:MOV R1,#DATA
;置数据区首地址
MOV DPTR,#7FF8H ;指向0通道
MOV R7,#08H
;置通道数
LOOP:MOVX @DPTR,A ;启动A/D转换
HER:JB P3.3,HER
;查询A/D转换结束
MOVX A,@DPTR ;读取A/D转换结果
18
ORG PINT1:PUSH
PUSH PUSH PUSH MOV MOVX MOV INC MOVX POP POP POP POP RETI
2100H
;中断服务程序入口
PSW
;保护现场
ACC
DPL
DPH
DPTR, #7FF8H
A,@DPTR ;读取转换后数据
@R1,A
;数据存入以RAM
R1
;修改数据区指针
IN3 1 28 IN4 2 27 IN5 3 26 IN6 4 25 IN7 5 24 START 6 23 EOC 7 22 D3 8 21 OE 9 20 CLK 10 19 VCC 11 18 VR(+) 12 17 GND 13 16 D1 14 15
ADC0809
IN2 IN1 IN0 A B C ALE D7 D6 D5 D4 D0 VR(-) D2

AD0809的工作原理

AD0809的工作原理

AD0809的工作原理1. AD0809的芯片说明:ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

(1)ADC0809的内部逻辑结构由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

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

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

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

地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。

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

A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择表如下表所示。

C B A 选择的通道000IN0数字量输出及控制线:11条ST为转换启动信号。

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

EOC为转换结束信号。

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

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

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

D7-D0为数字量输出线。

CLK为时钟输入信号线。

因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。

2.ADC0809应用说明(1).ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。

利用51单片机与ADC0809和数码管设计数字电压表

利用51单片机与ADC0809和数码管设计数字电压表

利用51单片机与ADC0809和数码管设计数字电压表一、课题功能描述:利用单片机AT89C51 芯片与ADC0809 芯片设计一个数字电压表,能够测量0―5V 之间的直流电压,三位数码显示。

二、程序设计本实验采用AT89C51 单片机芯片配合 ADC0809 模/数转换芯片构成一个简易的数字电压表,原理电路如图1-1 所示。

该电路通过 ADC0809 芯片采样输入口AI0 输入的0~5V 的模拟量电压,经过模/数转换后,产生相应的数字量经过其输出通道D0~D7 传送给 AT89C51 芯片的F0口。

AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码,并通过P1 口传送给数码管。

同时它还通过其三位 I/O 口 P3.0、P3.1、P3.2 产生位片选信号,控制数码管的亮灭。

另外,AT89C51 还控制着 ADC0809 的工作。

其ALE管脚为 ADC0809提供了 1MHZ 工作的时钟脉冲;P2.3 控制 ADC0809 的地址锁存端(ALE); P2.4 控制 ADC0809 的启动端(START); P2.5 控制 ADC0809 的输出允许端(OE); P3.7 控制 ADC0809 的转换结束信号(EOC)。

电路原理图如下:三、器件清单:1 . AT89S51 芯片 1块2 . ADC0809 芯片 1块3 . 74HC245 芯片 1块4 . 数码管 1个5 . 6MHZ 晶振 1个6 . 30pF 电容 2个7 . 10uF 电解电容 1个8 . 复位电容 1个9 . 510Ω电阻 8个10. 10KΩ电阻 1个11. 导线若干四、程序设计1、主程序设计由于ADC0809 在进行A/D转换时需要有CKL 信号,而此时的 ADC0809 的CLK 是连接在 AT89C51 单片机的30管脚,也就是要求从30管脚输出CLK 信号供图1-2主程序流程图ADC0809 使用。

ADC0809ppt

ADC0809ppt
图1 ADC0809的原理框图
主要引脚介绍:
IN0~IN7:8路模拟信号输入端 D0~D7: 8路转换数据输出端 A,B,C:通道地址选择,不同地址码选择不同通道的模拟量输入
ALE:为通道地址锁存允许选通控制端,输入上升沿有效;它有效时, C、B、A的通道地址值才能进入通道地址,ALE下跳为低电平(无效)时, 锁存器锁存进入的通道地址。
A/D转换器ADC0809芯片
A/D转换器
A/D转换器按照工作原理的不同分为直接A/D转换器和间接A/D转换器两种。
直接A/D转换器:将模拟信号直接转换为数字信号. 特点:这类转换器具有较快的转换速度,典型电路有并行A/D转换器 和逐次比较型A/D转换器 .
间接A/D转换器:先将模拟信号转换为某一中间量(时间或频率), 然后将中间量转换为数字量输出. 特点:这类转换器转换速度较慢,典型电路有双积分型A/D转换器 、 电压频率转换型A/D转换器等.
START:启动A/D转换控制引脚,由高电平下跳为低电平时有效。该信 号的上升沿到来时片内寄存器复位,在其下降沿时开始A/D下降沿启动 A/D转换,ADC开始逐次比较。
EOC:转换结束标志,AD转换完成,EOC变为高电平,结果存入锁存器. CLOCK:转换定时时钟输入 OE:数字量输出允许控制端,当OE=1,三态输出缓冲器数据送到数据总线.
逐次逼近型A/D转换器:ADC0809引脚图
ADC0809 是采用CMOS工艺制造的双列直插式单片8 位A/D 转换器。
IN3 1 IN4 2 ቤተ መጻሕፍቲ ባይዱN5 3 IN6 4 IN7 5 START 6 EOC 7 D3 8 OE 9 CLOCK 10 VCC 11 REF(+) 12 GND 13 D1 14

AD转换与单片机的接口电路(ADC0809)

AD转换与单片机的接口电路(ADC0809)

;设置第0工作区 设置第 工作区 ;采样数据存放首址 ;IN0通道地址 通道地址 ;模拟量通道数 启动A/D转换 ;启动 转换 外部中断0为边沿触发方式 ;外部中断 为边沿触发方式 允许外部中断0中断 ;允许外部中断 中断 开放CPU中断 ;开放 中断
Copyright 2006
ADC 0809
22 21 20 19 18 17 16 15
Copyright 2006
ADC0809的通道选择: 的通道选择: 的通道选择
被选通的通道 IN0 IN1 IN2 IN3 ADDC 0 0 0 0 ADDB 0 0 1 1 ADDA 0 1 0 ቤተ መጻሕፍቲ ባይዱ 被选通的通道 IN4 IN5 IN6 IN7 ADDC 1 1 1 1 ADDB 0 0 1 1 ADDA 0 1 0 1
A/D转换器与单片机的接口技术 转换器与单片机的接口技术
从物理信号到电信号的转换
A/D转换器的作用是将模拟的电信号转换成数字信号。在将 物理量转换成数字量之前,必须先将物理量转换成电模拟 量,这种转换是靠传感器完成的。传感器的种类繁多,如 温度传感器,压力传感器、光传感器、气敏传感器等。 温度传感器:典型的温度传感器有热电偶和热敏电阻。热 电偶是利用热点效应来工作的,室温下的输出电压为毫伏 级的。热敏电阻是一种半导体新型感温元件,具有负的电 阻温度系数,当温度升高时,其电阻减小。 湿度传感器:是利用湿度变化引起其电阻值或电容量变 化原理制成的,即将湿度变化转换成电量变化。
Copyright 2006
ADC0809与51单片机接口 与 单片机接口
ADC0809与单片机接口 与单片机接口
通道地址: 78H~7FH
Copyright 2006

ADC0809引脚图与程序c语言

ADC0809引脚图与程序c语言
A、B、C——地址线。 通道端口选择线,A为低地址,C为高地址,引脚图中为ADDA,ADDB和ADDC。其地址状态与通道对应关系见表9-1。
CLK——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号
EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
出口参数:
****************************************************************************************/
void timer0(void)interrupt 1
{
count++;
if(count==0x0A)
{
count=0x00;
D7~D0——数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。D0为最低位,D7为最高
OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
Vcc—— +5V电源。
Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V).
图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。

利用51单片机+8位数码管+AD0809设计数字直流电压表系统

利用51单片机+8位数码管+AD0809设计数字直流电压表系统

目录1.题目设计要求 (2)2. 系统的组成及工作原理 (2)2.1电路原理图 (2)2.2 A/D转换原理 (3)2.3数据处理原理 (3)2.4器件列表 (3)3. 器件的功能和作用 (4)3.1AT89C51功能介绍 (4)3.1.1AT89C51的简单概述 (4)3.1.2AT89C51的引脚介绍 (4)3.2AD0809功能介绍 (6)3.3 LED数码管功能介绍 (6)4.系统硬件设计 (7)5. 系统软件设计 (8)5.1 程序流程图 (8)5.2程序代码 (10)6.系统仿真调试 (13)6.1仿真原理图设计 (13)6.2 与程序代码链接 (13)6.2.1运用keil uVision4生成.hex文件并链接 (13)6.3 仿真运行结果 (15)7.心得体会 (15)8.参考文献 (16)1.题目设计要求要求:利用51单片机+8位数码管+AD0809设计数字直流电压表系统,精度为0.01V。

完成以下设计环节:1)使用Altium Desinger或Protel99SE开发工具,设计电路原理图与PCB制板图。

2)使用Uvision2开发平台,采用C语言或汇编语言设计软件程序。

3)使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真。

2.系统的组成及工作原理2.1电路原理图图2.1 电路原理图2.2 A/D转换原理模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。

但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。

A/D转换器的工作原理:采用逐次逼近法,逐次逼近式A/D是比较常见的一种A/D转换电路,转换的时间为微秒级。

逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零;转换开始时,先将逐次逼近寄存器最高位置1,送入D/A转换器,经D/A转换后生成的模拟量送入比较器,称为Vo,与送入比较器的待转换的模拟量Vi进行比较,若Vo<Vi,该位1被保留,否则被清除。

adc0809引脚图及功能详解,adc0809与51单片机连接电路分析

adc0809引脚图及功能详解,adc0809与51单片机连接电路分析

adc0809引脚图及功能详解,adc0809与51单片机连接电路分析adc0809是采样频率为8位的、以逐次逼近原理进行模数转换的器件。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

1.主要特性1)8路8位A/D转换器,即分辨率8位。

2)具有转换起停控制端。

3)转换时间为100s4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。

2.内部结构adc0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近组成。

adc0809的内部逻辑结构图如图9-7所示。

图中多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。

地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连,表9-1为通道选择表。

adc0809引脚图及功能3.外部特性(引脚功能)adc0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。

下面说明各引脚功能。

IN0~IN7:8路模拟量输入端。

2-1~2-8:8位数字量输出端。

ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。

START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

OE:数据输出允许信号,输入,高电平有效。

当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

51单片机AD0809电路设计程序+原理图

51单片机AD0809电路设计程序+原理图

AD0809在51单片机中的应用我们在做一个单片机系统时,常常会遇到这样那样的数据采集,在这些被采集的数据中,大部分可以通过我们的I/O口扩展接口电路直接得到,由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠A/D或V/F实现。

下现我们就来了解一下AD0809与51单片机的接口及其程序设计。

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,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。

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

A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择表如下表所示。

C B A 选择的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN31 0 0 IN41 0 1 IN51 1 0 IN61 1 1 IN7数字量输出及控制线:11条ST为转换启动信号。

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

EOC为转换结束信号。

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

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AD0809在51单片机中的应用
我们在做一个单片机系统时,常常会遇到这样那样的数据采集,在这些被采集的数据中,大部分可以通过我们的I/O口扩展接口电路直接得到,由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠A/D或V/F实现。

下现我们就来了解一下AD0809与51单片机的接口及其程序设计。

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,若信号太小,必须进行放大;输入的模拟量在转换
过程中应该保持不变,如若模拟量变化太快,则需在输入
前增加采样保持电路。

地址输入和控制线:4条
ALE为地址锁存允许输入线,高电平有效。

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

A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择表如下表所示。

C B A 选择的通道
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3
1 0 0 IN4
1 0 1 IN5
1 1 0 IN6
1 1 1 IN7
数字量输出及控制线:11条
ST为转换启动信号。

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

EOC为转换结束信号。

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

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

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

D7-D0为数字量输出线。

CLK为时钟输入信号线。

因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,
VREF(+),VREF(-)为参考电压输入。

3、ADC0809应用说明
(1).ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。

(2).初始化时,使ST和OE信号全为低电平。

(3).送要转换的哪一通道的地址到A,B,C端口上。

(4).在ST端给出一个至少有100ns宽的正脉冲信号。

(5).是否转换完毕,我们根据EOC信号来判断。

(6).当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。

4、AD0809的应用
了解完A/D转换芯片,下面我们以图2为例来完成它的程序设计。

电路说明:
电路见图(2),主要由AD转换器AD0809,频率发生器SUN7474,单片机AT89S51及显示用数码管组成。

AD0809的启动方式为脉冲启动方式,启动信号START启动后开始转换,EOC 信号在START的下降沿10us后才变为无效的低电平。

这要求查询程序待EOC无效后再开始查询,转换完成后,EOC输出高电平,再由OE变为高电平来输出转换数据。

我们在设计程序时可以利用EOC信号来通知单片机(查询法或中断法)读入已转换的数据,也可以在启动AD0809后经适当的延时再读入已转换的数据。

AT89S51的输出频为晶振频的1/6(2MHZ),AT89S1与SUN7474连接经与7474的ST脚提供AD0809的工作时钟。

AD0809的工作频范围为10KHZ-1280KHZ,当频率范围为500KHZ时,其转换速度为128us。

AD0809的数据输出公式为:Dout=Vin*255/5=Vin*51,其中Vin为输入模拟电压,Vout
为输出数据。

当输入电压为5V时,读得的数据为255再乘以2,得510。

我们用510*98%得499,再将百位数码管的小数点点亮,显示为4.99V,显示值与输入值基本吻合。

软件设计思路及程序流程
编程思路:
(1)向AD0809写入通道号并启动转换
(2)延时1ms后等待EOC出现高电平(JNB EOC,$)
(3)给OE置高并读入转换数据存入数据地址或数组中。

(4)显示
(5)
初始化
1、写入通道号
2、延时20us后等待EOC变高
3、读入采集到的数据并存入数组存入下一通道
#include<at89x51.h>
#define ucharunsigned char
#define uint unsigned int
sbit st=P3^2;
sbit oe=P3^1;
sbit eoc=P3^0;
uchar codetab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//数码管显示段码ucharcode td[]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//通道先择数组
uint ad_0809,ad_data1,ad_data2,ad_data3,ad_data0;
uchar m,number;
uchar x[8];//八通道数据待存数组
void delaynms(uint x);//nms延时程序
void display();//显示程序
void ad0809();//芯片启动程序
voidkey();//键扫描程序
main()
{
number=1;
P1=0x00;
while(1)
{
ad0809();//调AD0809启动子程序
key();//调按键子程序
ad_0809=x[number];//把相关通道数据给ad_0809,用做显示
display();//调显示
}}
//nms延时程序
voiddelaynms(uint x)
{
uchari;
while(x-->0)
{
for(i=0;i<125;i++)
{;}}}
void display()
{
uchar a;
ad_data1=(ad_0809*49/25)/100;//读得的数据乘以2再乘以98%除以100得百位
ad_data2=((ad_0809*49/25)%100)/10;//读得的数据乘以2再乘以98%再分出十位
ad_data3=(((ad_0809*49/25)%100)%10);//读得的数据乘以2再乘以98%再分出个位
for(a=0;a<10;a++)
{
P0=tab[ad_data3];//送小数点后第二位显示
P2=0x07;//选通第一个数码管
delaynms(3);
P0=tab[ad_data2];//送小数点后第一位显示
P2=0x0b;//选通第二个数码管
delaynms(3);
P0=tab[ad_data1];//送整数显示
P0_7=0;//点亮第三个数码管小数点
P2=0x0d;//选通第三个数码管
delaynms(3);
P0=tab[number];//送通道号显示
P2=0x0e;
delaynms(3);
}}
void ad0809()
{
uchari,m=1;
for(i=0;i<8;i++)
{
P0=td[i];//选通通道
oe=0;
//OE:输出允许信号;
//用于控制三态输出锁存器向单片机输出转换得到的数据。

OE=0,输出数据线呈高电阻;OE=1,输出转换//得到的数据;
//以下三条指令为起动AD0809
//注:st与ALE连载一起
//ALE为地址锁存允许输入线,当ALE=1,地址锁存与译码器将A, B,C三条//地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行//转换。

st=0; //ST为转换启动信号。

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

delaynms(1);// EOC信号在START的下降沿10us后才变为无效的低电平。

while(!eoc);//等待转换结束,转换完成后,EOC输出高电平,
oe=1;//取出读得的数据,OE变为高电平来输出转换数据
x[m]=P2;//送相关通道数组
oe=0;
m++;
}}
void key()
{
if(!P3_5)//P3.5是否按下
{
delaynms(20);//延时去抖动判误
if(!P3_5)//再一次判断P3。

5是否按下
{
while(!P3_5);//等待P3。

5为高电平,按键松开number++;//通道号显示加一
if(number>8)number=1;//八通道
}}}。

相关文档
最新文档