TLC0832与单片机的接口电路如下图。P3.5作片选线,串口工作在方式0,TXD作时钟输出,RXD输出启动信号、多路器设置和接收A/D转换结果。
下图是TLC0832的工作时序图,其输出数据有效位为15位,由两段8位数据组成,前一段高位在先,后一段高位在后,两段的最低位公用,在时钟CLK的下降沿,数据由DO输出。TL0832的多路设置信号由DI串行输入,共两位(见上表),工作过程大致如下:单片机置CS为低,选中TLC0832,此时DO端置为高阻态,DI=CLK端置为输入。然后置DI为高电平(送起始位),起始位高电平保持至下一个时钟CLK的下降沿。接着送2位配置位。在时钟上升沿,起始位和配置位移入移位寄存器,输入通道选通。随后DO脱离高阻状态,SAR比较器把转换后的数据,以最高位(MSB)开头从DO端输出,并将该数据存入转换结果存储器。输出完成后,再将该数据以低位在先的方式从DO端串行输出,输出完成后,将CS置为高,内部寄存器清零,DO变为高阻状态。如果要进行另一次转换,内部CS必须有从高到低的跳变。
需要说明的是:在向DI端输入起始位和配置位时,DO端处在高阻状态,当TLC0832开始A/D转换并输出数据时DI端不起作用。因此,可以将DI、DO连在一起,接到微处理器的一个双向I/O口。
程序1用串行口读TLC0832。
程序工作过程如下:先将串口设为方式0。置TLC0832为单端双通道、CHO通道,向TLC0832发出数据#07H,在启动TLC0832的同时,TLC0832向单片机输送转换结果的高4位,此时REN=O,不允许接受,高4位D7~D5丢失。REN=1后,单片机收到TLC0832送出的MSB为先的低5位D4 ~.DO及LSB在后的低4位DO—D3,累加器A中数据为:
将该数据右移3位,屏蔽高3位,存到寄存器B;单片机第二次接收数据时,A中得到数据:
将A左移1位,半字节交换,屏蔽低5位:再与寄存器B相加,得到的数据便是TLC0832的转换结果:
程序2采用模拟串口读取TCLC0832 CHO的数据,程序简单、易懂。
程序2:
TLC0832的时钟频率范围为10—600kHz,选择单片机的晶振时应注意时钟频率匹配问题。用串行口通讯时,TXD输出的时钟频率为单片机晶振的%。程序中单片机晶振应选4MHz;程序2单片机晶振可选6MHz,若用12MHz晶振则应在置位、复位指令后加空操作。