上传一个数字电位器(X9312)的C程序(ICCAVR)
AVR没有D/A,但可以用PWM来代替D/A,其实也可以用数字电位器来代替D/A输出,X9312是一个100点变化的数字电位器,完全可以作为D/A输出/*-----------------------------------D/A部分 ---------------------------------*/
/*-----------------------------------------------------------*/
/* X9312滑动端上调函数(入口参数:UP=向上调整的步数,x选择芯片) */
/*-----------------------------------------------------------*/
void X9312_UP(unsigned char x,unsigned char step)
{ unsigned char i;
if(x=='A') IC3A_ON; //IC3A使能
if(x=='B') IC3B_ON; //IC3B使能
delay_us(1);
IC3X_DIRUP; //IC3x方向向上
delay_us(1);
for(i=step;i>0;i--)
{IC3X_H; //IC3x高电平
delay_us(1);
IC3X_L; //INC从高电平跳变到低电平,实现一次上调
delay_us(1);
}
if(x=='A') IC3A_OFF; //IC3A关闭
if(x=='B') IC3B_OFF; //IC3B关闭
delay_us(1);
IC3X_H;
delay_us(1);
if(x=='A') IC3A_OFF; //IC3A关闭
if(x=='B') IC3B_OFF; //IC3B关闭
delay_ms(10); //数字电位器操作结束必须延时10ms后采样结果才能正确
}
/*------------------------------------------------------------*/
/* X9312滑动端下调函数(入口参数:DOWN=向下调整的步数,x选择芯片)*/
/*------------------------------------------------------------*/
void X9312_DOWN(unsigned char x,unsigned char step)
{ unsigned char i;
if(x=='A') IC3A_ON; //IC3A使能
if(x=='B') IC3B_ON; //IC3B使能
delay_us(1);
IC3X_DIRDN; //IC3x方向向上
delay_us(1);
for(i=step;i>0;i--)
{IC3X_H; //IC3x高电平
delay_us(1);
IC3X_L; //INC从高电平跳变到低电平,实现一次上调
delay_us(1);
}
if(x=='A') IC3A_OFF; //IC3A关闭
if(x=='B') IC3B_OFF; //IC3B关闭
delay_us(1);
IC3X_H;
delay_us(1);
if(x=='A') IC3A_OFF; //IC3A关闭
if(x=='B') IC3B_OFF; //IC3B关闭
delay_ms(10); //数字电位器操作结束必须延时10ms后采样结果才能正确
}
/*---------------------------------------------------------*/
/* X9312_A存储滑动端位置函数 */
/*---------------------------------------------------------*/
void X9312_SAVE()
{CLI();
IC3X_H; //IC3x高电平
delay_us(100);
IC3A_ON; //IC3A使能
delay_us(100);
IC3A_OFF; //CS从低到高的跳变,实现存储功能.
delay_ms(500);
SEI();
} 呵呵,PIC的味道好浓阿! pic? 兄弟,谢谢了,这个可以做个好几档的DC/DC了,呵呵! 程序要了 谢谢 X9312 初始位置是在中间 吗?
如果到顶是不是调节就不再变化,只能往回调节 ? 我用过X9C303,是对数的!
记忆体的数据不能读取的!
只能在系统初始化时,让X9C303向下减溢出,再从零开始向上加到要设置的初始化值!
这样要用单片机的EEPROM保存初始化值!
有谁推荐一款对数的,I2C控制的呢?!我打算换!主管说X9C303不能读取不是很好! jihao 那X9312能不能读出它的阻值呀???如何读呀?? make mark 。。。 mark {:smile:}{:smile:}mark
页:
[1]