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

📄 x9c103.h

📁 数字电位器X9C103的驱动程序。实现数字电位器的自动调节功能。
💻 H
字号:
/*--------------------------------------------------------------------------
X9C103.H
X9C103 functions.
Copyright (c) 2007 DC. By Delphifx 2007-8-11.
All rights reserved.
--------------------------------------------------------------------------*/

sbit X_CS_1=P1^0; //
sbit X_INC=P1^1;//
sbit X_UD=P1^2; //
sbit X_CS_2=P1^4; //

//有关电位器的宏定义 

#define   SETB_X9C103_CS1  X_CS_1=1
#define   CLRB_X9C103_CS1  X_CS_1=0

#define   SETB_X9C103_INC  X_INC=1 
#define   CLRB_X9C103_INC  X_INC=0 
#define   SETB_X9C103_UD   X_UD=1   
#define   CLRB_X9C103_UD   X_UD=0

#define   SETB_X9C103_CS2  X_CS_2=1
#define   CLRB_X9C103_CS2  X_CS_2=0


void X9C103_Inc_N_Step(unsigned char Sel,unsigned char N);
void X9C103_Dec_N_Step(unsigned char Sel,unsigned char N);
void Delay(unsigned int t) ;
void X9C103_Init(unsigned char Sel);//初始化至中间位置

//延时us子程序 
void Delay(unsigned int t) 
{ 
unsigned int i; 
for(i=0;i<t;i++) ;

} 

//************************************************************************
// 数字电位器向上调一步
// 数字电位器100个抽头,相当于99步
//************************************************************************
void X9C103_Inc_N_Step(unsigned char Sel,unsigned char N)
{
   unsigned char i=0; 
   SETB_X9C103_UD;   // U/D 拉高   则下面的INC下沿,执行UP操作
   Delay(3);         // 延时大约2us
   
  switch(Sel)
  {
    case 1:
 CLRB_X9C103_CS1;  
    break;
    case 2:
 CLRB_X9C103_CS2; 
    break;
    default:break;    
   } 
//   CLRB_X9C103_CS;   // CS  拉低

   for(i=N;i>0;i--) 
  { 
     SETB_X9C103_INC;  // 拉高INC    因为INC的下沿有效
     Delay(2);         // 延时2us左右
     CLRB_X9C103_INC;   // INC 拉低;  // 产生一个下沿
     Delay(600);       // 延时大约500us, Rw等待输出稳定
   }
  SETB_X9C103_INC;//保存模式
  switch(Sel)
  {
    case 1:
 SETB_X9C103_CS1;  
    break;
    case 2:
 SETB_X9C103_CS2; 
    break;
    default:break;    
   } // 完毕CS拉高 //store
}
//************************************************************************
// 数字电位器向下调一步
// 数字电位器100个抽头,相当于99步
//************************************************************************
void X9C103_Dec_N_Step(unsigned char Sel,unsigned char N)
{
   unsigned char i=0; 
   CLRB_X9C103_UD;   // U/D 清0,  则下面的INC下沿,执行Down操作
   
   Delay(3);         // 延时大约2us
   
   switch(Sel)
  {
    case 1:
 CLRB_X9C103_CS1;  
    break;
    case 2:
 CLRB_X9C103_CS2; 
    break;
    default:break;    
   } 
   for(i=N;i>0;i--) 
  { 
     SETB_X9C103_INC;  // 拉高INC    因为INC的下沿有效
     Delay(2);         // 延时2us左右
     CLRB_X9C103_INC;   // INC 拉低;  // 产生一个下沿
     Delay(600);       // 延时大约500us, Rw等待输出稳定
  }
  SETB_X9C103_INC;//保存模式
   switch(Sel)
  {
    case 1:
 SETB_X9C103_CS1;  
    break;
    case 2:
 SETB_X9C103_CS2; 
    break;
    default:break;    
   } // 完毕CS拉高 // store 
}

void X9C103_Init(unsigned char Sel)
{
  X9C103_Dec_N_Step(Sel,99); 
  X9C103_Inc_N_Step(Sel,49); 
} 

⌨️ 快捷键说明

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