280 likes | 417 Views
A/D 转换器与单片机的接口技术. 从物理信号到电信号的转换 A/D 转换器的作用是将模拟的电信号转换成数字信号。在将物理量转换成数字量之前,必须先将物理量转换成电模拟量,这种转换是靠传感器完成的。传感器的种类繁多,如温度传感器,压力传感器、光传感器、气敏传感器等。 温度传感器:典型的温度传感器有热电偶和热敏电阻。热电偶是利用热点效应来工作的,室温下的输出电压为毫伏级的。热敏电阻是一种半导体新型感温元件,具有负的电阻温度系数,当温度升高时,其电阻减小。 湿度传感器:是利用湿度变化引起其电阻值或电容量变化原理制成的,即将湿度变化转换成电量变化。.
E N D
A/D转换器与单片机的接口技术 • 从物理信号到电信号的转换 • A/D转换器的作用是将模拟的电信号转换成数字信号。在将物理量转换成数字量之前,必须先将物理量转换成电模拟量,这种转换是靠传感器完成的。传感器的种类繁多,如温度传感器,压力传感器、光传感器、气敏传感器等。 • 温度传感器:典型的温度传感器有热电偶和热敏电阻。热电偶是利用热点效应来工作的,室温下的输出电压为毫伏级的。热敏电阻是一种半导体新型感温元件,具有负的电阻温度系数,当温度升高时,其电阻减小。 • 湿度传感器:是利用湿度变化引起其电阻值或电容量变化原理制成的,即将湿度变化转换成电量变化。
气敏传感器:半导体气敏传感器是利用半导体于某种气体接触式电阻机功率函数变化这一效应来检测气体的成分或浓度的传感器。气敏传感器:半导体气敏传感器是利用半导体于某种气体接触式电阻机功率函数变化这一效应来检测气体的成分或浓度的传感器。 • 压电式或压阻式传感器:某些电解质(石英晶体压电陶瓷),在沿一定的方向受外力的作用而变形时,内部会产生极化的现象,同时在其表面产生电荷。而当外力撤销时又重新回到不带电的状态。利用这些介质可以做成压电式传感器。 • 固体受到作用力后,电阻率(或电阻)就要发生变化,这种效应称压阻式效应,利用它可做成压阻式传感器。
A/D转换器的性能参数与术语 • 主要参数: • 分辨率 :表示A/D对模拟输入的分辨能力,由它确定能被A/D辨别的最小模拟量,通常也用二进制位来表示。 • 量化误差:是在A/D转换中由于整量化所产生的固有误差。对于舍入(四舍五入)量化误差在1/2LSB之间。 • 转换时间:是A/D转换完成一次所需要的时间。 • 绝对精度:是A/D转换器输出端所产生的数字代码中,分别对应于实际需要的模拟输入值与理论上要求的模拟输入值之差。 • 相对误差:是满刻度校准以后,任意数字输出所对应的实际模拟输入值(中间值)与理论值(中间值)之差。 • 漏码:如果模拟输入连续增加(或减小)时,数字输出不是连续增加(或减小)而是越过某一个数字,即出现漏码。
A/D转换器的选取原则: • A/D转换器的选取原则: • A/D转换器用于什么系统?输出数据的位数是多少?系统应该达到多高的精度和线性度? • 提供给A/D转换器的输入信号范围多大?是单极性的还是双极性的?信号的驱动能力怎样?是否要经过缓冲滤波和采样/保持? • 对A/D转换器输出的数字代码及逻辑电平的要求如何?是二进制码还是BCD码,是串行还是并行? • 系统是在静态下工作还是在动态下工作?带宽多少?采样速率为多少? • 参考电压是内部的还是外部的?是固定的还是变化的? • A/D转换器的工作环境如何?噪声、温度、振动等条件如何? • 电源电压、功耗、几何尺寸等其它因素。
ADC0809的原理框图和引脚说明 • 分辨率为8位,精度为8位。 • 转换时间:100微秒 • 8个模拟输入通道,有通道地址锁存。 • 数据有三态输出能力。 • 输入电压范围为0~+5v • 零偏差和满量程误差均小于1/2LSB,不需要校准 • 单一+5v电源供电工作温度范围为-40~+85℃ • 功耗为15mw
28 IN2 IN3 1 27 IN1 IN4 2 26 IN0 IN5 3 IN6 4 25 ADDA IN7 5 24 ADDB 23 ADDC START 6 ADC 0809 22 ALE EOC 7 D3 8 21 D7 OE 9 20 D6 CLK 10 19 D5 VCC 11 18 D4 VREF(+) 12 17 D0 16 VREF(-) GND 13 D1 14 15 D2 • D0~D7:8位数字量输出引脚。 • IN0~IN7:8路模拟量输入引脚。 • Vcc:+5V工作电源。 • GND:地。 • VREF(+):参考电压正端。 • VREF(-):参考电压负端。 • START:A/D转换启动信号输入端。 • ALE:地址锁存允许信号输入端。 • EOC:转换结束输出引脚。 • OE:输出允许控制端。 • CLK:转换时钟信号。500kHz左右。 • ADDA、ADDB、ADDC:地址输入线。
ADC0809工作时序 • 工作时序如图所示。转换由START为高电平来启动( START和CLOCK可不同步), START的上升沿将SAR复位,真正转换是从START的下降沿开始。在START的上升沿之后的2微妙加8个时钟周期,EOC状态输出信号将变低,以指示转换操作正在进行中。EOC保持低电平直至转换完成后再变为高电平。当OUTPUT ENABLE(允许数据输出)被置为高电平时,三态门打开,数据锁存器的内容输出到数据总线上。
ADC0809与51单片机接口 • ADC0809与单片机接口 通道地址: 78H~7FH
程序控制查询方式(查询方式) • 程序清单: • ORG 0030H • START: MOV R0,#40H ;采样数据存放首址 • MOV R1,#78H ;IN0通道地址 • MOV R2,#08H ;模拟量通道数 • CLR EX0 ;禁止中断 • LOOP: MOVX @R1 ,A ;启动A/D转换 • MOV R3,#20H ;延时一会儿,约40us • DELY: DJNZ R3,DELY ;等待EOC信号变低 • SETB P3.2 ;设置P3.2为输入模式 • POLL: JB P3.2,POLL ;查询转换是否结束 • MOVX A,@R1 ;读取转换结果 • MOV @R0,A ;存放结果 • INC R0 • INC R1 • DJNZ R2,LOOP ;8通道未完,则采集下一通道 • HERE: SJMP HERE • END
中断方式(主程序) • 中断方式 • (主程序) • 程序清单: • ORG 0000H • START:AJMP MAIN • ORG 0003H • AJMP EXINT0 • ORG 0050h • MAIN: • MOV PSW,#00H ;设置第0工作区 • MOV R0,#40H ;采样数据存放首址 • MOV R1,#78H ;IN0通道地址 • MOV R2,#08H ;模拟量通道数 • MOVX @R1 ,A ;启动A/D转换 • SETB IT0 ;外部中断0为边沿触发方式 • SETB EX0 ;允许外部中断0中断 • SETB EA ;开放CPU中断 • HERE:SJMP HERE
中断方式(中断服务程序) • EXINT0: • PUSH PSW ;保护现场 • CLR RS0 • CLR RS1 ;设置当前工作区为0区 • MOVX A,@R1 ;读取转换结果 • MOV @R0,A ;存放结果 • INC R0 ;修改存储区地址指针 • INC R1 ;通道号加1 • DJNZ R2,NEXT ;8通道未完,则采集下一通道 • CLR EX0 ;采集完毕,则停止中断 • SJMP DONE • NEXT:MOVX @R1 ,A ;启动下一通道A/D转换 • DONE:POP PSW • RETI ;中断返回 • END
ADC574A • ADC574A是一种价格低廉,应用较广的12位逐次逼近式模/数转换器芯片,可以直接与8位、12位、16位总线的处理器相连。主要的参数
VL 1 28 STS 27 D11 12/8 2 26 D10 CS 3 25 D9 A0 4 24 D8 R/C 5 CE 6 23 D7 AD 574A VCC 7 22 D6 REFOUT 8 21 D5 20 D4 AGND 9 19 D3 REFIN 10 18 D2 VEE 11 17 D1 BIPOFF 12 16 D0 10VIN 13 15 DGND 20VIN 14 ADC574A引脚特性 • 引脚特性: • D0~D11:12位数字量输出。 • CE:片选信号,高电平有效。 • CS:片选信号,低电平有效。 • R/C:数据读/启动信号。R/C=1时, • 读取转换结果;R/C=0时,启动A/D转换。 • 12/8:输出数据长度选择信号。 • A0:字节选择信号。在=0状态下, • A0=0启动12位A/D转换,A0=1 • 动8位A/D转换。在=1且=0状态下, • A0=0读高8位数据,A0=1读低4位数据。 • STS:AD574A的工作状态信号。 • STS=1表示正处于转换状态;STS=0表示转换完毕。
ADC574A引脚特性 • 10VIN:10V模拟电压输入。单极性时为0~+10V,双极性时为-5V~+5V。 • 20VIN:20V模拟电压输入。单极性时为0~+20V,双极性时为-10V~+10V。 • REFIN:参考输入,用于满量程调节。 • REFOUT:内部10V参考电压输出。 • BIPOFF:偏置输入,用于零点调节。 • VCC、VEE、VL:+15V、-15V、+5V供电电源。 • AGND:模拟地。 • DGND:数字地。 ADC574工作时序表
CE CS R/C A0 STS D11~D0 CE CS R/C A0 STS D11~D0 高阻 数据 (a) 启动和转换 (b) 读取数据 AD574A的工作时序 • AD574A的工作时序:
W2 W1 W2 W1 -5V~+5V 0~10V -10V~+10V 0~20V (a) 单极性电路 (b) 双极性电路 ADC574的两种应用形式 • 单极性和双极性电路 :
AD574A与MCS-51系列单片机接口 启动A/D地址:00H 读高8位地址:01H 读低4位地址:03H
数据采集程序 • 对模拟量电压采集一次,将结果放在单片机内部的30H和31H单元的参考程序如下: • ORG 0030H • MOV R0,#00H ;A7、A1、A0为低电平 • MOV R1,#30H ;结果单元地址 • MOVX @R0,A ;启动A/D转换 • TEST:JB P3.2,TEST ;查询转换是否完成 • MOV R0,#01H ;A7和A1=0、A0=1 • MOVX A,@R0 ;读转换结果高8位 • MOV @R1,A ;存入30H单元 • MOV R0,#03H ;A7=0、A1和A0=1
MOVX A,@R0 ;读转换结果低4位 • XCHD A,@R1 ;把结果的D7~D4位移至低4位 • SWAP A ;调整、拼装成低8位 • INC R1 • MOV @R1,A ;存放低8位 • DEC R1 • MOV A,@R1 • SWAP A ;结果的D11~D8位移至字节低4位 • MOV @R1,A ;存放高4位 • HERE: • SJMP HERE • END
ADC和MCU接口应注意的几个问题 • A/D芯片的数字输出问题 • 转换结果数据应由A/D芯片锁存,数据输出最好具有三态能力。 • A/D芯片和CPU的时序配合问题 • 固定延时等待法 • 保持等待法 • 中断响应法 • 查询法 • 双缓冲法 • A/D分辨率超过MCU数据总线宽度时的接口 • 不能只用一条指令,而要用两条输入指令才能把A/D转换的整个数字结构传送给微处理器。
ADC TLC2543芯片 • TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。 • 2TLC2543的特点 • (1)12位分辩率A/D转换器;(2)在工作温度范围内10μs转换时间;(3)11个模拟输入通道;(4)3路内置自测试方式;(5)采样率为66kbps;(6)线性误差±1LSBmax;(7)有转换结束输出EOC;(8)具有单、双极性输出;(9)可编程的MSB或LSB前导;(10)可编程输出数据长度。
AIN0~AIN10:模拟量输入端。11路输入信号由内部多路器选通。对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Ω,而且用60pF电容来限制模拟输入电压的斜率AIN0~AIN10:模拟量输入端。11路输入信号由内部多路器选通。对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Ω,而且用60pF电容来限制模拟输入电压的斜率 CS!:片选端。在 端由高变低时,内部计数器复位。由低变高时,在设定时间内禁止DATAINPUT和I/O CLOCK。 DATAINPUT:串行数据输入端。由4位的串行地址输入来选择模拟量输入通道 DATA OUT:A/D转换结果的三态串行输出端。 为高时处于高阻抗状态, 为低时处于激活状态 • EOC:转换结束端。在最后的I/OCLOCK下降沿之后,EOC从高电平变为低电平并保持到转换完成和数据准备传输为止 • CLOCk:输入/输出时钟端。I/OCLOCK接收串行输入信号并完成以下四个功能:(1)在I/O CLOCK的前8个上升沿,8位输入数据存入输入数据寄存器。(2)在I/OCLOCK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到I/OCLOCK的最后一个下降沿为止。(3)将前一次转换数据的其余11位输出到DATA OUT端,在I/OCLOCK的下降沿时数据开始变化。(4)I/OCLOCK的最后一个下降沿,将转换的控制信号传送到内部状态控制位
REF+:正基准电压端。基准电压的正端(通常为Vcc)被加到REF+,最大的输入电压范围由加于本端与REF-端的电压差决定REF+:正基准电压端。基准电压的正端(通常为Vcc)被加到REF+,最大的输入电压范围由加于本端与REF-端的电压差决定 • REF- :负基准电压端。基准电压的低端(通常为地)被加到REF- • Vcc :电源GND:地 • 时序:一个片选(!cs)脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持 为低,直到时序结束。每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入 的时序
TLC2543与51接口的程序 • 对0通道进行采集、结果为16位、MSB前导、单极性,将采集的数据放入40H和41H单元的程序如下: • ORG 0030H • START: MOV SP,#50H • MOV R0,#40H • MOV P1,#04H ;初始化P1口 • CLR P1.0 ;置I/O CLOCK为低 • SETB P1.3 ;置为高 • MOV A,30H • LOOP0: MOV R2,#02H ;结果为高低两字节 • MOV R5,#08H ;输入寄存器和结果的8位数据
LOOP: • MOV C,P1.2 ;读一位数据到C中 • RLC A ;输出数据到A的最低位,输入数据到C • MOV P1.1,C ;写输入数据 • SETB P1.0 ;产生I/O CLOCK脉冲 • CLR P1.0 • DJNZ R5,LOOP ;8位数据未完则继续 • MOV @R0,A ;存放结果 • DJNZ R2,LOOP0 ;一次未完则继续 • AJMP START ;开始新一次转换 • END