串行AD转换器TLC549的应用设计.docx
《串行AD转换器TLC549的应用设计.docx》由会员分享,可在线阅读,更多相关《串行AD转换器TLC549的应用设计.docx(13页珍藏版)》请在冰豆网上搜索。
串行AD转换器TLC549的应用设计
一.8位串行模数转换器TLC549的应用
1.1概述
TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、CS、DATAOUT三条口线进行串行接口。
具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC549为40000次/s。
总失调误差最大为±0.5LSB,典型功耗值为6mW。
采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。
图
(一)
1.2芯片简介
TLC549的内部框图和管脚名称
TLC549的内部框图和引脚名称如图1所示。
1.3极限参数
TLC549的极限参数如下:
●电源电压:
6.5V;
●输入电压范围:
0.3V~VCC+0.3V;
●输出电压范围:
0.3V~VCC+0.3V;
●峰值输入电流(任一输入端):
±10mA;
●总峰值输入电流(所有输入端):
±30mA;
●工作温度:
TLC549C:
0℃~70℃
TLC549I:
-40℃~85℃
TLC549M:
-55℃~125℃
图
(二)
1.4工作原理
TLC549均有片内系统时钟,该时钟与I/OCLOCK是独立工作的,无须特殊的速度或相位匹配。
其工作时序如图2所示。
当CS为高时,数据输出(DATAOUT)端处于高阻状态,此时I/OCLOCK不起作用。
这种CS控制作用允许在同时使用多片TLC549时,共用I/OCLOCK,以减少多路(片)A/D并用时的I/O控制端口。
一组通常的控制时序为:
(1)将CS置低。
内部电路在测得CS下降沿后,再等待两个内部时钟上升沿和一个下降沿后,然后确认这一变化,最后自动将前一次转换结果的最高位(D7)位输出到DATAOUT端上。
(2)前四个I/OCLOCK周期的下降沿依次移出第2、3、4和第5个位(D6、D5、D4、D3),片上采样保持电路在第4个I/OCLOCK下降沿开始采样模拟输入。
(3)接下来的3个I/OCLOCK周期的下降沿移出第6、7、8(D2、D1、D0)个转换位,
(4)最后,片上采样保持电路在第8个I/OCLOCK周期的下降沿将移出第6、7、8(D2、D1、D0)个转换位。
保持功能将持续4个内部时钟周期,然后开始进行32个内部时钟周期的A/D转换。
第8个I/OCLOCK后,CS必须为高,或I/OCLOCK保持低电平,这种状态需要维持36个内部系统时钟周期以等待保持和转换工作的完成。
如果CS为低时I/OCLOCK上出现一个有效干扰脉冲,则微处理器/控制器将与器件的I/O时序失去同步;若CS为高时出现一次有效低电平,则将使引脚重新初始化,从而脱离原转换过程。
在36个内部系统时钟周期结束之前,实施步骤
(1)-(4),可重新启动一次新的A/D转换,与此同时,正在进行的转换终止,此时的输出是前一次的转换结果而不是正在进行的转换结果。
若要在特定的时刻采样模拟信号,应使第8个I/OCLOCK时钟的下降沿与该时刻对应,因为芯片虽在第4个I/OCLOCK时钟下降沿开始采样,却在第8个I/OCLOCK的下降沿开始保存。
图(三)
1.5应用接口及采样程序
TLC549可方便地与具有串行外围接口(SPI)的单片机或微处理器配合使用,也可与51系列通用单片机连接使用。
与51系列单片机的接口如图3所示。
其采样程序框图如图4所示,实际应用程序清单如下:
图(四)
初始化:
SETBP1.2 ;置CS为1。
CLRP1.0 ;置I/OCLOCK为零。
MOVR0,#00H;移位计数为零。
A/D过程:
A/DP:
CLRP1.2
NOP ;等待1.4μs,NOP数根据晶振情况选择
NXT:
SETBP1.0
MOVC,P1.1
RLCA
CLRP1.0
INCR0
CJNER0,#8,NXT
MOVR0,#00
SETBP1.2
MOVDTSVRM,A;
DTSVRM:
DATASAVERAM.
RET
TLC549片型小,采样速度快,功耗低,价格便宜,控制简单.适用于低功耗的袖珍仪器上的单路A/D或多路并联采样。
二、74LS164功能及应用
2.1了解74LS164
在单片机系统中,如果并行口的IO资源不够,而串行口又没有其他的作用,那么我们可以用74LS164来扩展并行IO口,节约单片机资源。
74LS164是一个串行输入并行输出的移位寄存器。
并带有清除端。
其中;Q0—Q7并行输出端。
A,B串行输入端。
MR清除端,为0时,输出清零。
CP时钟输入端。
74LS164引脚定义
74LS164逻辑表
图(五)
74ls164参考实验照片:
图(六)
2.2掌握的74LS164工作原理
当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。
串行数据输入端(A,B)可控制数据。
当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。
当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。
三各程序模块的功能:
在程序设计中,我们主要分五个模块来完成,分别是主程序,AD转换读入数据程序,数据处理程序,显示程序这五大块,下面将分别对每一个模块的功能进行分析
3.1主程序
各个子程序都是通过这个主程序调用进来,再执行各模块的功能的。
在主程序中首先对一些下面要用到的I/0口,数据存储地址,中断首地址等进行设置。
接下来首先打开中断随时检测是否有按键按下,再调用数据采集模块”READ”读入数据,需要采集两次,然后调用数据处理模块”DIS”,接下来再调用显示模块”DISPLAY”,最后在调用量程检测模块检测是否超限。
程序如下:
CLKBITP3.4
DOBITP3.5
CSBITP3.1
KEYEQU40H
ORG0000H
LJMPMAIN
ORG0003H
AJMPKEY_BOARD
ORG0050H
;*************************主程序
MAIN:
CLRP1.6
MOVP1,#00H
MOV30H,#00H
MOV31H,#00H
MOV32H,#00H
MOV33H,#05
MOV34H,#0
SETBIT0
SETBEX0
SETBEA
AD:
SETBDO
SETBCS
CLRCLK
CLRCS;启动转换
ACALLREAD;读数据
SETBCS
ACALLDELAY
CLRCS;再次AD启动转换
ACALLREAD;再次读数据
SETBCS
ACALLDIS;数据处理
ACALLDISPLAY;数据显示
ACALLBAOJING;检测量程
2数据采集模块
这个模块主要是利用8位串行模数转换器TLC549采集电压信号,然后转换成数字信号存在累加器A中。
程序如下:
;*****************AD转换读入数据
READ:
MOVC,DO
RLCA
MOVR7,#07H
RE:
SETBCLK
NOP
NOP
CLRCLK
NOP
NOP
MOVC,DO
RLCA
DJNZR7,RE
SETBCLK
NOP
NOP
CLRCLK
NOP
NOP
RET
3.3数据处理模块
这个模块的主要功能就是对转换成的数字信号进行处理,并把处理好的数据存放在30H和31H中。
程序如下:
;**********************数据处理
DIS:
MOVR2,A
MOVA,R2
MOVB,#51
DIVAB
MOVDPTR,#TAB
MOVKEY,A
MOVCA,@A+DPTR
MOV30H,A
MOVA,B
CLRF0
SUBBA,#1AH
MOVF0,C
MOVA,#10
MULAB
MOVB,#51
DIVAB
JBF0,LOOP2
ADDA,#5
LOOP2:
MOVCA,@A+DPTR
MOV31H,A
RET
3.4数据显示模块
主要是把上一个模块所处理得到的数据,通过51单片机上的p1.0和p1.1两个口控制74LS164显示出来,p1.1口主要负责产生上升沿,p1.0口负责传送数据,每一个上升沿传一位,传完八位即传完一个数。
程序如下:
;*********************显示
DISPLAY:
MOVR1,#08
MOVA,31H
LOP1:
RLCA
MOVP1.0,C
CLRP1.1
SETBP1.1
DJNZR1,LOP1
MOVR5,#08
MOVA,30H
LOP2:
RLCA
MOVP1.0,C
CLRP1.1
SETBP1.1
DJNZR5,LOP2
ACALLDELAY1
RET
3.5键盘扫描模块
这个模块主要设置系统所采集电压信号的大小量程。
程序如下:
;*********************键盘扫描
KEY_BOARD:
MOVp2,#0FH
MOVA,P2
KEY1:
JBACC.0,KEY2
ACALLDELAY2
JBACC.0,KEY2
MOV33h,#02h
MOV34H,#01H
JMPCCC
KEY2:
JBACC.1,KEY3
ACALLDELAY
JBACC.1,KEY3
MOV33h,#03h
MOV34H,#02H
JMPCCC
KEY3:
JBACC.2,CCC
ACALLDELAY2
JBACC.2,CCC
MOV33h,#04h
MOV34h,#02h
CCC:
NOP
RETI
3.6上下限设置模块
此模块主要用于检测电压的大小,是否超出量程,若超出则指示灯发光,若不超出则返回继续测量电压。
程序如下:
;*******************设置上下限
BAOJING:
CLRC
CLRp1.6
MOVA,KEY
CJNEA,33H,AAA1
AAA1:
JCAAA2
SETBP1.6;超限报警灯亮
LCALLDELAY2
SJMPAD
AAA2:
CJNEA,34H,AAA3
AAA3:
JNCAD
SETBP1.6
LCALLDELAY2
SJMPAD
RET
3.7延时模块
这主要是为了其它子程序模块所需要用到的延时模块,从此调用。
如在检测按键按下时就要用到延时程序,还有数码管的显示上等。
程序如下:
;*******************20u秒延时
DELAY:
MOVR6,#05H;
D1:
NOP
NOP
DJNZR6,D1
RET
;*******************1MS延时
DELAY1:
MOVR4,#250D2:
NOP
NOP
DJNZR4,D2
RET
;*******************5MS延时
DELAY2:
MOVR3,#05H
D3:
ACALLDELAY1
DJNZR3,D3
RET
四、结果分析:
打开电源开关,连接好所有接口,先把电压调节按钮至最小,此时74LS164显示出电压大小为0,正确。
接着不断调大电压大小,显示屏上电压也不断的连续增大,当达到5V时,显示也是5V,也正确。
接下来就用按键选择电压量程,当按下第一个按键时,此时量程为1-2V,接着调大电压,当超过2V时,电压报警指示灯就马上发光报警,结果正确。
接下来选选择按下按键二,选择的量程为2-3V,调节电压大小,当电压小于2V时,报警指示灯发光;再增大电压,当电压大于3V时,报警指示灯也发光报警,结果正确。