任务十一 AD转换接口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
➢ 启动AD转换:使START/ALE有效
//定义指向通道3的外部指针变量
unsigned char xdata *ADIN3 = 0xfefb;
… *ADIN3 = 0;
//向通道3发写命令,启动AD转换
➢ 等待转换结束:
▪ 软件延时方式:等待约100uS
▪ 查询方式:检查EOC是否为高电平
▪ 中断方式:开外部1中断,转换结束进入中断服务子函数
➢ 转换时间/转换速率:完成一次AD转换所需的时间(转 换速率是其倒数)。
积分型AD的转换时间是ms级属低速AD,逐次比较型AD是us级属中 速AD,并行型AD可达到ns级属高速AD 。
➢ 转换精度:实际ADC结果与理想ADC结果的差值。可用
相对误差或绝对误差表示。
概述
ADC的种类:
➢ 逐次比较型:精度、速度、价格适中,但抗干扰能力不 强,应用范围较广。
➢ VREF+、VREF-: 参考电压正、负端,一般
连接+5V和0V,此连接 决定模拟信号输入范围;
➢ VCC/GND:电源的正、 负端
ADDC
ADDB
ADDA
选择的 通道
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
ADC0809转换时序
ADC0809的结构
➢ 通道地址送到ADDCADDA输入端;
➢ ALE加正脉冲,通道地 址锁存;START加负 脉冲,A/D转换开始;
➢ 当EOC由低变高时, A/D转换结束;
➢ OE加一个高电平,内 部三态缓冲器打开, 变换后的数字量出现 在D0-D7数据线上。
ADC0809与单片机的接口
ALAELE P0
80C51
➢ 双积分型:转换精度高,抗干扰能力强,价格便宜,但 速度慢,主要用于数字仪表。
➢ 并行型:转换速度快,价格高,应用于高速数字系统 。
ADC0809的结构
ADC0809: 8路模拟输入,8位逐次比较型ADC
D7 ~ D0
输入切换
A/D转换
输出接口
ADC0809的结构
与单片机相连的引脚
➢ D7-D0:AD转换的三态数据输出线; ➢ ADDC、ADDB、ADDA :通道选择输入线; ➢ ALE:地址锁存允许,上升沿锁存地址信息; ➢ CLK:转换时钟,10KHz~1200KHz,典型640KHz,转换
}
}
ADC0809的编程
中断方式:
#include <reg51.h>
unsigned char xdata *ADIN3=0xfefb;
unsigned char data ad_data;
unsigned char data *point=0x60;
void main(void)
模拟量只有转换成数字量才能被单片机采集,分析和计算。
电信号 非电信号 传感器
A/D
单片机
D/A
模拟量输出 数字量输出
概述
ADC:将模拟量转换成数字量的器件。 衡量ADC性能的主要参数:
➢ 分辨率:输出数字量变化一个相邻的值所对应的输入 模拟量的变化值。
通常以AD转换后数字信号的位数来表示,有8位、10位、12位等。
}
}
ADC0809的编程
查询方式:
# include <reg51.h>
sbit AD_EOC=P3^2;
//EOC通过非门接/INT0引脚
unsigned char xdata *ADIN3=0xfefb;
unsigned char data ad_data;
unsigned char data *point=0x60;
时间约为100uS。一般由MCS51单片机ALE引脚,再经过 分频产生符合要求的时钟信号; ➢ START:启动转换(负脉冲); ➢ EOC:转换结束,转换结束后EOC输出一个宽为8个CLK 周期的正脉冲; ➢ OE:输出允许,高电平时从D7-D0送出数据。
ADC0809的结构
与外设相连的引脚
➢ IN0~IN07:8路模拟量 输入线;
任务十一 A/D转换接口
任务分析:用ADC0809扩展A/D转换接口
(简易数字电压表)
硬件
➢ ADC0809的结构 ➢ ADC0809与单片机的接口方法
软件
➢ ADC0809的地址计算和编程
编译、下载、调试
➢ 编译软件:keil、Proteus
概述
模拟量
① 电信号; ② 非电信号
传感器
电信号
INT0 WR
P2.0 RD
D
Q
CLK Q
ADC0809
CLK
G 273
8 D0
Q0
IN0 ADDA
~ ~
~
Q1
ADDB
D7
Q2
ADDC IN7
74HC373
8
D0
+5V
D7
VCC
11 EOC
VREF+
1
START
ALE
VREF-
1
OE
GND
ADC0809与单片机的接口电路图
ADC0809的编程
基本过程
void main(void)
{
while(1)
{
*ADIN3 = 0;
//向通道3发写命令,启动AD转换
while(AD_EOC == 1); //等待AD转换结束
ad_data = *ADIN3; //读取该通道AD转换结果
*point = ad_data ; //AD转换结果存入内存60H单元
ADC0809的编程
void main(void)
{
while(1)
{
*ADIN3 = 0;
//向通道3发写命令,启动AD转换
Delay(100);
//延时100us左右
ad_data = *ADIN3; //读取该通道AD转换结果
*point = ad_data ; //AD转换结果存入内存60Hwenku.baidu.com元
➢ 读取AD转换结果:使OE有效
unsigned char data ad_data;
... ad_data = *ADIN3 ; //向该通道发读命令
ADC0809的编程
例:已知模拟电压由ADC0809的通道IN3输入,编程读
取AD转换后的数字量,并存入内部RAM的60H单元。
软件延时方式:
# include <reg51.h> unsigned char xdata *ADIN3=0xfefb; unsigned char data ad_data; unsigned char data *point=0x60; void Delay(unsigned int Delay) { for( ;Delay>0;Delay--) ; }