模拟量输入与输出

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

被测 控的 对象
传感器
采样保持
开关控制部件
A/D
单片 微机 应用 系统
模拟执行部件
D/A
图8-1 单片机应用系统
一 、A/D转换原理与接口
1 A/D转换器常用芯片简介 A/D转换器就是将模拟信号转换为数字信号得器件,种类繁
多,性能各异。与单片机得接口形式也不尽相同,但大致分为并 行接口和串行接口两种。
时钟频率高,A/D转换速度快。允许范围为10~1280KHz 。 通常由80C51 ALE端直接或分频后与0809 CLK端相连接。 ⑷ D0~D7:数字量输出端。 ⑸ OE:A/D转换结果输出允许控制端。 OE=1,允许将A/D转换结果从D0~D7端输出。通常由80C51得端与0809片选端(例如P2、0) 通过或非门与0809 OE端相连接。 ⑹ ALE:地址锁存允许信号输入端。
0809 ALE信号有效时将当前转换得通道地址锁存。 ⑺ START:启动A/D转换信号输入端。
当START端输入一个正脉冲时,立即启动0809进行A/D转换。START端与ALE端连在一 起,由80C51WR与0809片选端(例如P2、0)通过或非门相连。 ⑻ EOC:A/D转换结束信号输出端,高电平有效。 ⑼ UREF(+)、UREF(-):正负基准电压输入端。 ⑽ Vcc:正电源电压(+5V)。GND:接地端。
图8-6 ADC0832与单片机接口
[例2] 设图8-6接口电路用于一个模拟量输入得检测系统。Ui为待转换 得模拟输入电压,要求对Ui连续采样10次,每次采样值经串行A/D转换 电路(ADC0832)转换成数字量,并按顺序依次存于片内RAM得 30H~39H单元中。采样完10次后停止。
C语言数据采集串行A/D转换参考程序: #include<reg51、h> //包含单片机特殊功能寄存器得头文件 #define uchar unsigned char //定义uchar为无符号字符数据类型 static uchar data x[10]; //定义10个单元得数组,存放结果 sbit CS=P3^4; //将CS位定义为P3、4引脚 sbit CLK=P1^0; //将CLK位定义为P1、0引脚 sbit DIO=P1^1; //将DIO位定义为P1、1引脚 unsigned char A_D() //A_D转换函数。功能:将模拟信号转换成数字信 号
//指向下一个通道
if (i<8)
//判循环8次否
{
*ad_adr=i; //8个通道未转换完,启动下一个通道返回
}
else
{
EA=0;
//8个通道转换完,关中断返回
EX0=0;
}
}
2、ADC0832图8-3 ADC0832引脚
ADC0832就是一种具有串行接口得8位分辨率、双通道 A/D转换芯片。具有体积小、兼容性强、性价比高等优点,应用 非常广泛。
*ad_adr=i;
//启动通道0转换
for (;;) {;}
//等待中断
}
大家有疑问的,可以询问和交流
可以互相讨论下,但要小声点
void int_adc(void) interrupt 0 //中断函数
{
x[i]=*ad_adr;
//接收当前通道转换结果
i++;
//指向下一个单元
ad_adr++;
此时芯片开始转换工作,同时由单片机向芯片时钟输入端CLK输入时钟脉 冲,DO/DI端则使用DI端选择得输入通道。在第1个时钟脉冲得下降沿之前DI 端必须就是高电平,表示启动信号。在第2、3个脉冲得下降沿之前DI端应输入 2位数据用于选择通道功能。 当DI依次输入为1、0时,只对CH0 进行单通道转换。 当DI依次输入为1、1时,只对CH1进行单通道转换。 当DI依次输入为0、0时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行 输入。 当DI依次输入为0、1时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行 输入。
模拟量输入与输出
概述
需要把外界连续变化得物理量(如温度、压力、流量、速度), 通过传感器变成电信号,再将其变成数字量送入单片机内进行加 工处理。
也需要将单片机输出得数字量转为连续变化得模拟量,用以 控制调节一些执行机构,实现对被控对象得控制。
这种将模拟量转换为数字量得过程叫做模拟/数字(A/D)转换, 将数字量转换为模拟量得过程叫做数字/模拟(D/A)转换。实现这 种转换得器件,叫做模/数(A/D)转换器或数/模(D/A)转换器。 图8-1就是典型得具有模/数转换器和数/模转换器得单片机应用 系统。
表9-8 ADC0809通道地址选择表
C BA 000 001 010 011 100 101 110 111
选通得通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7
2) ADC0809与单片机得接口
图8-5就C0809得转换时钟由单片机得ALE提供。ADC0809得典型转换频率 为640KHz,ALE信号频率与晶振频率有关,如果晶振频率取12MHZ,则ALE 得频率为2MHZ,所以ADC0809得时钟端CLK与单片机得ALE端相接时,要 考虑分频。
main(void)
//主函数
{
unsigned char j,g=0; //设j,g为无符号字符变量,j用于及循环次
数,g用于数组。
unsigned int AD_val; //储存A/D转换后得值
for(j=0,j<10,j++) //
{
AD_val= A_D(); //
x[g]=AD_val
{
CLK=1; //第四个脉冲
CLK=0; //第四个脉冲下降沿 dat<<=1; //将下面储存得低位数据向右移 dat|=(unsigned char)DIO; //将输出数据DIO通过或运算储存在dat最低 位
} CS=1; return dat;
//片选无效 //将读出得数据返回
}
ADC0832时序图
{ unsigned char i,dat; //设i和det为无符号字符变量 CS=1; //一个转换周期开始 CLK=0; //为第一个脉冲作准备 CS=0; //CS置0,片选有效 DIO=1; //DIO置1,规定得起始信号 CLK=1; //第一个脉冲 CLK=0; //第一个脉冲得下降沿,此前DIO必须就是高电平 DIO=1; //DIO置1, 通道选择信号
uchar xdata *ad_adr;
//定义指向通道得指针
uchar i=0;
//定义变量i, 初值为0
void main(void)
//主函数,完成初始化
{
IT1=1;
// 外中断INT1为边沿触发
EX1=1;
//开INT1中断
EA=1;
//开CPU中断
ad_adr=&IN0;
//指针指向通道0
图8-5 ADC0809与80C51接口
ADC0809 A/D转换应用举例
[例1]设图8-5接口电路用于一个8路模拟量输入得巡回检测 系统,使用中断方式采样数据,把采样转换所得得数字量按顺 序依次存于片内RAM得30H~37H单元中。采样完一遍后停 止。其数据采集得初始化程序和中断服务程序如下:
C语言参考程序:
CLK=1; //第二个脉冲,第2、3个脉冲下降之前,DI必须分别输入两位数据 用于选择//通道,这里选通道CH0
CLK=0; //第二个脉冲下降沿 DIO=0; //DI置0,选择通道0 CLK=1; //第三个脉冲 CLK=0; //第三个脉冲下降沿 DIO=1; //第三个脉冲下降沿之后,输入端DIO失去作用,应置1 CLK=1; //第四个脉冲 for(i=0;i<8;i++) //高位在前
//
g++;
}
}
8、2 D/A转换器接口
1、 DAC转换芯片介绍
D/A转换器就是将数字量转换为对应得模拟量得器件,也有 很多种类。 以DAC0832为例介绍D/A转换器得结构和使用方法。
DAC0832得引脚及功能 DAC0832就是一个8位D/A转换器。单电源供电,从+5V~
+15V均可正常工作。基准电压得范围为±10V;电流建立时间为 1μs;CMOS工艺,低功耗20 mW。 DAC0832为20引脚,双列直插式封装,其引脚排列如图8-7所示。
图8-6就是ADC0832与AT89C51单片机得接口连接图。正常情况下ADC0832与 单片机得接口应有4条线,分别就C是S 、CLK、DO、DI。但由于DO端(数据信号输入, 选择通道控制)与DI端(数据信号输出,转换数据输出)在通信时并未同时有效,并与单片 机得接口就是双向得,所以电路设计时可以将DO和DI并联在一根线上使用。 ADC0832有2个模拟输入通道,CH0为模拟输入通道0,CH1为模拟输入通道1,由DI端选 择输入通道。当要进行A/D转换时,片选信号 必须C置S 为低电平,并且保持低电平直到 转换完全结束。同时由单片机向芯片时钟输入端CLK输入时钟脉冲。
#include <reg51、h>
//包含特殊功能寄存器库
#include <absacc、h>
//包含定义绝对地址访问库
#define uchar unsigned char //定义uchar为无符号字符数据
类型
#define IN0 XBYTE[0x0000] //定义IN0为通道0得地址
static uchar data x[8]; //定义8个单元得数组,存放结果
8051单片机通过地址线P2、0和读写控制线、来控制模拟输入通道地址 锁R存D W、R 启动和输出允许。
模拟输入通道地址得译码输入A、 B、C由P0、0~P0、2提供,因 ADC0809具有通道地址锁存功 能,P0、0~P0、2不需锁存。根 据P2、0和P0、0~P0、2得连接 方法,8个模拟输入通道IN0~IN7 得地址依次为FEF8H~FEFFH。
作为单通道模拟信号输入时,ADC0832得输入电压Vi得范围就是0~5V。 当输入电压Vi=0时,转换后得值VAL=0x00;而当Vi=5V时,转换后得值 VAL=0Xff,即十进制数得255。所以转换后得输出值(数字量D)为:
D 255 ×V 5
式中,D为转换后得数字量;V为输入得模拟电压。
2) ADC0832与单片机得接口
ADC0832引脚功能如下:
CS片选使能,低电平芯片使能。 CH0 模拟输入通道0,或作为IN+/-使用。 CH1 模拟输入通道1,或作为IN+/-使用。 GND 芯片参考0 电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据信号输出,转换数据输出。 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)。
DI0~DI7:8位数据输入端。 ILE:输入数据允许锁存信号,高电平有 效。
CS :片选端,低电平有效。 WR1 :输入寄存器写选通信号,低电平 有效。
WR2 :DAC寄存器写选通信号,低电平 有效。
XFER :数据传送信号,低电平有效。
ADC0832就是8引脚双列直插 式双通道A/D转换器。5V电源供电, 输入电压在0~5V之间,工作频率为 250KHZ,转换时间为32μS,一般功耗 仅为15mW。引脚排列如图8-3所示。 她能分别对两路模拟信号实现模/数 转换,可以在单端输入方式和差分输 入方式下工作。
图8-3 ADC0832引脚
正常情况下ADC0832 与单片机得接口应有4条线,分别就是CS 、 CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效,并与单片机 得接口就是双向得,所以电路设计时可以将DO和DI 并联在一根线上使用。 当ADC0832不工作时,其CS 输入端应为高电平,此时芯片禁用,CLK 和 DO/DI 得电平可任意。当要进行A/D转换时,须先将 CS置于低电平并且保 持低电平直到转换完全结束。
1)ADC0809 ADC0809具有8路模拟量输
入,可在程序控制下对任意通道进 行A/D转换,输出8位二进制数字 量。与单片机之间就是并行通信。 其内部逻辑结构和引脚如图8-2 所示。
ADC0809得引脚功能 ⑴ IN0~IN7:8路模拟信号输入端。 ⑵ C、B、A:8路模拟信号转换选择端。 低8位地址中A0~A2连接。由A0~A2地址000~111选择IN0~IN7八路A/D通道。 ⑶ CLK:外部时钟输入端。
相关文档
最新文档