原创 12BIT-DAC7611驱动程序C

2008-7-28 20:58 3284 10 10 分类: MCU/ 嵌入式

++ /****************************************************
子程序名:DAC7611
程序功能:控制数/模转换器DAC7611的工作
程序出口:引脚P1.0(输出片选信号)
          引脚P1.1(输出时钟)
          引脚P1.2(输出数据)
      引脚P1.3(输出数/模转换过程启动信号)
整理时间:2008-7
*******************************************************/


#include<reg52.h>
#include<intrins.h>
#define uint unsigned int


sbit  CS =P1^0;     //输出片选信号
sbit  CLK="P1"^1;     //输出时钟
sbit  SDI="P1"^2;  //输出数据
sbit   LD="P1"^3;     //输出数/模转换过程启动信号 


/******初始化DAC7611******************/
void init_da(void)
{
  LD="0";       // 装载引脚置低
  CS="1";    //片选置高
  CLK="1";     //时钟置高
  SDI="0";
}


/*****时钟脉冲子函数***********/
void clock(void)
{
  CLK="0";
  _nop_();
  CLK="1";   //产生一个时钟脉冲
  _nop_(); 
}
/******DAC7611转换***************/


void DAC_7611(uint vol)
{
  uint i,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置高  
}


/**********主程序*****************/
void main()
{  
  init_da();  
  DAC_7611(); 
}


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /3 下一条