TLV5616程序(ForMSP430)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TLV5616程序(ForMSP430)
/************************************************************** ****************
Designed by CUGer
注:1、本程序的前提是CS引脚接地,基准电压设定为1.372V
2、“data=temp*4096/2.745”语句是为了实现将所需输出的模拟值直接转化为编码,减少计算量
3、TLV5616最大输出电压是基准电压的两倍,输出电压最大范围是0~Vdd-0.1V,另外基准电压的输入范围为0~Vdd-1.5V(TLV5616文档中有注明,使用时请注意)
版权所有引用请注明出处
*************************************************************** ***************/ #include
#define uchar unsigned char
#define uint unsigned int
#define SCLK_UP P3OUT |= BIT1 //SCK上升沿
#define SCLK_DOWN P3OUT &= ~BIT1 //SCK下降沿
#define FS_UP P3OUT |= BIT2
#define FS_DOWN P3OUT &= ~BIT2
#define Data_UP P3OUT |= BIT0
#define Data_DOWN P3OUT &= ~BIT0
void DA(float temp);
void main()
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P3DIR |=BIT0+BIT1+BIT2;
FS_UP ;
SCLK_UP;
// uint data=0xdaaa;
while(1)
{
DA(0.80);
}
}
void DA(float temp)
{
uint data;
uchar DA_ON[4]={1,1,0,1}; //控制位
int i,j;
data=temp*4096/2.745;
FS_UP;
_NOP();
FS_DOWN;
for(i=0;i<4;i++)
{
SCLK_UP;
if(DA_ON[i])
Data_UP; //P3.2OUT1;
else
Data_DOWN; //P3.2OUT0
SCLK_DOWN; //SCK下降沿}
for(j=12;j>0;j--)
{
SCLK_UP; //SCK上升沿
if(data&0x800) //高位是1; Data_UP; //P3.2OUT1; else
Data_DOWN; //P3.2OUT0 SCLK_DOWN; //SCK下降沿data<<=1;
}
FS_UP ;
}。