tlc2543程序 单片机
AD转换芯片TLC2543驱动程序
//功能选择关闭
delay1(5);
//AD 转换时间延时
AD_2543_CS=0;;
//功能选择打开
delay1(5);
//建立时间延时
for(circle_temp=0;circle_temp<4;circle_temp++)//读出 12 位数据的 高 4 位数据,存于 temp_h 的低 4 位
test_vl<<=1; if(AD_2543_D_OUT) {
test_vl++; } AD_2543_CLK=1; //时钟上半周期 delay1(2);
AD_2543_CLK=0; } AD_2543_CS=1; ad_value = test_vh; ad_value ห้องสมุดไป่ตู้<= 8; ad_value |= test_vl; return ad_value; }
出的数据是 12 位,D1 为输出的数据是 MSB 为前导,D0 为输出的数
据是无符号二进制数据
AD_2543_CS=1;
//功能选择关闭
delay1(5);
//AD 转换时间延时
AD_2543_CS=0;
//功能选择打开
delay1(5);
//建立时间延时
for(circle_temp=0;circle_temp<12;circle_temp++)//写入十二个数
//下降沿作用,时钟下半周期 //功能选择关闭
#include <reg52.h>
///////////////////////////////////////// //2543 控制引脚宏定义 ////////////////////////////////////////// sbit AD_2543_CLK=P1^0; //2543 时钟/ sbit AD_2543_D_IN=P1^2 ; //2543 输入 sbit AD_2543_D_OUT=P1^1; //2543 输出 sbit AD_2543_CS=P1^3 ; //2543 片选
TLC2543时序图以及程序
TLC2543引脚说明引脚号名称I/O说明1~9,11,12 AIN0~AIN1I 模拟量输入端。
11路输入信号由内部多路器选通。
对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Ω,而且用60pF电容来限制模拟输入电压的斜率15 I 片选端。
在端由高变低时,内部计数器复位。
由低变高时,在设定时间内禁止DATAINPUT和I/O CLOCK17 DATAINPUT I 串行数据输入端。
由4位的串行地址输入来选择模拟量输入通道16 DATA OUT O A/D转换结果的三态串行输出端。
为高时处于高阻抗状态,为低时处于激活状态19 EOC O 转换结束端。
在最后的I/OCLOCK下降沿之后,EOC从高电平变为低电平并保持到转换完成和数据准备传输为止10 GND 地。
GND是内部电路的地回路端。
除另有说明外,所有电压测量都相对GND而言18 I/O CLOCK I 输入/输出时钟端。
I/OCLOCK接收串行输入信号并完成以下四个功能:(1)在I/O CLOCK的前8个上升沿,8位输入数据存入输入数据寄存器。
(2)在I/OCLOCK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到I/OCLOCK的最后一个下降沿为止。
(3)将前一次转换数据的其余11位输出到DATAOUT端,在I/OCLOCK的下降沿时数据开始变化。
(4)I/OCLOCK的最后一个下降沿,将转换的控制信号传送到内部状态控制位14 REF+ I 正基准电压端。
基准电压的正端(通常为Vcc)被加到REF+,最大的输入电压范围由加于本端与REF-端的电压差决定13 REF- I 负基准电压端。
基准电压的低端(通常为地)被加到REF-20 Vcc 电源TLC2543接口时序可以用四种传输方法使TLC2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。
一个片选()脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结束。
tlc2543测温度
//此程序中部分数据采用实际值(调试得到),仿真电路中是理想值。
#include<reg51.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit clock=P0^1; //显示时钟线sbit data1=P0^0; //显示数据线sbit CS=P2^1; //TLC2543与89c52的接口连接线路sbit DOUT=P2^3; //AD串行数据线sbit ADIN=P2^2; //AD地选择端sbit CLK=P2^0; //AD时钟线sbit EOC=P3^2; //AD转换结束端uint a,i,j,k,m,ad,mileage,cost;unsigned char code szi[]={0XEE,0X82,0XDC,0XD6,0XB2,0X76,0X7E,0XC2,0XFE,0XF6};//控制字0~9void delay(uint z) //延时程序{uint x,y;for(x=10;x>0;x--)for(y=z;y>0;y--);}void display(uint x,uint y) //显示子程序{uchar a;uint c;m=y%10; //一个十位数变成两个个位数显示k=y/10;j=x%10;i=x/10;for (c=0;c<4;c++) //每次送四个数字{if(c==0) a=szi[i]; //调用数组中的控制字else if(c==1) a=szi[j]|0x01;else if(c==2) a=szi[k] ;else a=0x6C;for(i=0;i<8;i++) //每个数字需要送8位{clock=0; //clock=0和clock=1是给74ls164一个下降沿,每次下降沿送一个位data1=a&1;a=a>>1;clock=1;}}delay(5000);}uint read2543(uchar port) //调用串行AD转换子程序{uint i;uchar datah,datal; //datah表示十位有效数字中的高两位,datal表示十位数据中的低八位数据CLK=0; //根据时序图分别设置CS,CLOCK,EOCCS=0; //片选端port<<=4; //用port的值来选择是哪个AD芯片的哪个通道for(i=0;i<4;i++)//把通道写入TLC1543芯片中{ADIN=(bit)(port&0x80);CLK=1;CLK=0; //只需要CLOCK一个下降沿就能写入,其他接口的电平不变化port<<=1; //根据时序图,先写入MSB即最高位,需要左移,然后继续写下一位}for(i=0;i<8;i++)//填充8个CLOCK{CLK=1;CLK=0;}CS=1;delay(10);CS=0; //等待AD转换for(i=0;i<4;i++) //取D11~D8位{CLK=1;datah<<=1;if(DOUT) datah|=0x01;CLK=0;}for(i=0;i<8;i++)//取D7~D0位{CLK=1;datal<<=1;if(DOUT) datal|=0x01;CLK=0;}CS=1;//片选关闭ad=datah;//高两位值赋给变量adad<<=8;//数据左移8加上一步的两位,构成是十位有效数字ad|=datal;// 把datal的值赋给ad的第八位,这样构成十位有效数字,由datah和datal 组成ad=(ad*0.001221)*1000;//输出端数据十位二进制转换成对应的电压值,即0~4095对应0~5V电压return (ad);}void main(){while(1){a=read2543(0x00); //进行AD转换if(ad>1690)ad=2950; //根据表中电阻算出对应电压,电压与AD转换的值比较,查出对应温度值if(1690>=ad&&ad>1650)ad=3000;if(1650>=ad&&ad>1620)ad=3050;if(1620>=ad&&ad>1590)ad=3100;if(1590>=ad&&ad>1550)ad=3150;if(1550>=ad&&ad>1530)ad=3200;if(1530>=ad&&ad>1490)ad=3250;if(1490>=ad&&ad>1480)ad=3300;if(1480>=ad&&ad>1437)ad=3350;if(1437>=ad&&ad>1406)ad=3400;if(1406>=ad&&ad>1376)ad=3450;if(1376>=ad&&ad>1345)ad=3500;if(1345>=ad&&ad>1325)ad=3550;if(1325>=ad&&ad>1294)ad=3600;if(1294>=ad&&ad>1280)ad=3650;if(1280>=ad&&ad>1253)ad=3700;if(1253>=ad&&ad>1222)ad=3750;if(1222>=ad&&ad>1202)ad=3800;if(1202>=ad&&ad>1181)ad=3850;if(1181>=ad&&ad>1144)ad=3900;if(1144>=ad&&ad>1130)ad=3950;if(1130>=ad&&ad>1110)ad=4000;if(ad<1110)ad=4000;mileage=ad/100; //去前两位数字cost=ad%100;//去后两位数字display(mileage,cost);//调用显示函数}}。
AD转换器TLC2453与51单片机接口设计
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)可编程输出数据长度。
3TLC2543的引脚排列及说明TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1。
图1TLC2543的封装4接口时序可以用四种传输方法使TLC2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。
一个片选()脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结束。
图2显示每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入的时序,图3显示每次转换和数据传递使用16个时钟周期,仅在每次转换序列开始处插入一次时序。
表1TLC2543引脚说明5TLC2543在智能仪器仪表中的应用TLC2543是12位分辩率,与MAX186在功能上基本相同,但价格比MAX186低得多,因此TLC2543在便携式数据记录仪、医用仪器、电力检测仪表中具有广泛的应用。
下面主要讲述TLC2543在电力监控显示屏中的应用。
在电厂和变电站中,电网中的电压和电流由于多种原因常常处于波动状态,为了给工作人员提供有效数据,并在超值范围内采取有效措施,监测电网中电压和电流值是非常必要的。
该系统主要是采用TLC2543作A/D转换器,把电压和电流值转换成数字信号,GMS90C32作CPU,进行数字信号处理,PS7219作LED显示驱动器,把监测的电压和电流值显示出来,本文主要介绍TLC2543在电力监控显示屏中与单片机GMS90C32的接口部分,包括硬件和软件两部分。
TLC2543程序
//========================================================== ===========// tlc2543驱动程序//tlc2543.c//writer:谷雨2008年3月12日于EDA实验室整理//========================================================== ===========#include#define uint unsigned int#define uchar unsigned char//**************************修改硬件时要修改的部分********************************sbit clock = P0^0; //输入、输出时钟端sbit input = P0^1; //数据输入端sbit output = P0^2; //数据输出端sbit CS = P0^3; //片选端,负电平有效void delay(uchar N){while(N--);}uint read2543(uchar CON_WORD) //CON_WORD为选择的通道,为0--10 {uint ad=0;uchar i;CON_WORD<<=4;clock=0;CS=0;for(i=0;i<12;i++){if(output==1) //读取DATAOUTad=ad|0x01;if(CON_WORD&0x80) //读取控制字到INPUTinput=1;elseinput=0;clock=1;delay(10);clock=0;delay(10);CON_WORD<<=1;ad<<=1;}CS=1;ad>>=1;return(ad);}void init_serial() //初始化串口{TMOD=0x20; //定时器T1使用工作方式2TH1=250; //设置初值TH0=250;TR1=1; //开始计时PCON=0x80; //SMOD=1;SCON=0x50; //工作方式1,波特率9600bit/s,允许接收TI=1;}void main(){uint ad=0;float fVoltage1;uchar buf[5],i;init_serial();IE=0; //屏蔽中断while(1){ad=read2543(0);fVoltage1=(float)ad/0x0fff*5;buf[0]=(uchar)fVoltage1;buf[0]=buf[0]+0x30;buf[1]=''.'buf[2]=(uchar)(fVoltage1*10)%10;buf[2]=buf[2]+0x30;buf[3]=(uchar)(fVoltage1*100-buf[0]*100)%10;buf[3]=buf[3]+0x30;buf[4]=(uchar)((fVoltage1*1000)-buf[0]*1000-buf[1]*100)%10; buf[4]=buf[4]+0x30;i=0;while(i<5){if(TI==1){SBUF=buf[i];TI=0;i++;}}} }。
TLC2543
摘要:TLC2543是德州仪器公司生产的12位开关电容型逐次逼近模数转换器,它具有三个控制输入端,采用简单的3线SPI串行接口可方便地与微机进行连接,是12位数据采集系统的最佳选择器件之一。
本文介绍了该芯片的功能、时序,并给出了8051单片机的接口电路。
关键词:模数转换器; SPI串行接口; TLC25431. 概述A/D、D/A转换器是过程及仪器仪表、设备等检测与控制装置中应用比较广泛的器件。
随着大规模集成电路技术的发展,各种高精度、低功耗、可编程、低成本的A/D转换器不断推出,使得微机控制系统的电路更加简洁,可靠性更高。
TLC2543与外围电路的连线简单,三个控制输入端为CS(片选)、输入/输出时钟(I/O CLOCK)以及串行数据输入端(DATA INPUT)。
片内的14通道多路器可以选择11个输入中的任何一个或3个内部自测试电压中的一个,采样-保持是自动的,转换结束,EOC输出变高。
TLC2543的主要特性如下:●11个模拟输入通道;●66ksps的采样速率;●最大转换时间为10μs;●SPI串行接口;●线性度误差最大为±1LSB;●低供电电流(1mA典型值);●掉电模式电流为4μA。
2. TLC2543引脚功能与接口时序2.1 TLC2543引脚排列TLC2543的引脚排列如图1所示。
引脚功能说明如下:AIN0~AIN10:模拟输入端,由内部多路器选择。
对4.1MHz的I/O CLOCK,驱动源阻抗必须小于或等于50Ω;CS:片选端,CS由高到低变化将复位内部计数器,并控制和使能DATA OUT、DATA INPUT 和I/O CLOCK。
CS由低到高的变化将在一个设置时间内禁止DATA INPUT和I/O CLOCK;DATA INPUT:串行数据输入端,串行数据以MSB为前导并在I/O CLOCK的前4个上升沿移入4位地址,用来选择下一个要转换的模拟输入信号或测试电压,之后I/O CLOCK将余下的几位依次输入;DATA OUT:A/D转换结果三态输出端,在CS为高时,该引脚处于高阻状态;当CS为低时,该引脚由前一次转换结果的MSB值置成相应的逻辑电平;EOC:转换结束端。
TLC2543 中文资料
TLC2543 中文资料TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2 TLC254 ...TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D 转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2 TLC2543的特点(1)12位分辩率A/D转换器;(2)在工作温度范围内10μs转换时间;(3)11个模拟输入通道;(4)3路内置自测试方式;(5)采样率为66kbps;(6)线性误差±1LSBmax;(7)有转换结束输出EOC;(8)具有单、双极性输出;(9)可编程的MSB或LSB前导;(10)可编程输出数据长度。
3TLC2543的引脚图(管脚图)及说明TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1。
表1 TLC2543引脚说明引脚号名称I/O 说明1~9,11,12 AIN0~AIN10 I 模拟量输入端。
11路输入信号由内部多路器选通。
对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Ω,而且用60pF电容来限制模拟输入电压的斜率15 I 片选端。
在端由高变低时,内部计数器复位。
由低变高时,在设定时间内禁止DATAINPUT和I/O CLOCK17 DATAINPUT I 串行数据输入端。
由4位的串行地址输入来选择模拟量输入通道16 DATA OUT O A/D转换结果的三态串行输出端。
为高时处于高阻抗状态,为低时处于激活状态19 EOC O 转换结束端。
在最后的I/OCLOCK下降沿之后,EOC从高电平变为低电平并保持到转换完成和数据准备传输为止10 GND 地。
TLC2543采集程序
TLC2543采集程序//从TLC2543读取采样值,形参port是采样unsigned int read2543(unsigned char td_num) //对应某通道的A/D转换函数,td_num为通道号{ // 范围为:0~10,对应于0#~10#//unsigned char addr; // addr为对应某通道号的可编程输入数据//unsigned char in_8; // in_8为高位或低位的8位A/D转换值// unsigned char loop; // loop为输出的位数//unsigned int zz; // zz为A/D转换的中间值和最终值//bit cc; //89C51的进位位//cs=1; //令cs=1,即TLC2543处于A/D转换周期//ad_lp:if(!eoc)goto ad_lp; //在cs=1期间,进行某通道的A/D转换,EOC=1转换结束// addr=td_num*0x10+AD0_D; // td_num为通道号输入参数,addr为对应某通道号的可编程输入数据// cs=0; //选通TLC2543。
开始I/O周期//loop=8; //MSB的位数共8位//in_8=0; //初始化清存贮A/D值的存贮单元//do{clk=0; //输出一个CLK的低电平到TLC2543//cc=out; //把TLC2543的DATA OUT输出至89C51的进位位// if(cc)in_8=(in_8*2)+0x01; //对A/D值的处理,若本次DA TA OUT的电平为1,则in_8值左移一位后再加1//else in_8=in_8*2; //若本次DATA OUT的电平为0,则in_8值左移一位////以下做可编程数据从89C51向TLC2543的输入寄存器同步输出//if(addr&0x80)in=1; //若addr的最高位为1,则向TLC2543输出值AD_ADDR=1// else in=0; //若addr的最高位为0,则向TLC2543输出值AD_ADDR=0//addr<<=1; // addr为可编程数据,左移一位,准备下一位的输出//clk=1; //输出一个CLK电平1给TLC2543//}while(--loop); //共做位//zz= in_8*0x10; // in_8左移4位,in_8为A/D数据的高8位// //以下做低8位数据从TLC2543向89C51输出//loop=8;in_8=0;do{clk=0;cc=out;if(cc)in_8=(in_8*2)+0x01;else in_8=in_8*2;if(addr&0x80)in=1;else in=0;addr<<=1;clk=1;}while(--loop);//以下是对高8位和低8位数据合并处理为16位数据//zz+=in_8/0x10;clk=0;cs=1; //重新禁止TLC2543,I/O口线处于高阻状态// return(zz);}。
我的TLC2543学习笔记——基于msp430g2553单片机
我的TLC2543学习笔记——基于msp430g2553单⽚机还是贴不了图⽚我的TLC2543学习笔记Created on: 2012-9-8Author: zhang bin学习笔记for msp430g2553redesigned by zhang bin2012-09-08versions:12_09_01All Rights ReservedTLC2543具有4线制串⾏接⼝,分别为⽚选端(CS),串⾏时钟输⼊端(I/O CLOCK),串⾏数据输⼊端(DATA IN)和串⾏数据输出端(DATA OUT)(转换结束脚EOC可以不接)。
它可以直接与SPI器件进⾏连接,不需要其他外部逻辑。
同时,它还在⾼达4MHz的串⾏速率下与主机进⾏通信。
TLC2543的特点及引脚TLC2543是TI的12 bit串⾏A/D转换器,11个模拟输⼊通道。
使⽤开关电容逐次逼近技术完成,A/D转换过程.由于是串⾏输⼊结构,能够MCU的I/O资源.其特点有:1)12 bit分辨率A/D转换器;2)在⼯作温度范围内10us转换时间;3)11个模拟输⼊通道;4)3路内置⾃测试⽅式;5)采样率为66 kb/s;6)线性误差+1LSB(max);7)有转换结束(EOC)输出;8)具有单、双极性输出;9)可编程的MSB或LSB前导;10)可编程的输出数据长度.��� 12-Bit-Resolution A/D Converter��� 10-µs Conversion Time Over OperatingTemperature��� 11 Analog Input Channels��� 3 Built-In Self-Test Modes��� Inherent Sample-and-Hold Function��� Linearity Error . . . ±1 LSB Max��� On-Chip System Clock��� End-of-Conversion Output��� Unipolar or Bipolar Output Operation(Signed Binary With Respect to 1/2 theApplied Voltage Reference)��� Programmable MSB or LSB First��� Programmable Power Down��� Programmable Output Data Length��� CMOS Technology��� Application Report Available我⽤的tlc2543是直插的,引脚图如下:各引脚的详细说明如下:引脚号名称I/O说明1~9,11,12AIN0~AIN10I模拟量输⼊端。
带串行控制和11路输入的模数转换器TLC2543及应用
带串行控制和11路输入的模数转换器TLC2543及应用AI -AI O模拟输入端,由内部多路器选N0 Nl:择。
41对 .MHz IO C OC驱动源阻抗必须小的/ L K,于或等于5 0; OC: S片选靖,S由高到低变化将复位内部计数C器,并控制和使能D TA O A uT、A NP D TA I uT和IO c OC/ L K。
C s由低到高的变化将在一个设置时间内禁止D A I UT和IO C OC AT NP/ L K;DA A NP TI uT:串行数据输入端,串行数据以MS B为前导并在I L c的前4个上升沿移/O c O K入4位地址,用来选择下一个要转换的模拟输入信号或测试电压,之后I o cL) K将余下的几位依/ ( c次输入;D TA OUT: A A/D转换结果三态输出端,在内部自测试电压中的一个,采样一保持是自动的,转换结束,Oc 输出变高。
ETU: 5 3的主要特性如下:24写为高时,该引脚处于高阻状态;芒当§为低时,该引脚由前一次转换结果的MS B值置成相应的逻辑电平;^帅T V c● l个模拟输入通道:1 ●6 kp的采样速率;6ss●最大转换时间为1 s ; ●S I P串行接口;●线性度误差最大为±1 S L B: ^M I^№ I^I N 3 A N I4 AI ^I 6 NEC 0 I0 L, e 01 U P T D^0 叽●低供电电流(mA典型值) 1;●掉电模式电流为。
西R+ EF2 TL 2 4 . C 5 3引脚功能与接口时序21 L 24 T C 5 3引脚排列TL2 4 C 5 3的引脚排列如图1所示。
引脚功能说明如下:A S I7^ N I8 GD NR - EF ^ N1 I 0^ N9 I图1 TL 24 C 5 3的引脚排列<i>带串行控制和11路输入的模数转换器*****及应用</i>维普资讯1 4《国外电子元器 ̄}00 20年第1期20年1 00月图2 1时钟传送时序图(用c MS 6使s, B在前)E oc:转换结束端。
12位TLC2543模数转换总结
Lcd_wcd(1,0x2e);
Lcd_wcd(1,0x30+shi);
Lcd_wcd(1,0x30+ge);
Lcd_wcd(1,0x30+xiao);
/*for(i=0;i<SUM;i++)
{
temp1+=redad(0x01);//选择通道1,并读取AD转换的数
GND
地。GND是内部电路的地回路端。除另有说明外,所有电压测量都相对GND而言
18
I/O CLOCK
I
输入/输出时钟端。I/OCLOCK接收串行输入信号并完成以下四个功能:(1)在I/O CLOCK的前8个上升沿,8位输入数据存入输入数据寄存器。(2)在I/OCLOCK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到I/OCLOCK的最后一个下降沿为止。(3)将前一次转换数据的其余11位输出到DATA OUT端,在I/OCLOCK的下降沿时数据开始变化。(4)I/OCLOCK的最后一个下降沿,将转换的控制信号传送到内部状态控制位
//uchar code dis1[]={"采集电压:000 v"};
/*************延时**************/
void delay(uint z)
{//一毫秒
uint y;
for(;z>0;z--)
for(y=110;y>0;y--) ;
}
void delay_us(uchar n)//微秒
shi=x/1000%10;
ge=x/100%10;
xiao=x/10%10;
}
/****************主函数****************/
TLC2543资料c语言
2.2TLC2543的内部寄存器
从编程角度看,TLC2543内部寄存器有输入数据寄存器与输出数据寄存器。输入数据寄存器存放从DATA INPUT端移入的控制字。输出数据寄存器存放转换好的数据,以供从DATA OUT端移出。
(4)控制字输入引脚
DATA TNPUT,17脚:控制字输入端,选择通道及输出数据格式的控制字由此输入。
(5)转换数据输出引脚
DATA OUT,16脚:A/D转换结果输出的3态串行输出端。
2TLC2543的编程要点
2.1控制字的格式
控制字为从DATA INPUT端串行输入TLC2543芯片内部的8位数据,它告诉TLC2543要转换的模拟量通道、转换后的输出数据长度、输出数据的格式。其中高4位(D7~D4)决定通道号,对于0通道至10通道,该4位分别为0000、0001、…、1010,该4位为其它数字时的功能,用于检测校正,本文不作具体介绍。低4位决定输出数据长度及格式,其中D3、D2决定输出数据长度,TLC2543的输出数据长度有8位、12位、16位,但由于TLC2543为12位A/D转换芯片,经过分析可以看出,8位、16位输出对TLC2543的应用意义不大,宜定在12位输出,D3、D2两位为00即可。D1决定输出数据是高位先送出,还是低位先送出,若为高位先送出,该位为0,反之为1。D0决定输出数据是单极性(二进制)还是双极性(2的补码),若为单极性,该位为0,反之为1。
关键词:A/D转换;TLC2543芯片;51系列单片机;接口技术
中图法分类号:TP334.7文献识别码:B
TLC2543中文资料
串行A D转换器T L C2543中文资料T L C2543是T I公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2T L C2543的特点(1)12位分辩率A/D转换器;(2)在工作温度范围内10μs转换时间;(3)11个模拟输入通道;(4)3路内置自测试方式;(5)采样率为66k b p s;(6)线性误差±1L S B m a x;(7)有转换结束输出E O C;(8)具有单、双极性输出;(9)可编程的M S B或L S B前导;(10)可编程输出数据长度。
3T L C2543的引脚排列及说明T L C2543有两种封装形式:D B、D W或N封装以及F N封装,这两种封装的引脚排列如图1,引脚说明见表1。
图1T L C2543的封装4接口时序可以用四种传输方法使T L C2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。
一个片选()脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结束。
图2显示每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入的时序,图3显示每次转换和数据传递使用16个时钟周期,仅在每次转换序列开始处插入一次时序。
引脚号名称I/O说明1~9,11,12AIN0~AIN10I模拟量输入端。
11路输入信号由内部多路器选通。
对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Ω,而且用60pF电容来限制模拟输入电压的斜率15I片选端。
在端由高变低时,内部计数器复位。
由低变高时,在设定时间内禁止DATAINPUT和I/O CLOCK17DATAINPUT I串行数据输入端。
由4位的串行地址输入来选择模拟量输入通道16DATA OUT O A/D转换结果的三态串行输出端。
TLC2543在89C51单片机数据采集系统中的应用[1]
T LC2543在89C51单片机数据采集系统中的应用ΞApplication of T LC2543in MCU Data Acquisition System姚 远1,王 赛2,凌毓涛1(1.华中师范大学信息技术系 湖北武汉430079;2.华中师范大学计算机科学系 湖北武汉430079)【摘 要】 介绍了单片机数据采集系统的硬件原理和软件设计。
该系统以89C51单片机为核心,以12位TLC2543为串行模数转换器,由MC14489构成采集数据实时显示系统,带有RS2232通信接口,系统具有易实现、易编程、可移植、体积小、功耗低等优点,具有良好的推广与应用价值。
关键词:TLC2543,单片机,数据采集【Abstract】 The paper introduces the hardware principle and the software design of the MCU data acquisition system based on89C51,in which the12bit TLC2543acts as the serial A/D converter and the RS2232as the communication interface,and the real2time displaying system is constructed by MC14489. The system has the advantages of easily realize,program and transplant,and it has the small volume and low power,etc..It is therefore very promising and valuable.K eyw ords:TLC2543,MCU,data acquisition1 T LC2543芯片介绍TLC2543是TI公司的具有11个通道的12位开关电容逐次逼近串行A/D转换器,采样率为66kbit/ s,采样和保持由片内采样保持电路自动完成。
基于51单片机TLC2543的AD电压采集双通道12864显示程序
uchar ch,i,j; uint ad; ch=port; for(j=0;j<3;j++) {
ad=0; ch=port; eoc=1; cs=1; cs=0; clk=0; for(i=0;i<12;i++) {
if(sdo) ad|=0x01; sdi=(bit)(ch&0x80); clk=1; clk=0; ch<<=1; ad<<=1;
sbit key1=P3^1; sbit key2=P3^2; sbit key3=P3^3; sbit key4=P3^4; sbit LED=P2^0;
void delay_ms(uchar t) {
uint j,k; for(k=t;k>0;k--)
for(j=110;j>0;j--); }
void write_com(uchar com) {
uchar table[5]; uint sda=8000;
sbit eoc=P1^3; sbit clk=P1^4; sbit sdi=P1^5; sbit sdo=P1^6; sbit cs=P1^7; sbit lcd_rs=P2^4; sbit lcd_rw=P2^5; sbit lcd_en=P2^6; sbit lcd_psb=P2^1; sbit lcd_rst=P2^3;
{
LED=0;
display1(3,0,"电流超出设定值!");
delay_ms(2000);
}
}
else
{
LED=1;
display1(3,0,"
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
d=c;
c=b;
b=a;
a=r;
aver=(a+b+c+d+e)/5;
return aver;
}
void main()
{
uint x,i=0;
init_lcd();
write_com(0x80);
for(num=0;num<4;num++)
函数名称: read_ad(uchar port)
功 能: 读取port端口的ad值
参 数: 端口port, 时钟clock, 使能端cs,数字输入in,输出out ,+verf接5v,——verf接0
返回值 : uint ad
****************************************************************/
{
lcden=0;
write_com(0x38); //显示模式
write_com(0x0c); //显示光标设置
write_com(0x06); //地址指针移动方式
write_com(0x01); //显示清屏
write_com(0x80); //当前指针地址
write_data(table_2[b]);
delayms(10);
write_data(table_2[s]);
delayms(10);
write_data(table_2[g]);
delayms(10);
}
uint lvbo(uint r)
{
uint a,b,c,d,e,aver;
{
uchar i;
for(i=0;i<n;i++)
{
_nop_();
}
}
void delayms(uchar z) //延时z毫秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/***************************************************************
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit AD_CS=P2^3;
sbit AD_OUT=P2^4;
sbit AD_IN=P2^5;
sbit AD_CLOCK=P2^6;
}
void display(uint shu)
{
uchar q,b,s,g;
q=shu/1000;
b=shu%1000/100;
s=shu%100/10;
g=shu%10;
write_com(0x80);
write_data(table_2[q]);
delayms(10);
{
lcdrs=1;
lcdrw=0;
P0=date;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void lcd_clear() //清屏函数
{
write_com(0x01);
delayms(5);
}
void init_lcd() //液晶初始化
uint read_ad(uchar port)
{
uint ad=0,i;
AD_CS=1;
AD_CLOCK=0;
delay(3); //3
AD_CS=0;
port<<=4;
for(i=0;i<12;i++)
{
if(AD_OUT)
return(ad);
}
//液晶部分。。。。。。。。。
void write_com(uchar com) //写指令
{
lcdrs=0;
lcdrw=0;
P0=com;
delayms(5);
lcden=1;
delayms(5);
lcden=0;
}
void write_data(uchar date) //写数据
{
write_data(table_1[num]);
delayms(10);
}
while(1)
x=read_ad(8);
display(x);
delayms(50);
}
}
uchar code table_1[]="0000";
uchar code table_2[]="0123456789";
sbit lcdrs=P2^2; //液晶端口
sbit lcdrw=P2^1;
sbit lcden=P2^0;
uchar num;
void delay(uchar n)
ad|=0x01;
AD_IN=(bit)(port&0x80);
AD_CLOCK=1;
delay(3);
AD_CLOCK=0;
delay(3);
port<<=1;
ad<<=1;
}
AD_CS=1;
ad>>=1;