⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 da.c

📁 dac5617
💻 C
字号:
#define DIN1  PORTD|=BIT(PD4)
#define DIN0  PORTD&=~BIT(PD4)  //NO EFFECT

#define SCLK1  PORTD|=BIT(PD6)
#define SCLK0  PORTD&=~BIT(PD6)

#define C_S1  PORTD|=BIT(PD7)
#define C_S0  PORTD&=~BIT(PD7)


//送piancha变量值后调用mafun4_20()程序就可以了
unsigned   int  piancma,mazhi,mazhong;   //  这个用来初始化数据的最低值的
void mafun4_20(void)
{
unsigned long mmaa;
   mazhi=piancha;
   piancma=piancha;
   
   
   mmaa=mazhi;
   mmaa=394*mmaa;
   mmaa=mmaa/piancma;
   mazhong=100+mmaa;
   if(mazhong>500)  mazhong=500;
   DA_Conver(mazhong);
}

			 
void DA_Conver(unsigned int DAValue)
{

      unsigned char i;

      DAValue <<= 6;

      C_S1;                             // 片选DA芯片
	  delay_nus(10);
      SCLK0;                             //   在以下12个时钟周期内,每当在上升沿的
      delay_nus(10);                                    //   数据被锁存,形成DA输出。在前10个时钟
      
	  DIN0;
	  delay_nus(10); 
	  C_S0; 
	  delay_nus(20); 
	  
	  for(i = 0; i < 12; i++)              //   内输入的是10位DA数据,后两个时钟周期
      {                                    //   为填充字节。
	       delay_nus(20);
          //din = (bit)(DAValue & 0x8000);   //
		  if((DAValue&0x8000)==0)  DIN0;
		  else   DIN1;
		  
		  delay_nus(20);
          SCLK1;//clk = 1;                         //
		  delay_nus(20);
          DAValue <<= 1;                   //
          SCLK0;//clk = 0;
      }
      delay_nus(10);
      C_S1;//cs = 1;                              // CS的上升沿和下降沿只有在clk为低的时候
	  delay_nus(10);
      SCLK0;//clk = 0;                             // 才有效

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -