MCS-51与串行D/A转换器的接口设计
扫描二维码
随时随地手机看文章
1. 概述
在微机控制的电气设备中,常常需要把数字信号变成模拟信号,以驱动电气设备的运行,在这个过程中,D/A转换是一个十分重要的环节,亦是微机控制系统重要的组成部分。一般的D/A转化芯片都是并行接口,如8位系列0830/0831/0832、10位系列7520/7530/7533和 12位系列1208/1209/1210等均为并行接口,14位、16位系列也全部为并行接口。只有AD7543是12位串行D/A转换芯片,它是美国模拟器件公司(Analog Devices)的产品,属于特殊用途D/A转换器,和并行接口芯片有很大不同,使用该芯片构成的系统具有接线简单、使用方便、控制灵活的特点,具有较好的应用前景和开发价值。
2. AD7543内部框图和特性
AD7543为16引脚双列直插式封装,内部框图和引脚符号如图1所示。
AD7543的逻辑电路由12位串行输入并行输出移位寄存器(A)和12位DAC输入寄存器(B)以及12位DAC单元组成。在选通输入信号的前沿或后沿(由用户选择)定时地把RSI引脚上的串行数据装入寄存器A,一旦寄存器A装满,在加载脉冲的控制下,寄存器A的数据便装入寄存器B。并进行D/A转换。
AD7543的引脚功能见表1。出现在AD7543的SRI引脚上的串行数据在STB1、STB2和STB4的上升沿或STB3的下降沿作用下,定时的移到移位寄存器A中,寄存器A和B控制输入端所要求的各种信号的逻辑关系如表2所列。
AD7543的主要特性如下:
● 分辨率为12位。
● 非线性为±1/2LSB。
● 接正或负选通进行串行加载。
●用非同步清除输入使其初始化。
●低功耗、最大为40mW。
3. AD7543和8031单片机的接口设计
实现AD7543与单片机的连接有两种方法,其一是基于字节操作,利用串行通讯接口实现,其二是基于位操作,利用普通输入输出口线实现,两种实现方法对A/D转化芯片的转换速度、工作以及数据传输的波特率等技术指示的要求各不相同。以下具体说明这两种实现的方法。
3.1 AD7543与单片机串行通讯接口的连接
图2是8031的串行口和AD7543相连的接口电路,8031的串行口选用方式0(移位寄存器方式),其TXD端移位脉冲的负跳变将RXD输出的位数据移入AD7543,利用P1.0产生加载脉冲,由于是低电平有效,从而将AD7543移位寄存器A中的内容输入到寄存器B中,并启动D/A,单片机复位端接AD7543的消除CLR端,以实现系统的同步。
由于AD7543的12位数据是由高字节至低字节串行输入的,而8031单片机串行口工作于方式0时,其数据是由低字节至高字节串行输出的。因此,在数据输出之前必须重新装配,并改变发送顺序,以适应AD7543的时序要求。如表3所列,其中数据缓冲区DBH为高字节存储单元,DBL为数据低8位存储单元。
改变数据发送顺序的程序如下:
OUTDA:MOV A,DBH ;取高位
SWAP ;高4位和低4位交换
MOV DBH,A
MOV A,DBL ;取低位
ANL A,#OFOH ;截取高4位
SWAP ;高4位和低4位交换
ORL A,DBH ;合成,(DBH)=D11 D10 D9 D8 D7 D6 D5 D4
LCALL ASMBB ;顺序转换
MOV DBH,A ;存结果(DBH)=D4 D5 D6 D7 D8 D9 D10 D11
MOV A,DBL ;取低位
ANL A,#OFH ;截取低4位
SWAP ;交换,(A)=D3 D2 D1 D0 0 0 0 0
LCALL ASMBB ;顺序转换
MOV DBL,A ;存结果(A)=0 0 0 0 D0 D1 D2 D3
MOV A, DBH
MOV SBUF,A ;发送高8位
JNB TI $ ;等待发送完成
CLR TI ;发送完毕,清标志
MOV A,DBL
MOV SBUF,A ;发送低4位
JNB TI $ ;等待
CLR TI ;发送完毕
CLR P1.0 ;A寄存器加载到B寄存器
NOP
SETB P1.0 ;恢复
REF
……
ASMBB: MOV R6,#00H
MOV R7,#08H
CLR C
ALO: RLC A
XCH A,R6
RRC A
XCH A,R6
DJNZ R7,AL0
XCH A,R6
RET
以上这种方式的单片机串行通讯口与AD7543的接口电路,其波特率固定为CPU时钟频率的1/12,如果CPU的频率为6MHz,那么波特率为50kbps,位周期为20μs,显然,这种连接方法只能用于高速系统。
3.2 AD7543与单片机普通输入输出口线的连接
AD7543可以用8031的P1口实现数据传送。这种方法的波特率可调,传输速度由程序控制。电路与图2相同,仅把8031的数据输出端由RXD引脚改为P1.1,将移位脉冲输出端由TXD改为P1.2口线,P1.0仍为加载脉冲输出。其程序如下:
FS: MOV R7,#04H
MOV A,DBH;数据高4位
SWAP
LOOP1: RLC A
MOV P1.0 ;输出
LCALL PULSE ;移位脉冲输出
DJNZ R7,LOOP1 ;4位未完继续
MOV R7,#08H
MOV A,DBLH ;数据低8位
LOOP2: RLC A
MOV P1.0 C ;输出
LCALL PULSE ;移位脉冲输出
DJNZ R7,LOOP2 ;8位未完继续
CLR P1.1 ;输出加载脉冲
NOP
SETB P1.1
RET ;传送完毕
PULSE: SETB P1.1 ;输出高电平
MOV R3,#4
PULS1: DJNZ R3,PULS1
CLR P1.1;输出低电平
MOV R3,#4
PULS2:DJNZ R3,PULS2
RET
其中FS为AD7543驱动程序,子程序PULSE为移位脉冲形成程序,改变R3的数值可以改变移位脉冲的频率。从而改变串行通讯波特率。