【www.shanpow.com--个人简历表】
HT1621B一:HT1621B的驱动程序
HT1621B的驱动程序---AVR
From: www.ouravr.com
作者:gphs
注释个人觉得很清晰! #define uchar unsigned char #define uint unsigned int //定义HT1621的命令 #define ComMode 0x52 //4COM,1/3bias 1000 010 1001 0 #define RCosc 0x30 //内部RC振荡器(上电默认)1000 0011 0000 #define LCD_on 0x06 //打开LCD 偏压发生器1000 0000 0 11 0 #define LCD_off 0x04 //关闭LCD显示 #define Sys_en 0x02 //系统振荡器开 1000 0000 0010 #define Ctrl_cmd 0x80 //写控制命令 #define Data_cmd 0xa0 //写数据命令 //定义端口HT1621数据端口 #define WR1 sbi(PORTD, 7) #define WR0 cbi(PORTD, 7) #define DATA1 sbi(PORTD, 6) #define DATA0 cbi(PORTD, 6) #define CS1 sbi(PORTC, 0) #define CS0 cbi(PORTC, 0) #define ZA 10 #define ZB 11 #define ZC 12 #define ZD 13 #define ZE 14 #define ZF 15 #define H 16 #define L 17 #define T 18 #define N 19 #define SUBB 20 #define P 21 #define R 22 #define NO 23 const char num[]={0x5f,0x06,0x6b,0x2f,0x36,0x3d,0x7d,0x07,0x7f,0x3f, //0 1 2 3 4 5 6 7 8 9 0x77,0x7c,0x59,0x6e,0x79,0x71,0x76,0x58,0x51,0x57,0x20,0x73,0x60,0x00, // A B C D E F H L T N - P R NO }; uchar SMG1=0; //1号数码管 uchar SMG2=0; //2号数码管 uchar SMG3=0; //3号数码管 uchar SMG4=0; //4号数码管 uchar SMG5=0; //5号数码管 uchar SMG6=0; //6号数码管 uchar SIGN1=0; //标志1 uchar SIGN2=0; //标志2 #define ADD_SMG1 0x0 #define S1 (SMG1&0x80) #define S1_ON (SMG1|=0x80) //标志S1"ON" #define S1_OFF (SMG1&=0x7f) #define ADD_SMG2 0x02 #define S2 (SMG2&0x80) #define S2_ON (SMG2|=0x80) //标志S2"OFF" #define S2_OFF (SMG2&=0x7f) #define ADD_SMG3 0x04 //数码管3的地址00 010000 #define COL (SMG3&0x80) #define COL_ON (SMG3|=0x80) //标志COL":" #define COL_OFF (SMG3&=0x7f) #define ADD_SMG4 0x06 //数码管4的地址 00 01 1000 #define ADD_SMG5 0x0a //数码管5的地址0010 1000 #define S14 (SMG5&0x80) #define S14_ON (SMG5|=0x80) //标志S14 #define S14_OFF (SMG5&=0x7f) #define ADD_SMG6 0x0c #define S15 (SMG6&0x80) #define S15_ON (SMG6|=0x80) //标志S15,除霜标志 #define S15_OFF (SMG6&=0x7f) #define ADD_SIGN1 0x08 //标志1 #define ADD_SIGN2 0x0e //标志2 #define S13_ON (SIGN1|=0x80) //标志S13,加热的中心标志 #define S13_OFF (SIGN1&=0x7f) #define S10_ON (SIGN1|=0x40) //标志S10 #define S10_OFF (SIGN1&=0xbf) #define S5_ON (SIGN1|=0x20) //标志S5 #define S5_OFF (SIGN1&=0xdf) #define S11_ON (SIGN1|=0x10) //标志S11 #define S11_OFF (SIGN1&=0xef) #define S9_ON (SIGN1|=0x08) //标志S9 #define S9_OFF (SIGN1&=0xf7) #define S8_ON (SIGN1|=0x04) //标志S8 #define S8_OFF (SIGN1&=0xfb) #define S7_ON (SIGN1|=0x02) //标志S7 #define S7_OFF (SIGN1&=0xfd) #define S6_ON (SIGN1|=0x01) //标志S6,S5-S11风扇旋转标志 #define S6_OFF (SIGN1&=0xfe) /***************************************************************/ #define S20_ON (SIGN2|=0x80) //标志S20,"Lock"标志 #define S20_OFF (SIGN2&=0x7f) #define S12_ON (SIGN2|=0x40) //标志S12,摄氏度标志 #define S12_OFF (SIGN2&=0xbf) #define S4_ON (SIGN2|=0x20) //标志S4,"Warm"标志 #define S4_OFF (SIGN2&=0xdf) #define S3_ON (SIGN2|=0x10) //标志S3,"Time"标志 #define S3_OFF (SIGN2&=0xef) #define S19_ON (SIGN2|=0x08) //标志S19 #define S19_OFF (SIGN2&=0xf7) #define S18_ON (SIGN2|=0x04) //标志S18 #define S18_OFF (SIGN2&=0xfb) #define S17_ON (SIGN2|=0x02) //标志S17 #define S17_OFF (SIGN2&=0xfd) #define S16_ON (SIGN2|=0x01) //标志S16,S16-s19,加热标志 #define S16_OFF (SIGN2&=0xfe) /**------------------------------------------------------------------------- Name: SendBit_1621(送数据程序) ---------------------------------------------------------------------------*/ void SendBit_1621(uchar sdata,uchar cnt) //data 的高cnt 位写入HT1621,高位在前 { uchar i; for(i=0;i<cnt;i++) { WR0; if(sdata&0x80) DATA1; else DATA0; WR1; sdata<<=1; } } /**------------------------------------------------------------------------- Name: SendCmd(送命令) ---------------------------------------------------------------------------*/ void SendCmd_1621(uchar command) { CS0; SendBit_1621(0x80,4); //写入标志码“100”和9 位command 命令,由于 SendBit_1621(command,8); //没有使有到更改时钟输出等命令,为了编程方便 CS1; //直接将command 的最高位写“0” } /**------------------------------------------------------------------------- Name: Write_1621(送数据和命令程序) ---------------------------------------------------------------------------*/ void Write_1621(uchar addr,uchar sdata) { addr<<=2; CS0; SendBit_1621(0xa0,3); //写入标志码“101” SendBit_1621(addr,6); //写入addr 的高6位 SendBit_1621(sdata,8); //写入data 的8位 CS1; } /**------------------------------------------------------------------------- Name: all_off(清除1621显示) ---------------------------------------------------------------------------*/ void HT1621_all_off(void) { uchar i; uchar addr=0; for(i=0;i<8;i++) { Write_1621(addr,0x00); addr+=2; } } /**************************************************************************** Name: all_on(全部点亮1621) ****************************************************************************/ void HT1621_all_on(void) { uchar i; uchar addr=0; for(i=0;i<8;i++) { Write_1621(addr,0xff); addr+=2; } } /**************************************************************************** Name: Init_1621(初始化1621) *****************************************************************************/ void Init_1621(void) { SendCmd_1621(Sys_en); SendCmd_1621(RCosc); SendCmd_1621(ComMode); SendCmd_1621(LCD_on); } /**************************************************************************** Name: LCDon(初始化1621) *****************************************************************************/ void LCDoff(void) { SendCmd_1621(LCD_off); } /**************************************************************************** Name: LCDon(初始化1621) *****************************************************************************/ void LCDon(void) { SendCmd_1621(LCD_on); } /**------------------------------------------------------------------------- Name: sun_turn1(太阳旋转标志处理) --------------------------------------------------------------------------**/ void sun_turn1(void) { S6_ON;S8_ON;S10_ON; S7_OFF;S9_OFF;S11_OFF; } /**------------------------------------------------------------------------- Name: sun_turn2(太阳旋转标志处理) --------------------------------------------------------------------------**/ void sun_turn2(void) { S7_ON;S9_ON;S11_ON; S6_OFF;S8_OFF;S10_OFF; } /**------------------------------------------------------------------------- Name: sun_turn12off(太阳旋转标志处理) --------------------------------------------------------------------------**/ void sun_turn12off(void) { S6_OFF;S8_OFF;S10_OFF;S7_OFF;S9_OFF;S11_OFF;S5_OFF; } /**------------------------------------------------------------------------- Name: burn1(燃烧标志处理) --------------------------------------------------------------------------**/ void burn1(void) { S16_ON;S18_ON;S17_OFF;S19_OFF; } /**------------------------------------------------------------------------- Name: burn2(燃烧标志处理) --------------------------------------------------------------------------**/ void burn2(void) { S16_OFF;S18_OFF;S17_ON;S19_ON; } /**------------------------------------------------------------------------- Name: burn12off(燃烧标志处理) --------------------------------------------------------------------------**/ void burn12off(void) { S16_OFF;S18_OFF;S17_OFF;S19_OFF; } /**------------------------------------------------------------------------- Name: Disp_RSTS(); --------------------------------------------------------------------------**/ void Disp_RSTS(void) { SMG1=R;SMG2=5;SMG3=T;SMG4=5; } /**------------------------------------------------------------------------- Name: Disp_RS__(); --------------------------------------------------------------------------**/ void Disp_RS__(void) { SMG1=R;SMG2=5;SMG3=SUBB;SMG4=SUBB; } /**------------------------------------------------------------------------- Name: Disp_CSTS(); --------------------------------------------------------------------------**/ void Disp_CSTS(void) { SMG1=ZC;SMG2=5;SMG3=T;SMG4=5; } /**------------------------------------------------------------------------- Name: Disp_CSOS(); --------------------------------------------------------------------------**/ void Disp_CSOS(void) { SMG1=ZC;SMG2=5;SMG3=0;SMG4=5; } /**------------------------------------------------------------------------- Name: Disp_ENTE(); --------------------------------------------------------------------------**/ void Disp_ENTE(void) { SMG1=ZE;SMG2=N;SMG3=T;SMG4=ZE; } /**------------------------------------------------------------------------- Name: Disp_ONOF(); --------------------------------------------------------------------------**/ void Disp_ONOF(void) { SMG1=0;SMG2=N;SMG3=0;SMG4=ZF; } /**------------------------------------------------------------------------- Name: Disp_HTTS(); --------------------------------------------------------------------------**/ void Disp_HTTS(void) { SMG1=H;SMG2=T;SMG3=T;SMG4=5; } /**------------------------------------------------------------------------- Name: Disp_CSTC(); --------------------------------------------------------------------------**/ void Disp_CSTC(void) { SMG1=ZC;SMG2=5;SMG3=T;SMG4=ZC; } /**------------------------------------------------------------------------- Name: Disp_STS8(); --------------------------------------------------------------------------**/ void Disp_STS8(void) { SMG1=5;SMG2=T;SMG3=5;SMG4=8; } /**------------------------------------------------------------------------- Name: Disp_08__(); --------------------------------------------------------------------------**/ void Disp_08__(void) { SMG1=0;SMG2=8;SMG3=SUBB;SMG4=SUBB; } /**------------------------------------------------------------------------- Name: Disp_10__(); --------------------------------------------------------------------------**/ void Disp_10__(void) { SMG1=SUBB;SMG2=SUBB;SMG3=1;SMG4=0; } /**------------------------------------------------------------------------- Name: Disp_DONH(); --------------------------------------------------------------------------**/ void Disp_DONH(void) { SMG1=ZD;SMG2=0;SMG3=N;SMG4=H; } /**------------------------------------------------------------------------- Name: Disp_DONF(); --------------------------------------------------------------------------**/ void Disp_DONF(void) { SMG1=ZD;SMG2=0;SMG3=N;SMG4=ZF; } /**------------------------------------------------------------------------- Name: Disp_DOFH(); --------------------------------------------------------------------------**/ void Disp_DOFH(void) { SMG1=ZD;SMG2=0;SMG3=ZF;SMG4=H; } /**------------------------------------------------------------------------- Name: Disp_DOFF(); --------------------------------------------------------------------------**/ void Disp_DOFF(void) { SMG1=ZD;SMG2=0;SMG3=ZF;SMG4=ZF; } /**------------------------------------------------------------------------- Name: Disp_LOCT(); --------------------------------------------------------------------------**/ void Disp_LOCT(void) { SMG1=L;SMG2=0;SMG3=ZC;SMG4=T; } /**------------------------------------------------------------------------- Name: Disp_ES(); --------------------------------------------------------------------------**/ void Disp_ES(void) { SMG5=ZE;SMG6=5; } /**------------------------------------------------------------------------- Name: Disp_EL(); --------------------------------------------------------------------------**/ void Disp_EL(void) { SMG5=ZE;SMG6=L; } /**------------------------------------------------------------------------- Name: Disp_EH(); --------------------------------------------------------------------------**/ void Disp_EH(void) { SMG5=ZE;SMG6=H; } /**------------------------------------------------------------------------- Name: Disp_EE(); --------------------------------------------------------------------------**/ void Disp_EE(void) { SMG5=ZE;SMG6=ZE; } /**------------------------------------------------------------------------- Name: Disp_NND(); --------------------------------------------------------------------------**/ void Disp_NND(void) { SMG1=NO;SMG2=NO;SMG3=ZD; } /**------------------------------------------------------------------------- Name: Disp_on(); --------------------------------------------------------------------------**/ void Disp_on(void) { SMG5=0;SMG6=N; } /**------------------------------------------------------------------------- Name: Disp_of(); --------------------------------------------------------------------------**/ void Disp_of(void) { SMG5=0;SMG6=ZF; } /**------------------------------------------------------------------------- Name: Disp_pb_t(); --------------------------------------------------------------------------**/ void Disp_pb_t(void) { SMG1=P;SMG2=ZB;SMG3=SUBB;SMG4=T; } /**------------------------------------------------------------------------- Name: Disp_PP(); --------------------------------------------------------------------------**/ void Disp_PP(void) { SMG5=P;SMG6=P; }
HT1621B二:HT1621b的驱动演示
HT1621的驱动演示
1
年后比较悠闲,手头有个HT1621的段式液晶,尝试写了这个驱动演示,这个演示可以依次点亮各个字段。 这是我第一次在这里发帖子,这里的气氛很好。 源程序如下: /******************************************************** 功能描述: HT1621芯片测试程序 设 计 人:ZHCE 版 本:1.0 说 明:本测试程序能够测试HT1621的每一个字段,依次点亮 每一个字段 完成时间:2008年2月13日 ********************************************************/ #include <REGX51.H> #include <intrins.h> #define uchar unsigned char #define uint unsigned int #define _Nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_() #define BIAS 0x52 //0b1000 0101 0010 1/3duty 4com #define SYSDIS 0X00 //0b1000 0000 0000 关振系统荡器和LCD偏压发生器 #define SYSEN 0X02 //0b1000 0000 0010 打开系统振荡器 #define LCDOFF 0X04 //0b1000 0000 0100 关LCD偏压 #define LCDON 0X06 //0b1000 0000 0110 打开LCD偏压 #define XTAL 0x28 //0b1000 0010 1000 外部接时钟 #define RC256 0X30 //0b1000 0011 0000 内部时钟 #define TONEON 0X12 //0b1000 0001 0010 打开声音输出 #define TONEOFF 0X10 //0b1000 0001 0000 关闭声音输出 #define WDTDIS 0X0A //0b1000 0000 1010 禁止看门狗 //HT1621控制位(液晶模块接口定义,根据自已的需要更改) sbit HT1621_DAT=P3^4; //HT1621数据引脚 sbit HT1621_CS=P3^2; //HT1621使能引脚 sbit HT1621_WR=P3^3; //HT1621时钟引脚 uchar code Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //delay us void Delay(uchar us) //5,7,9 { while(--us); } //delay ms void DelayMS(uint iMs) { uint i,j; for(i=0;i<iMs;i++) for(j=0;j<65;j++) Delay(1); } /****************************************************** 写数据函数,cnt为传送数据位数,数据传送为低位在前 *******************************************************/ void Ht1621Wr_Data(uchar Data,uchar cnt) { uchar i; for (i=0;i<cnt;i++) { HT1621_WR=0; _Nop(); HT1621_DAT=Data&0x80; _Nop(); HT1621_WR=1; _Nop(); Data<<=1; } } /******************************************************** 函数名称:void Ht1621WrCmd(uchar Cmd) 功能描述: HT1621命令写入函数 全局变量:无 参数说明:Cmd为写入命令数据 返回说明:无 设 计 人:ZHCE 版 本:1.0 说 明:写入命令标识位100 ********************************************************/ void Ht1621WrCmd(uchar Cmd) { HT1621_CS=0; _Nop(); Ht1621Wr_Data(0x80,4); //写入命令标志100 Ht1621Wr_Data(Cmd,8); //写入命令数据 HT1621_CS=1; _Nop(); } /******************************************************** 函数名称:void Ht1621WrOneData(uchar Addr,uchar Data) 功能描述: HT1621在指定地址写入数据函数 全局变量:无 参数说明:Addr为写入初始地址,Data为写入数据 返回说明:无 设 计 人:ZHCE 版 本:1.0 说 明:因为HT1621的数据位4位,所以实际写入数据为参数的后4位 ********************************************************/ void Ht1621WrOneData(uchar Addr,uchar Data) { HT1621_CS=0; Ht1621Wr_Data(0xa0,3); //写入数据标志101 Ht1621Wr_Data(Addr<<2,6); //写入地址数据 Ht1621Wr_Data(Data<<4,4); //写入数据 HT1621_CS=1; _Nop(); } /******************************************************** 函数名称:void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt) 功能描述: HT1621连续写入方式函数 全局变量:无 参数说明:Addr为写入初始地址,*p为连续写入数据指针, cnt为写入数据总数 返回说明:无 设 计 人:ZHCE 版 本:1.0 说 明:HT1621的数据位4位,此处每次数据为8位,写入数据 总数按8位计算 ********************************************************/ void Ht1621WrAllData(uchar Addr,uchar *p,uchar cnt) { uchar i; HT1621_CS=0; Ht1621Wr_Data(0xa0,3); //写入数据标志101 Ht1621Wr_Data(Addr<<2,6); //写入地址数据 for (i=0;i<cnt;i++) { Ht1621Wr_Data(*p,8); //写入数据 p++; } HT1621_CS=1; _Nop(); } /******************************************************** 函数名称:void Ht1621_Init(void) 功能描述: HT1621初始化 全局变量:无 参数说明:无 返回说明:无 设 计 人:ZHCE 版 本:1.0 说 明:初始化后,液晶屏所有字段均显示 ********************************************************/ void Ht1621_Init(void) { HT1621_CS=1; HT1621_WR=1; HT1621_DAT=1; DelayMS(2000); //延时使LCD工作电压稳定 Ht1621WrCmd(BIAS); Ht1621WrCmd(RC256); //使用内部振荡器 Ht1621WrCmd(SYSDIS); Ht1621WrCmd(WDTDIS); Ht1621WrCmd(SYSEN); Ht1621WrCmd(LCDON); } void main() { uchar i,j,t; Ht1621_Init(); //上电初始化LCD DelayMS(1000); //延时一段时间 while(1){ Ht1621WrAllData(0,Ht1621Tab,16);//清除1621寄存器数据,暨清屏 for (i=0;i<32;i++) { t=0x01; for (j=0;j<4;j++) { Ht1621WrOneData(i,t); t<<=1; t++; P1_5=~P1_5; DelayMS(5000); } } } }
HT1621B三:偷工减料揭露山寨微型音箱的低劣用料 | 微型计算机官方网站 MCPlive.cn
偷工减料揭露山寨微型音箱的低劣用料
2011-03-24《微型计算机》整理《微型计算机》2011年3月下
“山寨”一词如今早已深入人心,大家常常用“XX山寨”来陶侃某些仅依靠模仿外型,而品质性能不佳的产品。不过,大家在调侃之余可能并不清楚这些山寨产品到底有多差?差在何处?可能还是会因低价的诱惑而去购买。故此,在3·15来临之际,本刊记者决定为大家揭露山寨微型音箱的真实面目。
微型音箱市场被喻为音箱行业的下一片蓝海,驱使着许多看好这一市场前景的音箱厂商蜂拥而至。但是,越是火爆的产品线就越容易被山寨化,技术门槛相对较低的微型音箱行业更是如此。在市面上,除了朗琴、漫步者、雅兰仕、声丽等少数几家正规军以外,还充斥着更多不知名品牌的山寨产品。这类山寨微型音箱的造型以公模居多,依靠仿名牌产品的造型为主,以能发声为诉求,同时价格非常便宜,在淘宝上最低的不过10多元,这对于消费者来说,就算坏了也不心疼。
然而,任何一个山寨横行的行业都是不健康的,不仅可能对该行业自身产生毁灭性打击,对于消费者而言也会有极大伤害,音质低劣、常用功能缺失、故障率高以及售后服务得不到保障就是山寨微型音箱带给用户的最直接感受。为了让大家直观了解这类山寨微型音箱的品质,我们特意在市场上购买了一款销量不错的型号——雪天使BX13,它的造型模仿了朗琴T系列,实际购买售价为100元,在山寨产品中已经算是相对高端的机型。就这样一款高端山寨品而言,到底其做工用料如何呢?通过与朗琴T6由外至内的详细对比,即可找到答案。
外部差异对比
T6和BX13的正面对比
从正面观察,雪天使BX13与朗琴T6的设计非常相似,长宽高都相差无几。两款产品的正面均采用了大片金属网罩保护单元,但是T6的网孔比BX13的精细,开模难度更大,其优势在于能渗进单元的灰尘更少。同时,两者的正中位置都提供了一块单色显示屏,两款屏幕的尺寸相同,显示效果也差不多。只是BX13屏幕的可视角度很小,从倾斜的角度看去,字迹就会变得模糊。
T6的金属网孔相比BX13的更精细
就操控方式而言,T6采用了单键飞梭,BX13则是传统的多按键操作。单键飞梭能减少按键数量,使机身布局更简洁,这种方式的技术含量更高,需要开发对应的软件,支付的成本更多。而BX13所采用的多按键方式采用通用芯片即可控制,无需重新编写固件,因此成本更低。
操控方式对比
雪天使BX13同样模仿了朗琴T6的背部布局,并采用插销式支架设计。T6比BX13多出一个USB接口,即代表它能支持闪存盘直读功能,而后者无此功能,其内部芯片就能省略一颗。
两款音箱的背部布局几乎一致
锂电池是山寨微型音箱最容易偷工减料的地方,雪天使BX13就是如此,它仅采用了一颗800mAh容量的BL-4C锂电池,而T6则采用了1050mAh容量的BL-5C锂电池,因而T6的续航时间要比前者长20%以上。同时,BL-5C锂电池上面的标识远比BL-4C锂电池上的规范,采用杂牌锂电池的BX13,可能锂电池经过多次充放电之后就会失效。
锂电池对比
T6采用的BL-5C电池明显更厚实
内部用料对比
综合来看,BX13唯一相对T6的优势,可能就是单元尺寸要稍大于T6,因此在声音的响度方面更有优势,而具体的音质比较,我们会在用单元对比料对比之后进行。
单元对比
前面我们就提到过,T6采用的精细金属网孔可以有效避免灰尘侵入。拆开两款音箱之后,我们发现BX13的内部已经沾满颗粒状的灰尘,T6则比较干净。
进灰程度对比
T6与BX13的用料对比结果一目了然。T6不论是用料、做工还是细节处理都远胜BX13。细心的读者可能会发现,BX13右声道单元背部的橡胶垫已经脱落,但在箱体内部并没有发现脱落的胶垫,可能是在工厂装配时就丢失了,做工尽显山寨的本色。接着,咱们来逐一对比两者内部电路的优劣。
内部PCB用料对比
BX13采用了目前山寨微型音箱和低端MP3播放器中常见的解码芯片Silan SC95870P,此芯片支持点阵屏解码,支持SD卡插卡、闪盘直读、线性输入、时钟显示等功能,功能较为齐全。但为了节省成本,BX13并没有用完该芯片的功能,最明显的就是没提供闪盘直读功能。T6则采用了SPT SP3306AL解码芯片,此款芯片的性能非常强劲,最高具备480MHz的输出频率,它除了拥有常见的SD卡读取、USB闪盘直读、MP3解码、时钟显示等功能之外,更能直接解码APE/FLAC无损音乐格式,能让T6当作SD读卡器使用,并支持闹钟功能,还可通过USB接口进行固件升级。如此功能对比,孰优孰劣已无需我们多说。
解码芯片对比/右为朗琴T6 (下同)
功放部分,BX13采用了HXJ4863,它是一颗支持立体声耳机输出模式的双声道音频功率放大器。当负载4Ω阻抗的单元时,RMS输出功率为2.2W,这与其对外宣传的3W×2输出功率明显不符,有虚标的嫌疑,功率不足也会造成“喂不饱”单元的现象。T6的功放芯片为EUA5202,也是一颗立体声音频功率放大器,在3Ω负载中,连续输出的RMS功率为2W,与T6标注的功率参数相符。同时,考虑到功放芯片发热量较大的问题,T6还为其安装了铜制U型散热片,这对机器的稳定性是很有帮助的,而BX13并没有做相关处理。
功放芯片对比
BX13的FM收音模组采用了RDA 5767芯片,并且用一根黄色导线缠绕箱体内部作为天线,而T6内置的FM收音模组采用KT0830EG芯片,天线为一根短铜丝。从技术架构上来看,KT0830EG要领先于RDA 5767,因为它支持短天线的高灵敏度接收,芯片封装面积更小。从实际收音效果来说,T6能搜索到的FM电台数量要多于BX13,收音时的杂音控制更好,受到的干扰相对较少,这不仅仅在于芯片上的差异,而是整个外围的用料更足,对信号接收和干扰屏蔽处理得更好。
FM收音模组对比
两者的接口一样多,为一组输入输出接口和一个USB连接线接口。在BX13的输出部分只有一根排线,没有任何的滤波和屏蔽处理,而T6的接口电路板上则布满了贴片元件,能保证传输的稳定性以及音质的纯净度。
接口对比
BX13内部的PCB板仅使用了2颗螺丝固定(T6为4颗),如果说这是为了节约成本,对此我们还可以理解的话。那么BX13上的螺丝几乎划丝的现象就不可原谅了,其低劣的做工令人难以接受。
螺丝对比
经过详细对比发现,T6的用料比BX13明显要高一个档次,不仅如此,在T6上还拥有许多BX13不具备的功能芯片,通过下表可以更直观了解。
芯片对比表
朗琴T6
雪天使BX13
解码芯片
SP3306AL
SC95870P
功放芯片
EUA5202
HXJ4863
收音芯片
KT0830EG
RDA 5767
屏幕驱动芯片
HT1621B
由SC95870P提供接口支持
运放芯片
JRC4558D
无
充放电芯片
CE3150
依靠电池内部电路
时钟芯片
SD2068
无
Flash芯片
GD25Q80
ATMEL101 24CO2N
USB开关芯片
SGM7222
无
USB升压芯片
AP2000
无
音质对比:音箱始终是用来听的,因此音质对比也是不可或缺的部分。BX13的单元尺寸和绝对功率都大于T6,因此声音承载力更强,如果是在卖场进行现场聆听,BX13的声音可能会让听者感觉更震撼,更有气势。如果放在家里使用,那么T6的声音品质优势就会凸显,无论是底噪控制、声音纯净度、饱和度以及耐听度都比BX13优异。
功能对比表
朗琴T6
雪天使BX13
RMS功率
2W×2
2.2W×2
单元尺寸
40mm全频单元
50mm全频单元
解码格式
MP3/WMA/WAV/APE/FLAC/FLAC
MP3/WMA
SD读卡功能
支持(可当作读卡器使用)
仅支持读卡
USB直读功能
支持
不支持
FM收音功能
支持
支持
时钟
支持时钟和闹钟
仅支持时钟
锂电池
BL-5C、1050mAh
BL-4C、800mAh
BX13的声音听感更粗糙,就像过去针对低端市场推出的家庭影院一样,只考虑响度,不考虑声音的细节和品质。此外,T6还支持无损格式的音乐解码,就此而言,对声音稍微有所追求的用户都知道该如何选择。
通过我们的详细对比,相信各位读者对山寨产品的做工用料有了更清晰的认识。与所有山寨产品一样,雪天使BX13依靠模仿朗琴T6的造型设计,在外观上几乎做到了1:1复制,但其品质确实不敢恭维,用料更是能省则省,仅有的几颗芯片的性能表现也不算太好,规格相对落后,只能说能实现基本的听音功能。《微型计算机》本年度3·15的主题是关注IT产品的设计和质量,BX13在设计和质量方面无疑都不合格,使用隐患相当大。也许不少人是冲着其便宜的售价去的,BX13的确要比T6便宜40元左右,但从使用的角度来看,朗琴T6的声音更好听,功能也更加完善,不仅支持齐全的音乐格式,还能当作闹钟使用。此外,它扎实的内部用料更能保证音箱使用中的稳定性,不会在使用一段时间之后就发现锂电池失效了,续航时间变短了,也不会因内部芯片发热量过大而无故出现死机等现象。