键控数字电位器X9013程序

合集下载

数字电位器芯片X9511的应用扩展

数字电位器芯片X9511的应用扩展

数字电位器芯片X9511的应用扩展杨善迎莱芜职业技术学院引言数字电位器在我国还是近几年出现的新型器件,该器件一出现,就以其调节准确方便,使用寿命长,受物理环境影响小,性能稳定等特点,而被广大电子工程技术人员所接受。

但数字电位器本身能够承受的电流和电压有限,因而需要扩展,同时在实际应用中,数字电位器的阻值范围及分辨率也需要扩展,本文介绍的扩展方案适用于各种信号的数字电位器。

数字电位器简介数字电位器是可用数字信号控制电位器滑动端位置的新型器件,一般分按钮控制和串行信号控制两种,X9511就是XICOR公司生产的理想按键式数字电位器,它内含31个串联电阻阵列和32个轴头。

轴头位置由两个按键控制,并且可以被存储在一个E2PROM存储器中,以供下一次通电时重新调用,并自动恢复轴头位置,X9511有1kΩ和10kΩ的X9511Z和X9511W两种规格。

X9511内部由计数器、存储器、译码器、模拟开关和电阻阵列等电路组成,其中计数器是5位可逆计数器,可用于对控制信号PU(或PD)进行加(或减)计数,计数器的计数值可以在ASE 的控制下存储非易失性存储器中。

计数器的数值经过32选1译码器译码后可用于控制模拟开关,32个模拟开关相当于电位器的32个轴头,电阻阵列由采用集成电路工艺制作的31个串联一起的电阻构成,电阻两端分别连接模拟开关的一端,而模拟开关的另一端连接在一起构成数字电位器的滑动端(VW),译码器的输出端可控制模拟开关的通断,从而实现滑动轴头位置的变化。

X9511的计数器电路具有以下特点:◆输入端具有内部上拉电阻和消除开关抖动的抗扰电路,当输入脉冲宽度小于40ms时,计数器将其视为干扰信号而不进行计数;◆PU和PD引脚可直接连接一个按钮开关到地,当按钮按下时,在PU或PD端产生一个负脉冲,使计数器进行加1(按PU键)或减1(按PD键)计数;◆能将计数值存储在非易失性存储器E2PROM中长期保存;◆能在上电时自动将E2PROM中的数据恢复到计数器中;◆当计数器计数到最大值“31”时,PU按键失效,而计数到最小值“0”时,PD按键失效,从而避免循环计数,保证电位器调到最大位置时不会跳到零位,或从零位跳到最大位置。

X431使用说明第一部分

X431使用说明第一部分

第二节 维修作业常用工具
常用的维修作业工具有镊子、防静电手环、
小刀片、电批或镙丝刀、热风枪、吸锡枪、
恒温电烙铁、数字万用表、数字示波器等。 下面简单介绍一下这些工具的使用方法及注 意事项.
1.2.1 镊子
镊子主要用途:夹取小的电子元件器,方便对贴片元件 的取拿。在焊接贴片元件时经常要用到它。 如下图所示:
结果显示窗口
控制面板
测试结果 显示 被测点
第四节 Linux操作系统安装
1.4.1 Linux操作系统的安装过程
1.4.1.1 了解系统 为了能使安装过程能顺利进行和避免发生意外情况, 您最好能对您的系统有一些了解,您可以查看电脑的产 品说明书,如果您的电脑曾经/正在使用其他的操作系 统,您也可以从中了解一些您的电脑的相关情况。下面 将详细说明需要了解的地方: 硬盘大小 您应该知道硬盘大小。如果要安装在已 经装有其它系统的硬盘上,要知道是否有足够的空间可 以用来安装Linux.如果要安装蓝点Linux的所有系统软件 和应用软件,您需要1.2G的硬盘空间,如果典型安装的 话,需要500M的硬盘空间。 硬盘的接口类型 是IDE还是SCSI,如果您用的是IDE硬 盘,那么您需要检查计算机的BIOS,看硬盘的参数是不 是已经设成了LBA模式。
7 接触电阻:从引出端测得的一组闭合触点的电阻值。 8 触点额定负载:在规定的额定环境和动作次数下,规 定的触点开路的电压最大值和闭合电流最大值之积, 9 寿命: 继电器在规定的环境条件下, 能够达到的最少 动作次数。 10吸和时间: 从线圈加额定值激励时起所有触点达到工 作状态所需的时间,不包括触点的回跳时间。 11释放时间: 从线圈去激励时起所有触点回到原始状态 所需的时间,不包括触点的回跳时间。 12回跳时间: 触点闭合和断开时产生的不规则的往复跳 动所持续的时间。

电位器控制舵机程序

电位器控制舵机程序

电位器控制舵机程序章节一:引言 (大约200字)随着科技的不断进步,舵机在工业自动化领域和个人电子设备中的应用越来越广泛。

为了实现精确控制,电位器被广泛用于舵机的控制中。

本论文将介绍电位器控制舵机的原理和应用,并提供一种基于电位器的舵机控制程序。

章节二:电位器控制舵机原理 (大约300字)舵机是一种可以精确控制角度位置的装置,它可以通过控制信号确定舵机的角度。

电位器是一种可以测量旋转角度的传感器,它的输出电压与旋转角度成正比。

基于这个原理,我们可以利用电位器来控制舵机的角度位置。

电位器控制舵机的原理如下:首先,通过连接电位器的两个终点和舵机的电源来形成一个电路。

当旋转电位器时,它的阻值会发生变化,从而导致电路中的电压发生变化。

接着,这个变化的电压信号会被传递给舵机的控制器,进而控制舵机的角度位置。

章节三:电位器控制舵机的程序设计 (大约300字)为了实现电位器控制舵机的功能,我们需要设计一个相应的程序。

这个程序可以通过读取电位器的输出电压信号,并将其转换为舵机的角度位置。

首先,我们需要使用模拟输入引脚来读取电位器的输出电压。

接着,我们可以通过模数转换器将模拟电压信号转换为数字信号。

然后,我们可以根据输入的数字信号来计算舵机应该旋转的角度。

最后,我们将计算得到的角度信号发送给舵机的控制器,以控制舵机的位置。

章节四:电位器控制舵机的应用实例和展望 (大约200字)电位器控制舵机的应用非常广泛。

在工业自动化领域,电位器可以用于控制机器人的关节,实现精确的运动控制。

在个人电子设备中,电位器可以用于控制摄像头的转动角度,实现更加灵活的拍摄视角。

未来,在舵机和电位器技术的进一步发展下,电位器控制舵机的应用还将继续拓展。

例如,通过使用多个电位器和复杂的控制算法,可以实现更加复杂的舵机运动轨迹。

此外,随着传感器技术的进步,电位器控制舵机还可以与其他传感器集成,实现更加智能化的控制系统。

总结 (大约100字)本论文介绍了电位器控制舵机的原理和应用,并提供了一种基于电位器的舵机控制程序。

功率调节

功率调节

负载功率调节器一本例介绍的负载功率调节器采用过零调功电路,电路虽简单,但使用效果好;可靠性也较高,可用于各种电热器具(例如电吹风、电饭锅、电奥斗等)的功率调节及串励电动机的调速。

电路工作原理该负载功率调节器电路由电源电路、过零检测电路和功率调节电路组成,如图5-54所示。

电源电路由电源变压器T、整流二极管VDl、VD2和滤波电容器C组成。

过零检测电路由二极管VD3、VD4、电阻器Rl和运算放大器集成电路ICl组成。

功率调节电路由计数/分配器集成电路IC2、功率调节开关S、二极管VD5、VD6、电阻器R2、R3、晶体管V和晶闸管VT组成。

交流220V电压经T降压、VDl和VD2整流及C滤波后,产生9V直流电压,供给ICl、IC2和V。

VD3和VD4整流后产生的脉动直流电压,经Rl加至ICl的反相输入端上。

当脉动电压过零(也就是交流电压过零)时,ICl便输出过零脉冲。

IC2对ICI输出的过零脉冲进行计数和脉冲分配后,从2脚(Yl端)和3脚(Y0端)输出高电平触发脉冲,通过V来控制晶闸管VT的导通角来实现对负载功率的控制。

S是四档功率调节开关,它用来改变IC2的计数方式。

当S置于"1"档时,IC2的4脚(Y2端)通过S与15脚(复位端)相接,IC1每输出一个过零脉冲,IC2的3脚或2脚就会产生一个触发脉冲,此时VT的导通能力最强,负载(用电器)全功率工作;将S置于"针档时,IC2的10脚(Y4端)通过5与15脚相接,IC1输出4个过零脉冲,IC2才能产生两个触发脉冲,VT的导通能力降为50%,负载半功率工作。

元器件选择Rl-R3选用1/4W碳膜电阻器或金属膜电阻器。

C选用耐压值为25V的铝电解电容器。

VDl-VD6均选用1N4007型硅整流二极管。

V选用S9013或C8050、S8050型硅NPN晶体管。

VT选用lOA、600V的双向晶闸管。

ICl选用pA471型运算放大器集成电路;IC2选用CD4017或CC4017、C187等型号的十进制计数/脉冲分配器集成电路。

相移键控数字调制器电路设计

相移键控数字调制器电路设计

相移键控数字调制器电路设计一种数字OQPSK调制器的设计和实现收藏 | 分类: | 查看: 49 | 评论(0)调制识别技术在军事、民用领域都有十分广泛的应用价值,近年来一直受到人们的关注。

随着更多调制方式的使用,调制识别技术也在不断向前发展,并应用于各个领域。

数字调制信号又称为键控信号,调制过程可用键控的方法由基带信号对载频信号的振幅、频率及相位进行调制。

这种调制的最基本方法有3种:振幅键控(ASK)、频移键控(FSK)、相移键控(PSK)。

根据所处理的基带信号的进制不同,它们可分为二进制和多进制调制(M 进制)。

多进制数字调制与二进制相比,其频谱利用率更高。

其中QPSK(即4PSK)是MPSK (多进制相移键控)中应用较广泛的一种调制方式。

交错正交相移键控(OQPSK)是继QPSK 之后发展起来的一种恒包络数字调制技术,是QPSK的一种改进形式,也称为偏移四相相移键控(offset-QPSK)技术。

本文提出了一种基于DSP处理器的数字OQPSK调制器实现方案,让OQPSK调制器的大部分功能由DSP处理器执行相应的算法实现,此方案省去了大量的硬件电路,具有体积小、功耗低、稳定可靠等优点。

1 OQPSK调制原理简介OQPSK也称为偏移四相相移键控(offset-QPSK),是QPSK的改进型。

它与QPSK有同样的相位关系,也是把输入码流分成两路,然后进行正交调制。

不同点在于它将同相和正交两支路的码流在时间上错开了半个码元周期。

由于两支路码元半周期的偏移,每次只有一路可能发生极性翻转,不会发生两支路码元极性同时翻转的现象。

因此,OQPSK信号相位只能跳变0°、±90°,不会出现180°的相位跳变。

QPSK调制由于同相支路I和正交支路Q的两个比特ab可能同时发生变化,因而存在180°的相位突变,这在频带受限的系统中会引起信号包络的很大起伏,造成邻道干扰。

(整理)按钮控制数控电位器X9511及其应用

(整理)按钮控制数控电位器X9511及其应用
1.功能
X9511系列包括X9511Z(最大电阻为1k)和X9511W(最大电阻为10k)两种,其内部包含有控制电路、5位二进制可逆计数器、32选1译码器、5位E2PROM存贮器以及电阻阵列,功能方框图如图1所示。电阻阵列包含31个电阻单元,在每个单元的两个端点都有可以被滑动单元访问的抽头点。对滑动单元抽头点位置的访问由PU、PD两个输入端所输入的数据经5位加/减计数器计数、32选1译码器译码后控制单接点的电子开关来实现。在滑动端改变抽头位置时工作在"先接通后断开"的方式。X9511的分辨率等于最大的电阻值被31除。例如X9511W的每个抽头间的阻值为10k/31=323。
由于U3和U4的数字输入端连在一起,并且滑动端位置相同,所以输出电阻将随着Vi改变,但这种情况下,即使Vi保持恒定,输出电阻也会在两个相邻状态之间连续转换,例如,如果电位器的端到端电阻为10kΩ,当滑动端电阻设置在5kΩ时,输出电阻将随时钟在5kΩ和5.3125kΩ之间转换,图6中,ASE引脚通过电阻R接+ 5V电源,平时为高电平,当按键k按下并释放以完成一次手动的滑动端位置存储后,电路会将当前的滑动端位置存储到E2PROM中以作为滑动端下一次上电时的初始位置。
在图2和图3中,ASE引脚将通过电阻R接到VCC电源,平时为高电平,当按键K3按下并释放后,电路将完成一次手动的滑动端位置存储,从而将当前的滑动端位置存储到E2PROM中以作为滑动端下一次上电时的初始位置。
数字电位器的级联扩展
◇数字电位器的串联级联
图4所示是将电位器W1、W2进行串联的连接电路,其中图4(a)是将W1滑动端与其一端短接,而将W2的滑动端作为输出,设W1滑动端将其分成的两部分分别为R1、R2、W2的滑动端将W2分为R3、R4两个部分,那么,若输入电压信号Ui,输出为Uo,则有:

X9241控制程序

X9241控制程序

/****************************************************标题:单片机控制T类功放实现功能:1:通过单片机控制X9241数字电位器四个电位器的阻值大小,从而调节功放前级处理芯片LM4610的音量、低音、高间、平衡音。

2:通过扫描功放芯处TA2020过载标志位,自动减少放大倍数,从而减少因输入信号过大而导致的失真。

3:通过控制功放TA2020的SLEEP和MUTE,消除功放在开机、关机时的冲击噪声。

4:通过控制继电器,从而控制环形变压器,保护芯片,减少待机功耗。

5:显示设备为12864液晶显示器。

可显示当前音量、低音、高音、平衡音的相对值,6:输入设备有按键(采用行列式键盘:分8个:低音+、-,音量+-,平衡音+-,高音+-.7;可设置3D、金属音音效(通过短路帽连接)编写人:涂俊华2010年11月10日于湖南工学院***************************************************//*****************************************///#include <reg52.h>#include <intrins.h>#include <LCD12864.h>#define uchar unsigned char#define uint unsigned int#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};#define OP_READ 0xa1 // 器件地址以及读取操作#define OP_WRITE 0xa0 // 器件型号及地址1010 A2 A1 A0 读/写控制#define MAX_ADDR 0x7f // AT24C02最大地址uchar code yejingtable[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20,0x2e,0x0f};//0--9 灭小数点星号sbit OVERLOAD = P2^2;sbit SCL = P2^3;sbit SDA = P2^4;void start();void stop();uchar shin();bit shout(uchar write_data);uchar read_random(uchar random_addr);void write_byte( uchar addr, uchar write_data);void fill_byte(uchar fill_data);void delayms(uchar ms);void delay(uint m);uchar table[10];uchar keyscan();uchar bass,volume,balance,treble,time;//即四个电位器的相对值VR0,VR1,VR2,VR3void lcd_set();void write_cmd(uchar command);void write_data(uchar data0);void lcd_clear();void readall();void c_bass(uchar bass);void c_volume(uchar volume);void c_balance(uchar balance);void c_treble(uchar treble);void main(void){uchar m;EA=1;TMOD=0x01;ET0=1; //采用中断方式进行工作TH0=0X3C,TL0=0XB0; //采用定时器0开计时TR0=1;delayms(2000);/* c_bass(0x2f);c_volume(0x3f);c_balance(0x1f);c_treble(0x2f); */readall(); //读出当前各种相对值lcd_clear();lcd_set();display(1,3,"敬请聆听");display(2,3,"T 类音效");display(3,1,"制作团队:");display(4,6,"北斗星");//*******************while(1){if(OVERLOAD==0){volume--;c_volume(volume);readall();}switch(keyscan()){case 'c':bass--;time=0;if(bass==0) bass=1;c_bass(bass);readall();break;case 'd':bass++;time=0;if(bass==64) bass=63;c_bass(bass);readall();break;case 'e':volume--;time=0;if(volume==0) volume=1;c_volume(volume);readall();break;case 'f': volume++;time=0;if(volume==64) volume=63;c_volume(volume);readall();break;case 8: balance--;time=0;if(balance==0) balance=1;c_balance(balance);readall();break;case 9: balance++;time=0;if(balance==64) balance=63;c_balance(balance);readall();break;case 'a': treble--;time=0;if(treble==0) treble=1;c_treble(treble);readall();break;case 'b': treble++;time=0;if(treble==64) treble=63;c_treble(treble);readall();break;default : break;}}}void start()// 开始位{SDA = 1;SCL = 1;_nop_();_nop_();_nop_();SDA = 0;_nop_();_nop_();_nop_();_nop_();SCL = 0;}void stop()// 停止位{SDA = 0;SCL = 1;_nop_();_nop_();_nop_();SDA = 1;_nop_();_nop_();_nop_();_nop_();SDA = 0;}uchar shin()// 从AT24Cxx移入数据到单片机{uchar i,read_data;SDA=1;for(i = 0; i < 8; i++){read_data <<= 1;SCL = 1;_nop_();_nop_();_nop_();read_data |= (uchar)SDA;SCL = 0;}return(read_data);}bit shout(uchar write_data) // 从单片机移出数据到AT24Cxx,已包含应答信号{uchar i;bit ack_bit;for(i = 0; i < 8; i++) // 循环移入8个位{SDA = (bit)(write_data & 0x80);_nop_();_nop_();_nop_();SCL = 1;_nop_();_nop_();_nop_();SCL = 0;write_data <<= 1;}SDA = 1; // 读取应答_nop_();_nop_();_nop_();_nop_();SCL = 1;_nop_();_nop_();_nop_();_nop_();_nop_();ack_bit = SDA;SCL = 0;return ack_bit; // 返回A T24Cxx应答位}void write_byte(uchar addr, uchar write_data)// 在指定地址addr处写入数据write_data{start();shout(OP_WRITE);shout(addr);shout(write_data);stop();delayms(10); // 写入周期}void fill_byte(uchar fill_data)// 填充数据fill_data到EEPROM内{uchar i;for(i = 0; i < MAX_ADDR; i++){write_byte(i, fill_data);}}uchar read_current()// 在当前地址读取{unsigned char read_data;start();shout(OP_READ);read_data = shin();stop();return read_data;}uchar read_random(uchar random_addr)// 在指定地址读取{start();shout(OP_WRITE);shout(random_addr);return(read_current());}void delayms(uint count){uint j;while(count--!=0){for(j=0;j<82;j++);}}//****************************************************** uchar keyscan(){uchar temp,num='z';P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delayms(15);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xee:num=0; break;case 0xde:num=1; break;case 0xbe:num=2; break;case 0x7e:num=3; break;}while(temp!=0xf0) //等待键松开{temp=P1;temp=temp&0xf0;}}}P1=0xfd;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delayms(15);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xed:num=4; break;case 0xdd:num=5; break;case 0xbd:num=6; break;case 0x7d:num=7; break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xfb;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delayms(15);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xeb:num=8; break;case 0xdb:num=9; break;case 0xbb:num='a'; break;case 0x7b:num='b'; break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}P1=0xf7;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delayms(15);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case 0xe7:num='c'; break;case 0xd7:num='d'; break;case 0xb7:num='e'; break;case 0x77:num='f'; break;}while(temp!=0xf0){temp=P1;temp=temp&0xf0;}}}return num;}//********************************************** /*****************写指令程序********************/ void write_cmd(uchar command){delay(100);rs=0;rw=0;P0=command;en=1;_nop_();_nop_();en=0;}void write_data(uchar data0) {delay(100);rs=1;rw=0;P0=data0;en=1;_nop_();_nop_();en=0;}void lcd_set(){write_cmd(0x34);write_cmd(0x30);write_cmd(0x01);write_cmd(0x06);write_cmd(0x0c);}void lcd_clear(){write_cmd(0x01);write_cmd(0x34);write_cmd(0x30);}void delay(uint m){while(--m);}void readall(){lcd_clear();start();shout(0x50); //发送器件型号0101及地址0000shout(0x90); //发送读WCR命令1001 VR0 00 **bass=shin(); //读取bass值stop();start();shout(0x50); //发送器件型号0101及地址0000shout(0x94); //发送读WCR命令1001 VR1 01 **volume=shin(); //读取volume值stop();start();shout(0x50); //发送器件型号0101及地址0000shout(0x98); //发送读WCR命令1001 VR2 10 **balance=shin(); //读取balance值stop();start();shout(0x50); //发送器件型号0101及地址0000shout(0x9c); //发送读WCR命令1001 VR3 11 **treble=shin(); //读取treble值stop();display(1,1,"低音相对值");display(2,1,"音量相对值");display(3,1,"平衡音相对值");display(4,1,"高音相对值");write_cmd(0x87);write_data(yejingtable[bass/10]);write_data(yejingtable[bass%10]);write_cmd(0x97);write_data(yejingtable[volume/10]);write_data(yejingtable[volume%10]);write_cmd(0x8f);write_data(yejingtable[balance/10]);write_data(yejingtable[balance%10]);write_cmd(0x9f);write_data(yejingtable[treble/10]);write_data(yejingtable[treble%10]); //利用单片机显示数值}///////////////////////////////////////////////////////////void c_bass(uchar bass){start();shout(0x50); //发送器件型号0101及地址0000 shout(0xc0); //写数据shout(bass); //送一个中间值stop();delayms(100);start();shout(0x50); //发送器件型号0101及地址0000 shout(0x10); //将VR0的阻值送给WCRstop();}void c_volume(uchar volume){start();shout(0x50); //发送器件型号0101及地址0000 shout(0xc4); //写数据shout(volume); //送一个中间值stop();delayms(100);start();shout(0x50); //发送器件型号0101及地址0000 shout(0x14); //将VR0的阻值送给WCRstop();}void c_balance(uchar balance){start();shout(0x50); //发送器件型号0101及地址0000 shout(0xc8); //写数据shout(balance); //送一个中间值stop();delayms(100);start();shout(0x50); //发送器件型号0101及地址0000 shout(0x18); //将VR0的阻值送给WCRstop();}void c_treble(uchar treble){start();shout(0x50); //发送器件型号0101及地址0000 shout(0xcc); //写数据shout(treble); //送一个中间值stop();delayms(100);start();shout(0x50); //发送器件型号0101及地址0000 shout(0x1c); //将VR0的阻值送给WCRstop();readall();}//////////////////////////////////////////////////////////////////////void timer0()interrupt 1{TH0=0X3C,TL0=0XB0;time++;if(time==250){time=0;lcd_clear();lcd_set();display(1,3,"敬请聆听");display(2,3,"T 类音效");display(3,1,"制作团队:");display(4,6,"北斗星");}}。

X931X系列数控电位器的典型应用

X931X系列数控电位器的典型应用

X931X系列数控电位器的典型应用【摘要】传统的机械电位器是通过不同方式使划片改变电阻丝实现电阻值的调节。

但是噪声大、抗噪能力弱,体积通常较大,不适于现今电路小型化设计的发展趋势。

因此,有必要采用新型的数字电位控制器实现电位控制。

【关键词】数字电位器 9313 调压电路前言:电位器是电子电路中常见的元件之一。

在电路设计中实现电阻电位调节、功放信号调节、稳压电流调节及校正等功能。

传统的机械电位器是通过不同方式使划片改变电阻丝实现电阻值的调节。

当使用时间过长,可能会出现滑片松动,从而影响整个电路的性能。

且噪声大、抗噪能力弱,体积通常较大,不适于现今电路小型化设计的发展趋势。

因此,有必要采用新型的数字电位控制器实现电位控制。

一、数字电位器的主要特点数字电位器分辨率高、使用灵活、调整阻值准确、抗噪能力强、调节无噪声、稳定性高、模块化封装适用于IC批量生产。

并且可通过程序设定实现某些场景的电位自我调节(如温度自动调节系统)。

这是机械电位器无法实现的。

不过同时数字电位器也具有一定的缺点,比如需提供电源供电、且价格相对较高。

电路设计人员应根据不同的使用要求来选择相应的电位器。

二、数字电位器工作原理及产品选择数控电位器等效于三端可变电阻器件,这种模拟开关等效于单刀单掷开关,且在数字信号的控制下每次只能有一个模拟开关闭合,从而将串联电阻的一个节点连接到滑动端。

数字电位器的选型需要考虑以下因素:1数字电位器的抽头数。

数字电位其的抽头数越高,表明数字电位器的分辨率越高。

但抽头数越多,内部开关越多,电路越复杂,成本随之越高。

2数字电位器总电阻值。

通常会有100Ω、1kΩ、10kΩ、100kΩ、200kΩ、1MΩ。

3非易失性。

非易失性数字电位器具有数据永久存储功能,将设定好的信息存储在非挥发存储器上,断电保存。

4选择工作电压。

数控电位器的工作电压主要有±2.5V、+5V、±5V、±15V、+15V、+30V等规格。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{key=kbscan();
if(key!=0)
{
while((P1&0xf0)!=0xf0); //等等键释放
if(key==0x11)
{ x=2;
x9312UP(x);
}
if(key==0x21)
{x=4;
x9312down(x);
}
}
}
}
/*****************键扫描子程序**********************************/
{
delayx();/*延时去抖动*/
if((P3&0xf0)!=0xf0)
{
sccode=0xfe;/*逐行扫描初值*/
while((sccode&0x10)!=0)
{
P3=sccode;/*输出行扫描码*/
if((P3&0xf0)!=0xf0)/*本行有键按下*/
{
recode=(P3&0xf0|0x0f);
return((~sccode)+(~recode)); /*返回特征字节码*/
}
else sccode=(sccode<<1)|0x01;/*行扫描码左移一位*/
}
}
}
return(0);/*无键按下,返回值为0*/
}
delay_us(1);
UD=1;
delay_us(1);
for(y=x;y>0;y--)
{inc=1;
delay_us(1);
inc=0;
delay_us(1);
}
cs=1;
delay_us(1);
inc=1;
delay_us(1);
cs=1;
ddelay(10);
save();
}
void x9312down(unsigned char x)s=0;
delay_us(1);
UD=0;
delay_us(1);
for(y=x;y>0;y--)
{inc=1;
delay_us(1);
inc=0;
delay_us(1);
}
cs=1;
delay_us(1);
inc=1;
delay_us(1);
cs=1;
ddelay(10);
save();
#include <reg52.h>
#include<intrins.h>
#include <absacc.h>
#include<math.h>
#include <STDLIB.H>
#define uchar unsigned char
#define uint unsigned int
void save(); //
//键消抖的延时函数
void delayx(void)
{
uchar i;
for(i=0;i<200;i++);
}
// kbscan(void)键扫描函数(P3口扫描)
uchar kbscan(void)
{
uchar sccode,recode;
P3=0xf0;/*发全"0"行扫描码,列线输入*/
if((P3&0xf0)!=0xf0)/*若有键按下*/
}
void save()
{
inc=1;
delay_us(10);
cs=0;
delay_us(10);
cs=1;
delay_us(400);
}
uchar kbscan(void);
uchar key_num(uchar key);//键码转换
void main()
{ uchar x,key;
while(1)
void delay_us(unsigned char t)//us yanshi
{
for(;t>0;t--);
}
void ddelay(uint t)//ms yanshi
{
for(;t>0;t--);
}
void x9312UP(unsigned char x)//向上滑动
{
uchar y;
cs=0;
/**************************************************************/
sbit inc=P1^0;//管脚分配
sbit UD=P1^1;//
sbit cs=P1^2;//
/****************************************************************/
相关文档
最新文档