您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > MCP41XXX系列低功耗256抽头数字电位器
MCP41xxx系列低功耗256抽头数字电位器4.1硬件与功能描述机械式电位器通常用来调整系统参考电压、增益误差和偏置电压误差。数字电位器可以用来完成相同的任务,而且还能提供额外的数字调整控制功能。MCP41xxx和MCP42xxx数字电位器系列器件可以在很大程度上像机械式电位器那样使用,这是因为对于含单个电位器的器件(MCP41010、MCP41050和MCP41100),有三个电阻端子,而对于含两个电位器的器件(MCP42010、MCP42050和MCP42100),则有六个电阻端子,就像机械电位器一样。MCP41XXX系列器件是具有256个抽头的数字电位器(XDCP)。该系列电阻有10KΩ、50KΩ和100KΩ几种,内部包含电阻阵列、滑动开关、控制单元和16位存储器。滑动端的位置由SPI总线控制。每次上电或重新复位“数据字节”的数据被初始化为80H(即电位器的滑动端处在中心位置)。MCP41xxx系列器件采用CMOS工艺,功耗极低,被广泛地应用于仪器仪表和精密电压或电流控制系统中。1.主要性能特点(1)该系列总电阻有10KΩ、50KΩ和100KΩ几种;(2)256个滑动抽头点,滑动点的位置存储予内部存储器中;(3)255个电阻单元,具有温度补偿;(4)采用SPI串行接口;(5)宽电压CMOS技术,最大工作电流为500μA,最大静态电流为1μA;(6)电源电压范围为2.7~5.5V;(7)器件工作温度为-40~+85℃(工业)、-40~+125℃(军品)。2.内部结构与引脚排列MCP41xxx系列数字电位器由一个包含255个电阻单元的电阻阵列和一个滑动端开关网络组成。滑动端的位置由cs、SI和SCK3线输入信号控制。其结构如图6-11(a)所示。VCCcsPBOSIPWOGNDSCKPBOPAO(b)csPAOcsVCCSISCKPBOSCKPWOSIPWOGNDPAO(a)(c)图4-11MCP41xxx的内部结构、等效电路与引脚排列(a)内部结构:(b)等效电路:(c)引脚排列控制逻辑16位锁存寄存器滑动移位寄存器多路电子开关与电阻阵列18273645控制与存储MCP41xxx数字电位器的引脚排列如图4-11(c)所示。其中:(1)cs是片选输入端,低电平有效。(2)SCK是串行数据输入的同步时钟。在数据准备好的情况下,SCK的下降沿同步输入数据。(3)SI是串行数据输入信号。在SCK的配合下,SI向器件输入数据。(4)GND是参考地。(5)PAO是数字电位器的一个固定端,见图4-11(b)中的PAO位置。(6)PWO是数字电位器的抽头滑动端,见图4-11(b)中的PWO位置。(7)PBO是数字电位器的一个固定端,见图4-11(b)中的PBO位置。(8)VCC是电源输入端。另外,MCP42xxx系列是一个双数字电位器,其原理和电特性与MCP41XXX是一致的,只是引脚有14脚(SOP封装)。3.MCP41xxx的操作MCP4lXXX的操作是通过一个命令字节完成的.该命令字节格式如图4-12所示。0不00用的位C1C0不用位P1P0图4-12一个命令字节的格式由图4-12可知,一个字节命令实际上只对C1、C0位(功能选择)和Pl、P0位(电位器选择)进行设置即可。对于MCP41xxx系列器件来说,只有一个电位器P0,而MCP42xxx系列器件才有P1与PO两个电位器。MCP4lXXX的工作时序如下图4-13所示。csSCK1234567891011命令字节数据字节SIxxC1C0xxP1P0DDD位值D7x命D6x令D5C1子D4C0符D3xD2xD1P1D0P000不用位01给MCP41xxxx或MCP42xxx写8位数据10使MCP41xxx系列省电11不用位00电位器的值不受影响01是操作MCP41xxx的P0电位器10是操作MCP42xxx的P1电位器11是操作MCP41xxx的P0和P1的电位器由于该电位器的数字调节范围是0~256,因此数字每增加一位(或减少一位)电位器的值就会成比例地增加(或减少)。为了确定电位器的当前“位置”,每次上电或重新复位“数据字节”的数据被初始化为80H(即电位器的滑动端处在中心位置)。这样就可通过外控的MCU实现对MCP41xxx或MCP42xxx的“精确位置”调节。4.2应用电路与编程1.应用电路图6—14是MCP41010和MCP42010的应用的几种接法。其中,图(a)是典型的反相放大器。输出电压为VOUT=-VIN*(RB/RA)+VREF*(1+RB/RA)式中,RA=[RAB(256-DN)]/256,RB=RAB·DN/256,RAB是总电阻,DN是写入的数字(0~255)。图(b)是典型的同相放大器。输出电压为VOUT=VLN(RA-RB)RB/RA式中,RA、RB同图(a)。图(c)是典型的差分放大器。输出电压为VOUT=VIN(RA—RB)RB/RA式中,RA、RB同图(a),VIN=VB-VA。图(d)是音频信号放大倍数的调节电路。通过对89C52单片机I/O口编程可实现喇叭音量的控制。MCP41010VCCVCC┌P0─W┐VINVIN││-VOUT+VOUT││MCP606-└A─B┘+VREF(基准)┌P0─W┐(a)│││└A─B┘┌──┐MCP41010(b)│P0W│VCC89C52││L1200ΩVCC└A─B┘-P1.3+L2200ΩP1.4┌P1─W┐音频输入VB│VREF(基准)P1.5cs-VIN│AB│S1P1.0P1.6SDA+8Ω└──┘功放(c)S2P1.1P1.7SCK(d)图4-14几种基本应用(a)反相放大器:(b)同相放大器;(c)差分放大器;(d)音量控制电路2.编程方法MCP41xxx系列器件是SPI总线接口,它的内部无非易失性存储器,只有16位的数据锁存器。其中的8位数据正好控制256个电阻滑动点。也就是说,数字量0~255对应O~255个电阻位置。为了编程清楚电位器的“位置点”,该器件在上电时已将内部初始化成80H(即128),这个值正好是电阻位置的“中间点”(HIJ总电阻值的一半)。所以在编程时,可以设一个字符型变量,每次开机时可以将该变量确定为80H,每操作一次MCP41xxx器件,该变量相应增加同样的值,即可解决任意电阻位置的问题。结合图4-14(d)用C51实现的相关程序如下:#includereg52.h#includestdio.hsbitS_led=P1^3;/*定义上升指示灯引脚*/sbitD_led=P1^4;/*定义下降指示灯引脚*/sbitCS=P1^5;/*定义期间片选引脚*/sbitSDA=P1^6;/*定义数据引脚*/sbitSCK=P1^7;/*定义始时钟引脚*/sbitK1=P1^0;/*定义向上的键引脚*/sbitK2=P1^1;/*定义向下的键引脚*/#defineucharunsignedchar#defineDATA_CD0x11/*定义P0电位器送数据指令*/#defineDOWN_CD0x41/*定义P0电位器掉电模式指令*/ucharcount=0;/*定义的计数变量*/voiddelay(unsignedintk)/*短延时函数,k是时常数*/{unsignedinti;for(i=0;ik;i++);}/*向MCP41xxx写数据,其中,cd是命令,dat_a是数据*/voidwrite_MCP_16(ucharcd,uchardat_a){ucharj;unsignedintx;/*定义整型变量*/CS=1;SDA=0;SCK=1;/*初始化*/x=(unsignedint)cd*256+(unsignedint)dat_a;/*将两个8位变成16位数据*/CS=0;delay(0x10);SCK=0;for(j=0;j16;j++){SCK=0;delay(0x5);/*SCK=0,并延时*/if((x&&0x8000)==1)SDA=1;elseSDA=0;x=x1;SCK=1;delay(0x5);/*SCK=1,并延时,*/}CS=1;/*结束*/}/*向MCP41xxx写命令*/voidwrite_MCP_8(ucharcd){ucharj,x;CS=1;SDA=0;SCK=1;/*初始化*/x=cd;CS=0;delay(0x10);SCK=0;/*将一个8位命令写入MCP41xxx*/for(j=0;j8;j++){SCK=0;delay(0x5);/*SCK=0,并延时*/if((x&&0x80)==1)SDA=1;elseSDA=0;x=x1;SCK=1;delay(0x5);/*SCK=1,并延时*/}CS=1;/*结束*/}/*向下滑动一个数字*/voiddown(uchardata_p0){S_led=1;D_led=0;/*向下灯点亮*/if(data_p0=0)data_p0=0;/*保证数据在最下端固定*/write_MCP_16(DATA_CD,data_p0);/*向下移动*/}/*向上滑动一个数字*/voidup(uchardata_p0){D_led=1;S_led=0;/*向上灯点亮*/if(data_p0=0xff)data_p0=0xff;/*保证数据在最下端固定*/write_MCP_16(DATA_CD,data_p0);/*向下移动*/}/*主函数部分,程序中有按键演示升和降的过程*/voidmain(void){up(0x90);count=0x80;/*将计数器设成0x80,保持与开机(上电)的值一致*/write_MCP_8(DOWN_CD);/*进入省电模式*/while(1){if(K1==0)/*向上移动位置*/{count++;up(count);delay(0x100);}if(K2==0)/*向下移动位置*/{count--;down(count);delay(0x100);}}}
本文标题:MCP41XXX系列低功耗256抽头数字电位器
链接地址:https://www.777doc.com/doc-2891324 .html