数字电位器X9312

数字电位器X9312的介绍与驱动程序

介绍

X9312是一个包含有99个电阻单元的电阻阵列。在每个单元之间和二个端点都有可以被滑动单元访问的抽头点。滑动单元的位置由CS 、U / D 和INC 三个输入端控制。滑动端的位置可以被储存在一个非易失 性存储器中,因而在下一次上电工作时可以被重新调用。下图是X9312的原理框图。

来源于芯片手册
引脚说明:

来源于芯片手册
在这里插入图片描述
X9312时序图
来源于芯片手册

驱动程序

#define PRE   25
int Val_temp= PRE;   //定义一个全局变量Val_temp,存放X9312滑动端的位置 

void X9312_down(int arg)   //
{  
		int i=0;
		CS=0;                    //选中芯片
		INC=1;
		delay_us(2);
		UPDOWN=0;
		delay_us(2);
		for(i=0;i<arg;i++)        //向下计数100
		{
			INC=1;
			delay_us(3);
			INC=0;
			delay_us(3);
		}
		INC=1;                    //保存
		delay_us(2);
		CS=1;
		delay_ms(30);
}

void X9312_up(int arg)
{
		int i=0;
		CS=0;                    //选中芯片
		INC=1;
		delay_us(2);
		UPDOWN=1;                 //切换至向上计数
		delay_us(2);
		for(i=0;i<arg;i++)         //向上计数50
		 {
			INC=1;
			delay_us(3);
			INC=0;
			delay_us(3);
		 }
		INC=1;                    //保存
		delay_us(2);
		CS=1;
		delay_ms(30);
}
void X9312_val_Init(void)    //预置高压直流电源VH     
{  
	 int i;
	CS=0;                    //选中芯片
	INC=1;
	delay_us(2);
	UPDOWN=0;
	delay_us(2);              //切换至向计数
	for(i=0;i<100;i++)        //向下计数100
	{
		INC=1;
		delay_us(3);
		INC=0;
		delay_us(3);
	}
	INC=1;
	delay_us(2);
	UPDOWN=1;                 //切换至向上计数
	delay_us(2);
	for(i=0;i<PRE;i++)         //向上计数50
	{
		INC=1;
		delay_us(3);
		INC=0;
		delay_us(3);
	}
	INC=1;                    //保存
	delay_us(2);
	CS=1;
	delay_ms(30);
}

void X9312_Setval(int arg)
{
	int temp,cir;
	temp=Val_temp;
	Val_temp=arg;
	if(arg<temp)
	{
		cir=temp-arg;
		X9312_down(cir);
	}
	else{
		cir=arg-temp;
		X9312_up(cir);
		}
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值