#define wdog 00E1H
/*头文件*/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define Nop() _nop_()
#define _Nop() _nop_()
sbit TL5615_CLK = P1^4; /*定义DAC控制端口*/
sbit TL5615_CS = P2^1;
sbit TL5615_DAT = P1^5;
void TLC5615_SEND(uint da)
{
uchar i;
TL5615_CLK = 0;
TL5615_CS = 0;
for(i=0;i<12;i++)
{
if((da&0x200)!=0) TL5615_DAT = 1;
else TL5615_DAT = 0;
Nop();
TL5615_CLK = 1;
Nop();
Nop();
TL5615_CLK = 0;
da = (da<<1); /*左移一位*/
}
TL5615_CS = 1;
}
uint Volage_to_TL5615da(uint Volage)
{
/*将电压转换为TL5615的输出数据*/
/*da输入格式:比如要输入3.742V,则输入值为 3742,最高值不超过5000 */
/*转换公式 da=V/(2*Vref)*1024 备注:Vref为2.5V,则da=V/5*1024 */
uint da;
float tt;
tt=Volage*0.001/5*1024;
da= tt+0.5; /*对结果进行4舍5入*/
return da;
}
/*1MS为单位的延时程序*/
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
uint *p;
uint buff;
p= 0xE1;
// *p=0x3c;
P0=0x0f ;
buff = Volage_to_TL5615da(4000);
P0=buff>>2;
delay(255);
TLC5615_SEND(buff); //输出数据到DAC*
P0= buff>>2;
while(1)
{
;
};
}