第10章 单片机AD及DA转换接口_第1页
第10章 单片机AD及DA转换接口_第2页
第10章 单片机AD及DA转换接口_第3页
第10章 单片机AD及DA转换接口_第4页
第10章 单片机AD及DA转换接口_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、教学基本要求教学基本要求:(1 1)、熟悉)、熟悉DAC0832DAC0832的内部结构及工作方式;的内部结构及工作方式;(2 2)、掌握单片机与)、掌握单片机与DAC0832DAC0832的接口原理;的接口原理;(3 3)、熟悉)、熟悉ADC0809ADC0809的内部结构及功能;的内部结构及功能;(4 4)、掌握单片机与)、掌握单片机与ADC0809ADC0809的接口原理;的接口原理;教学重点教学重点:(1 1)、单片机与)、单片机与DAC0832DAC0832的接口原理;的接口原理;(2 2)、单片机与)、单片机与ADC0809ADC0809的接口原理;的接口原理;教学难点教学难点:

2、(1 1)、单片机与)、单片机与DAC0832DAC0832接口的程序设计;接口的程序设计;(2 2)、单片机与)、单片机与ADC0809ADC0809接口的程序设计;接口的程序设计; 第第1010章章 单片机单片机A/DA/D及及D/AD/A转换器接口转换器接口10.1 单片机测控系统与模拟输入通道单片机测控系统与模拟输入通道10.1.1 单片机测控系统概述单片机测控系统概述测控包含测控包含“测测”与与“控控”两个过程。两个过程。 所谓所谓“测测”就是实时采集被控对象的物理参量,诸如温就是实时采集被控对象的物理参量,诸如温度、压力、流量、速度和转速等。这些参量通常都是模拟度、压力、流量、速度

3、和转速等。这些参量通常都是模拟量,即连续变化的物理量。量,即连续变化的物理量。 所谓所谓“控控”就是把采集的数据经单片机计算、比较等处就是把采集的数据经单片机计算、比较等处理后得出结论,以对被控对象实施校正控制。但经单片机理后得出结论,以对被控对象实施校正控制。但经单片机处理后得到的是数字量结果。处理后得到的是数字量结果。 测控系统离不开模拟量与数字量的相互转换,因此,模测控系统离不开模拟量与数字量的相互转换,因此,模/数数(A/D)与数与数/模模(D/A)转换也就成了测控系统的重要内容。转换也就成了测控系统的重要内容。 10.1.2 模拟输入通道 模拟输入通道的工作从采集信号开始。由于传感器

4、采模拟输入通道的工作从采集信号开始。由于传感器采集到的模拟信号幅值通常很小,而且连续变化的信号容易集到的模拟信号幅值通常很小,而且连续变化的信号容易受到干扰,因此,要对传感器采集到的原始信号进行放大、受到干扰,因此,要对传感器采集到的原始信号进行放大、采样、保持、滤波等处理后,才能送给采样、保持、滤波等处理后,才能送给A/D转换器。这一系转换器。这一系列的处理过程构成了模拟输入通道,如下图。列的处理过程构成了模拟输入通道,如下图。1. 传感器传感器 传感器的主要功能是采集信号,也兼有信号转换功能,即把采集到的传感器的主要功能是采集信号,也兼有信号转换功能,即把采集到的非电信号转换为电信号非电信

5、号转换为电信号(电压或电流电压或电流),以便于后续处理。传感器的种类繁,以便于后续处理。传感器的种类繁多,常用的传感器有如下几种:多,常用的传感器有如下几种: 温度传感器:温度传感器: 用于将温度转换为电信号。用于将温度转换为电信号。 光电传感器:利用光电效应将光信号转换为电信号。光电传感器:利用光电效应将光信号转换为电信号。 湿度传感器:湿度传感器: 常用的湿度传感器有毛发湿度计、干湿球湿度计、金属氧常用的湿度传感器有毛发湿度计、干湿球湿度计、金属氧化物湿敏元件等。化物湿敏元件等。 流量传感器:流量传感器: 用于测量液体和气体的流量。常用的流量传感器有速度式用于测量液体和气体的流量。常用的流

6、量传感器有速度式流量计和容积式流量计等。流量计和容积式流量计等。 压力传感器:压力传感器: 用于大气压力用于大气压力(气压气压)测量和容器壁压力测量等。测量和容器壁压力测量等。 机械量传感器:机械量传感器: 常用的机械量有拉力、压力、位移、速度、加速度、扭常用的机械量有拉力、压力、位移、速度、加速度、扭矩及荷重等。常见的机械量传感器有电阻应变片、力传感器、荷重传感器、矩及荷重等。常见的机械量传感器有电阻应变片、力传感器、荷重传感器、位移传感器和转速传感器等。位移传感器和转速传感器等。 成分分析传感器:成分分析传感器: 用于对混合气体或混合物的成分进行自动分析。用于对混合气体或混合物的成分进行自

7、动分析。 pH值传感器:值传感器: 用于测量水溶液的酸碱度。用于测量水溶液的酸碱度。 2. 放大器放大器 传感器得到的电压或电流信号往往幅度较小,难以直传感器得到的电压或电流信号往往幅度较小,难以直接进行接进行A/D转换,需要使用放大器对模拟信号进行放大处转换,需要使用放大器对模拟信号进行放大处理。理。 放大器的种类很多,但在模拟输入通道中使用的是一放大器的种类很多,但在模拟输入通道中使用的是一种具有高放大倍数并带深度负反馈的直接耦合放大器,由种具有高放大倍数并带深度负反馈的直接耦合放大器,由于它可以对输入信号进行多种数学运算于它可以对输入信号进行多种数学运算(例如比例、加、例如比例、加、减、

8、积分和微分等减、积分和微分等),所以称为运算放大器。运算放大器,所以称为运算放大器。运算放大器具有输入阻抗高,增益大,可靠性高,价格低和使用方便具有输入阻抗高,增益大,可靠性高,价格低和使用方便等特点。现在已有各种专用或通用的运算放大器可供选择。等特点。现在已有各种专用或通用的运算放大器可供选择。3. 采样采样/保持电路保持电路 采样是为了跟踪输入信号的变化,其实质是将一个连续变采样是为了跟踪输入信号的变化,其实质是将一个连续变化的模拟信号转换为时间上离散的采样信号,采样频率要远高化的模拟信号转换为时间上离散的采样信号,采样频率要远高于模拟信号中的最高频率成分于模拟信号中的最高频率成分(一般为

9、一般为2.5倍倍)。 保持则是为了把采样信号保持一段时间,因为其后的保持则是为了把采样信号保持一段时间,因为其后的A/D转换需要有一个时间过程。在保持期间要维持信号的稳定,尽转换需要有一个时间过程。在保持期间要维持信号的稳定,尽可能保持信号不变。可能保持信号不变。 在模拟输入通道中,采样电路和保持电路是合在一起的,在模拟输入通道中,采样电路和保持电路是合在一起的,称为采样称为采样/保持电路。如下图所示。保持电路。如下图所示。 4. 滤波器滤波器 滤波可分为模拟滤波和数字滤波两种。滤波可分为模拟滤波和数字滤波两种。 模拟滤波由电子元器件搭建的滤波电路完成,模拟滤波模拟滤波由电子元器件搭建的滤波电

10、路完成,模拟滤波又可分为无源和有源两种。无源滤波是使用无源器件又可分为无源和有源两种。无源滤波是使用无源器件(电感、电感、电容和电阻电容和电阻)构成的滤波电路。有源滤波器则是用放大器和电构成的滤波电路。有源滤波器则是用放大器和电容、电阻构成的滤波电路。容、电阻构成的滤波电路。 数字滤波,就是通过程序对采样信号进行平滑加工,以数字滤波,就是通过程序对采样信号进行平滑加工,以提高其有用信号,消除或抑制干扰信号。有多种数字滤波程提高其有用信号,消除或抑制干扰信号。有多种数字滤波程序,例如,程序判断滤波程序、中值滤波程序、算术平均滤序,例如,程序判断滤波程序、中值滤波程序、算术平均滤波程序、加权平均滤

11、波程序、一阶滞后滤波程序以及复合滤波程序、加权平均滤波程序、一阶滞后滤波程序以及复合滤波程序等。波程序等。 与模拟滤波相比,数字滤波具有众多优点,所以在现代与模拟滤波相比,数字滤波具有众多优点,所以在现代测控系统中广泛使用数字滤波。数字滤波不但不需要硬件设测控系统中广泛使用数字滤波。数字滤波不但不需要硬件设备,而且使用也很方便,只需在程序进入数据处理或控制算备,而且使用也很方便,只需在程序进入数据处理或控制算法前,附加一段滤波程序即可。法前,附加一段滤波程序即可。A/D转换器:实现模拟量转换器:实现模拟量数字量的转换。数字量的转换。1. 按原理划分的芯片类型按原理划分的芯片类型 积分型积分型A

12、/D转换器。也称双斜率或多斜率转换器。也称双斜率或多斜率A/D转换器。转换器。应用最为广泛,具有精度高、抗干扰能力强等优点。应用最为广泛,具有精度高、抗干扰能力强等优点。 逐次逼近型逐次逼近型A/D转换器。原理简单,便于实现,不存转换器。原理简单,便于实现,不存在时间延迟问题。在时间延迟问题。 闪烁型闪烁型A/D转换器。最大特点是速度快,但功耗大且转换器。最大特点是速度快,但功耗大且电路复杂,所以芯片尺寸也比较大。电路复杂,所以芯片尺寸也比较大。 型型A/D转换器。又称为过采样转换器。又称为过采样A/D转换器。虽然出转换器。虽然出现得较晚,但却具有分辨率高,价格便宜以及抗干扰现得较晚,但却具有

13、分辨率高,价格便宜以及抗干扰能力强等优点。能力强等优点。10.2 A/D 转换器转换器2. 输入电压信号形式输入电压信号形式 单极性电压信号,各种单极性电压信号,各种A/D转换芯片都具有这种输入转换芯片都具有这种输入形式。一般可允许电压变化范围是形式。一般可允许电压变化范围是0+5 V、0+10 V和和0+20 V等。等。 双极形式的电压信号,可正可负,虽然还是通过一条双极形式的电压信号,可正可负,虽然还是通过一条引线输入,但芯片上需要有一对极性相反的工作电源引线输入,但芯片上需要有一对极性相反的工作电源与之配合。与之配合。 差分信号是不共地的电压信号,两个极性的差分信号差分信号是不共地的电压

14、信号,两个极性的差分信号需要两条信号线输入,在芯片上表示为需要两条信号线输入,在芯片上表示为VIN+和和VIN-。差分电压信号可以从非差分电压信号可以从非0 V开始,其变化范围可以是开始,其变化范围可以是2 V、4 V、5 V和和10 V等等。 3. 输出二进制代码形式输出二进制代码形式 二进制码二进制码A/D转换芯片输出的是二进制代码,其位数可分为转换芯片输出的是二进制代码,其位数可分为8位、位、10位、位、12位、位、14位、位、16位、位、20位和位和24位等。位等。 BCD码码A/D转换芯片输出的是多位转换芯片输出的是多位BCD码,这类转换芯片的码,这类转换芯片的典型应用是在数字电压表

15、中,输出的典型应用是在数字电压表中,输出的BCD码可直接送码可直接送LED或或LCD进行显示。常见的进行显示。常见的BCD码码A/D转换芯片的位数有转换芯片的位数有3位半、位半、4位半和位半和5位半等。位半等。4. A/D转换器分辨率转换器分辨率 A/D转换器,被转换量是电压,所以分辨率是对输入电转换器,被转换量是电压,所以分辨率是对输入电压信号变化的分辨能力,压信号变化的分辨能力, A/D转换器位数越多,分辨率的转换器位数越多,分辨率的值越小,分辨能力就越强,亦即转换器对输入量变化的敏值越小,分辨能力就越强,亦即转换器对输入量变化的敏感程度也就越高。所以选择感程度也就越高。所以选择A/D转换

16、器时,要把位数放在重转换器时,要把位数放在重要的位置。要的位置。5. A/D转换器的控制信号转换器的控制信号 A/D转换芯片中有一些控制信号,包括时钟信号、转换转换芯片中有一些控制信号,包括时钟信号、转换启动信号和转换结束信号等,接口连接时要对这些信号进启动信号和转换结束信号等,接口连接时要对这些信号进行处理。行处理。 (1)时钟信号)时钟信号 时钟信号时钟信号A/D转换需要时钟信号的配合,有些转换需要时钟信号的配合,有些A/D转换转换芯片芯片(例如例如AD571等等)内部有时钟电路。另外一些内部有时钟电路。另外一些A/D转换芯转换芯片片(例如例如ADC0808/0809等等)内部没有时钟电路

17、,所需时钟信内部没有时钟电路,所需时钟信号由外界提供。号由外界提供。 (2)转换启动信号)转换启动信号 转换启动信号转换启动信号应由转换启动信号转换启动信号应由CPU提供,不同型号的提供,不同型号的A/D转换芯片对转换启动信号的要求不尽相同。有的要求脉转换芯片对转换启动信号的要求不尽相同。有的要求脉冲信号启动,例如冲信号启动,例如ADC0804、ADC0809等芯片,而有的芯片等芯片,而有的芯片则要求电平信号启动,例如则要求电平信号启动,例如AD570、AD571和和AD574等等 。 6. 转换结束与数据读取转换结束与数据读取 A/D转换后得到的数字量数据应及时传送给单片机进转换后得到的数字

18、量数据应及时传送给单片机进行处理,在数据转换完成后,进行读取。行处理,在数据转换完成后,进行读取。 (1)定时等待方式)定时等待方式 对于一个对于一个A/D转换芯片来说,转换时间作为一项技术指转换芯片来说,转换时间作为一项技术指标是已知且固定的,可用延时的方法等待转换结束,此即标是已知且固定的,可用延时的方法等待转换结束,此即定时等待方式。定时等待方式。 (2)查询方式)查询方式 A/D转换芯片都提供表明转换完成的状态信号,可以用转换芯片都提供表明转换完成的状态信号,可以用查询方式,通过测试状态就可以知道转换是否完成。查询方式,通过测试状态就可以知道转换是否完成。(3)中断方式)中断方式 表明

19、转换是否完成的状态信号表明转换是否完成的状态信号(ADC0809为为EOC)都可作为都可作为中断请求信号使用,从而可采用中断方式进行转换数据的中断请求信号使用,从而可采用中断方式进行转换数据的传送。传送。10.2.1 810.2.1 8位位A/DA/D转换器芯片与转换器芯片与80C5180C51接口接口 ADC0809采用逐次逼近式采用逐次逼近式A/D转换原理,可实现转换原理,可实现8路路模拟信号的分时采集,片内有模拟信号的分时采集,片内有8路模拟选通开关,以及相路模拟选通开关,以及相应的通道地址锁存与译码电路,转换时间为应的通道地址锁存与译码电路,转换时间为100 s左右。左右。ADC080

20、9的内部逻辑结构如下图所示。的内部逻辑结构如下图所示。 图中多路开关可选通图中多路开关可选通8个模拟通道,允许个模拟通道,允许8路模拟量分时路模拟量分时输入,共用一个输入,共用一个A/D转换芯片进行转换。地址锁存与译码电转换芯片进行转换。地址锁存与译码电路完成对路完成对A、B、C 3个地址位进行锁存和译码,其译码输出个地址位进行锁存和译码,其译码输出用于通道选择。用于通道选择。8位位A/D转换器是逐次逼近式。输出锁存器转换器是逐次逼近式。输出锁存器用于存放和输出转换得到的数字量。用于存放和输出转换得到的数字量。 2 2、信号引脚、信号引脚 ADC 0809ADC 0809转换器芯片为转换器芯片

21、为2828引脚,双列直插式(引脚,双列直插式(DIPDIP)封装。)封装。D0ADC080912345678910111213141516171819202122232425262728D2Vref(-)D4D5D6D7ALEADDCADDBADDAIN0IN1IN2IN3IN4IN5IN6IN7STARTEOCD3OECLOCKVCCVref(+)GNDD1(1 1)、)、IN7IN7IN0IN0:模拟量输入通道;:模拟量输入通道; ADC0809ADC0809对输入模拟量的要求主要有:信号单极性,电压范围对输入模拟量的要求主要有:信号单极性,电压范围0 05 V5 V,若信号过小还需进行放

22、大。另外,在,若信号过小还需进行放大。另外,在A/DA/D转换过程中,转换过程中,模拟量输入的值不应变化太快,因此,对变化速度快的模拟量,模拟量输入的值不应变化太快,因此,对变化速度快的模拟量,在输入前应增加采样保持电路。在输入前应增加采样保持电路。(2 2)、)、A A、B B、C C:地址线;:地址线; A A为低位地址,为低位地址,C C为高位地址,用于对模拟通道进行选择;为高位地址,用于对模拟通道进行选择;C B A 选择的通道选择的通道0 0 00 0 10 1 00 1 11 0 01 0 1 1 1 0 1 1 1 IN0IN1IN2IN3IN4IN5IN6IN7(3 3)、)、

23、ALEALE:地址锁存允许信号;:地址锁存允许信号; 在对应在对应ALEALE上跳沿,上跳沿,A A、B B、C C地址状态送入地址锁存器中;地址状态送入地址锁存器中;(4 4)、)、STARTSTART:转换启动信号;:转换启动信号; STARTSTART上跳沿时,所有内部寄存器清上跳沿时,所有内部寄存器清0 0;STARTSTART下跳沿时,开下跳沿时,开始进行始进行A/DA/D转换;在转换;在A/DA/D转换期间,转换期间,STARTSTART应保持低电平;应保持低电平;(5 5)、)、D7D7D0D0:数据输出线;:数据输出线;(6 6)、)、OEOE:输出允许信号;:输出允许信号;

24、用于控制三态输出锁存器向单片机输出转换得到的数据。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0OE=0,输出数据线呈高电阻;,输出数据线呈高电阻;OE=1OE=1,输出转换得到的数据;,输出转换得到的数据;(7 7)、)、CLKCLK:时钟信号,通常使用频率为:时钟信号,通常使用频率为500kHz500kHz的时钟信号;的时钟信号;(8 8)、)、EOCEOC:转换结束状态信号。:转换结束状态信号。 EOC=0EOC=0,正在进行转换;,正在进行转换;EOC=1EOC=1,转换结束。该状态信号既可,转换结束。该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用;作为查询的

25、状态标志,又可以作为中断请求信号使用;(9 9)、)、VCCVCC:+5 V+5 V电源;电源;(1010)、)、VrefVref:参考电源。:参考电源。 参考电压用来与输入的模拟信号进行比较,作为逐次逼近的参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为基准。其典型值为+5 V+5 V(Vref (+) =+5 VVref (+) =+5 V,VrefVref(-) =0 V(-) =0 V) 。10.2.210.2.2、MCS-51MCS-51单片机与单片机与ADC 0809ADC 0809接口接口 8路模拟通道选择信号路模拟通道选择信号A、B、C分别接最低分别接最低3

26、位地址位地址A0、A1、A2(即(即P0.0、P0.1、P0.2),而地址锁存允许信号),而地址锁存允许信号ALE由由P2.0控制,则控制,则8路模拟通道的地址为路模拟通道的地址为FEF8HFEFFH 。4 4、应用举例、应用举例 设计一个设计一个8 8路模拟量输入的巡回检测系统,采样数据依次存放路模拟量输入的巡回检测系统,采样数据依次存放在片外在片外RAM 0A0HRAM 0A0H0A7H0A7H单元中,单元中,ADC 0809ADC 0809的的8 8路通道路通道IN0IN0IN7IN7的的地址分别为地址分别为FEF8HFEF8HFEFFHFEFFH,其数据采样的初始化程序和中断服务,其数

27、据采样的初始化程序和中断服务程序如下:程序如下:设计思路:设计思路:执行一条执行一条“MOVX DPTR,A”指令,产生指令,产生WR信号,信号,使使ALE和和START有效,就可以启动一次有效,就可以启动一次A/D转换。但一转换。但一次启动只能进行一个通道的转换,次启动只能进行一个通道的转换,8个通道的个通道的A/D转换需转换需按通道顺序逐个进行。为此,在程序中应当有改变通道按通道顺序逐个进行。为此,在程序中应当有改变通道号的指令,并且每改变一次就执行一次启动号的指令,并且每改变一次就执行一次启动A/D转换指转换指令。令。 初始化程序:初始化程序:ORG 0000HORG 0000H LJM

28、P MAIN LJMP MAIN ORG 0013H ORG 0013HLJMP ADCLJMP ADC ORG 0100HORG 0100H MAIN:MOV R0, #0A0H ; MAIN:MOV R0, #0A0H ;数据存储区首址数据存储区首址MOV R2, #08H ;MOV R2, #08H ;通道计数通道计数SETB IT1 ;SETB IT1 ;边沿触发方式边沿触发方式, ,下降沿下降沿SETB EA ;SETB EA ;中断允许中断允许SETB EX1 ;SETB EX1 ;外部中断外部中断1 1允许允许MOV DPTR, #0FEF8H ;MOV DPTR, #0FEF8

29、H ;通道首地址通道首地址LOOPLOOP: MOVX DPTRMOVX DPTR,A ;A ;启动启动A/DA/D转换转换 LCALL DELY1MSLCALL DELY1MS DJNZ R2 DJNZ R2, LOOPLOOPLJMP MAINLJMP MAIN中断服务程序:中断服务程序: ORG 0500H ADC:MOVX A, DPTR;读;读A/D转换结果转换结果 MOVX R0, A ;存数;存数 INC DPTR ;更新通道;更新通道 INC R0 ;更新暂存单元;更新暂存单元 RETI ;返回;返回# include # include # define uchar unsi

30、gned char # define IN0 XBYTE 0 x7ff8 /* 设置设置AD0809的通道的通道0地址地址 */uchar k;uchar xdata *ad_adr;uchar idata ad10;void main() uchar i; while(1)IT1=1; EA=1; EX1=1; ad_adr=&IN0; k=0; for ( i=0 ; i8 ;i+ ) /* 处理处理8通道通道 */ *ad_adr=0 ; /* 启动转换启动转换 */ daly1ms(); void INTT1( ) interrupt 2void INTT1( ) interrupt

31、2 adk= adk= * * ad_adr ad_adr ; ; ad_adrad_adr + ; / + ; /* * 下一通道下一通道 * */ /k +;k +; ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #0A0H; MOV R2, #08H; MOV DPTR,#0FEF8H; LOOP: MOVX DPTR,A ; 启动转换启动转换 LOOPP: JB P3.3, LOOPP 查询转换是否结束查询转换是否结束 MOVX A, DPTR;读;读A/D转换结果转换结果 MOVX R0, A ;存数;存数 INC DPTR ;更新通道;更新

32、通道 INC R0 ;更新暂存单元;更新暂存单元 DJNZ R2, LOOP LJMP MAIN END用查询法实现:用查询法实现:采用查询方式,采集结果放在数组采用查询方式,采集结果放在数组ad中:中: # include # include # define uchar unsigned char # define IN0 XBYTE 0 x7ff8 /* 设置设置AD0809的通道的通道0地址地址 */ sbit ad_busy =P33 ; /* 即即EOC状态状态 */ void ad0809 ( uchar idata *x ) /* 采样结果放指针中的采样结果放指针中的A/D采集

33、函数采集函数 */ uchar i ; uchar xdata *ad_adr ; ad_adr= & IN0 ; for ( i=0 ; i8 ;i+ ) /* 处理处理8通道通道 */ *ad_adr=0 ; /* 启动转换启动转换 */ i=i ; /* 延时等待延时等待EOC变低变低 */ i=i ; while (ad_busy = =1 ) ; /* 查询等待转换结束查询等待转换结束 */ xi = * ad_adr ; /* 存转换结果存转换结果 */ ad_adr + ; /* 下一通道下一通道 */ void main ( void ) static uchar idata

34、ad 10 ; while(1) ad0809 ( ad ) ; /* 采样采样AD0809通道的值通道的值 */ 利用利用ADC0809转换器,轮流采集模拟量输入电压信号,并将模拟转换器,轮流采集模拟量输入电压信号,并将模拟量转换成数字量,通过数码管显示器显示量转换成数字量,通过数码管显示器显示(P1接段控,接段控,P2接位控接位控)(1)延时法)延时法 MAIN: MOVSP,#2FH MOVDPTR, #0FEF8HMOVX DPTR,ALCALL DELAYMOVX A,DPTRMOVB,#51DIVABMOVR0,AMOVA,BMOVB,#5DIVABMOVR1,AMOVA,BMOV

35、R2,A MOVDPTR, #TABMOVA,R0MOVC A,A+DPTRMOVP2,#04HMOVP1,ALCALL DELAYMOVA,R1MOVCA,A+DPTRMOVP2,#08HMOVP1,ALCALLDELAYMOVA,R2MOVCA,A+DPTRMOVP2,#10HMOVP1,ALCALLDELAYLJMPMAINDELAY:。 RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END(2)中断法)中断法ORG0000HLJMPMAINORG0013HLJMPINTT1MAIN: MOV SP, #3FH MOV DP

36、TR, #0FEF8HSETBEASETBEX1MOVX DPTR, A HERE: LJMPHEREINTT1: MOVX A, DPTRMOVB,#51DIVABMOVR0,AMOVA,BMOVB,#5DIVABMOVR1,AMOVA,BMOVR2,AMOVDPTR,#TABMOVA,R0MOVCA,A+DPTRMOVP2,#04HMOVP1,ALCALLDELAYMOVA,R1MOVCA,A+DPTRMOVP2,#08HMOVP1,ALCALLDELAYMOVA,R2MOVCA,A+DPTRMOVP2,#10HMOVP1,ALCALLDELAYMOV DPTR, #0FEF8HMOVX

37、DPTR, ARETIDELAY:。 RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END(3)查询法)查询法MAIN: MOV SP, #2FH MOV DPTR, #0FEF8HCLR EALOOP0: MOVX DPTR, A LOOP: JB P3.3, LOOP MOVX A, DPTRMOVB,#51DIVABMOVR0,AMOVA,BMOVB,#5DIVABMOVR1,AMOVA,BMOVR2,A。#include#include#define uchar unsigned char#define uint unsi

38、gned int#define ADC0809 XBYTE 0 xFEF8sbit EOC=P33;char code dis_code=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 xff;char find_code=10,10,10,10; void DelayX1ms(uint count) uint j; while(count-!=0) for(j=0;j80;j+); void main() uint data1; ADC0809=0; while(1) do display(); while(EOC)

39、; ADC0809=0; data1=ADC0809; find_code0=data1/51; /个位个位 find_code1=data1%51*10/51; /小数点后第一位小数点后第一位 find_code2=data1%51*10%51*10/51; /小数点后两位小数点后两位 display(); void display() char k; P2=0 x10;k=find_code2;P1=dis_codek;DelayX1ms(1);P2=0 x08;k=find_code1;P1=dis_codek;DelayX1ms(1);P2=0 x04;k=find_code0;P1=

40、dis_codek;DelayX1ms(1); 10.3 10.3 D/AD/A转换器接口转换器接口10.3.1 10.3.1 D/AD/A转换芯片转换芯片 1 1、概述、概述 D/AD/A转换器输入的是数字量,经转换后输出的是模拟量。转换器输入的是数字量,经转换后输出的是模拟量。 D/AD/A转换器按输出形式可分为:转换器按输出形式可分为:(1 1)、电压输出形式)、电压输出形式 输入:二进制数或输入:二进制数或BCDBCD码数码数 输出:电压输出:电压(2 2)、电流输出形式)、电流输出形式 输入:二进制数或输入:二进制数或BCDBCD码数码数 输出:电流输出:电流 D/A D/A转换器按

41、其内部是否含有锁存器可分为:转换器按其内部是否含有锁存器可分为:(1 1)、内部无)、内部无数据锁存器数据锁存器的的D/AD/A转换器转换器(2 2)、内部有)、内部有数据锁存器数据锁存器的的D/AD/A转换器转换器 2 2、技术指标、技术指标 D/AD/A转换器的技术性能指标:转换器的技术性能指标: 绝对精度、相对精度、线性度、输出电压范围、温度系数、输绝对精度、相对精度、线性度、输出电压范围、温度系数、输入数字代码种类(二进制或入数字代码种类(二进制或BCDBCD码)等。码)等。(1 1)、)、分辩率分辩率 分辨率是分辨率是D/AD/A转换器对输入量变化敏感程度的描述,与输入数转换器对输入

42、量变化敏感程度的描述,与输入数字量的位数有关。字量的位数有关。 如果数字量的位数为如果数字量的位数为n n,则,则D/AD/A转换器的分辨率为转换器的分辨率为2 2-n-n。这就意味。这就意味着数着数/ /模转换器能对满刻度的模转换器能对满刻度的2 2-n-n输入量作出反应。输入量作出反应。 使用时,应根据分辨率的需要来选定转换器的位数。使用时,应根据分辨率的需要来选定转换器的位数。DACDAC常可常可分为分为8 8位、位、1010位、位、1212位三种。位三种。(2 2)、)、建立时间建立时间 建立时间是描述建立时间是描述D/AD/A转换速度快慢的一个参数,指从输入数字转换速度快慢的一个参数

43、,指从输入数字量变化到输出达到终值误差量变化到输出达到终值误差(1/21/2)LSBLSB(最低有效位)时所需(最低有效位)时所需的时间。通常以建立时间来表示转换速度。的时间。通常以建立时间来表示转换速度。 3 3、典型、典型D/AD/A转换器芯片转换器芯片DAC 0832DAC 0832 DAC0832 DAC0832是一个是一个8 8位位D/AD/A转换器。单电源供电,从转换器。单电源供电,从+5 V+5 V+15 V+15 V均可均可正常工作。基准电压的范围为正常工作。基准电压的范围为10 V10 V;电流建立时间为;电流建立时间为1 s1 s;CMOSCMOS工艺,低功耗工艺,低功耗2

44、0 mW20 mW。 DAC0832DAC0832转换器芯片为转换器芯片为2020引脚,双列直插式(引脚,双列直插式(DIPDIP)封装。)封装。DAC083212345678910CSVCCILEWR2XFERDI4DI5DI6DI7Iout2Iout1WR1AGNDDI3DI2DI1DI0VrefRfbDGND11121314151617181920Iout2Iout1Rfb电平输出 DI7DI0: 转换数据输入转换数据输入 。 CS: 片选信号片选信号(输入输入),低电平有效。,低电平有效。 ILE: 数据锁存允许信号数据锁存允许信号(输入),高电平有效。输入),高电平有效。 WR1:

45、第第1写信号写信号(输入),低电平有效。输入),低电平有效。 XFER: 数据传送控制信号数据传送控制信号(输入),低电平有效。输入),低电平有效。 WR2: 第第2写信号写信号(输入输入),低电平有效。,低电平有效。 IOUT1: 电流输出电流输出1。当数据为全。当数据为全1时,输出电流最大;为全时,输出电流最大;为全0时,时,输出电流最小。输出电流最小。 IOUT2: 电流输出电流输出2。 RFB: 反馈电阻端,即运算放大器的反馈电阻端,电阻反馈电阻端,即运算放大器的反馈电阻端,电阻(15 k)已已固化在芯片中。固化在芯片中。DAC0832是电流输出型是电流输出型D/A转换器,为得到电压转

46、换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,的转换输出,使用时需在两个电流输出端接运算放大器,RFB即即为运算放大器的反馈电阻。为运算放大器的反馈电阻。 VREF: 基准电压,是外加高精度电压源,与芯片内的电阻网络基准电压,是外加高精度电压源,与芯片内的电阻网络相连接,该电压可正可负,范围为相连接,该电压可正可负,范围为-10+10 V。基准电压决定。基准电压决定D/A转换器的输出电压范围,例如,若转换器的输出电压范围,例如,若VREF接接+10 V,则输出电压范,则输出电压范围是围是0-10 V。 DGND: 数字地数字地 。 AGND: 模拟地模拟地 DAC0832的

47、内部结构框图如下图所示。输入通道由输的内部结构框图如下图所示。输入通道由输入寄存器和入寄存器和DAC寄存器构成两级数据输入锁存,由寄存器构成两级数据输入锁存,由3个个“与与”门电路组成控制逻辑,产生门电路组成控制逻辑,产生LE1和和LE2信号,分别对两个输信号,分别对两个输入寄存器进行控制。入寄存器进行控制。 10.3.2 DAC0832单缓冲连接方式 所谓单缓冲连接方式,就是使所谓单缓冲连接方式,就是使DAC0832DAC0832的两个输入的两个输入寄存器中有一个寄存器中有一个( (多为多为DACDAC寄存器寄存器) )处于直通状态,另一个处于直通状态,另一个处于受控的锁存状态。在实际应用中

48、,如果只有一路模处于受控的锁存状态。在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求输出同步拟量输出,或虽是多路模拟量输出但并不要求输出同步的情况下,就应当采用单缓冲方式。其连接如下图所示。的情况下,就应当采用单缓冲方式。其连接如下图所示。【例【例10.2】锯齿波的生成。在一些控制应用中,需要有】锯齿波的生成。在一些控制应用中,需要有一个线性增长的电压一个线性增长的电压(锯齿波锯齿波)来控制检测过程,移动来控制检测过程,移动记录笔或移动电子束等。对此可通过在记录笔或移动电子束等。对此可通过在DAC0832的输的输出端接运算放大器,由运算放大器产生锯齿波来实现,出端接运算放大

49、器,由运算放大器产生锯齿波来实现,其电路连接如下图所示。其电路连接如下图所示。 ORG 0000HLJMP DASAWORG 0200HDASAW:MOV DPTR, #5000H ;输入寄存器地址输入寄存器地址MOV R0, #00H;转换初值转换初值WW: MOV A, R0MOVX DPTR, A ;D/A转换转换INC R0;转换值增量转换值增量NOP ;延时延时NOPNOPAJMP WW END程序清单(假定输入寄存器地址为5000H ) # include # include # define DA0832 XBYTE 0 x7fff # define uchar unsigned

50、 char # define uint unsigned int void main (void ) uchar i ; while ( 1 ) for ( i=0 ; i=255 ; i=i+ ) /* 形成锯齿波输出值,最大值为形成锯齿波输出值,最大值为255 */ DA0832 = i ; /* D/A转换输出转换输出 */ 设计一个简单的单片机应用系统,利用设计一个简单的单片机应用系统,利用DAC0832输出连续输出连续周期性信号周期性信号 。按下。按下K0,产生方波;按下,产生方波;按下K1,产生锯齿波;按,产生锯齿波;按下下K2,产生三角波;按下,产生三角波;按下K3,产生正弦波。

51、,产生正弦波。MAIN: MOV DPTR, #7FFFH LCALL KEY MOV A, 20H JB ACC.0, KEYAA JB ACC.1, KEYBB JB ACC.2, KEYCC JB ACC.3, KEYDD LJMP MAINKEYAA: MOV R0, #00H WW1: MOV A, #00H MOVX DPTR, A INC R0 CJNE R0, #8FH, WW1WW2: MOV A, #0FFH MOVX DPTR, A DJNZ R0, WW2 LCALL KEY MOV A, 20H JB ACC.1, KEYBB JB ACC.2, KEYCC JB A

52、CC.3, KEYDDLJMP KEYAAKEYBB: MOV R0, #0FFHWW3: MOV A, R0 MOVX DPTR, A DEC R0CJNE R0, #00H, WW3 LCALL KEY MOV A, 20H JB ACC.0, KEYAA JB ACC.2, KEYCC JB ACC.3, KEYDDLJMP KEYBBKEYCC: MOV R0, #00HWW4: MOV A, R0 MOVX DPTR, A INC R0 CJNE R0, #0FFH, WW4WW5: MOV A, R0 MOVX DPTR, A DEC R0CJNE R0, #00H, WW5 LC

53、ALL KEY MOV A, 20H JB ACC.0, KEYAA JB ACC.1, KEYBB JB ACC.3, KEYDD LJMP KEYCCKEYDD: MOV R7, #00HWW6: MOV DPTR, #DK MOV A, R7 MOVC A, A+DPTR MOV DPTR, #7FFFH MOVX DPTR, A INC R7 CJNE R7, #0FFH, WW6LCALL KEY MOV A, 20H JB ACC.0, KEYAA JB ACC.1, KEYBB JB ACC.2, KEYCC LJMP KEYDDKEY: 。DK:DB 07FH, 082H, 0

54、85H, 088H, 08BH, 08FH, 092H, 095H, 098H, 。END#include#include#define uchar unsigned char#define uint unsigned int#define DA0832 XBYTE 0 x7fffuchar key,jskey; uint i; uint code st=0 x7F,0 x82,0 x85,.uchar keyscan()uchar tmp; P1=0 xff; if(P1&0 x0f)!=0 x0f) /若有键按下若有键按下 delay(1000); / 延时去抖延时去抖 if(P1&0 x

55、0f)!=0 x0f) /有键按下有键按下 tmp=(P1&0 x0f); dowhile(P1&0 x0f)!=0 x0f); /判键释放判键释放tmp=tmp; return (tmp); /还回键值还回键值 return (0); /无键按下无键按下,还回还回0 void main(void) uchar i,v; uchar temp; v=keyscan(); if(v=1|v=2|v=4|v=8) while(1) switch(v) case 1: while(v=1|v=0) for(i=0;i=255;i+) if(i128) DA0832=255; else DA0832=

56、0; v=keyscan(); break; case 2: while(v=2|v=0)for(i=0;i=255;i+)DA0832=i;v=keyscan();break; case 4: while(v=4|v=0)for(i=0;i=1;i-)DA0832=i;v=keyscan();break; case 8: while(v=8|v=0)for(i=0;i=255;i+)DA0832=sti;v=keyscan();break; *10.3.3 DAC0832双缓冲连接方式 所谓双缓冲连接方式,就是把所谓双缓冲连接方式,就是把DAC0832的输入寄存器和的输入寄存器和DAC寄存器都接成受控锁存方式。在多路寄存器都接成受控锁存方式。在多路D/A转换中,如果转换中,如果要求同步输出,就应当采用双缓冲连接方式。要求同步输出,就应当采用双缓冲连接方式。DAC0832的的双缓冲方式连接如下图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论