1、/TLV5618.h 头文件#ifndef _TLV5618_H_#define _TLV5618_H_ 1#include “delay.h“#define Port_DIR P2DIR#define CS BIT3#define SCLK BIT4#define DIN BIT5#define Control_IO P2OUT#define Channal_A 1 /通道A#define Channal_B 2 /通道B#define Channal_AB 3 /通道Avoid Write_A_B(uint Data_A,uint Data_B,uchar Channal,uchar Mo
2、del);void TLV5618_Init();#endif/TLV5618.c 文件/* 文件说明:TLV5618 12位DA底层驱动程序* 硬件电路:MSP430g2553* 硬件连接:* MSP430与tlv5618连接信息* P23 CS(RS) * P24 SCLK(EN)* P25 DIN * 调试软件: IAR5.4 编译*/#include “tlv5618.h“void DA_conver(uint Dignum)uint Dig=0;uchar i=0;Control_IO |= SCLK;Control_IO for(i=0;i16;i+)Dig=Dignumif(Di
3、g)Control_IO |= DIN;elseControl_IO Control_IO Delay_us(1);Dignum=1;Control_IO |= SCLK;Delay_us(1);Control_IO |= SCLK;Control_IO |= CS;/= / 函数名称 :void Write_A_B(uint Data_A,uint Data_B,uchar Channal,bit Model)/ 函数功能 :模式、通道选择并进行DA转换 / 入口参数 :Data_A:A通道转换的电压值/ Data_B:B通道转换的电压值/ Channal:通道选择,其值为Channal_A
4、,Channal_B,或Channal_AB/ Model:速度控制位 0:slow mode 1:fast mode/ 出口参数 :无/ 说明: Data_A,Data_B的范围为:0-0x0fff/ 本程序如果只需要一个通道时,另外一个通道的值可任意,但是不能缺省/ 输出电压范围:电压0-4.98,实为0-4.85 /=void Write_A_B(uint Data_A,uint Data_B,uchar Channal,uchar Model)uint Temp;if(Model) Temp=0x4000;else Temp=0x0000;/Analog_A=2*Vref*(Data_A/0x1000) switch(Channal)case Channal_A: /A通道DA_conver(Temp|0x8000|(0x0fffbreak; case Channal_B: /B通道DA_conver(Temp|0x0000|(0x0fffbreak; case Channal_AB:DA_conver(Temp|0x1000|(0x0fff /Abreak;default:break;void TLV5618_Init()Port_DIR |= DIN | SCLK | CS;