AD转换程序(ADC0808 TLC2543)

合集下载

AD转换芯片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 片选

AD转换电路(ADC0809)

AD转换电路(ADC0809)
CC REF
1 2 3 4 5 6 7 8 9 10 11 12
28 27 26 25
IN2 IN1 IN0 ADDA
24
23
ADDB
ADDC ALE D7 D6 D5 D4 D0 VREF(-) D2
ADC 0809
22 21 20 19 18 17 16 15
13
14

ADC0809的通道选择:
1
ADC574工 作时序表 1 1 1 1
0
0 0 0 0
0
0 1 1 1
×
× 1 0 0
0
1 × 0 1
启动12位转换
启动8位转换 12位数据输出 高8位数据输出 低4位数据输出

AD574A的工作时序:
CE CS R/C A0 STS D11~D0
CE CS R/C A0 STS D11~D0 数据
12 25
5*10-6 5*10-6 27*10-6 10*10-6
0~~+10V 或0~~+20V -5~~+5V 或 -10~~+10V 390(典型) ;725(最大)
CS C R/



引脚特性: D0~D11:12位数字量输出。 VL 1 CE:片选信号,高电平有效。 12/8 2 CS 3 CS:片选信号,低电平有效。 A0 4 R/C:数据读/启动信号。R/C=1时, R/C 5 读取转换结果;R/C=0时,启动A/D转换。 CE 6 VCC 7 12/8:输出数据长度选择信号。 REFOUT 8 AGND 9 A0:字节选择信号。在=0状态下, REFIN 10 A0=0启动12位A/D转换,A0=1 VEE 11 BIPOFF 12 动8位A/D转换。在=1且=0状态下, 10VIN 13 A0=0读高8位数据,A0=1读低4位数据。 20VIN 14 STS:AD574A的工作状态信号。 STS=1表示正处于转换状态;STS=0表示转换完毕。

AD转换子程序

AD转换子程序

实验6 AD转换器实验配合教材p227-p233,根据虚拟实验的环境所提供的子程序; ---------------------------; 程序名称:ADC0832数据采集子程序; 功能:采集ADC0832采集的数据; 数据采集的结果存:20H; 占用的寄存器:R5,A,CY; ---------------------------AD: MOV R5,#8CLR CSCLR CK1SETB CK1CLR CK1SETB CK1CLR CK1CLR DO1NOPNOPSETB CK1NOPNOPCLR CK1SETB DO1NOPNOPSETB CK1NOPNOPADA: CLR CK1MOV C,DO1RLC ASETB CK1DJNZ R5,ADASETB CSMOV 20H,ARET; ----------------------------; 子程序名称:CAL_VOL; 功能:将AD转换结果(已存放在20H中)处理成为带一位小数点的十进制数; 入口:内部ram 20H-- 十六进制数; 出口:V_1 (77H)--用于电压0.1位值的显示;V_10(76H)--用于电压个位值的显示;; 占用的寄存器:A,B; ------------------------------------------------------------CAL_VOL: MOV A,20H ;算法是:x*(5/256)*10=x*50/256/10MOV B,#100 ;虚拟实验中ADC0832获取的值只有实际值的一半,只好乘2了MUL ABMOV A,BMOV B,#10DIV ABMOV V_10,AMOV V_1, BRET;*******************************************************;这是一个用5个CD4094做的显示参考子程序;在单片机Proteus的实验中可用此程序代替实验版中的LCD;程序名:display;功能:显示LED 的5位数字;说明:所显示的数字个位~万位的内容存于RAM75~79H;占用R0,R7,DPTR;*******************************************************DIN BIT P2.6CLK BIT P2.7STB BIT P2.3DISPLAY:MOV R0,#75HDP12: CLR STBMOV R7,#8MOV A,@R0MOV DPTR,#TABMOVC A,@A+DPTRDP13: RLC AMOV DIN,CCLR CLKSETB CLKDJNZ R7,DP13INC R0CJNE R0,#7AH,DP12SETB STBRETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;0,1,2,3,4,5DB 82H,0F8H,80H,90H,0FFH,9DH,0C6H;6,7,8,9,暗,u,CDELAY: MOV R4,#10L1: MOV R5,#0L2: MOV R6,#0L3: DJNZ R6,L3DJNZ R5,L2DJNZ R4,L1RET。

adc0808数模转换后的数据变为bcd码

adc0808数模转换后的数据变为bcd码

ADC0808是一款常用的8位分辨率的模拟数字转换器(ADC),可以将模拟信号转换为数字信号。

在转换完成后,数据通常以二进制的形式表示。

然而,有时我们需要将这些数据转换为其他形式的编码,如二进制编码十进制(BCD)码。

BCD码,也就是二进制编码十进制,是一种常用的数字编码方式,它将十进制的数字0到9转换成四位二进制数。

这样,每个数字都有一个固定的四位二进制代码,使得在计算机中更容易进行数字处理和存储。

假设我们有一个ADC0808转换后的数据流,我们可以按照以下步骤将其转换为BCD码:1. **模拟信号到数字信号转换**:首先,我们需要从ADC0808读取转换后的数字数据。

这些数据通常在0-255之间,代表了模拟信号的电压值。

2. **数据清洗**:由于ADC的分辨率和精度可能存在差异,我们可能需要将读取到的数据进行清洗和修正,以确保其准确性和一致性。

3. **二进制到BCD码转换**:接下来,我们将每个数字从二进制转换为BCD码。

具体来说,我们将每个数字的最高位用作BCD码的最高位(即0000),最低位用作BCD码的最低位(即1001)。

对于中间的三个位,我们将其分别映射到BCD码的十位、个位和千位。

举个例子,假设我们有一个数字57,其二进制表示为0101 0111。

将其转换为BCD码后,最高位为0(对应BCD码的最低位),其余三个高位为1(对应BCD码的十位、个位和千位),因此最终的BCD码为'0110 0111'。

通过以上步骤,我们就将ADC0808转换后的数字数据从二进制转换为BCD码。

在实际应用中,这种转换方式可以帮助我们更好地理解和处理数字数据,提高数据的可读性和可处理性。

请注意,上述步骤是基于假设和一般性的描述。

在实际应用中,可能还需要考虑其他因素,如ADC的精度、数据清洗的方法、BCD码的存储和传输方式等。

因此,具体的实现方式可能会因应用场景和需求而有所不同。

TLC2543中文资料

TLC2543中文资料

串行AD转换器TLC2543中文资料
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 SB前导;
(10)可编程输出数据长度。

3T L C2543的引脚排列及说明
T L C2543有两种封装形式:D B、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1。

图1T L C2543的封装
4接口时序
可以用四种传输方法使T L C2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。

一个片选()脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结束。

图2显示每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入的时序,图3显示每次转换和数据传递使用16个时钟周期,仅在每次转换序列
开始处插入一次时序。


转换结果的三态串行输出端。

于高阻抗状态,
表1T L C2543引脚说明
图216时钟传送时序图(使用,M SB在前)
图316时钟传送时序图(不使用,M SB在前)。

基于TLC2543数字电压表的设计

基于TLC2543数字电压表的设计

换 器 主 要 有ADC0808、ADC0809等 ,这 些 A/D转 换 器 转 换 精 度 低 , 压 端 ,VCC为 电源 端 ,GND为 地 。
并 且 采 用 并 口与 单 片 机 相 连 ,大 量 占用 单 片机 的I/0口资 源 。为此 ,
TLC2543的 控 制 字 为 8位 数 据 ,从DATA INPUT端 串 行 输 入 ,
(3)具 有 1 1路 模 拟 输 入 通 道 ;
决定 了 输 出 数 据 长 度 及 格 式 ,其 中D3、D2决 定 了 输 出 数 据 式 ;
表 示 输 …数 据 长度 为8位 ,11表示 输 出数 据 长 度 为 16位 ,其他 值 表 示
(10)可 编 程 的 输 …数 据 长 度 。
文章 编号 :1007—9416(20I1)l0-0059—03
Digital Voltm eter Based on TLC 2 5 43
Ye Gang
(Lishui Vocational and Technical College,Lishui,3230()f1,China)
Abstract:D igital volnneter for electronic circuits com nm nly llsed test instrulnel1ts.the paper discusses II digital voltm eter T LC2543 based design methods The digital voltm eter control system AT89S5 1 nlicrocontroller,A/D COllVerter TLC2543 aS the lllail]hardware,to achieve sim ple digital vokm eter of the hardware circuit alld software design,has SOllle practical vilhle.

单片机实验(AD转换)

单片机实验(AD转换)

实验三 A/D、D/A转换实验一、实验目的1.熟悉DAC0832并行接口数模转换器和TLC2543串行接口模数转换器的基本原理和编程方法。

2.进一步熟悉单片机应用系统开发步骤和方法。

二、实验电路实验所用元件清单如下表所示:1. 串行A/D转换器TLC25432.并行D/A转换器DA0832三、相关知识(一)串行A/D转换器TLC25431. TLC2543的特性与引脚TLC2543是TI公司的TLC2543 12位串行A/D转换器,使用开关电容逐次逼近技术完成A/D转换过程。

由于是串行输入结构,能够节省80C51系列单片机的I/O资源,而且价格适中。

主要特点如下:●12位分辨率A/D转换器。

●在工作温度范围内10 s转换时间。

●11个模拟输入通道。

●3路内置自测试方式。

●采样率为66kbps。

●线性误差+1LSB(max)。

●有转换结束(EOC)输出。

●具有单、双极性输出。

●可编程的MSB或LSB前导。

●可编程的输出数据长度。

2. TLC2543的工作过程TLC2543的工作过程分为两个周期:I/O 周期和实际转换周期。

1)I/O周期I/O周期由外部提供的I/O CLOCK定义,延续8、12或16个时钟周期,决定于选定的输出数据长度。

器件进入I/O周期后同时进行两种操作。

(1)在I/O CLOCK的前8个脉冲的上升沿,以MSB前导方式从DA TA INPUT端输入8位数据流到输入寄存器。

其中前4位为模拟通道地址,控制14通道模拟多路器从11个模拟输入和3个内部自测电压中,选通一路送到采样保持电路,该电路从第4个I/O CLOCK脉冲的下降沿开始,对所选信号进行采样,直到最后一个I/O CLOCK脉冲的下降沿。

I/O周期的时钟脉冲个数与输出数据长度(位数)有关,输出数据长度由输入数据的D3、D2选择为8、12或16位。

当工作于12或16位时,在前8个时钟脉冲之后,DATA INPUT无效。

(2)在DATA OUT端串行输出8、12或16位数据。

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

TLC2543多通道串行AD转换器及其C51语言单片机应用程序
作 者: 梁汉明 韦宁 Liang Hanming Wei Ning 作者单位: 广西大学梧州分校计算机科学系,广西,梧州,543002 刊 名: 广西大学梧州分校学报 英文刊名: JOURNAL OF GUANGXI UNIVERSITY WUZHOU BRANCH 年,卷(期): 2003 13(3) 分类号: B641 关键词: 串行A/D转换器 智能仪表 C51程序
本文介绍ad转换器tlc2543的工作原理叙述了使用该器件做电路设计及编程经验详细阐述使用该器件设计智能仪表的电路及附带注释的c51程序
TLC2543多通道串行AD转换器及其C51语言单片机应用程序
3多通道串行A/D转换器及其C51语言单片机应用程序
本文介绍A/D转换器TLC2543的工作原理,叙述了使用该器件做电路设计及编程经验,详细阐述使用该器件设计智能仪表的电路及附带注释的C51程序.

tl2543ad转换报告

tl2543ad转换报告

实验名称:tl2543ad转换报告实验题目:完成tlc2543的ad转换实验,作仿真图,画出流程图;实验流程图:模拟信号stc89c51单片机数码管显示时序图:所用为12位ad转换:分析:1.上电时,EOC=“1”,CS=“1”2.使CS下降,前次转换结果的MSB即A11位数据输出到Dout供读数。

3.将输入控制字的MSB位即C7送到Din,在CS之后tsu>=1.425us后,使CLK 上升,将Din上的数据移入输入寄存器。

4.CLK下降,转换结果的A10位输出到Dout供读数。

5.在第4个CLK下降时,由前4个CLK上升沿移入寄存器的四位通道地址被译码,相应模入通道接通,其模入电压开始时对内部开关电容充电。

6.第8个CLK上升时,将Din脚的输入控制字CO位移入输入寄存器后,Din 脚即无效。

7.第11个CLK下降,上次AD结果的最低位AO输出到Dout供读数。

至此,I/O 数据已全部完成,但为实现12位同步,仍用第12个CLK脉冲,且在其第12个CLK 下降时,模入通道断开,EOC下降,本周期设置的AD转换开始,此时使CS上升。

8.经过时间tconv<=10us,转换完毕,EOC上升。

9.使CS下降,转换结果的MSB位B11输出到Dout供读数。

10.将新周期的输入控制字的MSB位D7送到Din,在CS下降之处,tSU时间处由CLK上升将Din数据移入输入寄存器。

11.CLK下降,将AD结果的B10位输出到Dout。

对应引脚:1~9、11、12——AIN0~AIN10为模拟输入端;15——CS 为片选端;17——DIN 为串行数据输入端;(控制字输入端,用于选择转换及输出数据格式)16——DOUT为A/D转换结果的三态串行输出端;(A/D转换结果的输出端。

)19——EOC为转换结束端;18——CLK为I/O时钟;(控制输入输出的时钟,由外部输入。

)14——REF+为正基准电压端;13——REF-为负基准电压端;20——VCC为电源;10——GND为地。

ad0808 转换程序以及原理图

ad0808 转换程序以及原理图

ADC 转换程序显示U —P00P01P02P03P04P05P06P07P20P21P22P24P25P26P27P10P11P12P13P14P15P17P16P30P31P32P33P34P35P36P37D0D1D2D3D4D5D6D7P 10P 11P 12P 13P 14P 15P 17P 37P 36P 35P 34P 33P 32P 31P 30P23P 16P10P11P12P13P14P15P16P17P10P11P12P13P14P15P16P17A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0P30P31P32P33P 34P 35P 36P 37P 00P 01P 02P 03P 04P 05P 06P 07P 32P 31P 30A0A1A2A3A4A5A6A7P26P26P27P27P 00P 01P 02P 03P 04P 05P 06P 07P 20P 21P 22P 23P 24P 25XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52234567891RP1RESPACK-8R2200R3200R4200R5200R6200R7200R8200R9200D2LED-REDD3LED-REDD4LED-REDD5LED-REDD6LED-REDD7LED-REDD8LED-REDD9LED-REDOFFON12345678161514131211109DSW1DIPSW_8OFFON12345678161514131211109DSW2DIPSW_812365489=7+CONABCD1243D 714D 613D 512D 411D 310D 29D 18D 07E6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LOUT121ADD B 24ADD A 25ADD C 23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START 6OUT58EOC 7OE9CLOCK 10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE 22U2ADC080897%RV110k BUZ1BUZZERQ1NPNR11k55%RV21kU 2(C L O C K )//***********************************************************// //ADC 模数转换电压表 ////作者:张武林// //时间:2012/08/11////***********************************************************///***********************************************************/ //调用库、宏定义端口///***********************************************************/#include<> #include <>#define uint unsigned int #define uchar unsigned char #define DATA P0 #define ADC P1 //sbit CLOCK=P3^0; sbit START=P3^0; sbit OE=P3^1;/***********************************************************//***********************************************************///定义变量和数组///***********************************************************/ uchar dispcount,adc;int Uo,ge,shi,bai,qian,s;uchar code Dispduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};uchar Dispwei[]={0,0,0,0,0,0};/***********************************************************//***********************************************************///延时子程序///***********************************************************/ void delay(uint z){uint x,y;for(x=100;x>0;x--)for(y=z;y>0;y--) ;}/***********************************************************//***********************************************************///中断初始化///***********************************************************/ void intrrupt_init(){EA=1;TR0=1;ET0=1;TMOD=0x01;TH0=0xf0;TL0=0x60;dispcount=0;EOC=1;}/***********************************************************//***********************************************************///写入数码管位码子程序// /***********************************************************/ void wei_to_disp(){Dispwei[0]=16;Dispwei[1]=16;Dispwei[2]=qian;Dispwei[3]=bai;Dispwei[4]=shi;Dispwei[5]=ge;}/***********************************************************//***********************************************************/ //读adc数据子程序// /***********************************************************/ void read_adc_tomcu(){START=0;delay(1);START=1; //启动addelay(1);OE=1; //转换完读取数据delay(1);adc=ADC;OE=0;delay(1);}/***********************************************************//***********************************************************/ //转换显示子程序// /***********************************************************/ void adc_zhuanhuan(){Uo=100*adc;Uo=Uo/255;Uo=Uo*50;qian=Uo/1000;bai=Uo/100%10;shi=Uo/10%10;ge =Uo%10;}/***********************************************************//***********************************************************/ //主程序// /***********************************************************/void main(){intrrupt_init();while(1){read_adc_tomcu();adc_zhuanhuan();wei_to_disp();};}/***********************************************************//***********************************************************///定时器0子程序///***********************************************************/void time0() interrupt 1{TH0=0xf0;TL0=0x60;dispcount++;if(dispcount==6)dispcount=0;switch(dispcount){case 0:{P2=0xfe;DATA=0x3e;break;}case 1:{P2=0xfd;DATA=0x40;break;}case 2:{P2=0xfb;DATA=Dispduan[Dispwei[dispcount]];DATA|=0X80;break;}case 3:{P2=0xf7;DATA=Dispduan[Dispwei[dispcount]];break;}case 4:{P2=0xef;DATA=Dispduan[Dispwei[dispcount]];break;}case 5:{P2=0xdf;DATA=Dispduan[Dispwei[dispcount]];break;}}}/***********************************************************/。

ADC的应用与编程

ADC的应用与编程

TLV2543转换时序图:
AD(TLV2543) 转换实验的编程
芮德华
北京精仪达盛科技有限公司
本讲主要内容:
(1)TLV2543简介 (2) Cortex-M3的GPIO模拟SPI控制TLV2543 转换的实现方法
(1)TLV2543简介
TLC2543是TI公司的12位串行模数转换器, 使用开关电容逐次逼近技术完成A/D转换过 程。 TLC2543具有4线制串行接口,分别为片选 端(CS),串行数据输出端 (DATA OUT)。它可以直接与SPI器件进行 连接,不需要其他外部逻辑。同时,它还 在高达4MHz的串行速率下与主机进行通信。


TLC2543除了具有高速的转换速度外,片 内还集成了14路多路开关。其中n路为外部 模拟量输入,3路为片内自测电压输入。在 转换结束后,EOC引脚变为高电平,转换 过程中由片内时钟系统提供时钟,无需外 部时钟。在AD转换器空闲期间,可以通过 编程方式进入断电模式,此时器件耗电只 有25pA。
(2) Cortex-M3的GPIO模拟SPI控制 TLV2543转换的实现方法
编程要点: 1、GPIO的配置; 2、TLV2543转换通道的选择与转换时序。 注:GPIO的配置已经在前面讲过,在此不再 重复,可以参照前面的GPIO部分。
转换通道的选择:
如右图所示:通过输入 DATA INPUT管脚0-A来选择 我们所示用的AD转换通道。 具体在程序中采用左移四位 的方式来选择AD转换通道。

AD转换

AD转换

一、实验目的了解ADC0809/ADC0808的工作原理;掌握单片机与ADC0809/ADC0808接口原理;熟悉CPU中断方式和查询方式读取A/D转换结果的程序设计方法。

二、实验内容(1)用中断方式编写并调试出一个程序;(2)用查询方式编写并调试出一个程序;(3)用调用显示子程序方法,将转换结果在显示块上显示出来;(4)将采样结果以8个LED显示进行编码,以得到将0V-5V区间分为256级显示效果。

三、实验步骤打开Keil程序,执行菜单命令“Project”->“New Project”创建“0808AD转换”项目,并选择单片机型号为AT89C51。

执行菜单命令“File” -> “New”创建文件,输入源程序,保存为“0808AD转换.A51”。

在“Project”栏的File项目管理窗口中右击文件组,选择“Add Files to Group ‘Source Group1’”将源程序“0808AD转换.A51”添加到项目中。

执行菜单命令“Project” -> “Options for Target ‘Target1’”,在弹出的对话框中选择“Output”选项卡,选中“Greate HEX File”。

执行菜单命令“Project” -> “Build Target”,编译源程序。

如果编译成功,则在“Output Window”窗口中显示没有错误,并创建了“0808AD转换.HEX”文件。

在proteus仿真平台上建立参考图系统,并将程序上载到虚拟平台上运行。

实验程序:ORG 0000HLJMP MAIN MAIN: MOV R0,#30H MOV R4,#08HMOV R1,#00HMOV P2,#7FHMOV A,#00HMOVX @R1,A LOOP: MOV A,30HMOV P1,AJNB P3.3,LPLCALL RDAD LP: SJMP LOOP RDAD: MOVX A,@R1 MOV @R0,AINC R0INC R1MOVX @R1,ADJNZ R4,LOOP1MOV R0,#30HMOV R4,#08HMOV R1,#00HMOV A,#00HMOVX @R1,A LOOP1: RETEND四、实验调试及结果当电压值为5V时,所有的LED都被点亮。

TLC2543中文数据手册

TLC2543中文数据手册

TLC2543使用手册一、简要说明:TLC2543是一款8位、10位、12位为一体的可选输出位数的11通道串行转换芯片。

每一路转换时间为10us。

外部输入信号为:DATA input ;_CS;AD_IO_CLK;Analog input;四种信号;输出为:EOC转换结束信号,DATA output信号。

工作原理为:_CS由高变为低时候,允许DATA input;AD_IO_CLK;Analog input信号输入,DATA out 信号输出;由低到高禁止DATA input;AD_IO_CLK;信号输入。

当忽略ADC转换启动的CS时候,数据的输出是在CS的下降沿,既是将片选的时候,而考虑到CS时候,第一个输出数据发生在EOC变为高的时候的上升沿。

注意:初始化时候,必须将CS由高拉低才能进行数据输出或者是数据输入。

也就是说,当一次转换完成后,进行下一次或者是下一个通道的转换,需要将CS由低拉高,为下一次转换做好准备,当进行下一个转换时候,进行CS 拉低,DATA input输入或者DATA out输出(忽略CS转换作用时候)。

信号解释:DATA input:4位串行地址输入,用来选择模拟输入通道功能或者测试引脚;高位在前,在每一个AD_IO_CLK的上升沿输入ADC的寄存器。

由八位组成:前四位:D7:D4用作选择模拟输入通道,D3:D2用作选择数据长度,D1是选择输出高低位顺序的,D0选择是选择输出极性(单双极性)。

DA TA INPUT的表含义DATA OUT:当_CS为高时DATA out输出为高阻抗,当CS有效时,驱动转换结果,并在AD_IO_CLK的下降沿按位顺序输出。

EOC:ADC的EOC在DATA input输入的最后一个AD_IO_CLK时,由高变为低,并保持到转换结束和数据准备输出结束时候变为高。

AD_IO_CLK:输入和输出时钟,主要完成以下功能:A、在IO_CLK的前八个时钟的上升沿将DATA input的八位数据输入数据寄存器中。

AD转换的步骤

AD转换的步骤

AD转换的步骤
A/D转换的步骤:
1.端口的配置,需要单片机外部采样时,把端口配置成输入模式,有TRIS 和 ANSEL设定;
2.配置A/D模块:
(1)选择A/D转换时钟;
(2)配置参考电压;
(3)选择A/D输入通道;
(4)配置A/D转换结果存储的格式;
(5)做好以上几步后,选择就可以启动A/D转换模块了;
3.配置ADC 中断;
(1)清零ADC 中断标志位;
(2) 允许ADC 中断;
(3) 允许外设中断;
(4) 允许全局中断;
4.等待所需的采集时间;
5.将GO/DONE 置1 启动转;
6.由如下方法之一等待ADC 转换结束;
(1)查询GO/DONE 位;
(2) 等待ADC 中断(允许中断);
7.读ADC 结果;
8.将ADC 中断标志位清零(如果允许中断的话,需要进行此操作);。

串行A_D转换器TLC2543原理及应用

串行A_D转换器TLC2543原理及应用

则转换数据的第一位即出现在 =>?> :@?A@? 管 脚上, 如图 ! 所示。
!(!
掉电方式
在掉电方式时, 芯片内部处于低电流待机状态。 当一个 “+++*” 二进制通道选择地址数在前四个 9 B : 就选择了掉 ;C:;D 周期内置入输入数据寄存器时, 电方式, 在第四个 9 B : ;C:;D 下降沿时被激活。这
:<?K 3B% :LA! ;读入 : ; < 通道和输出数据格式选择参数 3B% H#L: ;在 H# 中存储该参数 ?>H A+(!
;选通芯片
PN :??(+L>EN ; 3EN 或 >EN 导前判断
高位数据读取程序段 3ENK 3B% H@LM*"J ;
(王亚东
! "# !
编发)
>BBA+K3B% ?LA+($
、 输入数据端 (#!$! 120X$) 、 输 (#!$! WX$0X$)
%/6 导前和极性进行选择。 @ !456789 性能特点 (+) +’ 位分辨率。 (’) ++ 个模拟输入通道。 (*) 线性误差[+%/6 U!\。 () ) 输出数据单极性或双极性、 数据长短、 U/6 或 %/6 前导可编程。 正常温度范围内 +-!J 转换时间。 (() (.) 自动采样与保持。 (3) 片内系统时钟。 (R) 三种内置自测试方式。
>BBA$K 3B% ?LA+($ H>? : 3B% A+(+L? E,=N A+(* ?>H A+(* <P)Q H@L>BBA$ 3B% H!L: 3B% :LH# PN :??(+L3EN H,=DH)K H,=

TLC2543中文资料

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转换结果的三态串行输出端。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
名称:read2543
功能:TLC2543驱动模块
输入参数:port通道号
输出参数:ad转换值
*************************************/
//TI TLC2543 12位AD驱动程序,51晶振是11.0592MHz的。
/*------------------------------------------------------------------------------
{
uchar i;
for(i=0;i<n;i++)
{
_nop_();
}
}
/**************************************
名称:read2543
功能:TLC2543驱动模块
输入参数:port通道号
输出参数:ad转换值
*************************************/
D_CLOCK=0;
//参数设定开始
//注意:参数的设定只对下一周期的测量有效,对本次取样没有作用
D_IN=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<7;
D_CLOCK=0; //选择12位的数据长度
D_IN=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
E=1;
mdelay(5);
while((P0&0x80)==0x80)
0x6f};//共阴极段码
uchar b[4];//存放4位显示的数
sbit START=P2^4;
sbit OE=P2^6;
sbit EOC=P2^5;
void mdelay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void show(void)
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<1;
D_CLOCK=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp;
D_CLOCK=0;
D_CS=1;
return (uint)(mRetADHi*256+mRetADLo);
show();
}
}
Lesson6-4:TLC2543数字电压表,2路模拟输入,一路测量范围0~5V,一路量程0~10V,采用1602液晶显示,仿真通过。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
}
void show(void)//数码管显示子程序
{
uint i;
uchar c=0x01;
for(i=0;i<4;i++)
{
P1=(c<<i);
P3=b[i];
if(i==2)//显示小数点
P3=P3|0x80;
mdelay(1);
}
}
void main(void)
{
uint ad=0;
while(1)
uint read2543(uchar port) //从TLC1543读取采样值,形参port是采样的通道号
{
uchar mRetADHi,mRetADLo; //返回的测量值的高位、8低位
uchar mTemp;
D_CLOCK=0;
D_CS=0;
mRetADHi=0;
mRetADLo=0;
//把通道号(4位)打入2543 **代码虽然麻烦,但编译后的执行速度很快**
D_IN=(bit)(port&0x08);
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADHi|=mTemp<<3;
D_CLOCK=0;
D_IN=(bit)(port&0x04);
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADHi|=mTemp<<2;
sbit CLOCK=P2^7; /*2543时钟*/
sbit D_IN=P2^6; /*2543输入*/
sbit D_OUT=P2^4; /*2543输出*/
sbit _CS=P2^5; /*2543片选*/
sbit E=P3^4;
sbit RS=P3^5;
sbit RW=P3^6;
const uchar NoDisp=0;
sbit D_IN=P2^6;
sbit D_OUT=P2^4;
sbit D_CS=P2^5;
void mdelay(uint z)//1ms延时子程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/**************************************
const uchar NoCur=1;
const uchar CurNoFlash=2;
const uchar CurFlash=3;
void mdelay(uint z)//1ms延时子程序
{
ห้องสมุดไป่ตู้uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay(uchar n)//2543中的延时子程序
mRetADLo|=mTemp<<6;
D_CLOCK=0;
D_IN=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<5;
D_CLOCK=0; //高位在前输出
D_IN=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<4;
D_CLOCK=0;
D_IN=(bit)(port&0x02);
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADHi|=mTemp<<1;
D_CLOCK=0;
D_IN=(bit)(port&0x01);
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADHi|=mTemp;
for(i=0;i<n;i++)
{
_nop_();
}
}
/**************************************
名称:read2543
功能:TLC2543驱动模块
输入参数:port通道号
输出参数:ad转换值
*************************************/
Lesson6-4:ADC0808数字电压表,测量范围0~5V,仿真通过
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
b[3]=a[shuju/1000];//最高位始终为0
show();
}
}
Lesson6-4:TLC2543数字电压表,测量范围0~5V,1路模拟输入,采用4位数码管显示,仿真通过。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
D_IN=(bit)(port&0x80);//通道值高位先送出
CLOCK=1;
delay(3);
CLOCK=0;
delay(3);
port<<=1;
ad<<=1;
}
_CS=1;
ad>>=1;//循环中多左移了一位
return ad;
}
void show(void)//数码管显示子程序
{
uint i;
D_CLOCK=0; //单极性输出
//参数设定结束
D_CLOCK=1; //填充4个任意位
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<3;
D_CLOCK=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<2;
D_CLOCK=0;
uint read2543(uchar port)
{
uint ad=0,i;
CLOCK=0;
_CS=0;
port<<=4;//通道号左移4位
for(i=0;i<12;i++)//没有设置控制字,默认输出数据为12位,高位先送出,输出数据的格式为2进制
{
if(D_OUT) ad|=0x01;//转换后的值高位先送出
#define uint unsigned int
uchar a[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
相关文档
最新文档