TLC2543多通道串行AD转换器及其C51语言单片机应用程序

  • 格式:pdf
  • 大小:202.15 KB
  • 文档页数:4

第13卷第3期2003年7月广西大学梧州分校学’报JOURNAL0FGUANGXIUNIVERSrIYWUZHOUBRANCHNo.3V01.13Jul.2003TLC2543多通道串行A/D转换器及其C51语言单片机应用程序梁汉明韦宁(广西大学梧州分校计算机科学系。

广西梧州543002)[摘要]本文介绍A/D转换器TLC2543的工作原理,叙述了使用该器件做电路设计及编程经验,详细阐述使用该器件设计智能仪表的电路及附带注释的C5l程序。

[关键词]串行A/D转换器,智能仪表,C51程序[分类号]B641[文献标识码]A[文章编号]1009—2633(2003)03一0054—04一、概述11C2543是美国德州11公司所生产的串行A/D转换器。

11C2543A/D转换位数是12位,输入通道多达11个,而其国内市场价又仅售五十多元,因此1rIC2543在要求精度高、而输入通道又多的~,D转换设计方面很受设计者的青睐。

据11公司的资料,11C2543的引脚排列VCC及GND脚。

输入通道引脚为~NO一趟N10共11引脚。

A/D转换参考电压引脚REF+,砌三F一2脚。

余下的五个引脚是与单片机作串行通讯的引脚:控制引脚为巧(低电平有效),CLK,DATAIN共3个脚。

转换结束指示引脚为EOC(高电平表示转换完成)1个脚。

数据输出引脚为n气TAOUT脚。

如图1。

由于采用了串行总线方式,使1rIC2543的引脚大大地简化,比起可以实现同样功能的并行AIN0AINlAlN2AIN3AIN4AIN5AIN6AIN7AlN8GNDVccEocvoclockDATAOUTDATAINCSREF+REF—AINl0AIN9图1TLC2543的引脚排列图(PCI封装)在20个脚的芯片引脚中:电源引脚为收稿日期:2003—05一10总线12位丸位转换器(如AD574、7109等)来说,引脚和芯片面积都大大地减少了。

二、TLC2543的工作原理据11公司的资料11.晓543的时序图见图2。

一‘厂]‘。

}—巫旦≤M孓墨如≤型1卫墨L—以嚣<2多2)e9090909e92≥:》2)《=]豁嘲啼嗡≯K>◆9K≯◇◆<≯p汪~嗣盘黔澜。

广————————————————。

—]r—o~………滋燃铲…+………一……一o=。

j●●o-“图2:TLC2543的时序图。

虽口工口口~加挎他"巧¨屹¨~●23456789“第3期韦宁粱汉明:TLC2543多通道串行AD转换及其C51语言单片机应用程序55以片选信号C丁的电平为参考,它的工作过程可分为丸仍转换周期和I/O周期相互交替进行的两部分。

1、当CS=1,A/,D转换周期此时11C2543未被选通,其DATAOUT脚显高阻态,此时,11C2543被禁止。

这样,为共同使用串行数据总线的其他芯片让出了总线使用权。

这个周期是‘1~,D转换周期:因为11C2543仍在进行着A/D转换,其~口转换的通道是上一次I/O周期从DATAIN输入信号高4位所确定的通道。

2、当舀=O,I/O周期之所以说这个周期是I/O周期,是因为对TLC2543来说它既通过DA]rAIN脚输人数据,又通过DATAOUT脚向外输出数据,因而称这个周期是I/O周期。

从时序图可以看到,伴随着CLK时钟信号的DATAIN脚在向TLC2543输入的是可编程数据,而通道DATAOUT脚输出的是把上一周期已转换完成的√气/D数据从该脚输出。

(1)从DATAIN脚输入一个可编程8位数据:D7、D6、D5、D4这四位可编程O掌√6徊输入通道(对应于~N0脚)至10掌A/,D输入通道(对应于~N10脚)这四位从O000—1010变化,便可以让A/D输入通道不断地循环工作,如果不需要用到那么多的通道,只要把程序中循环的终止值减少至所需的通道号即可。

Ds、D2这两位可以通过编程选择输出数据长度。

输出数据长度可选8位、12位、16位,要指出的是11C2543既然是12位丸。

转换器,其转换数据长度必然是12位,而当D_她=01,则选择输出数据长度是8位,即只取转换数据的高8位,而舍去低4位,这样做是以降低转换精度以求I/O周期耗时的减少,这种选择方法在实践中较少采用。

当D3D2=11,则选择数据输出长度是16位,此时把转换数据12个有效位置于16位数据的高12偻?余下的低4位要用0去填充,这种输出数据长度的选择方法在实际中较多采用。

D1位是输出数据格式选择位,当D,=O,则让MSB先从DA]rAOUT输出,然后再让LSB从DATAOUT输出;当D1=1,则反之。

建议使用前者。

D0位是转换结果单/双极性表示选择位,当D0一O,则转换结果为单极性表示,当Do=1,则转换结果为双极性(即补码形式)表示。

建议使用前者。

从时序图可知,上述的8位可编程数据是从I/o周期的第1个CLK开始便从(D7一Do)一位接一位与CLK信号上升沿同步地输入11C2543的输人寄存器。

这个8位数据,特别是通道号数据将对下一个A/,D转换周期的待转换通道号作出规定。

从第5个CLK开始,11C2543的多通道选择器(即多路模拟开关)便根据本次I/O周期输入数据去选择多通道模拟开关的位置。

(2)DATAOUT脚输出一个~,D转换数据以输出数据长度取16位为例,设输人数据D3D2=11,这时I/0周期要占用16个广西大学梧州分校学报第13卷CLK,再设D1=O,从时序图可知,A/D转换的16个数据(包括前12位有效数据和后4位补O位)将从D。

5位开始与第1个CLK时钟同步地从DATAOUT脚一位一位地输出。

三、应用实例及C51语言的编程图3是一个实际的6输入通道智能数显巡检测量仪表的A/D部分电路。

设本仪表需要叶一钟共6个输入通道,其中~一A5为各路外部信号输入端,前置电路由LM741和LM324组成二级放大电路,可以分别接入mA电流信号、热电偶mv信号、热电阻信号等参数,由Ki开关分别选择,各路互不干扰,是比较理想的智能化巡检仪电路。

实际应用中,在模拟信号接人11C2543的输入通道之前,最好加人RC滤波电路,这样可以有效地防止11C2543的高速A//D转换过程中发生跳变,对于速度要求不高的场合此举是非常有效的。

其中,~,D1rLC2543与单片机的连接分别是:眦2543的B0c—->89C51的P10Ⅱ脱543的Cu‘<_一89c5l的P1111C2543的DJAl'A科・一89C51的P12n脱543的DATA0UT—哆89C51的P13nc2543的Cs<-一89C51的P14上述5条连线的数据方向,除了DATAOUT和EC》C是从11C2543流向89C51外,其余3线都是从89C51流向11C2543。

根据此电路及时序图,可以写出11C2543工作的C51程序(F0rW弧)如下:图36输入通道智能数显检仪A,D部分电路图孝include<re951.h>/.regi咖rdefinmonsfor8051CPU’/#include<stdio.h>/.Star订ardi/o£Iefinitions'f聋include“劬pe.h”广数据类型定义,用户参数定义./划e‰eADo_DoXOc广OO001100B,ADO-D表示O撑通道,输出数据长度16位,先输出MSB后输出LSB,单极性数据‘/un内ned谳ad小(啪哟nedchartdnum)/.对应某通道的√帅转换函数卅广通道号是td_n啪,范围:O一10,对应于0孝一1腑通道'funsignedcharaddr}/+addr在下注释./unsignedcharn8;广in_8为MSB或LSB的8位丸,D值在89C51的存贮单片I}unSignedcharloop;/.Ioop为输出位数。

/un删.mt琵;尸恐为A/o转换的中间值和最终值‘/bitCC;广89C51的进位位./ADcs=1;/.令Cs=1,即11C2543处于丸,D转换周期‘/ad.1p:if(!AD_EoC)90toadjp;/.在第3期韦宁梁汉明:TtC2543多通道串行AD转换及其C51语言单片机应用程序57CS=1期间,进行某通道的A/位转换,等待EOC=1转换结束+/addr=td—num+OxlO+ADO—D;广td_num为通道号输入参数,addr为对应某通道号的可编程输人数据+/ADCS=O;尸选通TLC2543,开始I/O周期‘/100p=8;/‘MSB的位数共8位’fin_8=O;广初始化存贮A/D值的存贮单元’/do;AD—CLK=O;广输出一个CU<的低电平至TLC2543+/CC=ADLDAOUT;广把TLC2543的D芦汀AOUT输出至89C51的进位位+/If(CC)in一8=(in一8‘2)+Ox01;/+对A/D值的处理,若本次DATAOUT的电平是1,则in-8值左移一位后再加1+/Elsein一8=in一8+2;/搴若本次DATAOUT的电平是O。

则in8值仅左移一位‘//+以下做可编程数据从89C51向TLC2543的输入寄存器的同步输出+/if(addr&0x80)AD—ADDR=1;/+addr为可编程数据,若addr最高位等于1,则向TLC2543输出值ADADDR=1‘/eIseAD—ADDR=O;广若addr的最高位等于0,则向TLC2543输出值A亡LADDR=O’/ad出<<=1;广在输出了本次最高位后addr又左移一位准备下一位的输出‘/ADLCLK=1;/.输出一个CLK电平1至TLC2543+/}while(一一loop);/+loop=loop一1,共做8次+/zz=in一8‘OxlO;广此时irl_8=D11D10…D5D4,即A/D数据的高8位,zz=in8+oxl0=0000D11D10…D5D40000共16位+//+以下做LSB低8位数据从11C2543向89C51输出‘/loop=8;in一8=O;do{AD_-cLK=0;CC=ADDAOUT:if(CC)in一8=(in一8+2)+Ox01;elsein8=in8+2:if(addr&Ox80)ADADDR=1;elseAD—ADDR=O:addr<<=1:ADCLK=1:}while(一一loop);/.以下是对MSB及LSB数据的合并处理+/zz+=in-8/oxlO;/.in-8=D3D2D1DOOooO,in_8/0x10=O000D3D2D1DO,原zz=OOOODl1D10D9D8D7D6D5D40000.zz+=h1_8/Oxl0后,zz=0000D11D10D9D8D7D6D5D4D3D2D1DO‘/ADCLK=0:AD_CS=1;/悻重新禁止TLC2543,I/o口处于高阻状态+/retum(zz);四、结束语TLC2543是一种性能/价格比极优的多通道12位p佃转换器,用在智能数字巡检仪、智能调节仪这类多输人量测量仪表极为合适。