kkyou的笔记 https://passport2.21ic.com/?86761 [收藏] [复制] [RSS]

日志

三种常用数字电位器(x9312 ad7376a ad5231) 的操作

已有 1931 次阅读2006-7-4 08:34 |个人分类:我的子程序库|系统分类:单片机

/******************************************************
* 名称: void upx9312(float x)
* 说明: 100位数字电位器9312写入数据
* 功能: 往9312写入一条指令以及对应的参数
* 调用:
* 输入: 电位器数据参数x
* 返回值: 无
****************************************************/
void upx9312(float x)
{
  uchar i;
  CS9312L;
  delay(10);
  for(i=0;i<100;i++)
   {
        DATAH;
     DATAL;
   }
 
  for(i=0;i<x;i++)
  {   
        DATAH;
        DATAL;
  }   
  CS9312H;     
}


/******************************************************
* 名称: void upx7376a(uchar x)
* 说明: 128位交流数字电位器AD7376A写入数据
* 功能: 往AD7376A写对应的参数
* 调用:
* 输入: 电位器数据参数x
* 返回值: 无
****************************************************/
void upx7376a(uchar x)
{
  uchar i;
  CS7376L;
  for(i=0;i<8;i++)
  {
    if((x&(1<<(7-i))))
    SDIH; 
    else
    SDIL;;
    CLKL;
 asm("nop");
 asm("nop");
 CLKH;
  }
  CS7376H;
}


/******************************************************
* 名称: void SendData_W(uchar cmd,uchar datah,uchar datal)
* 说明: 1024位数字电位器 AD5231写入数据
* 功能: 往AD5231写入一条指令以及对应的参数
* 调用:
* 输入: 指令名称 cmd
        参数高位 datah
  参数低位 datal
* 返回值: 无
****************************************************/
void SendData_W(uchar cmd,uchar datah,uchar datal)
{
   uchar i,d;
   CS5231L;          //ad5231片选
   D_SCLKL;
   asm("nop");
   d=cmd;
   for(i=0;i<8;i++)
   {
   if((d&(1<<(7-i))))
      WDATAH;
   else
   WDATAL;
      D_SCLKH;
      D_SCLKL;
   }
   d=datah;
     for(i=0;i<8;i++)
   {
   if((d&(1<<(7-i))))
      WDATAH;
   else
   WDATAL;
      D_SCLKH;
      D_SCLKL;
   }  
   d=datal;
     for(i=0;i<8;i++)
   {
   if((d&(1<<(7-i))))
      WDATAH;
   else
   WDATAL;
      D_SCLKH;
      D_SCLKL;
   }    
   CS5231H;
}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)