收藏 分销(赏)

第8章MCS-51与DAAD的接口.ppt

上传人:w****g 文档编号:14622835 上传时间:2026-10-22 格式:PPT 页数:25 大小:836.54KB 下载积分:10 金币
下载 相关
第8章MCS-51与DAAD的接口.ppt_第1页
第1页 / 共25页
第8章MCS-51与DAAD的接口.ppt_第2页
第2页 / 共25页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第8章 MCS-51与D/A、A/D的接口,第8章 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转换器;按其分辨率可分为416位的A/D转换器芯片。,1计数型A/D转换器,计数型A/D转换器由D/A转换器、计数器和比较器组成,工作时,计数器由零开始计数,每计一次数后,计数值送往D/A转换器进行转换,并将生成的模拟信号与输入的模拟信号在比较器内进行比较,,若前者小于后者,则计数值加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转换器转换速度快,在实际中广泛使用。,双重积分型A/D转换器将输入电压先变换成与其平均值成正比的时间间隔,然后再把此时间间隔转换成数字量,它属于间接型转换器。它的转换过程分为采样和比较两个过程。采样即用积分器对输入模拟电压进行固定时间的积分,输入模拟电压值越大,采样值越大,比较就是用基准电压对积分器进行反向积分,直至积分器的值为0,由于基准电压值固定,所以采样值越大,反向积分时积分时间越长,积分时间与输入电压值成正比,最后把积分时间转换成数字量,则该数字量就为输入模拟量对应的数字量。由于在转换过程中进行了两次积分,因此称为双重积分型。双重积分型A/D转换器转换精度高,稳定性好,测量的是输入电压在一段时间的平均值,而不是输入电压的瞬间值,因此它的抗干扰能力强,但是转换速度慢,双重积分型A/D转换器在工业上应用也比较广泛。,3双重积分型A/D转换器,二A/D转换器的主要性能指标,1分辨率,2转换时间,3量程,4转换精度,8.1.2 ADC0809与MCS-51的接口,一ADC0809芯片,ADC0809是CMOS单片型逐次逼近型A/D转换器,具有8路模拟量输入通道,有转换起停控制,模拟输入电压范围为0+5V,转换时间为100,s,,它的内部结构如图所示。,IN0,IN1,IN2,IN3,IN4,IN5,IN6,IN7,ADDA,ADDB,ADDC,ALE,通道,选择,开关,地址锁存和译码,定时和控 制,逐次逼近寄存器SAR,8 位,三 态,锁 存,缓冲器,DAC,OE,EOC,CLOCK,START,VCC,GND,VREF+,VREF-,ADC0809,D0,D1,D2,D3,D4,D5,D6,D7,二ADC0809的引脚,ADC0809芯片有28个引脚,采用双列直插式封装,如图。,ADC0809的工作流程如图所示:,1输入3位地址,并使ALE=1,将地址存入地址锁存器中,经地址译码器译码从8路模拟通道中选通一路模拟量送到比较器。,2送START一高脉冲,START的上升沿使逐次逼近寄存器复位,下降沿启动A/D转换,并使EOC信号为低电平。,3当转换结束时,转换的结果送入到输出三态锁存器,并使EOC信号回到高电平,通知CPU已转换结束。,4当CPU执行一读数据指令,使OE为高电平,则从输出端D0D1读出数据。,四ADC0809与MCS-51单片机的接口,下图是一个ADC0809与8051的一个接口电路图。,1硬件连接,P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7,ALE,WR,P2.7,RD,INTO,+,+,+5V,GND,D0,D1,D2,D3,D4,D5,D6,D7,ADDA,ADDB,ADDC,CLK,ALE,START,OE,EOC,IN0,IN1,IN2,IN3,IN4,IN5,IN6,IN7,VREF+,VREF-,ADC0809,8051,分,频,器,2软件编程,设接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H37H单元中。采样完一遍后停止采集。,汇编语言编程:,ORG 0003H,LJMP INT0,ORG 0100H ;主程序,MOV R0,#30H ;设立数据存储区指针,MOV R2,#08H ;设置8路采样计数值,SETB IT0 ;设置外部中断0为边沿触发方式,SETB EA ;CPU开放中断,SETB EX0 ;允许外部中断0中断,MOV DPTR,#0000H ;送入口地址并指向IN0,LOOP: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 ;中断返回,C语言编程:,#include ,#include /定义绝对地址访问,#define uchar unsigned char,#define IN0 XBYTE0 x0000 /定义IN0为通道0的地址,static uchar data x8;/定义8个单元的数组,存放结果,uchar xdata *ad_adr;/定义指向通道的指针,uchar i=0;,void main(void),IT0=1;/初始化,EX0=1;,EA=1;,i=0;,ad_adr=/指针指向通道0,*ad_adr=i;/启动通道0转换,for (;);/等待中断,void int_adc(void)interrupt 0 /中断函数,xi=*ad_adr;/接收当前通道转换结果,i+;,ad_adr+;/指向下一个通道,if(i8),*ad_adr=i;/8个通道未转换完,启动下一个通道返回,else,EA=0;EX0=0;/8个通道转换完,关中断返回,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转换芯片。,三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转换器主要有片选信号、写信号及启动转换信号等,一般由单片机的有关引脚或译码器提供。,8.2.2 MCS-51与8位DAC0832的接口,一DAC0832芯片,DAC0832是一种电流型D/A转换器,数字输入端具有双重缓冲功能,可以双缓冲、单缓冲或直通方式输入,它的内部结构如图。,与,与,与,DI0DI7,ILE,CS,WR1,WR2,XFER,输入,寄,存,器,DAC,寄,存,器,D/A,转,换,器,LE1,LE2,V,REF,R,FB,I,out1,I,out2,AGND,V,CC,DGND,DAC0832,二DAC0832的引脚,DAC0832有20引脚,采用双列直插式封装,如图所示。,CS,WR1,AGND,DI3,DI2,DI2,DI0,VREF,RFB DGND,VCC,ILE,WR2,XFER,DI4,DI5,DI6,DI7,IOUT1,IOUT2,1,2,3,4,5,6,7,8,9,10,20,19,18,17,16,15,14,13,12,11,其中:,DI0DI7(DI0为最低位):8位数字量输入端。,ILE:数据允许控制输入线,高电平有效。,:片选信号。,:写信号线1。,:写信号线2。,:数据传送控制信号输入线,低电平有效。,IOUT1:模拟电流输出线1。它是数字量输入为“1”的模拟电流输出端。,IOUT2:模拟电流输出线2,它是数字量输入为“0”的模拟电流输出端,采用单极性输出时,IOUT2常常接地。,Rfb:片内反馈电阻引出线,反馈电阻制作在芯片内部,用作外接的运算放大器的反馈电阻。,VREF:基准电压输入线。电压范围为10V10V。,VCC:工作电源输入端,可接5V15V电源。,AGND:模拟地。,DGND:数字地。,三DAC0832的工作方式,DAC0832有三种方式:直通方式、单缓冲方式和双缓冲方式。,1直通方式:,、直接接地,ILE接电源,DAC0832工作于直通方式,此时,8位输入寄存器和8位DAC寄存器都直接处于导通状态,8位数字量到达DI0DI7,就立即进行D/A转换,从输出端得到转换的模拟量。,当引脚,2单缓冲方式:,当连接引脚,、,使得两个锁存器的一个处于直通状态,另一个处于受控制状态,或者两个被控制同时导通,DAC0832就工作于单缓冲方式,例如下图就是一种单缓冲方式的连接,对于下图的单缓冲连接,只要数据DAC0832写入8位输入锁存器,就立即开始转换,转换结果通过输出端输出。,Vout,-,VCC,ILE,CS,WR1,DI0DI7,WR2,XFER,DGND AGND,VREF,Rfb,IOUT1,IOUT2,+5V,-,-5V,-,-,A,+,-,P2.7,WR,P0.0P0.7,8051,3双缓冲方式:,当8位输入锁存器和8位DAC寄存器分开控制导通时,DAC0832工作于双缓冲方式,双缓冲方式时单片机对DAC0832的操作分两步,第一步,使8位输入锁存器导通,将8位数字量写入8位输入锁存器中;第二步,使8位DAC寄存器导通,8位数字量从8位输入锁存器送入8位DAC寄存器。第二步只使DAC寄存器导通,在数据输入端写入的数据无意义。下图就是一种双缓冲方式的连接。,P2.7,P2.6,WR,P0.0P0.7,8051,Vout,-,VCC,ILE,CS,XFER,WR1,WR2,DI0DI7,DGND AGND,VREF,Rfb,IOUT1,IOUT2,+5V,-,-5V,-,-,A,+,-,四DAC0832的应用,D/A转换器在实际中经常作为波形发生器使用,通过它可以产生各种各样的波形。它的基本原理如下:利用D/A转换器输出模拟量与输入数字量成正比这一特点,通过程序控制CPU向D/A转换器送出随时间呈一定规律变化的数字,则D/A转换器输出端就可以输出随时间按一定规律变化的波形。,【例8-1】,根据图8.9编程从DAC0832输出端分别产生锯齿波、三角波和方波。,根据单缓冲方式图的连接,DAC0832的口地址为7FFFH。,汇编语言编程:,锯齿波,MOV DPTR,#7FFFH,CLR A,LOOP:MOVX DPTR,A,INC A,SJMP LOOP,三角波:,MOV DPTR,#7FFFH,CLR A,LOOP1:MOVX DPTR,A,INC A,CJNE A,#0FFH,LOOP1,LOOP1:MOVX DPTR,A,DEC A,JNZ LOOP2,SJMP LOOP1,方波:,MOV DPTR,#7FFFH,LOOP:MOV A,#00H,MOVX DPTR,A,ACALL DELAY,MOV A,#FFH,MOVX DPTR,A,ACALL DELAY,SJMP LOOP,DELAY:MOV R7,#0FFH,DJNZ R7,$,RET,C语言编程:,锯齿波:,#include /定义绝对地址访问,#define uchar unsigned char,#define DAC0832 XBYTE0 x7FFF,void main(),uchar i;,while(1),for(i=0;i0 xff;i+),DAC0832=i;,三角波:,#include /定义绝对地址访问,#define uchar unsigned char,#define DAC0832 XBYTE0 x7FFF,void main(),uchar i;,while(1),for(i=0;i0;i-),DAC0832=i;,方波:,#include /定义绝对地址访问,#define uchar unsigned char,#define DAC0832 XBYTE0 x7FFF,void delay(void);,void main(),uchar i;,while(1),DAC0832=0;/输出低电平,delay();/延时,DAC0832=0 xff;/输出高电平,delay();/延时,void delay()/延时函数,uchar i;,for(i=0;i0 xff;i+);,作业,习题 2、3、4、5,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服