第8章 MCS-51与DA、AD的接口

上传人:飞*** 文档编号:8985529 上传时间:2017-08-11 格式:PPT 页数:66 大小:1.97MB
返回 下载 相关 举报
第8章  MCS-51与DA、AD的接口_第1页
第1页 / 共66页
第8章  MCS-51与DA、AD的接口_第2页
第2页 / 共66页
第8章  MCS-51与DA、AD的接口_第3页
第3页 / 共66页
第8章  MCS-51与DA、AD的接口_第4页
第4页 / 共66页
第8章  MCS-51与DA、AD的接口_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《第8章 MCS-51与DA、AD的接口》由会员分享,可在线阅读,更多相关《第8章 MCS-51与DA、AD的接口(66页珍藏版)》请在金锄头文库上搜索。

1、8-1 MCS-51单片机与ADC的接口,8-2 MCS-51单片机与DAC的接口,第8章 MCS-51与D/A、A/D的接口,单片机,扩展I/O电路的功能:,1、速度协调;2、输出数据锁存;3、输入数据三态;4、数据转换: 模拟量数字量:由A/D转换完成; 数字量模拟量:由D/A转换完成。,单片机和被控实体间的接口示意图,举例1:温度测控系统,举例2:速度测控系统,举例3:红外线自动门控制系统原理图,红外线传感器集成芯片BISS0001特点,(1)用CMOS工艺,功耗低。(2)具有独立的高输入阻抗运算放大器,可与多种传感器匹配。(3)双向鉴幅器可有效抑制干扰信号。(4)内设延时和封锁定时器,

2、性能稳定,调节范围宽。(5)内置参考电源。(6)工作电压范围宽 (3V5V)。,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转换器;按其分辨率可分为416位的A/D转换器芯片。,A/D( A

3、nalog to Digit )转换器,1、计数型A/D转换器,计数型A/D转换器由D/A转换器、计数器和比较器组成,工作时,计数器由零开始计数,每计一次数后,计数值送往D/A转换器进行转换,并将生成的模拟信号与输入的模拟信号在比较器内进行比较,,若前者小于后者,则计数值加1,重复D/A转换及比较过程,依此类推,直到当D/A转换后的模拟信号与输入的模拟信号相同,则停止计数,这时,计数器中的当前值就为输入模拟量对应的数字量。这种A/D转换器结构简单、原理清楚,但它的转换速度与精度之间存在矛盾,当提高精度时,转换的速度就慢,当提高速度时,转换的精度就低,所以在实际中很少使用。,逐次逼近型A/D转换

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

5、转换器,逐次逼近A/D转换原理:,N位寄存器用来存放N位二进制数码。当VXVN,则保留DN-1=1,否则清0。其余类推。,3、双重积分型A/D转换器,双重积分型A/D转换器将输入电压先变换成与其平均值成正比的时间间隔,然后再把此时间间隔转换成数字量,它属于间接型转换器。它的转换过程分为采样和比较两个过程。采样即用积分器对输入模拟电压进行固定时间的积分,输入模拟电压值越大,采样值越大,比较就是用基准电压对积分器进行反向积分,直至积分器的值为0,由于基准电压值固定,所以采样值越大,反向积分时积分时间越长,积分时间与输入电压值成正比,最后把积分时间转换成数字量,则该数字量就为输入模拟量对应的数字量。

6、由于在转换过程中进行了两次积分,因此称为双重积分型。双重积分型A/D转换器转换精度高,稳定性好,测量的是输入电压在一段时间的平均值,而不是输入电压的瞬间值,因此它的抗干扰能力强,但是转换速度慢,双重积分型A/D转换器在工业上应用也比较广泛。,双积分型A/D转换器工作原理:,双积分型A/D转换是一种间接A/D 转换技术。首先将模拟电压转换成积分时间,然后用数字脉冲计时方法转换成计数脉冲数,最后将此代表模拟输入电压大小的脉冲数转换成二进制或BCD码输出。因此,双积分型A/D转换器转换时间较长,一般要大于4050ms。,MC14433与80C51直接连接的接口,ICL7109与80C51的接口电路图

7、,80C51,二A/D转换器的主要性能指标,1分辨率;,2转换时间;,3量程;,4转换精度。,8.1.2 ADC0809与MCS-51的接口,一ADC0809芯片,ADC0809是CMOS单片型逐次逼近型A/D转换器,具有8路模拟量输入通道,有转换起停控制,模拟输入电压范畴为0+5V,转换时间为100s,它的内部结构如下图所示。,二ADC0809的引脚,ADC0809芯片有28个引脚,采用双列直插式封装,如图。,其中:IN0IN7:8路模拟量输入端。D0D7:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选择8路模拟通道中的一路。ALE:地址锁存允许信号,输入,高电平有效

8、。START:A/D转换启动信号,输入,高电平有效。EOC:A/D转换结束信号,输出。 0:正在进行转换; 1:一次转换完成。OE:数据输出允许信号,输入,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,输出锁存器的数据从D0D7送出。CLK:时钟脉冲输入端。其内部无时钟电路。要求时钟频率不高于640KHZ.VREF+、VREF-:基准电压输入端。决定输入模拟量的范围。 典型值分别为+5V和0V。Vcc:电源,接+5V电源。GND:地。,ADDA、ADDB、ADDC:3位地址输入线,用于选择8路模拟通道中的一路,选择情况如下:,三ADC0809的工作流程,ADC0809的工

9、作流程如图所示:,1输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器译码从8路模拟通道中选通一路模拟量送到比较器。2送START一高脉冲,START的上升沿使逐次逼近寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。3当转换结束时,转换的结果送入到输出三态锁存器,并使EOC信号回到高电平,通知CPU已转换结束。4当CPU执行一读数据指令,使OE为高电平,则从输出端D0D1读出数据。,四ADC0809与MCS-51单片机的接口,下图是一个ADC0809与8051的一个接口电路图。,1硬件连接,涉及2个问题:(1)8路模拟信号通道选择;(2)A/D转换完成后转换数据的传送

10、。,8路模拟通道的地址:0000H0007H。,2软件编程,设接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H37H单元中。采样完一遍后停止采集。,A/D转换程序:(延时等待方法),MOV DPTR,#0000H ;ADC0809地址MOV A,#00H ;选中IN0MOVX DPTR,A ;启动A/D转换LCALL DELAY ;等待转换结束MOVX A,DPTR ;读转换结果RET,不用接EOC脚,采用定时传送方式。,汇编语言编程:中断方法 ORG 0003H LJMP INT0 ORG 0100H ;主程序 MOV R0

11、,#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,NE

12、XT ;8路未转换完,则继续 CLR EA ;已转换完,则关中断 CLR EX0 ;禁止外部中断0中断 RETI ;中断返回NEXT: MOVX DPTR,A ;再次启动A/D转换 RETI ;中断返回,C语言编程:#include #include /定义绝对地址访问#define uchar unsigned char#define IN0 XBYTE0x0000 /定义IN0为通道0的地址static uchar data x8; /定义8个单元的数组,存放结果uchar xdata *ad_adr; /定义指向通道的指针uchar i=0;void main(void)IT0=1; /

13、初始化EX0=1;EA=1;i=0;ad_adr=&IN0; /指针指向通道0*ad_adr=i; /启动通道0转换for (;) ; /等待中断,void int_adc(void) interrupt 0 /中断函数xi=*ad_adr; /接收当前通道转换结果i+;ad_adr+; /指向下一个通道if (i8)*ad_adr=i; /8个通道未转换完,启动下一个通道返回elseEA=0;EX0=0; /8个通道转换完,关中断返回,例:,初始化程序:(中断方式) MOV R0,#0A0H ;数据存储区首地址 MOV R2,#08H ;8路计数器 SETB IT1 ;边沿触发方式 SETB EA ;中断允许 SETB EX1 ;允许外部中断1中断 MOV DPTR,#0FEF8H;指向ADC0809首地址LOOP:MOVX DPTR,A;启动A/D转换HERE:SJMP HERE;等待中断 DJNZ R2,LOOP;巡回,未完继续 CLR EA ;结束,关中断 SJMP $ ;结束停止,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号