




已阅读5页,还剩95页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章 at89s51单片机与d/a、 a/d 转换器接口,11.1 at89s51单片机与dac接口 11.1.1 d/a转换器简介 1概述 购买和使用d/a转换器要注意几个问题。 (1)d/a转换器输出形式 有两种输出形式。一种是电压输出,即给d/a转换器输入是数字量,而输出为电压。另一种是电流输出。对电流输出d/a转换器,如需要模拟电压输出,可在其输出端加一个由运算放大器构成i-v转换电路,将电流输出转换为电压输出。 (2)d/a转换器与单片机接口形式 单片机与d/a转换器连接,早期多采用8位数字量并行传输并行接口,现在除并行接口外,带有串行口d/a转换器品种也不断增多。除了通用uart串行口外,目前较为流行还有i2c串行口和spi串行口等。所以在选择单片d/a转换器时,要考虑单片机与d/a转换器接口形式。,2主要技术指标 (1)分辨率 指单片机输入给d/a转换器单位数字量变化,所引起模拟量输出变化,通常定义为输出满刻度值与2n之比(n为d/a转换器二进制位数)。习惯上用输入数字量二进制位数表示。位数越多,分辨率越高,即d/a转换器对输入量变化敏感程度越高。 例如,8位d/a转换器,若满量程输出为10v,根据分辨率定义,则分辨率为10v/2n,分辨率为:10v/256=39.1mv ,即输入二进制数最低位变化可引起输出模拟电压变化39.1mv,该值占满量程0.391%,常用符号1lsb表示。同理: 10位d/a转换 1 lsb = 9.77mv = 0.1%满量程 12位d/a转换 1 lsb = 2.44mv = 0.024%满量程 16位d/a转换 1 lsb = 0.076mv = 0.00076%满量程 使用时,应根据对d/a转换器分辨率需要来选定d/a转换器位数。,(2)建立时间 描述d/a转换器转换快慢一个参数,用于表明转换时间或转换速度。其值为从输入数字量到输出达到终值误差(1/2)lsb时所需时间。 电流输出转换时间较短,而电压输出转换器,由于要加上完成i-v转换运算放大器延迟时间,因此转换时间要长一些。快速d/a转换器转换时间可控制在1s以下。 (3)转换精度 理想情况下,转换精度与分辨率基本一致,位数越多精度越高。 但由于电源电压、基准电压、电阻、制造工艺等各种因素存在着误差。严格讲,转换精度与分辨率并不完全一致。只要位数相同,分辨率则相同,但相同位数不同转换器转换精度会有所不同。 例如,某种型号8位dac精度为0.19%,而另一种型号8位dac精度为0.05%。,11.1.2 at89s51与8位d/a转换器0832接口设计 1dac0832芯片介绍 (1)dac0832特性 美国国家半导体公司dac0832芯片是具有两个输入数据寄存器8位dac,它能直接与at89s51单片机连接,主要特性如下。 分辨率为8位。 电流输出,建立时间为1s。 可双缓冲输入、单缓冲输入或直接数字输入。 单一电源供电(+5v+15v)。 低功耗,20mw。 (2)dac0832引脚及逻辑结构 引脚如图11-1所示,dac0832逻辑结构如图11-2所示。,图11-1 dac0832引脚图,图11-2 dac0832逻辑结构,引脚功能: di0di7:8位数字信号输入端,与单片机数据总线p0口相连,用于接收单片机送来待转换为模拟量数字量,di7为最高位。 :片选端,当 为低电平时,本芯片被选中。 ile :数据锁存允许控制端,高电平有效。 :第一级输入寄存器写选通控制,低电平有效。当 =0,ile=1, =0时,待转换数据信号被锁存到第一级8位输入寄存器中。 :数据传送控制,低电平有效。 :dac寄存器写选通控制端,低电平有效。当 =0, =0时,输入寄存器中待转换数据传入8位dac寄存器中。 iout1:d/a转换器电流输出1端,输入数字量全为“1”时,iout1最大,输入数字量全为“0”时,iout1最小。,iout2:d/a转换器电流输出2端,iout2 + iout1 = 常数。 rfb:外部反馈信号输入端,内部已有反馈电阻rfb,根据需要也可外接反馈电阻。 vcc:电源输入端,在+5v+15v范围内。 dgnd:数字信号地。 agnd:模拟信号地,最好与基准电压共地。 “8位输入寄存器”用于存放单片机送来数字量,使输入数字量得到缓冲和锁存,由 加以控制; “8位dac寄存器”用于存放待转换数字量,由 控制; “8位d/a转换电路”受“8位dac寄存器”输出数字量控制,输出和数字量成正比模拟电流。因此,需外接i-v转换运算放大器电路,才能得到模拟输出电压。,2at89s51单片机与dac0832接口电路设计 设计接口电路时,常用单缓冲方式或双缓冲方式单极性输出。 (1)单缓冲方式 指dac0832内部两个数据缓冲器有一个处于直通方式,另一个处于受at89s51单片机控制锁存方式。在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步情况下,可采用单缓冲方式。 图11-3所示是单极性模拟电压输出电路,由于dac0832是8位(28=256)d/a转换器,由基尔霍夫定律列出方程组可解得0832输出电压vo与输入数字量b关系为,图11-3 单缓冲方式下单片机与dac0832接口电路,输出模拟电压vo和输入数字量b以及基准电压vref成正比,且b为0时,vo也为0,输入数字量为255时,vo为最大绝对值输出,且不会大于vref。 图11-3中, 和 接地,故dac0832“8位dac寄存器” 工作于直通方式。 “8位输入寄存器”受 和 端控制,而且 由译码器输出端feh送来。单片机执行如下两条指令就可在 和 上产生低电平信号,使dac0832接收at89s51送来数字量。 mov r0,#0feh ;dac端口地址fehr0 movx r0,a ;单片机的 wr和译码器feh输出端有效,【例11-1】 dac0832用作波形发生器。根据图11-3,分别写出产生锯齿波、三角波和矩形波程序。 在图11-3中,运算放大器a输出端vout直接反馈到rfb,故这种接线产生模拟输出电压是单极性的。 锯齿波产生 org 2000h start: mov r0,#0feh ;dac地址feh r0 mov a,#00h ;数字量a loop: movx r0,a ;数字量d/a转换器 inc a ;数字量逐次加1 sjmp loop,当输入数字量从0开始,逐次加1进行d/a转换,模拟量与其成正比输出。当a = ffh时,再加1则溢出清0,模拟输出又为0,然后又重新重复上述过程,如此循环,输出波形就是锯齿波。 实际上,每一上升斜边要分成256个小台阶,每个小台阶暂留时间为执行后三条指令所需要时间。因此 “inc a”指令后插入nop指令或延时程序,则可改变锯齿波频率。,图11-4 dac0832产生锯齿波输出, 三角波产生 org 2000h start:mov r0,#0feh mov a,#00h up: movx r0,a ;产生三角波上升边 inc a jnz up down:dec a ;a=0时减1为ffh, 产生三角波下降边 movx r0,a jnz down sjmp up 输出三角波如图11-5所示。 图11-5 dac0832产生三角波输出, 矩形波产生 org 2000h start: mov r0,#0feh loop: mov a,#data1 ;#data1为上限电平对应的数字量 movx r0,a ;置矩形波上限电平 lcall delay1 ;调用高电平延时程序 mov a,#data2 ;#data2为下限电平对应的数字量 movx r0,a ;置矩形波下限电平 lcall delay2 ;调用低电平延时程序 sjmp loop ;重复进行下一个周期 输出矩形波如图11-6所示。 delay1、delay2为两个延时程序,分别决定输出矩形波高、低电平时持续宽度。矩形波频率也可用延时方法改变。,图11-6 dac0832产生矩形波输出 (2)双缓冲方式 多路d/a转换要求同步输出时,必须采用双缓冲同步方式。此方式工作时,数字量输入锁存和d/a转换输出是分两步完成。单片机必须通过 来锁存待转换数字量,通过 来启动d/a转换(见图11-2)。因此,双缓冲方式下,dac0832应该为单片机提供两个i/o端口。,at89s51单片机和dac0832在双缓冲方式下连接如图11-7所示。 1#dac0832因 和译码器fdh相连而占有fdh和ffh两个i/o端口地址,而2#dac0832的两个端口地址为feh和ffh。其中,fdh和feh分别为1#和2#dac0832数字量输入控制端口地址,而ffh为动d/a转换端口地址。 若把图11-7中dac输出模拟电压vx和vy来控制x-y绘图仪,则应把vx和vy分别加到x-y绘图仪x通道和y通道,而x-y绘图仪由x、y两个方向步进电机驱动,其中一个电机控制绘笔沿x方向运动;另一个电机控制绘笔沿y方向运动。 因此对x-y绘图仪控制有一基本要求:就是两路模拟信号要同步输出,使绘制曲线光滑。如果不同步输出,例如先输出x通道模拟电压,再输出y通道模拟电压,则绘图笔先向x方向移动,再向y方向移动,此时绘制曲线就是阶梯状的。通过本例,也就不难理解dac设置双缓冲方式目的所在。,19,图11-7 单片机和两片dac0832双缓冲方式接口电路,【例11-2】设at89s51内部ram中有两个长度为20数据块,其起始地址为分别为addr1和addr2,根据图11-7,编写能把addr1和addrr2中数据从1#和2#dac0832同步输出程序。程序中addr1和addr2中数据,即为绘图仪所绘制曲线x、y坐标点。 由图11-7可知,dac0832各端口地址为: fdh:1#dac0832数字量输入控制端口 feh:2#dac0832数字量输入控制端口 ffh:1#和2#dac0832启动d/a转换端口 首先使工作寄存器0区r1指向addr1;1区r1指向addr2;0区工作寄存器r2存放数据块长度;0区和1区工作寄存器区r0指向dac端口地址。程序如下:,org 2000h addr1 data 20h ;定义存储单元 addr2 data 40h ;定义存储单元 dtout:mov r1,#addr1 ;0区r1指向addr1 mov r2,#20 ;数据块长度送0区r2 setb rs0 ;切换到工作寄存器1区 mov r1,#addr2 ;1区r1指向addr2 clr rs0 ;返回工作寄存器0区 next:mov r0,#0fdh ;0区r0指向1#dac数字量控制端口 mov a,r1 ;addr1中数据送a movx r0,a ;addr1中数据送1#dac inc r1 ;修改addr1指针0区r1 setb rs0 ;转入1区 mov r0,#0feh ;1区r0指向2#dac0832数字量控制端口 mov a,r1 ;addr2中数据送a,movx r0,a ;addr2中数据送2#dac0832 inc r1 ;修改addr2指针1区r1 inc r0 ;1区r0指向dac启动d/a转换端口 movx r0,a ;启动dac进行转换 clr rs0 ;返回0区 djnz r2,next ;若未完, 则跳转next ljmp dtout ;若送完, 则循环 3dac0832双极性电压输出 在双极性电压输出场合下,可以按照图11-8所示接线。图中,dac0832数字量由单片机送来,a1和a2均为运算放大器,vo通过2r电阻反馈到运算放大器a2输入端,g点为虚拟地,其他电路如图11-8所示。由基尔霍夫定律列出的方程组可解得,由上式知,当单片机输出给dac0832数字量b128时,即数字量最高位b7为1 ,输出模拟电压vo为正;当单片机输出给dac0832数字量b128时,即数字量最高位为0,则vo输出电压为负。 图11-8 双极性dac接法,11.1.3 at89s51与12位d/a转换器ad667接口设计 8位分辨率不够时,可以采用高于8位分辨率dac,例如,10位、12位、14位、16位(例如ad669)dac。ad667是一种分辨率为12位并行输入、电压输出型d/a转换器,建立时间3s。输入方式为双缓冲输入;输出方式 为电压输出,通过硬件编程可 输出+5v、+10v、2.5v、5v 和10v;内含高稳定基准电 压源,可方便地与4位、8位或 16位微处理器接口;双电源工 作电压为12v15v。 1引脚介绍 图11-9 ad667引脚图,ad667为28脚双列直插式封装,图11-9所示为双列直插式封装引脚图,表11-1为其引脚说明。,(1)内部功能结构 图11-10所示为ad667内部功能结构框图。,图11-10 ad667内部功能结构框图,(2)应用特性 模拟电压输出范围配置 ad667通过片外引脚不同电路连接,可获得不同输出电压量程范围。单极性工作时,可以获得05v和010v电压。双极性工作时,可获得2.5v、5.0v和10v电压。具体量程配置可由引脚1、2、3、9不同连接实现,见表11-2。 由于ad667内置量程电阻与其他元器件具有热跟踪性能,所以ad667增益和偏置漂移非常小。 在电路运行之前,为保证转换精度,首先要进行电路调零和增益调节。,电路调零 数字输入量全为“0”时,调节50k电位器rp1,使其模拟电压输出端(vout)电压为0.000v。在大多数情况下,并不需要调零,只要把脚4与脚5相连(接地)即可。 增益调节 数字输入量全为“1”时,调节100电位器rp2 ,使其模拟电压输出为9.9976v,即满量程10.000v减去1lsb(约为2.44mv)所对应模拟输出量。, 单极性电压输出 图11-11为010v单极性电压输出电路原理图。,图11-11 010v单极性电压输出电路原理图, 双极性电压输出 图11-12为-5v+5v双极性电压输出电路。在电路运行之前,为保证转换精度,首先要进行偏置调节和增益调节。 偏置调节 数字输入量全为“0”时,调节100电位器rp1 ,使其模拟电压输出端电压为5.000v。 增益调节 数字输入量全为“1” ,调节电位器rp2 ,使其模拟输出电压值为4.9976v,即正满量程电压输出5.000v减去1lsb(约为2.44mv)所对应模拟输出量。 内部/外部基准电压源使用 ad667有内置低噪声基准电源,其绝对精度和温度系数都是通过激光修正,具有长期稳定性。片内基准电源可提供片内d/a转换器所需基准电流,还可通过缓冲电路驱动外部电路,一般可向外部负载提供0.1ma驱动电流。,图11-12 5v双极性电压输出电路原理图, 接地与动态电容接法 ad667把模拟地agnd与电源地pgnd分开,可以减少器件低频噪声和增强高速性能。把地回路分开目的是为了尽量减少低电平信号路径中电流。agnd是输出放大器地端,应与系统中模拟输出电压基准地直接相连,任何由输出放大器驱动负载都应该接在模拟地引脚上。 电源地pgnd可以与模拟电源接地点就近连接。最后agnd与pgnd在一点上进行连接,一般连接到电源地pgnd上。 另外,ad667电源引脚到模拟地引脚间应加上适当去耦电容。 在输出放大器反馈电阻两端加一个20pf小电容,可以明显改善输出放大器动态性能。, 数字输入控制与数据代码 ad667总线接口逻辑由4个独立可寻址锁存器组成,其中有3个4位输入数据锁存器(第一级锁存器)和1个12位dac锁存器(第二级锁存器)。利用3个4位锁存器可以直接从4位、8位或16位微处理器总线分次或一次加载12位数字量;一旦数字量被装入12位输入数据锁存器,就可以把12位数据传入第二级dac锁存器,这种双缓冲结构可以避免产生错误模拟输出。 4个锁存器由4个地址输入a0a3和 控制,所有控制都是低电平有效,对应关系见表11-3。 所有锁存器都是电平触发,也就是说,当对应控制信号都有效时,锁存器输出跟踪输入数据;当任何一个控制信号无效时,数据就被锁存。它允许一个以上锁存器被同时锁存。,建议任何未使用数据和控制引脚最好与电源地相连,以改善抗噪声干扰特性。 ad667使用正逻辑二进制输入编码,大于2.0v输入电压表示逻辑“1”,而小于0.8v输入电压表示逻辑“0”。 单极性输出时,输入编码采用直接二进制编码,全“0”数据输入000h产生零模拟输出;全“1”数据输入fffh产生比满量程少1lsb模拟输出。 双极性输出时,输入编码采用偏移二进制编码,数据输入为000h时,产生负满量程输出;数据输入为fffh时,产生比满量程少1lsb的模拟输出;数据输入为800h时,模拟输出为0。其中1lsb为最低位对应模拟电压。双极性输出时输入与输出关系如图11-13所示,输入数字量n与输出模拟电压vout关系为:,式中,vr为输出电压量程。 与单片机接口数据格式 ad667与单片机接口数据格式为左对齐或右对齐数据格式。 左对齐数据格式为: 右对齐数据格式为:,图11-13 双极性输出与输入关系,2ad667与at89s51单片机接口,图11-14 ad667与at89s51单片机接口电路,单片机把ad667所占3个端口地址视为外部数据存储器3个单元,对其进行选通,完成对ad667数据传送锁存及转换功能。假定低8位数据存20h单元,高4位数据存21h低4位,d/a转换程序如下: mov a,20h mov dptr,#7ffeh movx dptr,a ;低8位进第一级锁存器 mov a,21h mov dptr,#7ffdh movx dptr,a ;高4位进第一级锁存器 mov dptr,#7ffbh movx dptr,a ;启动第二级锁存器 ret,11.1.4 at89s51与串行输入12位d/a转换器ad7543接口设计 1. ad7543简介 美国ad公司为异步串行口设计12位价廉d/a转换器。直接与at89s51串行口相连,结构如图11-15所示。 ad7543片内由12位串行输入并行输出移位寄存器(寄存器a)和12位dac输入寄存器(寄存器b)组成。在选通信号前沿或后沿(可选择)定时把sri引脚上串行数据装入寄存器a,一旦寄存器a装满,在加载脉冲控制下,寄存器a数据便装入寄存器b中。 ad7543引脚如图11-16所示,功能如下: out1:ad7543电流输出引脚1。 out2:ad7543电流输出引脚2。 agnd:模拟地。,图11-15 ad7543片内结构,stb1:寄存器a选通控制信号。 :寄存器b加载1输入。当 和 为低电平时,寄存器a内容送到寄存器b。 sri:单片机输入到寄存器a串行数据输入引脚。 :寄存器b加载2输入。 :寄存器a选通3输入。 stb4:寄存器a选通4输入。 dgnd:数字地。 :寄存器b清除输入,用于异步地将寄存器b复位至000h。 vdd:+5v电源。 vref:基准电压输入。 rfb:dac反馈输入引脚。,图11-16 ad7543引脚,2. ad7543与at89s51接口 接口电路如图11-17所示,图中只给出与d/a转换有关电路。,图11-17 ad7543与at89s51接口电路,图11-17中单片机串行口直接与ad7543相连,串行口选用方式0,其txd端移位脉冲负跳变将rxd输出串行位数据移入ad7543,利用地址译码器输出信号产生 ,从而将ad7543移位寄存器a中内容移入到寄存器b中,并启动d/a转换。 由于ad7543的12位数据是高至低逐位串行输入的,而at89s51串行口方式0是低至高逐位串行输出的,因此在数据传输到ad7543之前必须重新装配。下面是单片机驱动程序,假设ad7543端口地址为“addrh”,数据缓冲器单元地址为dbufh(高4位)和dbufl(低8位)。 outda: mov a,#dbufh ;取高4位数据 acall asmb ;调用装配子程序 mov sbuf,a ;串行口输出 mov a,#dbufl ;取低8位数据,acall asmb ;调用装配子程序 mov sbuf,a ;串行口输出 mov dptr,#addrh ;ad7543端口地址送数据指针 movx dptr,a ;将ad7543寄存器a送寄存器b ret asmb: mov r6,#00h ;装配子程序 mov r7,#08h clr c al0: rlc a xch a,r6 rrc a xch a,r6 djnz r7,al0 xch a,r6 ret,11.2 at89s51单片机与adc接口 11.2.1 a/d转换器简介 1a/d转换器概述 目前部分单片机片内集成了a/d转换器,在片内a/d转换器不能满足需要,还是需外扩。另外作为扩展a/d转换器基本方法,读者还是应当掌握。 尽管a/d转换器种类很多,但目前广泛应用在单片机应用系统中的主要有逐次比较型转换器和双积分型转换器,此外-式转换器逐渐得到重视和较为广泛应用。 逐次比较型a/d转换器,在精度、速度和价格上都适中,是最常用a/d转换器。,双积分型a/d转换器,具有精度高、抗干扰性好、价格低廉等优点,与逐次比较型a/d转换器相比,转换速度较慢,近年来在单片机应用领域中也得到广泛应用。 -式adc具有积分式与逐次比较型adc双重优点。它对工业现场串模干扰具有较强抑制能力,不亚于双积分adc,它比双积分adc有较高转换速度,与逐次比较型adc相比,有较高信噪比,分辨率高,线性度好,不需要采样保持电路。由于上述优点,式adc得到了重视,已有多种式a/d芯片可供用户选用。 a/d转换器按照输出数字量有效位数分为4位、8位、10位、12位、14位、16位并行输出以及bcd码输出 3位半、4位半、5位半等多种。,目前,除并行输出a/d转换器外,随着单片机串行扩展方式的日益增多,带有同步spi串行接口a/d转换器使用也逐渐增多。串行输出a/d转换器具有占用端口线少、使用方便、接口简单等优点,因此,读者要给予足够重视。较为典型串行a/d转换器为美国ti公司tlc549(8位)、tlc1549(10位)以及tlc1543(10位)和tlc2543(12位)。 单片机与串行a/d转换器接口设计,涉及同步串行口spi内容,本章不做介绍,感兴趣读者,请见第12章。本章仅介绍单片机与各种并行输出a/d转换器接口设计。 a/d转换器按照转换速度可大致分为超高速(转换时间1ns)、高速(转换时间1s)、中速(转换时间1ms)、低速(转换时间1s)等几种不同转换速度芯片。为适应系统集成需要,有些转换器还将多路转换开关、时钟电路、基准电压源、二十进制译码器和转换电路集成在一个芯片内,为用户提供很多方便。,2a/d转换器主要技术指标 (1)转换时间和转换速率 a/d完成一次转换所需要时间。转换时间倒数为转换速率。 (2)分辨率 在a/d转换器中,分辨率是衡量a/d转换器能够分辨出输入模拟量最小变化程度技术指标。分辨率取决于a/d转换器位数,习惯上用输出二进制位数或bcd码位数表示。例如,a/d转换器ad1674满量程输入电压为5v,输出12位二进制数,即用212个数进行量化,其分辨率为1lsb,也即5v/212=1.22mv,其分辨率为12位,或a/d转换器能分辨出输入电压1.22mv变化。又如,双积分型输出bcd 码a/d转换器mc14433,其满量程输入电压为2v,其输出最大十进制数为1999,分辨率为三位半(bcd 码),如果换算成二进制位数表示,其分辨率约为11位,因为1999最接近于211=2048。,量化过程引起的误差称为量化误差。是由于有限位数字量对模拟量进行量化而引起误差。理论上规定为一个单位分辨率-1/2+1/2lsb ,提高a/d位数既可以提高分辨率,又能够减少量化误差。 (3)转换精度 a/d转换器转换精度定义为一个实际a/d转换器与一个理想a/d转换器在量化值上差值,可用绝对误差或相对误差表示。 11.2.2 at89s51与逐次比较型8位a/d转换器adc0809接口 1adc0809引脚及功能 逐次比较型8路模拟输入、8位数字量输出a/d转换器,其引脚如图11-18所示。,图11-18 adc0809引脚图,图11-19 adc0809结构框图,共28引脚,双列直插式封装。引脚功能如下: in0in7:8路模拟信号输入端。 d0d7:转换完毕8位数字量输出端。 a、b、c与ale:控制8路模拟输入通道切换。a、b、c分别与单片机的三条地址线相连,三位编码对应8个通道地址端口。c、b、a = 000111分别对应in0in7通道地址。各路模拟输入之间切换由软件改变c、b、a引脚编码来实现。 oe、start、clk:oe为输出允许端,start为启动信号输入端,clk为时钟信号输入端。 vr(+)、vr():基准电压输入端。,2adc0809结构及转换原理 结构如图11-19所示。采用逐次比较法完成a/d转换,单一+5v电源供电。片内带有锁存功能8选1模拟开关,由c、b、a编码来决定所选通道。完成一次转换需100s左右(转换时间与clk脚时钟频率有关),具有输出ttl三态锁存缓冲器,可直接连到单片机数据总线上。通过适当外接电路,adc0809可对05v模拟信号进行转换。 3at89s51单片机与adc0809接口 控制adc0809过程如下:先用指令选择adc0809一个模拟输入通道,当执行“movx dptr,a”时,单片机 信号有效,从而产生一个启动脉冲。信号给adc0809的start脚,开始对选中通道转换。当转换结束后,adc0809发出转换结束eoc(高电平)信号,该信号可供单片机查询,也可反相后作为向单片机发出中断请求信号。,当执行指令“movx a,dptr”时,单片机发出读控制 信号,通过逻辑电路控制oe端为高电平,把转换完毕数字量读入到单片机累加器a中。 单片机读取adc转换结果时,可采用查询和中断控制两种方式。 查询方式是在单片机把启动信号送到adc之后,执行其他程序,同时对adc0809的eoc脚不断进行检测,以查询adc变换是否已经结束,如查询到变换已经结束,则读入转换完毕数据。 中断控制方式是在启动信号送到adc之后,单片机执行其他程序。adc0809转换结束并向单片机发出中断请求信号时,单片机响应此中断请求,进入中断服务程序,读入转换完毕数据。 中断控制方式效率高,所以特别适合于转换时间较长adc。,图11-20 adc0809与at89s51查询式接口,图11-20所示基准电压是提供给a/d转换器在转换时所需要基准电压,这是保证转换精度基本条件。基准电压要单独用高精度稳压电源供给,其电压变化要小于1lsb。否则当被变换输入电压不变,而基准电压变化大于1lsb,也会引起a/d转换器输出数字量变化。 由于adc0809片内无时钟,可利用单片机提供地址锁存允许信号ale经d触发器二分频后获得,ale引脚频率是at89s51单片机时钟频率1/6(但要注意,每当访问外部数据存储器时,将少一个ale脉冲)。如果单片机时钟频率采用6mhz,则ale引脚输出频率为1mhz,再二分频后为500khz,符合adc0809对时钟频率要求。当然,也可采用独立时钟源输出,直接加到adc的clk脚。,由于adc0809具有输出三态锁存器,其8位数据输出引脚d0d7可直接与单片机p0口相连。地址译码引脚c、b、a分别与地址总线低三位a2、a1、a0相连,以选通in0in7中一个通道。 在启动a/d转换时,由单片机写信号 和p2.7控制adc地址锁存和转换启动,由于ale和start连在一起,因此adc0809在锁存通道地址同时,启动并进行转换。 在读取转换结果时,用低电平读信号 和p2.7引脚经一级“或非门”后产生正脉冲作为oe信号,用来打开三态输出锁存器。 下面程序是采用软件延时方式,分别对8路模拟信号轮流采样一次,并依次把结果转储到数据存储区转换程序。,main: mov r1,#data ;置数据区首地址 mov dptr,#7ff8h ;端口地址送dptr, ;p2.7=0, 且指向通道in0 mov r7,#08h ;置通道个数 loop: movx dptr,a ;启动a/d转换 mov r6,#0ah ;软件延时, 等待转换结束 delay: nop nop nop djnz r6,delay movx a,dptr ;读取转换结果 mov r1,a ;存储转换结果 inc dptr ;指向下一个通道 inc r1 ;修改数据区指针 djnz r7,loop ;8个通道全采样完 ;否?未完则继续 ,(2)中断方式 adc0809与at89s51单片机中断方式接口电路只需要将图11-20所示eoc引脚经过一“反门”连接到at89s51单片机外中断输入引脚 即可。 采用中断方式可大大节省单片机时间。当转换结束时,发出eoc脉冲向单片机提出中断申请,单片机响应中断请求,由外部中断1中断服务程序读a/d结果,并启动adc0809下一次转换,外部中断1采用跳沿触发方式。,参考程序: init1: setb it1 ;选择外部中断1为跳沿触发方式 setb ea ;总中断允许 setb ex1 ;允许外部中断1中断 mov dptr,#7ff8h ;端口地址送dptr mov a,#00h movx dptr,a ;启动adc0809对in0通道转换 ;完成其他工作 中断服务程序: pint1: mov dptr,#7ff8h ;读取结果送内部ram30h movx a,dptr mov 30h,a mov a,#00h ;启动adc0809对in0转换 movx dptr,a reti,11.2.3 at89s51与逐次比较型12位a/d转换器ad1674接口 1ad1674简介 美国ad公司12位逐次比较型a/d转换器。转换时间10s,单通道最大采集速率100khz。为28引脚双列直插式封装,其引脚如图11-21所示。 由于芯片内有三态输出缓冲电路,因而可直接与各种典型8位或16位单片机相连,ad1674片内集成有高精度基准电压源和时钟电路,从而使该芯片在不需要任何外加电路和时钟信号情况下完成a/d转换,使用非常方便。 ad1674是ad574a/674a更新换代产品。它们内部结构和外部应用特性基本相同,引脚功能与ad574a/674a完全兼容,可以直接替换ad574、ad674使用,但最大转换时间由25s提高到10s。,63,图11-21 ad1674引脚,ad1674共有6个控制引脚,功能如下。 :芯片选择。 =0时,芯片被选中。 ce:片启动信号。当ce=1时,是启动转换还是读取结果与r/ 有关,见表11-4。 r/ :读出/转换控制信号。 12/ :数据输出格式选择信号引脚。 当12/ =1时,12条数据线并行输出转换结果;当12/ =0 时,与a0配合,转换结果分两次输出,即只有高8位或低4位有效。 注意:12/ 端与ttl电平不兼容,故只能直接接至+5v或0v上。 a0:字节选择控制。 在转换期间: 当a0=0时,ad1674进行全12位转换。 当a0=1时,仅进行8位转换。,在读出期间,与12/ =0配合: 当a0=0时,高8位数据有效; 当a0=1时,低4位数据有效,中间4位为0,高4位为高阻态。 当采用两次读出12位数据遵循左对齐格式,如下所示: sts:输出状态信号引脚。 转换开始时,sts为高电平,转换过程中保持高电平。 转换完成时,为低电平。 sts可以作为状态信息被cpu查询,也可用它下跳沿向单片机发出中断申请,通知单片机a/d转换已完成,可读取转换结果。,除上述6个控制引脚外,其他引脚功能如下: refout:+10v基准电压输出。 refin:基准电压输入。只有由此脚把从“refout”脚输出基准电压引入到ad1674内部12位dac,才能进行正常a/d转换。 bipoff:双极性补偿。对此引脚进行适当连接,可实现单极性或双极性输入。,10vin:10v或5+5v模拟信号输入端。 20vin:20v或10+10v模拟信号输入端。 dgnd:数字地。各数字电路器件及“+5v”电源地。 agnd:模拟地。各模拟电路器件及“+15v”、“15v”电源地。 vcc:正电源端,为+12+15v。 vee:负电源端,为1215v。 2ad1674工作特性 ad1674工作状态由5个控制信号ce、 、r/ 、12/ 、a0决定,见表11-4。 当ce=1, = 0时,ad1674处于工作状态。当ad1674处于工作状态时,r/ = 0时启动a/d转换;r/ =1时读出转换结果。 12/ 和a0端用来控制转换字长和数据格式。 a0=0时启动转换,按完整12位a/d转换方式工作;,a0=1启动转换,则按8位a/d转换方式工作。 当ad1674处于数据读出工作状态(r/ = 1)时,a0和12/ 成为数据输出格式控制端。 12/ =1时,对应12位并行输出; 12/ =0时,则对应8位双字节输出。其中a0=0时输出高8位, a0 = 1时输出低4位,并以4个0补足尾随4位。注意,a0在转换结果数据输出期间不能变化。 如要求ad1674以独立方式工作,只要将ce、12/ 端接入+5v, 和a0接至0v,将r/ 作为数据读出和启动转换控制。r/ =1时,数据输出端出现被转换后数据; r/ =0时,即启动一次a/d转换。在延时0.5s后,sts = 1表示转换正在进行。经过一个转换周期后,sts跳回低电平,表示a/d转换完毕,可读取新转换数据。,3ad1674单极性和双极性输入电路 通过改变ad1674引脚8、10、12外接电路,可使ad1674实现单极性输入和双极性输入模拟信号转换。 (1)单极性输入电路 图11-22(a)为单极性输入电路,可实现输入信号010v或020v转换。当输入信号为010v时,应从10vin引脚输入(引脚13);输入信号为020v时,应从20vin引脚输入(引脚14)。输出转换结果d计算公式为: d=4096vin / vfs 或 vin= dvfs /4096 式中vin为模拟输入电压,vfs为满量程电压。 若从10vin脚输入,vfs=10v,lsb=10/409624mv; 若从20vin脚输入;vfs=20v,1lsb=20/409649mv。,71,图11-22 ad1674模拟输入电路外部接法,图中电位器rp2用于调零,即当vin=0时,输出数字量d为全0。单片机系统模拟信号地线应与9脚agnd相连,使其地线接触电阻尽可能小。 (2)双极性输入电路 图11-22(b)为双极性转换电路,可实现输入信号10+10v或0+20v转换。图中电位器rp1用于调零。双极性输入时,输出转换结果d与模拟输入电压vin之间关系为: d=2048(1+vin / vfs) 或 vin=(d / 20481)vfs /2 式中vfs为满量程电压。 上式求出d为12位偏移二进制码,把d最高位求反便得到补码。,补码对应输入模拟量符号和大小。同样,从ad1674读出的或代入到上式中数字量d也是偏移二进制码。 例如,当模拟信号从10vin引脚输入,则vfs= 10v,若读得d=fffh,即111111111111b=4095,代入式中,可求得vin=4.9976v。 4at89s51单片机与ad1674接口 图11-23所示ad1674与at89s51单片机接口电路。由于ad1674片内含有高精度基准电压源和时钟电路,从而使ad1674无需任何外加电路和时钟信号的情况下即可完成a/d转换。 电路采用双极性输入接法,可对5v+5v或10v+10v模拟信号进行转换。转换结果高8位从db11db4输出,低4位从db3db0输出,即a0=0时,读取结果高8位;当a0=1时,读取结果低4位。若遵循左对齐原则,db3db0应接单片机p0.7p0.4。,图11-23 ad1674与at89s51单片机接口电路,sts引脚接单片机p1.0引脚,采用查询方式读取转换结果。当单片机执行对外部数据存储器写指令,使ce=1, =0,r/ =0,a0=0时,启动a/d转换。当单片机查询到p1.0引脚为低电平时,转换结束,单片机使ce=1, = 0, r/ =1,a0=0,读取结果高8位;ce=1, = 0, r/ =1,a0=1,读取结果低4位。 该接口电路完成一次a/d转换查询方式的程序如下(高8位转换结果存入r2中,低4位存入r3中,遵循左对齐原则):,ad1674:mov r0,0f8h ;端口地址送r0 movx r0,a ;启动ad1674进行转换 setb p1.0 ;置p1.0为输入 loop: nop jb p1.0,loop ;查询转换是否结束 inc r0 ;使r/ =1,准备读取结果 movx a,r0 ;读取高8位转换结果 mov r2,a ;高8位转换结果存入r2中 inc r0 ;使r/ =1, a0=1 inc r0 movx a,r0 ;读取低4位转换结果 mov r3,a ;低4位转换结果存入r3中 上述程序是按查询方式设计的,图11-23的sts引脚也可接单片机外中断输入引脚,即采用中断方式读取转换结果。读者可自行编制采用中断方式读取转换结果程序。,ad1674接口电路全部连接完毕后,在模拟输入端输入一稳定标准电压,启动a/d转换,12位数据亦应稳定。如果变化较大,说明电路稳定性差,则要从电源及接地布线等方面查找原因。 ad1674电源电压要有较好稳定性和较小噪声,噪声大电源会产生不稳定输出代码,所以在设计印制电路板时,要注意电源去耦、布线以及地线布置。 这些问题对于位数较多adc与单片机接口,要给予重视。电源要很好滤波,还要避开高频噪声源。 所有电源引脚都要用去耦电容。对+5v电源,去耦电容直接接在脚1和脚15之间;且vcc和vee要通过电容耦合到脚9,去耦电容是一个4.7f钽电容再并联一个0.1f陶瓷电容。,5更高分辨率a/d转换器选用 如果需要更高分辨率adc,可采用14位a/d转换器ad7685或16位a/d转换器ad7656。ad7656是6通道、逐次逼近型adc,每通道可达250ksps采样率,可对模拟输入电压10+10v或0+20v进行a/d转换。 片内包含一个2.5v内部基准电压源和基准缓冲器。该器件仅有160mw功耗,比同类双极性输入adc功耗降低了60。 ad7656包含一个低噪声、宽带采样保持放大器,以便处理输入频率高达8mhz信号。还具有高速并行和串行接口,可以与各种微控制器或数字信号处理器(dsp)连接。在串行接口方式下,能提供一个菊花链连接方式,以便把多个adc连接到一个串行接口上。ad7656采用具有adi公司专利技术icmos(工业cmos)工艺。icmos器件能承受高电源电压,同时提高性能、显著降低功耗和缩小封装尺寸,所以非常适合在继电保护、电机控制等工业领域使用,有望成为电力继电保护新一代产品。读者如对ad7656应用感兴趣,可查阅相关技术资料。,11.2.4 at89s51与双积分型a/d转换器mc14433接口 双积分型adc由于两次积分时间比较长,所以a/d转换速度慢,但精度可以做得比较高;对周期变化干扰信号积分为零,抗干扰性能也较好。 双积分型a/d转换器集成电路芯片很多,常见有3位半a/d转换器mc14433和 4位半a/d转换器icl7135。具有精度高、抗干扰性能好等优点,其缺点为转换速度慢,约110次/秒。在不要求高速转换数据采集系统中,得到了广泛应用。 1mc14433 a/d转换器简介 被转换电压量程为199.9mv或1.999v两档。转换完数据以bcd码形式分4次送出(最高位输出内容特殊,详见表11-5)。 引脚如图11-24所示。下面介绍各引脚功能。,图11-24 mc14433引脚图,(1)电源及共地端 vdd:主工作电源,+5v。 vee:模拟部分负电源端,接-5v。 vag:模拟地端。 vss:数字地端。 vr:基准电压输入端。 (2)外接电阻及电容端 r1:积分电阻输入端,转换电压vx = 2v时, r1 = 470;vx = 200mv时,r1 = 27k。 c1:积分电容输入端,c1一般取0.1f。 r1/c1:r1与c1公共端 clki、clko:外接振荡器时钟调节电阻rc,rc一般取470左右。,(3)转换启动/结束信号端 eoc:转换结束信号输出端,正脉冲有效。 du:启动新转换,若du与eoc相连,每当a/d转换结束后,自动启动新转换。 (4)过量程信号输出端 :当|vx|vr时,过量程 输出低电平。 (5)位选通控制端 ds4ds1:分别为个、十、百、千位输出选通脉冲,正脉冲有效。ds1对应千位,ds4对应个位。每个选通脉冲宽度为18个时钟周期,两个相应脉冲之间间隔为2个时钟周期,如图11-25所示。,图11-25 mc14433选通脉冲时序图,(6)bcd码输出端 q3q0:bcd码数据输出线。其中,q3为最高位,q0为最低位。当ds2、ds3和ds4选通期间,输出3位完整bcd码数,但在ds1(千位)选通期间,即ds1=1期间,输出端q3q0除了表示个位0或1外,还表示被转换电压正负极性(q2 = 1为正)和欠量程或过量程,其具体含义见表11-5。,由表11-5可知: (1)q3表示最高位千位(1/2位)。q3 = 0对应“1”,反之对应“0”。 (2)q2表示极性。q2=1为正极性,q2=0为负极性。 (3)q0=1表示过量程或欠量程。当q3=0时,表示过量程;当 q3 = 1时,表示欠量程。,2mc14433与at89s51单片机接口 转换结果是动态分时输出bcd码,q0q3为千、百、十、个位bcd码,而ds1ds4分别为千、百、十、个位选通信号,由于转换结果输出不是总线式并行输出,因此at89s51单片机只能通过并行i/o接口或扩展i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年榆林市公共交通总公司招聘(57人)笔试参考题库附带答案详解
- 纺织品设计师证书考试评估体系试题及答案
- 幼儿园聘用幼儿教师临时用工劳动合同书
- 家电营销策划合同协议书
- 中小学送餐合同协议书
- 合股协议书合同
- 个人保安员合同协议书
- 分钱合同协议书
- 合同协议书合同模板
- 合同协议书定金
- xx学校研学旅行活动告家长书
- (格式已排好)国家开放大学电大《计算机应用基础(专)》终结性考试大作业答案任务一
- 圣地非遗-鲁锦纹样特征
- 中秋节英文PPT
- 项目二:旅游电子商务概述(授课PPT)教学课件
- 化探取样规范
- 起重机械交叉作业安全措施
- 餐厅前期筹备工作计划汇编
- MBR运行管理手册(共21页)
- 512护士节开场节目快闪ppt模板
- 钢材质量证明书模板
评论
0/150
提交评论