键控数字电位器X9013程序
- 格式:doc
- 大小:28.00 KB
- 文档页数:3
数字电位器芯片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按键失效,从而避免循环计数,保证电位器调到最大位置时不会跳到零位,或从零位跳到最大位置。
电位器控制舵机程序章节一:引言 (大约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°的相位突变,这在频带受限的系统中会引起信号包络的很大起伏,造成邻道干扰。
/****************************************************标题:单片机控制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系列数控电位器的典型应用【摘要】传统的机械电位器是通过不同方式使划片改变电阻丝实现电阻值的调节。
但是噪声大、抗噪能力弱,体积通常较大,不适于现今电路小型化设计的发展趋势。
因此,有必要采用新型的数字电位控制器实现电位控制。
【关键词】数字电位器 9313 调压电路前言:电位器是电子电路中常见的元件之一。
在电路设计中实现电阻电位调节、功放信号调节、稳压电流调节及校正等功能。
传统的机械电位器是通过不同方式使划片改变电阻丝实现电阻值的调节。
当使用时间过长,可能会出现滑片松动,从而影响整个电路的性能。
且噪声大、抗噪能力弱,体积通常较大,不适于现今电路小型化设计的发展趋势。
因此,有必要采用新型的数字电位控制器实现电位控制。
一、数字电位器的主要特点数字电位器分辨率高、使用灵活、调整阻值准确、抗噪能力强、调节无噪声、稳定性高、模块化封装适用于IC批量生产。
并且可通过程序设定实现某些场景的电位自我调节(如温度自动调节系统)。
这是机械电位器无法实现的。
不过同时数字电位器也具有一定的缺点,比如需提供电源供电、且价格相对较高。
电路设计人员应根据不同的使用要求来选择相应的电位器。
二、数字电位器工作原理及产品选择数控电位器等效于三端可变电阻器件,这种模拟开关等效于单刀单掷开关,且在数字信号的控制下每次只能有一个模拟开关闭合,从而将串联电阻的一个节点连接到滑动端。
数字电位器的选型需要考虑以下因素:1数字电位器的抽头数。
数字电位其的抽头数越高,表明数字电位器的分辨率越高。
但抽头数越多,内部开关越多,电路越复杂,成本随之越高。
2数字电位器总电阻值。
通常会有100Ω、1kΩ、10kΩ、100kΩ、200kΩ、1MΩ。
3非易失性。
非易失性数字电位器具有数据永久存储功能,将设定好的信息存储在非挥发存储器上,断电保存。
4选择工作电压。
数控电位器的工作电压主要有±2.5V、+5V、±5V、±15V、+15V、+30V等规格。
贴一个控制数字电位器X9241的C程序,偌觉得好用就顶一下!//调试电位器X9241的程序//硬件连接//PE2-----SDA//PE3-----SCL//使用超级终端能看到显示的结果,我这里用来控制AD的放大倍数//通过改变数字电位器的阻值,来改变放大倍数。
//作者:黄勇 huangyongbj123@//ICC-A VR application builder : 2006-9-12 14:32:16// Target : M128// CRYSTAL: 11.059MHZ#include <iom128v.h>#include <macros.h>#define u CHAR unsigned CHAR#define uint unsigned intunion{u CHAR TEMP_ad[2];uint int_ad;}ad;//ADC initialize// Conversion time: 75uSvoid adc_init(void){ADCSRA = 0x00; //disable adcADMUX = 0x40; //SELECT adc input 0ACSR = 0x80;ADCSRA = 0xE6;}void I2c_wait(u CHAR cnt){u CHAR i,j;for(j=0;j<cnt;j++)for(i=0;i<100;i++);}void I2c_start(void){DDRE=0X0C; //PE2-SDA PE3-SCL OUTPUTPORTE|=BIT(PE2); //SDA=1;PORTE|=BIT(PE3); //SCL=1;I2c_wait(5);PORTE&=~BIT(PE2); //SDA=0;I2c_wait(5);PORTE&=~BIT(PE3); //SCL=0;}void I2c_stop(void){DDRE=0X0C; //PE2-SDA PE3-SCL OUTPUTPORTE&=~BIT(PE2); //SDA=0;I2c_wait(5);PORTE|=BIT(PE3); //SCL=1;I2c_wait(5);PORTE|=BIT(PE2); //SDA=1;}u CHAR I2c_sendbyte(u CHAR udata){u CHAR i,ack;DDRE=0X0C;for(i=0;i<8;i++){if((udata&0x80)==0x80)PORTE|=BIT(PE2); //SDA=1;else PORTE&=~BIT(PE2); //SDA=0;udata<<=1;I2c_wait(5);PORTE|=BIT(PE3); //SCL=1;I2c_wait(5);PORTE&=~BIT(PE3); //SCL=0;I2c_wait(5);}PORTE|=BIT(PE2); //SDA=1; //接受ACK信号 DDRE=0X08;I2c_wait(5);PORTE|=BIT(PE3); //SCL=1;I2c_wait(5);if((PINE&0X04)==0x04) ack=0x01;else ack=0x00;// DDRE|=0X0C;PORTE&=~BIT(PE3); //SCL=0;I2c_wait(5);return (ack);}u CHAR I2c_readbyte(void){u CHAR i,TEMP;DDRE=0X08;for(i=0;i<8;i++){PORTE|=BIT(PE3); //SCL=1;I2c_wait(5);TEMP<<=1;if(PINE&0X04) TEMP|=0x01;PORTE&=~BIT(PE3); //SCL=0; I2c_wait(5);}return (TEMP);}void delay_ms(u CHAR m){unsigned int j;for(;m>0;m--){for(j=0;j<1000;j++);}}void port_init(void)//IN-0X00 OUT-0XFF; {PORTA = 0x00;DDRA = 0x00;PORTB = 0x00;DDRB = 0xff;PORTC = 0x00; //M103OUTPUT ONL Y DDRC = 0x00;PORTD = 0x00;DDRD = 0x00;PORTE = 0xff;DDRE = 0x00;PORTF = 0x00;DDRF = 0x00;PORTG = 0x00;DDRG = 0x00;}//UART1 initialize// desired baud rate:9600// actual baud rate:9600 (0.0%)// CHAR size: 8 bit// parity: Disabledvoid uart0_init(void){UCSR0B = 0x00; //disable while setting baud rateUCSR0A = 0x00;UCSR0C = 0x06;UBRR0L = 0x47; //set baud rate loUBRR0H = 0x00; //set baud rate hiUCSR0B = 0x18;}//UART1 initialize// desired baud rate:2400// actual invalid baud rate// CHAR size: 8 bit// parity: Disabledvoid uart1_init(void){UCSR1B = 0x00; //disable while setting baud rateUCSR1A = 0x00;UCSR1C = 0x06;UBRR1L = 0x00 /*INV ALID SETTING*/; //set baud rate lo UBRR1H = 0x00 /*INV ALID SETTING*/; //set baud rate hi UCSR1B = 0x18;}//call this routine to initialize all peripheralsvoid init_devices(void){//stop errant interrupts until set upCLI(); //disable all interruptsXDIV = 0x00; //XTAL dividerXMCRA = 0x04; //external MEMORYport_init();adc_init();uart0_init();uart1_init();MCUCR = 0x40;EICRA = 0x00; //extended ext intsEICRB = 0x00; //extended ext intsEIMSK = 0x00;TIMSK = 0x00; //timer interrupt sources ETIMSK = 0x00; //extended timer interrupt sources SEI(); //re-enable interrupts//all peripherals are now initialized}void Uart_send CHAR( unsigned CHAR data ) {while ( !( UCSR0A & (1<<UDRE0)) );UDR0 = data;}unsigned CHAR Uart_get CHAR( void ){while ( !(UCSR0A & (1<<RXC0)) );return UDR0;}void putstring(u CHAR *s){while(*s!='\0'){Uart_send CHAR(*s);s++;}}void sendnum(unsigned CHAR num){unsigned CHAR i;if(num>=100){i=num/100+0x30;Uart_send CHAR(i);。
这是8055模型数据:******************PNPEpitaixialSiliconTransistor****************** *************Product:SS8550BBU/SS8550BTA/SS8550CBU/SS8550CTA/SS8550DBU/SS8550 DTA**Package:TO-92**Terminals:Emitter(1)Base(2)Collector(3)**--------------------------------------------------------------------------------*BeginSpec*JV:Ic/Ib=10*OA:Vce=-1*FB:Vce=-1*VV:Ic/Ib=10*CB:*EB:*ST:Ic/Ib=10*GB:Vce=-10*EndSpec*BeginTrace*JV:0,1,100.00E-6,.1,1,3,0,0,-1(27)*OA:1,1,100.00E-6,.1,1,3,0,0,-1(27)*FB:0,1,100.00E-6,.1,1,3,0,0,-1(27)*VV:0,1,100.00E-6,.1,1,3,0,0,-1(27)*CB:0,1,.1,50,1,3,0,0,-1(27)*EB:0,1,.1,10,1,3,0,0,-1(27)*ST:0,1,100.00E-6,.1,1,3,0,0,-1(27)*GB:0,1,100.00E-6,.1,1,3,0,0,-1(27)*EndTrace*BeginParam*IS=117.63E-15(10.000E-21,1.0000E-6,0) *BF=178.21(1,1.5000E3,0)*NF=1(.8,1.2000,0)*VAF=51.250(0,1.0000E3,0)*IKF=3.3034(10.000E-3,20,0)*ISE=18.820E-15(0,1,0)*NE=1.5000(1,2,0)*BR=5(.1,500,0)*NR=1(.1,5,0)*VAR=36.681(0,1.0000E3,0)*IKR=10.000E-3(10.000E-3,20,0)*ISC=200.00E-18(0,1,0)*NC=1.5000(1,3,0)*NK=.5(.1,5,0)*RE=0(0,100.00E3,0)*RB=122(0,100,0)*RC=1(0,100.00E3,0)*CJE=99.513E-12(0,1,0)*VJE=.77795(.35,1.5000,0) *MJE=.38009(.1,1,0)*CJC=33.278E-12(0,1,0)*VJC=.65102(.35,1.5000,0) *MJC=.38907(.1,1,0)*FC=.49925(.1,1.5000,0) *TF=796.00E-12(0,1,0)*XTF=10(0,100.00E3,0)*VTF=10(0,100.00E3,0)*ITF=1(0,100.00E3,0)*PTF=0(0,360,0)*TR=10.000E-9(0,1,0)*EG=1.1695(.69,5,0)*XTB=1.6730(0,100.00E3,0) *XTI=3(.1,100.00E3,0)*EndParam*DEVICE=SS8550,PNP*SS8550PNPmodel*createdusingModelEditorrelease10.5.0on11/27/08at09:04 *TheModelEditorisaPSpiceproduct..MODELSS8550PNP+IS=117.63E-15BF=178.208NF=1+BF=178.21NF=1+VAF=51.250VAR=36.6808IKF=3.3034+IKF=3.3034+ISE=18.820E-15+BR=5NR=1ISE=1.882E-14+VAR=36.681IKF=3.3034+IKR=10.000E-3RB=122RBM=27.073+ISC=200.00E-18NC=1.5+NC=1.5000+RB=122RBM=27.073+RC=1+CJE=99.513E-12VJE=0.777949+VJE=.77795+MJE=.38009FC=0.499252CJC=3.32783E-11+CJC=33.278E-12+VJC=.65102MJC=0.389073TF=7.96E-10+MJC=.38907TF=7.96E-10+FC=.49925CJC=3.32783E-11+TF=796.00E-12+XTF=10+VTF=10+ITF=1+TR=10.000E-9+EG=1.1695XTB=1.6730XTI=3+XTB=1.6730XTI=3新建一文档文件,黏贴复制上面的数据,另存为ss8550.cir,生成cir文件元件制作方法:以Multisim为例:打开“工具”中的“元件向导”在元件名中键入ss8550,点下一步后,点选择封装因为8550是三极管,所以选择TO-90封装,再点选择选择引脚数为3,懂的,再点下一步。