1、TLC1543 特性简介:TLC1543 是由 TI 公司开发的开关电容式 AD 转换器,该芯片具有如下的一些特点: 10 位精度、11 通道、三种内建的自测模式、提供 EOC(转换完成)信号等。该芯片与单片机的接口采用串行接口方式,引线很少,与单片机连接简单。图 1 是 TLC1543 的引脚示意图,其中 A0A10 是 11 路输入,Vcc 和 GND 分别是电源引脚,REF+和 REF-分别是参考电源的正负引脚,使用时一般将 REF-接到系统的地,达到一点接地的要求,以减少干扰。其余的引脚是 TLC1543 与 CPU 的接口,其中 CS 为片选端,如不需选片,可直接接地。I/O Clo
2、ck 是芯片的时钟端,Adress 是地址选择端, Data Out 是数据输出端,这三根引脚分别接到 CPU 的三个 I/O 端即可。EOC 用于指示一次 AD 转换已完成,CPU 可以读取数据,该引脚是低电平有效,根据需要,该引脚可接入 CPU 的中断引脚,一旦数据转换完成,向 CPU 提出中断请求;此外,也可将该引脚接入一个普通的 I/O 引脚,CPU 通过查询该引脚的状态来了解当前的状态,甚至该引脚也可以不接,在 CPU 向 TLC1543 发出转换命令后,过一段固定的时间去读取数据即可。图 1 TLC1543 的引脚示意图1.1. 基于单片机的多路输入电压表实现方案多路输入电压表的实
3、现框图如图 2 所示。AT89S51单片机驱动电路LED 显示按键A/D转换器输入电压图 2 基于单片机的多路输入电压表框图1.2. 硬件结构单片机与 TLC1543 芯片的接口如图 3,从图中可以看出,这里使用了 TLC1543 作为基准电压源,将 REF-直接接地,P1.0、 P1.1、P1.2 、 P1.3 和 P1.4 分别与 EOC、时钟、地址、数据、片选端分别相连。在六位数码管的后四位数码管上轮流显示 TLC1543 各通道的测量值,同时用十六进制表示的通道号显示在第1 位数码管上。图 3 使用 TLC1543 制作的多路输入电压表电路图1.3. 软件设计由于采用串行接口,在硬件电
4、路简单的同时,带来了软件编制的复杂性,初学单片机的入门者很难掌握这类芯片的编程方法,这给此类芯片的应用带来一定的限制。为解决这一问题,我们在实际应用该芯片的基础上写出了该芯片的驱动程序,有了驱动程序,使用者不必再关心TLC1543 数据手册中的时序图之类不易懂的部份,只要了解清楚驱动程序的用法,即可使用该芯片。TLC1543 共有11 条输入通道,这11 条通道的编号从010,读取时,根据编号来获得想应通道的数据。3.4.1. TLC1543驱动程序;-;以下定义各引脚;-ADCLK EQU P1.1 ;时钟ADaddr EQU P1.2 ;地址引脚ADDout EQU P1.3 ;数据端AD
5、CS EQU P1.4 ;片选端;-;子程序名:ADConver;参数:r2 通道号,转换前存入 转换结后数据在r0r1 中,高位在前;资源占用:r0,r1,r7,AADConver: CLR ADClkCLR ADCSMOV A,R2RLC AMOV R7,#4 ;送出地址信号C_L1: RLC AMOV ADAddr,CSETB ADClkNOPNOPCLR ADClkDJNZ R7,C_L1MOV R7,#6 ;补6 个脉冲C_L2: SETB ADClkNOPNOPNOPNOPCLR ADClkDJNZ R7,C_L2;等待转换结束SETB ADCSNOPNOPNOPNOPCLR AD
6、CS;取高2 位NOPNOPNOPNOPSETB ADDoutSETB ADClkMOV C,ADDoutMOV ACC.1,CCLR ADClkNOPNOPNOPNOPSETB ADDoutSETB ADClkMOV C,ADDoutMOV ACC.0,CCLR ADClkANL A,#00000011B ;清A 的高6 位MOV R0,A ;保存数据MOV R7,#8C_L3: NOPNOPNOPNOPSETB ADDoutSETB ADClkMOV C,ADDoutMOV ACC.0,CRLC ACLR ADClkDJNZ R7,C_L3SETB ADCSMOV R1,ARET3.4.2
7、驱动程序的使用该驱动程序中用到了四个标记符号:ADClk 与TLC1543 的Clk 引脚相连的单片机引脚ADaddr 与TLC1543 的Address 引脚相连的单片机引脚ADDout 与TLC1543 的AdDout 引脚相连的单片机引脚ADCS 与TLC1543 的CS 引脚相连的单片机引脚实际使用时,根据接线的情况定义好ADclk、ADaddr、ADDout、ADCS,将通道号送入R2,调用ADConver ,即可从 R0、R1 中得到转换后的数据,使用非常简单。;*;ad.asm;功能简介:每隔1s 轮流将一个通道的值显示在数码管后4 位,首位显示通道号;*gCoun DATA 2
8、2H ;通道计数器CLK bit P1.1 ;时钟端ADDR bit P1.0 ;地址端Dout bit P1.4 ;数据输出端CS bit P1.3 ;片选端Hidden DATA 10H ;消隐码Counter DATA 57H ;显示程序用计数器DISPBUF DATA 58H ;显示缓冲区首地址ORG 0000HJMP STARTORG 000BH ;定时中断使用T0JMP DISP ;定时中断程序ORG 30HSTART: MOV SP,#5FH ;初始化MOV P1,#0FFHMOV P0,#0FFHMOV P2,#0FFH ;关所有LED 及数码管MOV TMOD,#000000
9、01BMOV TH0,#HIGH(65536-3000)MOV TL0,#LOW(65536-3000)SETB TR0SETB EASETB ET0MOV Counter,#0 ;计数器清零MOV DISPBUF+1,#Hidden ;第2 位显示器消隐MOV gCoun,#0 ;通道计数器清零,指向通道 0LOOP: CALL Delay ;延时1sMOV R2,gCoun ;送通道号CALL ADConverMOV A,R0MOV R6,AMOV A,R1MOV R7,ACALL HB2;-;调用二十进制转换程序;入口:待转换的双字节十六进制数在R6 和R7 中;出口:转换结束的结果在R
10、3、R4 和R5 中,压缩BCD 码方式存储;-MOV A,R4ANL A,#0F0HSWAP A ;高低4 位互换MOV DispBuf+2,A ;最高位MOV A,R4ANL A,#0FHMOV DispBuf+3,AMOV A,R5ANL A,#0F0HSWAP AMOV DispBuf+4,AMOV A,R5ANL A,#0FHMOV DispBuf+5,A;以上程序段将压缩BCD 码转换成非压缩BCD 码并送显示缓冲区MOV DispBuf,gCoun ;将通道号送第1 个显示器的显示缓冲区INC gCoun ;通道号加1MOV A,gCounCJNE A,#11,LOOP ;判断是否到11 了MOV gCoun,#0 ;到则回零JMP LOOP;主程序到此结束限于篇幅,文中用到的其他程序就不再提供了。