AD0809
ADC0809引脚功能及程序汇总
• 可以作为状态信号由CPU查询; • 可以作为中断请求信号通知CPU。
• (4) CPU在查询式I/O程序或中断服务程序中:
• 执行输入指令(读ADC0809数据端口); • 该指令经地址译码电路产生OE信号, • 0809内三态缓冲器被打开, • 转换结果通过数据总线进入CPU。
ADC0809应用说明
5、 AD转换电路
编程思路
• (1) 向AD0809写入通道号并启动转换 • (2) 延时1ms后等待EOC出现高电平 • (3) 给OE置高并读入转换数据存入数据
地址或数组中。 • (4) 显示、传输、控制
Proteus 的仿真问题
造成较大的误差,需要采取适当的滤波措施。
2、ADC0809通道地址选择表
ADDC ADDB ADDA 000 001 010 011 100 101 110 111
选通的通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7
3、ADC0809结构1
启动(高电平脉冲,输入)
start
4、ADC0809转换工作时序
结束 允许输出
1.送地址 2.启动 3.结束 4.允许输出 5.得到数据
ADC0809的工作过程
• (1)ALE信号锁存地址信号ADDA~ADDC。对应 的模拟信号进入0809
• (2) START脉冲(下跳沿)启动A/D转换 • (3) 转换完成后,转换结束信号EOC变为高电
转换的数据就输出给单片机了。
• ADC0809与系统有三种常见的连接方法: • (1) 占用三个I/O端口: • 端口1用来向0809输出模拟通道号并锁存; • 端口2用于启动转换; • 端口3读取转换后的数据结果。 • (2) 占用二个I/O端口: • 端口1输出模拟通道号并锁存,同时启动转换; • 端口2读取转换后的数据结果。 • (3) 通过并行接口芯片(例如8255A)连接。
AD0809简介
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~IN0——模拟量输入通道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——输出允许信号。
用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
ADC0809模数转换实验详解
实验三 ADC0809模数转换实验一、实验目的1、掌握ADC0809模/数转换芯片与单片机的连接方法及ADC0809的典型应用。
2、掌握用查询方式、中断方式完成模/数转换程序的编写方法。
二、实验说明本实验使用ADC0809模数转换器,ADC0809是8通道8位CMOS逐次逼近式A/D转换芯片,片内有模拟量通道选择开关及相应的通道锁存、译码电路,A/D 转换后的数据由三态锁存器输出,由于片内没有时钟需外接时钟信号。
下图为该芯片的引脚图。
各引脚功能如下:IN0~IN7:八路模拟信号输入端。
ADD-A、ADD-B、ADD-C:三位地址码输入端。
八路模拟信号转换选择由这三个端口控制。
CLOCK:外部时钟输入端(小于1MHz)。
D0~D7:数字量输出端。
OE:A/D转换结果输出允许控制端。
当OE为高电平时,允许A/D转换结果从D0~D7端输出。
ALE:地址锁存允许信号输入端。
八路模拟通道地址由A、B、C输入,在ALE信号有效时将该八路地址锁存。
START:启动A/D转换信号输入端。
当START端输入一个正脉冲时,将进行A/D转换。
EOC:A/D转换结束信号输出端。
当 A/D转换结束后,EOC输出高电平。
Vref(+)、Vref(-):正负基准电压输入端。
基准正电压的典型值为+5V。
VCC和GND:芯片的电源端和地端。
三、实验步骤1、单片机最小应用系统1的 P0口接A/D转换的D0~D7口,单片机最小应用系统1的Q0~Q7口接0809的A0~A7口,单片机最小应用系统1的WR、RD、P2.0、ALE、INT1分别接A/D转换的WR、RD、P2.0、CLOCK、INT1,A/D转换的IN接入+5V,单片机最小应用系统的RXD、TXD连接到串行静态显示实验模块的DIN、CLK。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加AD0809.ASM源程序,进行编译,直到编译无误。
ADC0809引脚功能及程序
• • • • • • • • •
ADC0809与系统有三种常见的连接方法: (1) 占用三个I/O端口: 端口1用来向0809输出模拟通道号并锁存; 端口2用于启动转换; 端口3读取转换后的数据结果。 (2) 占用二个I/O端口: 端口1输出模拟通道号并锁存,同时启动转换; 端口2读取转换后的数据结果。 (3) 通过并行接口芯片(例如8255A)连接。
ADC0809结构2
START CLK IN7
8路 模拟 开关
控制与时序 SAR 三态 输出 锁存 缓冲 器
EOC D7 数 字 量 输 出
IN0
ADDA ADDB ADDC ALE
树状开关
地址 锁存 与 译码
D0
电阻网络
VCCGND REF(+)
REF(-) OE
基准电压输入VREF(+)和VREF(-)
逐次逼近式的A/D转换器的特点
• 转换速度较快,转换时间在1~100μs以内, 分辨率可达18位,适用于高精度、高频信号 的A/D转换; • 转换时间固定,不随输入信号的大小而变化; • 抗干扰能力较双积分型弱。采样时,干扰信号会 造成较大的误差,需要采取适当的滤波措施。
2、ADC0809通道地址选择表
汽车传感器项目器件 ADC0809
1、ADC0809芯片简介
• • • • • • • • • • • 输 入: 8路(0V~5V) 线性误差:1LSB 数字输出:TTL电平,三态输出 电 源:+5V~15V 时钟频率:10KHZ-1280KHZ (典型640KHz) 转换时间:100μs 分辨率:8位 功 耗:15mW 输入电压范围:0V~VREF CMOS工艺,28Pin 输出: V IN V REF 255 NB
微机原理实验4-逐次比较式ADC0809
实验三 逐次比较式A/D 转换器0809的原理及编程一、实验目的1. 熟悉逐次逼近式A/D 转换器芯片的工作原理。
2. 了解A/D 转换芯片0809的接口设计方法。
3. 掌握A/D 转换器0809简单的应用编程。
二、实验任务1. 分析本实验模板的电路原理,它与EPP 接口数据传送的方法,所使用的端口地址。
2. 编写出逐次逼近式A/D 转换器芯片0809的转换与显示的控制程序。
三、实验原理1.电路组成及转换原理ADC0809是带有8位A/D 转换器、8路多路开关,以及与微型计算机兼容的控制逻辑的CMOS 组件。
8位A/D 转换器的转换方法为逐次逼近法。
在A/D 转换器内部含有一个高阻抗斩波稳定比较器,一个带有模拟开关数组的256电阻分压器,以及一个逐次逼近的寄存器。
8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个单边的模拟信号。
其原理图如图3-1所示。
8通道多路模拟开关5432128272625242322地址锁存器和译码器W 1W 2逐次逼近型寄存器SAR控制逻辑开关树组256R 电阻分压器610V x V c7输出缓冲锁存器三态212019188151417916111312模拟量输入A B CA L E地址选择地址锁存允许V cc G N D V R E F (+)V R E F (-)E N A B L E数字量输出转换结束(中断)E O CS TA R TC L O C KD 7D 6D 5D 4D 3D 2D 1D 0IN 7IN 6IN 5IN 4IN 3IN 2IN 1IN 0图3-1 ADC0809内部原理图从图中可以看出,ADC0809由两部分组成,第一部分为八通道多路模拟开关,控制C 、B 、A 和地址锁存允许端子,可使其中一个通道被选中。
第二部分为一个逐次逼近型A/D 转换器,它由比较器、控制逻辑、输出锁存缓冲器、逐次逼近寄存器以及开关数组和256R 梯型解码网络组成,由后两种电路(开关数组和256R 梯型电阻)组成D/A 转换器。
AD0809中文资料
AD0809 后经适当的延时再读入已转换的数据。
AT89S51 的输出频为晶振频的 1/6(2MHZ),AT89S1 与 SUN7474 连接经与 7474 的 ST
脚提供 AD0809 的工作时钟。AD0809 的工作频范围为 10KHZ-1280KHZ,当频率范围为
500KHZ 时,其转换速度为 128us。
}}}
(5)
主程序
初始化
1、 写入通道号 2、 延时 20us 后等待 EOC 变高 3、读入采集到的数据并存入数组存入下一通道
通道按键扫描 显示
51 测试网论坛 /bbs/index.asp 单片机征文大赛稿件,非本站以及作者 同意禁止转载,欢迎会员投稿!欢迎投票评论! 中国.深圳.51 测试网
#include <at89x51.h> #define uchar unsigned 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};//数码管显示段码 uchar codetd[]={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();//芯片启动程序 void key();//键扫描程序 main() {
ad0809-19用户手册
ad0809
完整版 V2
单位 V V V V V ℃ ℃
电器参数:
测试条件: AVDD = DVDD = VREFP = +5V;温度范围:-25 – 80 摄氏度;采用外置晶振:4.9152MHz 参数 条件 最小值 输入信号 差分电压输入 (VINP – VINN) 共模输入范围 输出数据频率 输入信号带宽 VREFP 1.5 ADC 性能 分辨率 等效输入噪声 积分非线性 (INL) 输入失调 输入失调温漂 PGA = 2 PGA = 128 PGA = 128 24 18n 0.0002 0.0005 3 +/-10 0.001 0.001 5 bit V % of FS % of FS % of FS AGND + 1.5 10、80 2.5、20 AVDD AVDD + 0.3 AVDD - 1.5 V Hz Hz V PGA = 128 +/- 0.5 VREFP /128 V 取值范围 典型值 最大值 单位
封装 DIP16 SOP16 DIP16 SOP16
功能 内部参考原电路做为简单开关使用( VCOM 输出 AVDD) 。 内部参考原电路工作(VCOM 输出 2.8V)
功能模块描述:
0000000h 输入为负
000000h FFFFFFh – 800000h
∆Σ ADC
ad0809 的 核 心 部 分 为 采 用 3 阶 Sigma-Delta 调制器结构的模数转换器,其 内部集成可编程增益(PGA = 2,128) 该调制器对输入模拟差分信号的采样 频率为 76.8KHz,远高于模拟信号的最大带 宽, 因而简化了应用时输入通道的前置防混 叠滤波器。
完整版 V2
19.6 18.6
AD0809转换实验
A/D转换实验1、实验目的:掌握A/D转换与单片机接口的方法;了解A/D芯片0809转换性能及编程方法;2、实验内容:利用综合实验仪上的0809做A/D转换器,综合实验仪上的电位器提供模拟量输入,编制程序,将模拟量转换成数字量,通过8155键显区数码管显示出来。
3、实验电路图4、实验器材:(1)超想-3000TB综合实验仪 1 台(2)超想3000仿真器 1 台(3)连线若干根(4)计算机 1 台5、实验连线:ADC0809的09IN0通道与模拟信号发生器的Vin0孔相连,ADC080片选信号CS09 孔与译码器的YC2孔相连,脉冲源的0.5M与ADC0809的CLOCK相连。
6、实验原理:A/D转换器的功能主要是将输入的模拟信号转换成数字信号,如电压、电流、温度测量等都属于这种转换。
本实验中采用的转换器为ADC0809,它是一个8位逐次逼近型A/D转换器,可以对8个模拟量进行转换,转换时间为100μS。
其工作过程如下:首先由地址锁存信号ALE的上升沿将引脚ADDA、ADDB和ADDC上的信号锁存到地址寄存器内,用以选择模拟量输入通道;START信号的下降沿启动A/D转换器开始工作;当转换结束时,AD0809使EOC引脚由低电平变成高电平,程序可以通过查询的方式读取转换结果,也可以通过中断方式读取结果。
CLOCK为转换时钟输入端,频率为100KHz-1.2MHz,推荐值为640KHz。
7、程序框图8、实验步骤:(1)设定仿真模式为程序空间在仿真器上,数据空间在用户板上(2)硬件诊断:调整综合实验仪上模拟信号发生器的电位器,使输入到此AD0809的IN0上电压为一定值。
(3)编写程序,并编译通过。
本程序使用查询的方式读取转换结果。
在读取转换结果的指令后设置断点,运行程序,在断点处检查并读出A/D转换结果,数据是否与Vin0相对应。
修改程序中错误,使显示值随Vin0变化而变化。
9、实验程序OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段控制口(接164时钟位)DAT164 equ 0e102h ; 段控制口(接164数据位)IN equ 0e103h ; 键盘读入口LEDBuf equ 40h ; 显示缓冲org 0000hmov sp,#60hmov dptr,#0e100h ;8155初始化mov a,#03hmovx @dptr,amov 40h,#00h ;显示缓冲器初始化mov 41h,#08hmov 42h,#00hmov 43h,#09hmov 44h,#00h ;存放转换后数字的高位mov 45h,#00h ;存放转换后数字的低位LOOP1: MOV R7,#40VI: LCALL DISPLAYDJNZ R7,VImov a,#00hmov dptr,#0a000hmovx @dptr,a ;0809AD的通道开始转换mov r7,#0fhloop2: djnz r7,loop2movx a,@dptr ;读取转换结果mov r0,#45h ;拆字lcall ptdssjmp loop1ptds: mov r1,alcall ptds1mov a,r1swap aptds1: anl a,#0fhmov @r0,adec r0retDelay:mov r7, #0 ; 延时子程序DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDISPLAY:setb 0d3hmov r0, #LEDBufmov r1, #6 ; 共6个八段管mov r2, #00100000b ; 从左边开始显示Loop:mov dptr, #OUTBITmov a, #00hmovx @dptr, a ; 关所有八段管mov a, @r0mov dptr,#LEDmapmovc a,@a+dptrmov B, #8 ; 送164DLP:rlc amov r3, amov acc.0, canl a,#0fdhmov dptr, #DAT164movx @dptr, amov dptr, #CLK164orl a,#02hmovx @dptr, aanl a,#0fDhmovx @dptr, amov a, r3djnz B, DLPmov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管mov r6, #1call Delaymov a, r2 ; 显示下一位rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, aclr 0d3h ; 关所有八段管retLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07hdb 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hEND10、实验思考:1、试编写循环采集8路模拟量输入A/D转换程序。
模数转换及AD0809
EOC
D0 三态 输出 锁存器 · ·
地址 锁存与 译码
VR(+) VR(-)
D7
OE
2
2013-8-15
AD0809工作时序
2013-8-15
3
工作原理——采集通道选择
8路模拟量开关模块输入端为IN0—IN7,可以分别连接8路单
sbit CLOCK = P2^3;
#define ADCDATA P1;
从P2.3口输出500KHz
时钟脉冲信号 P1口与AD转换输出相连
2013-8-15
8
程序设计——初始化AD操作:
启动AD无效、AD转换输出为高阻无输出。 通过ALE选通模拟输入通道
() { START=0; OE = 0; _nop_(); ALE = 0; _nop_(); _nop_(); _nop_(); ALE = 1; _nop_(); _nop_(); _nop_(); ALE = 0; _nop_(); _nop_(); _nop_(); }
模数转换芯片AD0809简介
ADC0809是8通道8位的逐次逼近式模数转换芯片
内部由八路模拟量开关、通道地址锁存译码电
路、8位A/D转换器和三态数据输出锁存器组成,
能够分时对8路模拟量信号进行转换. 转换输出端具有三态数据输出锁存功能,便于 各种微处理器进行接口。
2013-8-15
1
ADC0809内部结构
2013-8-15
9
程序设计——启动AD转换
2013-8-15
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); /*显示开及光标设置*/}。
微机原理综合性实验报告-AD转换器ADC0809数字温度计设计
微机原理与汇编语言综合性实验报告实验项目名称:A/D转换器 ADC0809数字温度计设计实验目的:掌握A/D转换原理,掌握0809A/D转换芯片的硬件电路和软件编程。
实验要求:包括开发环境要求,技术文档要求两部分。
开发环境要求:软件环境:windows98/windowsXP/windows2000,QTH-8086B环境硬件环境:计算机(Pen4CPU, 256MRAM,60G以上硬盘,输入输出设备)技术文档要求:按照实验报告编写要求进行。
要求软、硬件功能描述清晰,实验总结深刻。
实验内容:1 、实验原理图1 电路原理图本实验采用 ADC0809 做 A/D 转换实验。
ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为±1/512,适用于多路数据采集系统。
ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
图中ADC0809的CLK信号接CLK=2.385MHZ,基准电压Vref(+)接Vcc。
一般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、START、ENABLE信号。
ADC0809的转换结束信号EOC未接,如果以中断方式实现数据采集,需将EOC信号线接至中断控制器8259A的中断源输入通道。
本实验以延时方式等待A/D转换结束,ADC0809的通道号选择线ADD-A、ADD-B、ADD-C 接系统A/D转换器ADC0809数字温度计设计数据线的低3位,因此ADC0809的8个通道值地址分别为00H、01H、02H、03H、04H、05H 、06H、07H。
启动本A/D转换只需如下三条命令:MOV DX,ADPORT ;ADPORT为ADC0809端口地址。
MOV AL,DATA ;DATA为通道值。
MOV DX, AL ;通道值送端口。
AD0809中文资料
ADC0809中文资料ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
(1)ADC0809的内部逻辑结构由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
(2).ADC0809引脚结构ADC0809各脚功能如下:D7-D0:8位数字量输出引脚。
IN0-IN7:8位模拟量输入引脚。
VCC:+5V工作电压。
GND:地。
REF(+):参考电压正端。
REF(-):参考电压负端。
START:A/D转换启动信号输入端。
ALE:地址锁存允许信号输入端。
(以上两种信号用于启动A/D转换).EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:输出允许控制端,用以打开三态数据输出锁存器。
CLK:时钟信号输入端(一般为500KHz)。
A、B、C:地址输入线。
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为转换启动信号。
AD0809
ADC0808 ADC0809版权归三毛电子 不得盗版传播 /8位uP 兼容A/D 转换器,8通道复用ADC0808/ADC0809一般描述:ADC0808,ADC0809数据获取器件集成了一个8位的模/数转换器,8通道复用器以及微处理器兼容控制逻辑。
这个8位的A/D 转换器采用了连续逼近的转换技术。
这个转换器具有一个高阻抗稳定的断续比较器,以及一个带有模拟开关树的256欧的分压器,一个连续逼近电阻。
8通道的复用器能直接获取8个单一模拟信号的任何一个。
这个器件不需要外部的0和全量程调节。
依靠锁存和解码复用器地址输入以及锁存TTL 三态输出,这个器件提供与微处理器很方便的接口。
ADC0808和ADC0809采用了几种A/D 转换技术的各自最大优点来优化的。
ADC0808和ADC0809提供了高速,高精度,低温漂,优秀的长期精度和可重复性,低功耗特性。
这些特性使得这个器件对于消费者处理和控制机器以及汽车电子应用上十分理想的选择。
对于具有相同输出(采样/保持端口)的16通道复用器的器件,请参考ADC0816的数据手册。
特性:×跟所有微处理器接口很容易×比例制的操作或带有5V DC 或者可调节参考电压范围的模拟范围×不需要调节0和全量程×用地址逻辑来区分的8通道复用×单电源5V 供电,0V ~5V 输入范围×输出符合TTL 电压声明×标准密封或浇注的28脚DIP 封装×ADC0808跟MM74C949可替换×ADC0809跟MM74C949-1可替换关键说明:×精度 8位×完全不可调节误差 ±1/2LSB 和±1LSB ×单电源供电 5V DC×低功耗 15mW×转换时间 100us方框图:ADC0808 ADC0809版权归三毛电子 不得盗版传播 /管脚分布:定购信息:ADC0808 ADC0809版权归三毛电子 不得盗版传播 /最大绝对值范围(注释1,2):假如军用或航空应用,需要特别的说明,请自己联系国家半导体公司销售部。
AD0809中文资料和单片机电路及程序-推荐下载
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看与全22过,22度并22工且22作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
AD0809及有关资料
1.6 A/D转换器的转换精度A/D转换器中采用分辨率和转换误差来描述转换精度。
分辨率以输出二进制或十进制的为数表示,它说明A/D转换器对输入信号的分辨能力。
N位二进制数字输出的A/D转换器应能区分输入模拟电压的个不同等级大小,能区分输入电压的最小差异为1/FSR。
转换误差通常以输出误差最大值的形式给出,它表示实际输出的数字量和理论上应有的输出数字量之间的差别,一般多以最低有效位的倍数给出。
例如给出转换误差<±1/2LSB,这就表明实际输出的数字量和理论上应得到的输出数字量之间的误差小于最低有效位的半个字。
还应指出,手册上给出的转换精度都是在一定的电源电压和环境温度下得到的数据,如果这些条件改变了,将引起附加的转换误差。
因此,为获得较高的转换精度,必须保证供电电源有很好的稳定度,并限制环境温度的变化。
1.7 A/D转换器的转换速度A/D转换器的转换速度主要决定于转换电路的类型,不同类型A/D转换器的转换速度相差甚为悬殊。
并联比较型A/D转换器的转换速度最快。
例如8位二进制输出的单片集成A/D转换器转换时间可以缩短至50ns以内。
逐次渐进型A/D转换器次之。
多数在10-100μs之间。
个别的可以不超过1μs。
间接型的转换速度最低。
目前使用的双积分型A/D转换器转换时间多数在数十毫秒至数百毫秒之间。
2.1 ADC0809的结构ADC0809采用逐次逼近法驱动电路,并自带了寄存器,可以不附加取样保持电路,因为比较器和寄存器这两部分兼有取样保持功能。
其引脚如图2.1.1所示,其主要的技术指标如下:电源电压 6.5V分辨率8位时钟频率640kHz转换时间100μs未经调整误差1/2LSB和1LSB模拟量输入电压范围0-5V功耗15mW图2.1.1 ADC0809芯片引脚图ADC0809通过引脚IN0,IN1,…,IN7可输入8路单边模拟输入电压。
ALE 将3位地址线ADDA,ADDB,ADDC进行锁存,然后由译码与对应通道的关系如表2-1所示通过运用ADC0809的A/D转换功能对一组8个模拟输出的信号源进行选择,并输出相应的数字信号,同时通过FPGA作为控制和显示模块,在数码管中显示由8位数字信号译码后的模拟值,并通过发光二极管,显示8位数字信号。
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 BA选择得通道000IN0 001IN1010IN2 011IN3 100IN4数字量输出及控制线:11条ST为转换启动信号。
当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。
EOC为转换结束信号。
当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。
OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到得数据。
OE=1,输出转换得到得数据;OE=0,输出数据线呈高阻状态。
D7-D0为数字量输出线。
CLK为时钟输入信号线。
因ADC0809得内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。
ADC0809中文资料
1.主要特性 1)8 路 8 位 A/D 转换器,即分辨率 8 位。 2)具有转换起停控制端。 3)转换时间为 100μ s 4)单个+5V 电源供电 5)模拟输入电压范围 0~+5V,不需零点和满刻度校准。 6)工作温度范围为-40~+85 摄氏度 7)低功耗,约 15mW。 2.内部结构 ADC0809 是 CMOS 单片型逐次逼近式 A/D 转换器,内部结构如图 13.22 所示,它由 8 路模拟开关、地址锁存与译码器、比较器、8 位开关树型 D/A 转换器、逐次逼近 3.外部特性(引脚功能) ADC0809 芯片有 28 条引脚,采用双列直插式封装,如图 13.23 所示。下面说明各引脚 功能。 IN0~IN7:8 路模拟量输入端。 2-1~2-8:8 位数字量输出端。 ADDA、ADDB、ADDC:3 位地址输入线,用于选通 8 路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START: A/D 转换启动信号,输入,高电平有效。 EOC: A/D 转换结束信号,输出,当 A/D 转换结束时,此端输出一个高电平(转换期 间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当 A/D 转换结束时,此端输入一个高电
平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于 640KHZ。 REF(+)、REF(-):基准电压。 Vcc:电源,单一+5V。 GND:地。 ADC0809 的工作过程是:首先输入 3 位地址,并使 ALE=1,将地址存入地址锁存器中。 此地址经译码选通 8 路模拟输入之一到比较器。START 上升沿将逐次逼近寄存器复位。下降 沿启动 A/D 转换,之后 EOC 输出信号变低,指示转换正在进行。直到 A/D 转换完成,EOC 变为高电平,指示 A/D 转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当 OE 输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。
AD0809详解
们重在实际制做,太罗嗦的内容我就不说了,只讲些跟制做有关的最精炼的知识。
ADC0809是可以将我们要测量的模拟电压信号量转换为数字量从而可以进行存储或显示的一种转换IC。
下面是它的管脚图和逻辑图:管脚功能说明:IN0-IN7:模拟量输入通道。
就是说它可以分时地分别对八个模拟量进行测量转换。
ADDA-C:地址线。
也就是通过这三根地址线的不同编码来选择对哪个模拟量进行测量转换。
ALE:地址锁存允许信号。
在低电平时向ADDA-C写地址,当ALE跳至高电平后ADDA-C上的数据被锁存START:启动转换信号。
当它为上升沿后,将内部寄存器清0。
当它为下降沿后,开始A/D转换。
D0-D7:数据输出口。
转换后的数字数据量就是从这输出给S52的。
OE:输出允许信号,是对D0-D7的输出控制端,OE=0,输出端呈高阻态,OE=1,输出转换得到的数据。
CLOCK:时种信号。
ADC0809内部没有时钟电路,需由外部提供时钟脉冲信号。
一般为500KHzEOC:转换结束状态信号。
EOC=0,正在进行转换。
EOC=1,转换结束,可以进行下一步输出操作REF(+)、REF(-):参考电压。
参考电压用来与输入的模拟量进行比较,作为测量的基准。
一般REF(=)=5v REF(-)=0V。
下面我先给出ADC0809的时序图再说说它的工作过程:它的工作过程是这样的,①在IN0-IN7上可分别接上要测量转换的8路模拟量信号。
有人问了,可不可以只接一路?我就只想测一个模拟信号。
当然可了②将ADDA-ADDC端给上代表选择测量通道的代码。
如000(B)则代表通道0;001(B)代表通道1;111则代表通道7。
③将ALE由低电平置为高电平,从而将ADDA-ADDC送进的通道代码锁存,经译码后被选中的通道的模拟量送给内部转换单元。
④给START一个正脉冲。
当上升沿时,所有内部寄存器清零。
下降沿时,开始进行A/D转换;在转换期间,START保持低电平。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P1=ledcod[ior];
P0=0xdf;
x++;
}
break;
default:
break;
}
}
#include<reg52.h>
unsigned char t,m,s,x,ior; //电子表的各个位信号 x显示字位置控制
unsigned int foat,i; // 6位有效数字eg:4.56845
unsigned char ior;
unsigned char a[5]={0,0,0,0,0}; //注意5个数数组内是5而不是4
OE=0; //输出数据线呈高阻状态
}
}
}
/*****************************************************/
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 2
{
i++;
CLK=~CLK; //为AD转换提供时钟周期 0.05ms 20khz
{
ior=foat-10000*a[0]-1000*a[1]-100*a[2]-10*a[3]; //6
P1=ledcod[ior];
a[4]=ior;
P0=0xef;
x++;
}
break;
case 5:
{
void display(unsigned char num)
{
switch(num)
{
case 0:
{
ior=foat/10000; //3
a[0]=ior;
P1=ledcod1[ior];
P0=0x7e;
x++;
start=0;
}
delay(8); //转换时间为20us
if(EOC==1) //查询高电平的到来。转换完毕AD0809的EOC会输出一个高电平
{
OE=1; //打开--将数据发出到单片机的P2口
delay(2);
foat=P2*196;
}
break;
case 1:
{
ior=(foat-10000*a[0])/1000;
P1=ledcod[ior];
a[1]=ior; //5
P0=0xfd;
x++;
}
break;
{
while(i--);
}
/********************主函数************************/
main()
{
x=0;
P2=0xff; //P2口工作于读,所以先写1,阻断内部的cmos
EOC=1; //
Init_Timer0();
sbit start=P3^4; //启动AD
sbitHale Waihona Puke OE=P3^1; //启动输出数据
sbit EOC=P3^3; //转换结束
sbit CLK=P3^0; //AD始终模拟
code unsigned char ledcod[]={0x7e,0x12,0xbc,0xb6,0xd2,0xE6,0xee,0x32,0xfe,0xf6};
case 2:
{
ior=(foat-10000*a[0]-1000*a[1])/100;
P1=ledcod[ior];
a[2]=ior; //3
P0=0xfb;
x++;
}
break;
case 3:
AD0809的工作频范围为10KHZ-1280KHZ,当频率范围为500KHZ时,其转换速度为128us
飞翔的雄鹰-----2010.11.27
电路连接为直通型,a,b,c直接接地,选择模拟输入0通道
---------------------------------------------------------------------------*/
code unsigned char ledcod1[]={0x7f,0x13,0xbd,0xb7,0xd3,0xE7,0xef,0x33,0xff,0xf7};//带小数点的字形码
/*------------------------------------------------
定时器初始化子程序
if(i==80) //每0.05ms*50=2.5ms 调用一次显示
{
i=0;
if(x==6)
{ x=0;}
display(x);
}
}
TR0=1;
}
/*--------------------------------------------------
显示子程序
---------------------------------------------------*/
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |=0x02;
TH0=0xd1;
TL0=0xd1; //定时0.05ms
EA=1;
ET0=1;
while(1)
{
if(i==79) //开始的时候这里没加采样时间(79*0.05=3.94ms),导致始终无法采样到信号
{
delay(8000); //为了使数码管的数字让人眼能够分辨。增加了这个延时
start=0;
start=1; //AD在上升沿复位,在下降沿开始转换(ST端给出一个至少有100ns宽的正脉冲信号 )
{
ior=(foat-10000*a[0]-1000*a[1]-100*a[2])/10;
P1=ledcod[ior];
a[3]=ior; //1
P0=0xf7;
x++;
}
break;
case 4:
/*-----------------------------------------------------
延时函数
------------------------------------------------------*/
void delay(unsigned int i)