DAC7611控制数/模转换器程序
扫描二维码
随时随地手机看文章
/****************************************************
子程序名:DAC7611
程序功能:控制数/模转换器DAC7611的工作
程序出口:引脚P1.0(输出片选信号)
引脚P1.1(输出时钟)
引脚P1.2(输出数据)
引脚P1.3(输出数/模转换过程启动信号)
12M晶振
*******************************************************/
#include
#include
#defineuintunsignedint
sbitCS=P1^0;//输出片选信号
sbitCLK=P1^1;//输出时钟
sbitSDI=P1^2;//输出数据
sbitLD=P1^3;//输出数/模转换过程启动信号
/******初始化DAC7611******************/
voidinit_da(void)
{
LD=0;//装载引脚置低
CS=1;//片选置高
CLK=1;//时钟置高
SDI=0;
}
/*****时钟脉冲子函数***********/
voidcLOCk(void)
{
CLK=0;
_nop_();
CLK=1;//产生一个时钟脉冲
_nop_();
}
/******DAC7611转换***************/
voidDAC_7611(uintvol)
{
uinti,j;
vol<<=4;
LD=1;//装载引脚置高
_nop_();
CS=0;//片选拉低,准备转换
for(i=0;i<12;i++)
{
j=vol;
SDI=j&0x8000;
clock();
vol<<=1;
}
CLK=1;//输出时钟置高
_nop_();
CS=1;//DAC7611片选引脚CS置高
_nop_();
LD=0;//装载引脚LD置低以启动数模转换
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();//延时一会,使输出模拟电压达到稳定
LD=1;//LD置高
}
/**********主程序*****************/
voidmain()
{
init_da();
DAC_7611();
}
DAC7611控制数/模转换器程序