AD转换TLC2543的51源程序
网上12位串行的AD转换可以说是不少。不过合用的就不多了。不是买不到就是缺资料或是并行的占用IO口。找来找去还是觉得用TLC2543比较好。
图1是TLC2543的接口电路。TLC2543的CLOCK,DATA OUT,DATAINPUT和/CS分别与AT89C2051的P3.0,P3.1,和P3.3连接。其接口软件由主程序和两个子程序组成,主程序主要是对AT89C2051的初始化,子程序是对89C2051和TLC2543的具体操作。如还有什么疑问的还可参考本站转载的另一PDF文件的文章串行A/D转换TLC2543与TMS320C25的接口与编程
程序清单如下:
CLK EQU P3.0
DIN EQU P3.2
DOUT EQU P3.3
ADDR EQU 50H; AD转换结果存储区
AD-DATA:
MOV R0, #ADDR
MOV R1,#0; 选择通道0,单极性,高位在前,;12位输出
ACALL RD-AD; 加电后空转换一次。
MOV R1,#0; 有效转换开始
ACALL RD-AD
MOV @R0, R2;保存转换结果
INC R0
MOV @R0, R3
;XXXXXX
;XXXXXX
;XXXXX
;用户的数据处理程序。
RD-AD: ;TLC2543AD转换子程序,R1内容为控;制字,结果的高;;8位保存在R2,低4位保存;在R3。
CLR CLK; 置CLK为低
SETB CS; 置CS为高
NOP
NOP
CLR CS; 置CS为低,转换开始
MOV R4,#08; 8位控制字移入TLC2543,高8位;结果移出TLC2543
MOV A,R1; 控制字装入A中
ADLOP1:
MOV C,DOUT; 移出一位结果进入C
RLC A; C中结果从A的最低位进入,控制字最;高位移入C
MOV DIN, C; 1位控制字移入TLC2543
SETB CLK
NOP
NOP
NOP
NOP
CLR CLK
DJNZ R4,ADLOP1; 是否移完?
MOV R2, A; 结果的高8位装入R2
MOV A, #0
MOV R4, #04; 读取低4位转换结果
ADLOP2:
MOV C, DOUT
RLC A
SETB CLK
NOP
NOP
NOP
NOP
CLR CLK
DJNZ R4, ADLOP2
MOV R3, A; 低4位转换结果装入R3
SETB CS
RET
评论