一些传统的电子设备是经过改变电位器的电阻来实现调整,好比灯的亮度、电机的转速等。若是想对这种设备进行智能改造但不大幅度改变设备内部的电器结构,咱们须要电位器的电阻可经过单片机或微机进行控制,数字电位器就是这类设备。git
“我也是在项目中有这方面需求,又不想深刻研究设备的内部构造(设备比较贵),发现居然有数字电位器这样的好用的东西”函数
项目需求最大电阻为100千欧,故这里使用的是经常使用的x9c104数字电位器芯片,该型号的芯片滑动阻值为40欧~100千欧,100阶,每阶1010欧。其余阻值型号以下表。ui
芯片有8个管脚,有效管脚7个,分布位置以下图,功能以下表。it
本芯片是经过INC、U/D、CS三个输入端口的高/低电平和上升/降低沿组合实现滑动电位器Vw端的滑动。class
/* * 函数 :set_X9c104 * num :滑动阶数,1010欧姆 * ud :方向,1表示上滑,0表示下滑 * save :是否保存,1表示保存,0表示不保存 */ void set_X9c104(int num,int ud,int save) { digitalWrite(CS_pin,LOW); //片选使能 delayMicroseconds(10); if(ud==1) //滑动方向选择 { digitalWrite(UD_pin,HIGH); } else { digitalWrite(UD_pin,LOW); } delayMicroseconds(100); for(;num>0;num--) //开始向设定方向移动num阶 { digitalWrite(INC_pin,HIGH); delayMicroseconds(100); digitalWrite(INC_pin,LOW); delayMicroseconds(100); } delayMicroseconds(100); if(save==1) //是否保存选择 { digitalWrite(INC_pin,HIGH); delayMicroseconds(100); } digitalWrite(CS_pin,HIGH); delay(20); }
此外,值得一提的是,这个芯片坏片比较多,买了3片,坏了2片,也是悲剧。程序