第八章 mcs-51 与 d/a 、 a/d 的接口

24
第第第 MCS-51 第 D/A A/D 第第第 第第第 MCS-51 第 D/A A/D 第第第 8.1 MCS-51 第第第第 ADC 第第第 8.1.1 A/D 转转转转转 一. A/D 第第第第第第第第第 A/D 转转转ADC 转转转转转转转转转转转转转转转 转转转转转转转转转转转 ),。 转转转转转转转转转转转转转转转转转 转转转转转转转转 A/D 转转转转转 转转转 转转 转转转转转转转转转 转转 转转转转转转转转 转转 ,一,, A/D 转转转转转转转转转转转转转转转转 A/D 转 转转 转转转转转转 转转转转转转转转转 、、 A/D 转转转转 转转转转转转转转转转 A/D 转转转转转转 A /D 转转转 转转转转转转转转 4~16 转转 A/D 转转转转转1 第第第 A/D 第第第 转转转 A/D 转转转转 D/A 转转转 转转转转转转转转转转 转转转转 转转转转转转转转转转 、,,, 转转 转转转转 转转转转转 一, D/A 转转转转转转转 转转转转转转转转转转转转转转转转转转转转转转转转转转转 ,,

Upload: stacia

Post on 19-Jan-2016

110 views

Category:

Documents


0 download

DESCRIPTION

第八章 MCS-51 与 D/A 、 A/D 的接口. 8.1 MCS-51 单片机与 ADC 的接口. 8.1.1 A/D 转换器概述. 一. A/D 转换器的类型及原理. A/D 转换器( ADC )的作用是把模拟量转换成数字量,以便于计算机进行处理。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

8.1 MCS-51 单片机与 ADC 的接口

8.1.1 A/D 转换器概述

一. A/D 转换器的类型及原理 A/D 转换器( ADC )的作用是把模拟量转换成数字量,以

便于计算机进行处理。 随着超大规模集成电路技术的飞速发展,现在有很多类型的

A/D 转换器芯片,不同的芯片,它们的内部结构不一样,转换原理也不同,各种 A/D 转换芯片根据转换原理可分为计数型 A/D 转换器、逐次比较式、双重积分型和并行式 A/D 转换器等;按转换方法可分为直接 A/D 转换器和间接 A/D 转换器;按其分辨率可分为 4~16 位的 A/D 转换器芯片。

1 .计数型 A/D 转换器 计数型 A/D 转换器由 D/A 转换器、计数器和比较器组成,工作时,计数器由零开始计数,每计一次数后,计数值送往 D/A 转换器进行转换,并将生成的模拟信号与输入的模拟信号在比较器内进行比较,

Page 2: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

若前者小于后者,则计数值加 1 ,重复 D/A 转换及比较过程,依此类推,直到当 D/A 转换后的模拟信号与输入的模拟信号相同,则停止计数,这时,计数器中的当前值就为输入模拟量对应的数字量。这种 A/D 转换器结构简单、原理清楚,但它的转换速度与精度之间存在矛盾,当提高精度时,转换的速度就慢,当提高速度时,转换的精度就低,所以在实际中很少使用。

2 .逐次逼近型 A/D 转换器 逐次逼近型 A/D 转换器是由一个比较器、 D/A 转换器、寄存器及控制电路组成部分。与计数型相同,也要进行比较以得到转换的数字量,但逐次逼近型是用一个寄存器从高位到低位依次开始逐位试探比较。转换过程如下:开始时寄存器各位清 0 ,转换时,先将最高位置 1 ,送 D/A 转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则 1 保留,如果转换的模拟量比输入模拟量大,则 1 不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的数字量。一个 n 位的逐次逼近型 A/D 转换器转换只须要比较 n 次,转换时间只取决于位数和时钟周期。逐次逼近型 A/D 转换器转换速度快,在实际中广泛使用。

Page 3: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

双重积分型 A/D 转换器将输入电压先变换成与其平均值成正比的时间间隔,然后再把此时间间隔转换成数字量,它属于间接型转换器。它的转换过程分为采样和比较两个过程。采样即用积分器对输入模拟电压进行固定时间的积分,输入模拟电压值越大,采样值越大,比较就是用基准电压对积分器进行反向积分,直至积分器的值为 0 ,由于基准电压值固定,所以采样值越大,反向积分时积分时间越长,积分时间与输入电压值成正比,最后把积分时间转换成数字量,则该数字量就为输入模拟量对应的数字量。由于在转换过程中进行了两次积分,因此称为双重积分型。双重积分型 A/D 转换器转换精度高,稳定性好,测量的是输入电压在一段时间的平均值,而不是输入电压的瞬间值,因此它的抗干扰能力强,但是转换速度慢,双重积分型 A/D 转换器在工业上应用也比较广泛。

3 .双重积分型 A/D 转换器

二. A/D 转换器的主要性能指标1 .分辨率

2 .转换时间3 .量程

4 .转换精度

Page 4: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

8.1.2 ADC0809 与 MCS-51 的接口

一. ADC0809 芯片ADC0809 是 CMOS 单片型逐次逼近型 A/D 转换器,具有 8 路模拟量输入通道,有转换起停控制,模拟输入电压范畴为 0~+5V ,转换时间为 100s ,它的内部结构如图所示。

IN0IN1IN2IN3IN4IN5IN6IN7

ADDAADDBADDCALE

通道选择开关

地址锁存和译码

定时和控 制

逐次逼近寄存器 SAR 8 位

三 态锁 存缓冲

器DAC

OE

EOC

CLOCK START

VCC GNDVREF+

VREF-

ADC0809

D0D1D2D3D4D5D6D7

Page 5: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

二. ADC0809 的引脚

ADC0809 芯片有 28 个引脚,采用双列直插式封装,如图。

IN3

IN4

IN5

IN6

IN7

START

EOC

D3

OE

CLOCK

VCC

VREF+

GND

D1

IN2

IN1

IN0

ADDA

ADDB

ADDC

ALE

D7

D6

D5

D4

D0

VREF-

D2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

28

27

26

25

24

23

22

21

20

19

18

17

16

15

2

Page 6: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

其中:IN0~IN7 : 8 路模拟量输入端。D0~D7 : 8 位数字量输出端。ADDA 、 ADDB 、 ADDC : 3 位地址输入线,用于选择 8 路模

拟通道中的一路,选择情况见表。

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

ALE :地址锁存允许信号,输入,高电平有效。START : A/D 转换启动信号,输入,高电平有

效。

Page 7: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

EOC : A/D 转换结束信号,输出。当启动转换时,该引脚为低电平,当 A/D 转换结束时,该线脚输出高电平。

OE :数据输出允许信号,输入,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,输出锁存器的数据从 D0~D7 送出。

CLK :时钟脉冲输入端。要求时钟频率不高于 640KHZ.REF+ 、 REF- :基准电压输入端。Vcc :电源,接 +5V 电源。GND :地。

三. ADC0809 的工作流程

START/ALE 地址锁存

ADDA/B/C

EOC

OE

D0~D7

启动

转换结束

读取结果

D A T A

Page 8: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

ADC0809 的工作流程如图所示:

1.输入 3 位地址,并使 ALE=1 ,将地址存入地址锁存器中,经地址译码器译码从 8 路模拟通道中选通一路模拟量送到比较器。

2.送 START 一高脉冲, START 的上升沿使逐次逼近寄存器复位,下降沿启动 A/D 转换,并使 EOC 信号为低电平。

3.当转换结束时,转换的结果送入到输出三态锁存器,并使EOC 信号回到高电平,通知 CPU已转换结束。

4.当 CPU执行一读数据指令,使 OE 为高电平,则从输出端D0~D1读出数据。

四. ADC0809 与 MCS-51 单片机的接口

下图是一个 ADC0809 与 8051 的一个接口电路图。

1 .硬件连接

Page 9: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7

ALE

WR P2.7RD

INTO

+

+

+5V

GND

D0D1D2D3D4D5D6D7ADDAADDBADDCCLKALESTART

OE

EOC

IN0IN1IN2IN3IN4IN5IN6IN7

VREF+

VREF-

ADC0809

8051

分频器

2 .软件编程设接口电路用于一个 8 路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内 RAM 的 30H~37H 单元中。采样完一遍后停止采集。

Page 10: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口汇编语言编程:ORG 0003HLJMP INT0ORG 0100H ;主程序MOV R0 , #30H ;设立数据存储区指针MOV R2 , #08H ;设置 8 路采样计数值SETB IT0 ;设置外部中断 0 为边沿触发方式 SETB EA ; CPU 开放中断SETB EX0 ;允许外部中断 0 中断MOV DPTR , #0000H ;送入口地址并指向 IN0LOOP : MOVX @DPTR , A ;启动 A/D 转换, A 的值无意义HERE : SJMP HERE ;等待中断ORG 0200H ;中断服务程序INT0 : MOVX A , @DPTR ;读取转换后的数字量MOV @R0 , A ;存入片内 RAM 单元INC DPTR ;指向下一模拟通道INC R0 ;指向下一个数据存储单元DJNZ R2 , NEXT ; 8 路未转换完,则继续CLR EA ;已转换完,则关中断CLR EX0 ;禁止外部中断 0 中断RETI ;中断返回NEXT : MOVX @DPTR , A ;再次启动 A/D 转换RETI ;中断返回

Page 11: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

C语言编程:#include <reg51.h>#include <absacc.h> // 定义绝对地址访问#define uchar unsigned char#define IN0 XBYTE[0x0000] // 定义 IN0 为通道 0 的地址static uchar data x[8]; // 定义 8 个单元的数组,存放结果uchar xdata *ad_adr; // 定义指向通道的指针uchar i=0;void main(void){IT0=1; //初始化EX0=1;EA=1;i=0;ad_adr=&IN0; //指针指向通道 0*ad_adr=i; //启动通道 0 转换for (;;) {;} // 等待中断}

Page 12: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

void int_adc(void) interrupt 0 // 中断函数{x[i]=*ad_adr; // 接收当前通道转换结果i++;ad_adr++; //指向下一个通道if (i<8){*ad_adr=i; //8 个通道未转换完,启动下一个通道返回}else{EA=0;EX0=0; //8 个通道转换完,关中断返回}}

Page 13: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

8.2 MCS-51 单片机与 DAC 的接口

8.2.1 D/A 转换器概述

一. D/A 转换器的性能指标

1 .分辨率。 2 .精度3 .线性度 4 .温度灵敏度5 .建立时间

二. D/A 转换的分类

D/A 转换器的品种繁多、性能各异。按输入数字量的位数分: 8 位、10 位、 12 位和 16 位等;按输入的数码分:二进制方式和 BCD 码方式;按传送数字量的方式分:并行方式和串行方式;按输出形式分:电流输出型和电压输出型,电压输出型又有单极性和双极性;按与单片机的接口分:带输入锁存的和不带输入锁存的。下面介绍几种常用的 D/A 转换芯片。

Page 14: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

三. D/A 转换器与单处机的连接

1 .数据线的连接 D/A 转换器与单片机的数据线的连接主要考虑两个问题:一是位数,当高于 8 位的 D/A 转换器与 8 位数据总线的 MCS-51 单片机接口时, MCS-51 单片机的数据必须分时输出,这时必须考虑数据分时传送的格式和输出电压的“毛刺”问题;二是 D/A 转换器有无输入锁存器的问题,当 D/A 转换器内部没有输入锁存器时,必须在单片机与 D/A 转换器之间增设锁存器或 I/O 接口。

2 .地址线的连接 一般的 D/A 转换器只有片选信号,而没有地址线。这时单片机的地址线采用全译码或部分译码,经译码器输出来控制 D/A 转换器的片选信号,也可由某一位 I/O线来控制 D/A 转换器的片选信号。 3 .控制线的连接 D/A 转换器主要有片选信号、写信号及启动转换信号等,一般由单片机的有关引脚或译码器提供。

Page 15: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

8.2.2 MCS-51 与 8 位 DAC0832 的接口

一. DAC0832 芯片 DAC0832 是一种电流型 D/A 转换器,数字输入端具有双重缓冲功能,可以双缓冲、单缓冲或直通方式输入,它的内部结构如图。

DI0~DI7

ILE

CS

WR1

WR2

XFER

输入寄存器

DAC寄存器

D/A转换器

LE1 LE2

VREF

Rfb

IOUT1

IOUT2

AGND

VCC

DGND

DAC0832

Page 16: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

二. DAC0832 的引脚

DAC0832 有 20 引脚,采用双列直插式封装,如图所示。

CSWR1AGNDDI3DI2DI2DI0VREF RFB DGND

VCCILEWR2XFERDI4DI5DI6DI7IOUT1IOUT2

12345678910

20191817161514131211

其中:DI0~ DI7 ( DI0 为最低位): 8 位数字量输入

端。ILE :数据允许控制输入线,高电平有效。

:片选信号。 :写信号线 1 。

WR1

CS

Page 17: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

:写信号线 2 。 WR2

:数据传送控制信号输入线,低电平有效。 XFER

IOUT1 :模拟电流输出线 1 。它是数字量输入为“ 1” 的模拟电流输出端。

IOUT2 :模拟电流输出线 2 ,它是数字量输入为“ 0” 的模拟电流输出端,采用单极性输出时, IOUT2常常接地。

Rfb :片内反馈电阻引出线,反馈电阻制作在芯片内部,用作外接的运算放大器的反馈电阻。

VREF :基准电压输入线。电压范围为- 10V~+ 10V 。VCC :工作电源输入端,可接+ 5V~+ 15V 电源。AGND :模拟地。DGND :数字地。

三. DAC0832 的工作方式

DAC0832 有三种方式:直通方式、单缓冲方式和双缓冲方式。1 .直通方式:

Page 18: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

、 、 、 直接接地, ILE接电源, DAC0832工作于直通方式,此时, 8位输入寄存器和 8位 DAC寄存器都直接处于导通状态, 8位数字量到达 DI0~DI7,就立即进行 D/A转换,从输出端得到转换的模拟量。

WR1

WR2

CS XFER 当引脚

2 .单缓冲方式:

WR1

WR2

CS XFER 当连接引脚 、 、 、 ,使得两个锁存器的一个处于直通状

态,另一个处于受控制状态,或者两个被控制同时导通, DAC0832 就工作于单缓冲方式,例如下图就是一种单缓冲方式的连接

对于下图的单缓冲连接,只要数据 DAC0832写入 8 位输入锁存器,就立即开始转换,转换结果通过输出端输出。

Page 19: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

Vout

-

VCC

ILECS

WR1

DI0~DI7WR2 XFERDGND AGND

VREF

Rfb

IOUT1

IOUT2

+5V

-

-5V

-

-A+

-

P2.7

WR

P0.0~P0.7

8051

3 .双缓冲方式:

当 8 位输入锁存器和 8 位 DAC 寄存器分开控制导通时, DAC0832 工作于双缓冲方式,双缓冲方式时单片机对 DAC0832 的操作分两步,第一步,使 8 位输入锁存器导通,将 8 位数字量写入 8 位输入锁存器中;第二步,使 8 位 DAC 寄存器导通, 8 位数字量从 8 位输入锁存器送入8 位 DAC 寄存器。第二步只使 DAC 寄存器导通,在数据输入端写入的数据无意义。下图就是一种双缓冲方式的连接。

Page 20: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

P2.7P2.6WR

P0.0~P0.7 8051

Vout

-

VCC

ILECSXFERWR1WR2

DI0~DI7

DGND AGND

VREF

Rfb

IOUT1

IOUT2

+5V

-

-5V

-

-A+

-

四. DAC0832 的应用 D/A 转换器在实际中经常作为波形发生器使用,通过它可以产生各种各样的波形。它的基本原理如下:利用 D/A 转换器输出模拟量与输入数字量成正比这一特点,通过程序控制 CPU 向 D/A 转换器送出随时间呈一定规律变化的数字,则 D/A 转换器输出端就可以输出随时间按一定规律变化的波形。

Page 21: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

【例 8-1 】 根据图 8.9编程从 DAC0832 输出端分别产生锯齿波、三角波和方波。

根据单缓冲方式图的连接, DAC0832 的口地址为 7FFFH 。汇编语言编程:锯齿波MOV DPTR , #7FFFHCLR ALOOP : MOVX @DPTR ,

AINC ASJMP LOOP三角波:MOV DPTR , #7FFFHCLR ALOOP1 : MOVX @DPTR ,

AINC ACJNE A , #0FFH , LOOP

1LOOP1 : MOVX @DPTR ,

ADEC AJNZ LOOP2

SJMP LOOP1方波:MOV DPTR , #7FFFHLOOP : MOV A , #00HMOVX @DPTR , AACALL DELAYMOV A , #FFHMOVX @DPTR , AACALL DELAYSJMP LOOPDELAY : MOV R7 , #0FFHDJNZ R7 , $RET

Page 22: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

C语言编程:锯齿波:#include <absacc.h> // 定义绝对地址

访问#define uchar unsigned char#define DAC0832 XBYTE[0x7FFF]void main(){uchar i;while(1){for (i=0;i<0xff;i++){DAC0832=i;}}}

Page 23: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口

三角波:#include <absacc.h> // 定义绝对地址访问#define uchar unsigned char#define DAC0832 XBYTE[0x7FFF]void main(){uchar i;while(1){for (i=0;i<0xff;i++){DAC0832=i;}for (i=0xff;i>0;i--){DAC0832=i;}}}

Page 24: 第八章   MCS-51 与 D/A 、 A/D 的接口

第八章 MCS-51 与 D/A 、 A/D 的接口方波:#include <absacc.h> // 定义绝对地址访问#define uchar unsigned char#define DAC0832 XBYTE[0x7FFF]void delay(void);void main(){uchar i;while(1){DAC0832=0; // 输出低电平delay(); //延时DAC0832=0xff; // 输出高电平delay(); //延时}}void delay() //延时函数{uchar i;for (i=0;i<0xff;i++) {;}}