谈谈自己,关于叛逆……

  昨天公司组织咱们一伙人做了个培训,说是关于团队建设之类,其实走的主要还是“自我介绍→互相认识→讲点小道理”这样的老套路。基本每个环节让大家写写自己,然后让一些人上去给大家讲讲,也被大家讲讲。这点倒是很那啥,生活嘛,无非就是被别人笑笑,偶尔笑笑别人……

  好吧上面其实都不是今天写点小东西的重点……里面有个环节是让大家写写自己的优点和缺点,好吧因为我缺点太多,所以反而每个都没有什么代表性了,真正按照下意识的第一反应写下来,冒出来的词汇是“叛逆”。我不知道这个到底算不算是一个缺点,但确实是一个深深扎根的性格……

  其实这个叛逆倒不是表现出来如何如何,其实回头想想,兴许是家教的缘故,即便是在我最中二的年纪里,也没有实际做过什么大逆不道的事情来,还是那个讲文明懂礼貌见人会问好打招呼的“乖孩子”。

DIY一个K450单元的耳机

  “三月三”放假之前同事在网上买东西,刚好现在感觉缺一个耳机,我就搭车买了点单元、外壳拿来自己焊个耳机玩。

  单元是在杨教授推荐的店里面买的AKG的K450单元

[01]

  其实我不大分得出来K450和K420的单元,网上也有人说K450就是K420的调音版,单元本身是一样的,具体是不是我就不知道的,求专家来给科普一下。。。

【写这首歌】在这个特别的日子,想《牵你的手》一起走

亲爱的:

  过了零点,元宵节到了,同时也是另外一个特别的日子。

  虽然你不在我的身边,但是周围满是你的印记,就像你一直在我身旁一样~

  买不起跑车豪宅,送不起钻戒项链,只有弄了这么一首小破歌送给你~~

  虽然我唱歌着实没什么天赋,不过还是希望你能喜欢~~~

Candura
2014.2.14 凌晨

简单修一下按键失灵的电磁炉

  今天早上起来本来想煮点早餐的,结果家里这台老电磁炉按键太不灵光了没煮成,最后只简单吃了几个小面包。。。本来之前就打算修了的,无奈这段时间上班太忙一直没空弄,今天趁着休息就索性弄弄了。按键失灵不是什么大事,换几个轻触开关就行了,不过家里没什么工具。之前想干脆带到办公室去弄的,后来万幸住附近的同事有焊台焊锡螺丝刀之类的一整套工具,就借过来直接在家里弄了。(万分感谢~~~ )

  首先是拆壳,拆出来之后看到里面主要有三个部分:面板控制电路版,电源和控制加热片的控制板,加热片。

[01]

  上表面的外壳不是一般的脏,就着这次拆出来就把它拿出来专门水洗了一遍~~

  主要要修的就是这个面板上面的控制板了,其实也不是修,就是吧那几个不灵敏的按键给换掉~

[02]

  整个电路板设计得挺中规中矩的,看样子应该是直接用公版电路做的,背面忘记拍照了,反正就是常规的家电的布线风格,大的粗铜布线。而且,电路板内部倒是还挺干净的,看来主面板的密封性还是挺好的,没有什么油污浸进去。

[03]

  这里是发热片和下面的电源加控制电路,懒得拆了,直接这么拍一张简单看看就行。

[04]

  更换的过程没拍照,这是换好之后的板子和拆下来的按键的合照。更换用的轻触开关按键比原来的要高一些,可能也是这个原因导致后面有一点小问题出现,还好不影响后面的正常使用。焊接用的是从同事那借来的DIY白菜白光焊台,确实挺好用的。那啥,作为学电子的不备一点这种常用工具在家里还真是不行啊,总不能什么件都拿到办公室去修的。。。

[05]

  这个就是刚才说的“一点小问题”了,用来固定控制面板电路板的拧螺丝的地方的塑料断裂了,螺丝拧不上去,这样的话这边没法固定还是按不了按键下去,还好另外一边是没问题的。不得不吐槽一下,这种塑料用久了之后真是稍微用点劲儿就断啊。。。于是开始想别的办法来顶住电路板。。。

[06]

  在家里翻了半天,终于找到这么个东西,是之前用来装牙线的盒子。量好大概的一个高度就直接用剪刀剪开,把它剪出一个上面的圆环来,然后把它放在底面板来撑住电路板。

[07]

  之前以为那个很多小圆点的孔是散热孔,怕用这种方式会影响散热。后来看了看那里预留的螺丝孔位,推测是别的版本的电磁炉用来放扬声器的地方,也不知道推测对不对,不过反正仔细看之后觉得不会影响散热,就放心大胆的把那个圈圈套上了。后面把前面板也盖上去的时候刚好那个剪下来的圈圈可以顶住电路板,让按键能够顺利按下,省得再量尺寸再返工了~~

[08]

  一起弄完之后刚好可以开始做午餐了~~(请忽略锅里面的东西,将专注点放在炉子上。。。→_→)

拆修一台NewRec录音笔

  话说已经有好几个月没有写日志了,今天帮修一台录音笔,拿这个过程来凑凑日志数量……

  录音笔这种东西对于我们这种理工男来说是很高级的,还从来没在现实中见过,趁着今天修这个东西顺便拆来看看里面是什么样子的。

  今天拆修的这款录音笔是“锐族RC118”,在某宝上面搜了一下这个型号的录音笔……看看人家的广告做的~~大咪头和大喇叭哦~~回头拆开看看是不是。。。
[01]
[02]

  好,接下来要上场的就是今天要拆的主角了,当当当当~~~(此处入背景音乐)
[03]

  外形看着确实很绚丽哦,而且外壳是全金属的,拿在手上很有质感,确实如广告所说~~

  它的主要问题是开不了机,但是插上USB线的时候能用,从症状判断应该是电池的问题,可能是虚焊之类的。赶紧拆开来看看

[04]

  拆开后盖之后是这个样子的。。。电池那里受潮很严重啊,估计电池用不了了。

  来个主控的特写:
[05]

  整个录音笔使用的主控芯片是“AK2027C”,是大名鼎鼎的“炬力”产的啊!!!“炬力”不一般啊,基本上80%的国产MP3拆开来里面都是用的“炬力”芯啊!!!

[06]

  再来看储存芯片,“海力士”的4G储存芯片啊!!!这款储存芯片市场占有率也是超高的有没有,国内买到的小品牌或者无品牌也基本都是用这款芯片来当储存介质的说!

[07]

  这个是电池的特写,701435的聚合物电池,3.7V电压,300mAh容量,估计今天主要要搞定的就是这个了。

[08]

  用万用表来量一下电压看看,果然没电了。。。之前在网上花几块钱买了一个差不多大小的电池,就拿它换上去了。

[09]

  唔唔,新电池充满电的电压挺“充实”的,因为找不到701435这么奇葩的电池,这一款是061430的,一会儿就拿它来换上去。

  不过在这之前先来看看其他的电路先,本文的重点在拆不在修~~(^__^) 嘻嘻……

[10]

  主板的背面也算是中规中矩,各方面都不错,可是麦呢?麦克风去哪里啦?!

[11]

  啊啊啊!!!找到了!!!这就是传说中的超大咪头!超高音质!高保真获取音频信号的大咪头哇!!!这个咪头可不是一般的咪头啊!市场占有率也是超高的啊,上至以前的国产功能机,下到如今的各种国产MP3,都是用这种咪头哇!!!

[12]

  呼,光顾着看之前那块,下面这里还有一块板子,主要是用来放功能按键和液晶屏,呃,还有传说中的“大喇叭”!

  来个大喇叭的特写:
[13]

  这就是传说中的大喇叭啊。。。。。。(没有力气用咆哮体了)确实,音量不小。。。音质什么的都是浮云,乃们追求音质的都是**……

[14]

  呼,回来继续看焊好之后的成果,装上之后很不错,反正看不出问题。腰也不酸了背也不疼了,放声音也有劲儿了~~~

[15]

  至此,整个录音笔起死回生~(此处有掌声)

  现在我终于明白,录音笔原来就是一个长条形的MP3,从主控到咪头到喇叭,跟以前拆修国产MP3的元件是一样的……但是换个名字,价格就可以翻一倍……好吧,它的价格肯定主要体现在重量上,恩,一定是的!

  今天上网看了看其他专业录音笔的拆机图,里面的麦克风先是用物理方法做了一定的降噪,然后采集到音频信号之后进入DSP有专门的除杂降噪流程在里面,毕竟是专业的录音笔啊,真正用来“录音”的设备就应该是这样的。当然这种专业的录音笔价格没有四位数是搞不下来的。。。

  所以我觉得咧,如果要用录音笔的,要么就下狠心买那种专业的录音设备,要么你就随便弄个几十块钱的带录音功能的MP3,保证音质效果跟一两百的所谓“录音笔”是一样的。。。

  不过也正如同这个录音笔的主人所说,专业设备是用不上,但是出去用个破MP3去采访,受访者会怎么想呢……

  确实,人靠衣装马靠鞍,这种产品专门面向这个阶段的用户也算是个绝佳的定位了,一个愿打一个愿挨,反正买得起的不差这几个钱。。。

用OllyDbg反汇编静态分析破解VB程序

注:本文仅做破解技术学习交流之用,请勿用于商业用途!使用本文所介绍的技术手段产生任何法律后果由使用者承担,与本文作者无关!另:请大家多多支持国产共享软件,支持正版!——Candura

  关于用VB编写的程序的破解,网上搜索到的最常用的一种解决方案是使用“OllyDbg”给“MSVBVM60.dll”文件内几个常用的比较函数(比如“vbaStrCmp”“vbaStrComp”)下断点来进行动态分析,从而找出注册码。或者用“SmartCheck”来跟踪出错找出注册码,这些基本上都是属于动态分析的一个范畴。

  但是我本人比较懒,而且由于本人技术实在是有限,今天要破解的目标程序(为保护软件作者在此隐去所破解的软件名称,一律用“目标程序”代替,下同)动态追踪怎么也追不到注册码,所以只好用静态分析的方式来进行暴力破解了~

  今天要用到的软件主要是:PEiD(查壳)、OllyDbg(进行反汇编静态分析)、GetVBRes(修改VB资源的小工具)。

  首先用“PEiD”来对目标程序查壳(如下图),很好,没有加什么壳,省掉了脱壳的步骤。
[01]

  接下来先运行软件随便输入一个错误的注册码,唔,当然是不能注册的,弹出来一个对话框说“对不起,您输入的注册码有误!”
[02]

  唔,就根据这句提示来找跳转好了,进入“OllyDbg”载入目标程序,用“Ultra String Reference”插件来检索注册错误的提示,结果不管是用ASCII还是Unicode,都检索不到,不仅检索不到,更是连一个中文都没看到。

  好吧,面对这个问题就该轮到“GetVBRes”软件出场了,让你丫的找不到中文,我就把注册错误的提示信息改成英文,看你还搜不到!用“GetVBRes”载入目标程序,唔,这下找到注册失败的提示了,把注册失败的提示替换成英文字符(我把它改成了“CanduraCandura”,字符长度刚好跟原来一样,不过这不是必须的,因为软件会自动帮你补空格到原来长度)。
[03]

  修改完成之后再输入错误的注册码就提示我刚才替换的字符串了。
[04]

  现在替换完了重新用“OllyDbg”来载入目标程序查找,好家伙,竟然找到了四个地方!以前我破解过这款软件的1.01版本,只有一个地方进行注册码验证,果然作者更新版本的时候,在增加功能的同时也增加了一些防破解的处理。
[05]

  那么现在先从找到的第一个地方开始吧,在第一个“canduracandura”那一行按回车键进入它所在的汇编源码当中,我们来到了地址“00435915”,然后一边观察信息窗口一边按方向键“↑”来找关键跳转。没按几下,到达地址“004358AE”的时候信息窗口给出提示“跳转来自 00433B6E”,这就是我们要找的关键跳转了!
[06]

  按下“Ctrl+G”输入刚才找到的“00433B6E”地址之后确定,代码来到该地址的位置,发现它是使用“je”来进行跳转的。
[07]

  在这里先普及一下暴力破解时候用到的一些汇编小常识,汇编代码里面用来做跳转的一般有“je/jne、jz/jnz、jmp”等等,“je”的作用是上一条汇编指令执行完后标志位“ZF”如果为1则进行跳转,“jne”的作用是“ZF”为0则进行跳转,“jz/jnz”的作用基本相同。一般情况下他们的上一条语句是做减法或者是做cmp(比较命令)操作,这个很好理解,通过比较判断输入的注册码是否正确,如果正确则跳转到成功注册,如果错误则跳转到注册失败。

  在这个程序的例子中,我们通过静态分析发现它用“je”来进行跳转,那么我们可以理解为如果输入错误的注册码就跳转到注册失败。这样理解清楚了之后就好办了,只要把“je”改成“jne”,变成如果输入错误的注册码就不跳转到注册失败,那么既然无法跳转到注册失败,最后当然是能够跳转到注册成功的地方咯。

  说改就改,双击刚才找到的关键跳转那一行,把“je”改成“jne”之后回车,会发现代码并不是变成了“jne”而是变成了“jnz”,这刚好侧面印证了“je/jne”和“jz/jnz”在一定条件下是通用的。修改好了之后如下图。
[08]

  当然光修改这里还不行,忘了我们之前是搜索到了四个“canduracandura”么,要把那四个找到的地方都用这种方法找到关键跳转来进行修改。全部修改完成后,在汇编代码部分那里点击鼠标右键选择“复制到可执行文件”→“所有修改”,把我们做好修改的程序保存起来。运行新修改好的程序再进行注册看看,还是输入错误的注册码,这下能成功注册了!
[09]

  而且注册完成之后那个输入框自动会显示正确的注册码,所以之前也懒得动态追踪注册码算法来自己计算注册码了,直接暴力破解搞定多好~试一下原本注册之前不能用功能,现在都能一一使用了,破解完成!
[10]

  为了以后使用方便,再用制作补丁的软件来制作生成一个破解补丁,整个破解过程就圆满结束了~
[11]

  最后再要重新郑重声明一下,本文仅做技术的学习交流,不承担任何由此项技术造成的任何法律问题!然后还是希望大家多多支持正版,特别是国产的一些共享软件。这些软件给我们带来了很多方便,作者编写和维护很艰辛,而且很多很好用的小软件并没有漫天要价,而是那么几块十几块的价格,如果试用觉得合适并且想长期使用,并且口袋能够支持的话,最好还是尽量购买正版支持正版吧~

也来谈谈今晚的比赛

  比分最终定格在3-3!应该说,这场比赛的比分确实是充分反映了双方的实力和发挥的一个比分。今天的中国队确实是打出了自己的气势,果然没有辜负傅指导赛前做出的承诺“要让日本队对这支中国队留下深刻印象”。

  简单说说比赛过程,其实基本上一些关键过程都在我刷屏直播的说说里面了。开场4分钟的时候于大宝在禁区内灵活控球卡住身位,逼迫日本队犯规获得点球,然后王永珀轻松罚入点球,开始领先日本队。对于中国队来说这是一个非常好的开局,此后中国队一直通过前场的逼抢、压制控制着场上的节奏。在临近上半场结束的时候,日本队通过角球的机会,抢第二点破门扳平比分,从这时开始中国队后防线特别是两个中卫之间沟通不够盯漏人的问题已经开始展现出来了。下半场双方易地再战,其实在55分钟左右的时候,日本队就有一次快速发出界外球,然后边路传中,对方前锋工藤壮人迅速从两个中卫之间插上抢点头球,可惜没有顶到。这球因为太迅速了,甚至直播的导播都没来得及把镜头切换过来(还在放着之前的慢镜),等到镜头切换过去的时候,已经是门将曾诚冲着后卫怒吼的画面了。应该说,这就已经是对方要破门的前兆了。果然比赛到了59分钟的时候,对方下底中低球传中,柿谷曜一朗抢前点头球破门将比分反超为2-1。过了一分钟不到,又是柿谷曜一朗中路突破,杜威盯人失误,连同干扰李学鹏防守,让对方把球分给工藤壮人让后者单刀破门将比分改写为3-1。两个中后卫确实在本场比赛中发挥得不行。不过中国队并没有放弃,80分钟的时候王永珀劲射打在横梁上弹回来,下半场替换上场的小将张稀哲争抢时被对方侵犯,中国队再次获得点球,还是王永珀冷静的罚入点球将比分扳为2-3。比赛到了84分钟,最精彩的进球出现了,荣昊边路突破下底传中,孙可后点插上舍身铲射破门将比分扳平!恩,整场比赛的大致过程就是这样(貌似有点啰嗦了,表怪我~ ::>_<::)。

  纵观正常比赛下来,其实中国队还是有值得反思的地方的,几个丢球几乎都是跟中后卫的漏人和防守失误有关。到了下半场之后,中国队的球员体能也开始下降,不能再像上半场那样前场逼抢,而是只能收缩在后防线上,所以也给了对方压制的机会。但是好就好在中国队换上张稀哲、孙可这些小将之后,重新带动了整个球队的冲劲儿,又能继续坚持上半场的策略,重新掌握了比赛的节奏,给之后的反击和扳平比分打下了基础。

  说实话,今天的这支日本队并不是最强阵容,旅欧球员都没有回来参赛,所以这支日本队其实只是一支二线队而已。就单个球员的技术水平来看,其实双方是差不多的,但是日本队有几点是非常值得中国队学习的。一个是日本队员整体的战术素养,日本的职业联赛发展了那么多年,带给日本球员烙印最深的就是这个,不管是哪个年龄段的日本队,我们都可以看到他们是真正的团队作战,不管是大牌球员还是年轻球员,都是紧紧地团结在一起去执行战术;再一个就是他们的体能,日本队员的体能非常充沛,其实下半场日本队两次破门也跟中国队员体能开始下降有很大关系,而且到了比赛最后时刻中国队拼尽全力去压制的时候,对方也依然能够有体力来防守和反击。这两点是目前中国队跟日本队差别最大的地方,或者说差距最大的地方。虽然这场比赛中国队和日本队战成了3-3,对于球迷来说也是一个非常满意的结果,但是我们不能妄自菲薄,要认识到我们的国家队的水平其实还是跟其他强队有很大差距的。

  恩,其实有些话在上个月中泰之战之后就想说了。那场比赛踢完后,很多跳出来骂国家队的人大多都是没在关注中国队这几年的发展的人,而是纯粹从新闻里面看了比分就跳出来谩骂、人身攻击了!真正在关心中国足球,关心中国队的球迷一定不会忘记,就在中泰之战之前的三天,中国队用全主力阵容和同样是几乎全主力出站的荷兰队打了一场比赛,虽然那一场比赛是0-2输掉了,但是真正看了比赛的球迷会记得,那场比赛当中中国队也是拼得非常认真和努力,让荷兰队也是吃尽了苦头的。之后的那场中泰之战中国队做了大量的人员轮换,可以说基本上是以二线队阵容出战,虽然打出这个结果本身也是有他们的问题,但是我觉得那些根本没在关注和关心中国足球的人也没资格去谩骂和讽刺我们的国家队。

  回到今天的这一场比赛,就我个人觉得,中国队的表现非常卖力,也拼尽全力到了最后,甚至在扳平比分之后,最后的几分钟还继续在拼搏争取拿下3分的!这样的表现足以对得起他们身上的球衣了。看比赛那会儿我就想,如果坚持那样的拼抢,哪怕这场比赛的最终结果是输掉的,我们也没有理由去批评这支球队了。

  中国足球还有很长的一段路要走,我们不应该因为某场比赛的好坏就对这整支球队盲目的吹捧和排斥。中国足球真正需要的,是踏踏实实的完善年轻球员的培养体系,完善职业联赛的各个方面,不要急功近利,从最基础的地方做起。日本队也不是一朝一夕成为东亚强者的,他们也是一步步的从青少年培训、职业联赛组织这些基础上慢慢熬才有今天的水平。作为球迷,我们真正应该做的就是少一些谩骂,多一些支持和理解。中国队会越来越好的!加油!

别了,爵爷;别了,青春!

  终场哨吹响的那一霎那,我知道,该来的始终会来,该结束的始终会结束。也许比赛的结果,并不是我们期待的那个满意的答卷,可此时此刻,已经没有人会在关注这个无关痛痒的结果。

  自从爱上曼联以来,从来没有想过,曼联会没有那个红鼻子老头,没有那个会在更衣室里向任何大牌球员开吹风机的红鼻子老头,没有那个会在教练席上嚼着口香糖的红鼻子老头,没有那个会在场上队员进球后在场边蹦得像个孩子一样的红鼻子老头。

  他叫阿莱克斯·弗格森,一个倔强的苏格兰老头。我们这个时代熟知的那个红魔,属于这个有着女皇册封爵士头衔的老头。曼联之所以能成为红魔,是因为这个不服输的老头子,他为曼联注入了真正的红魔精神,把曼联打造成为令世界足坛颤抖的红色魔鬼!

  没有他,就没有现在的红魔。是他“把他妈的利物浦从王座上踢下来”,是他“凭借一群小孩子”就拿到了联赛冠军。在越来越金元化的职业足球时代,曼联遭受过各种各样的挑战,温格的阿森纳、穆里尼奥的切尔西、阿布扎比的曼城……但在这位功勋教头的带领下,曼联一次次的从低谷中爬起来,不断的用冠军向世人证明,这是永远不会服输的红魔!一次次比赛中的绝杀、一次次的赛季大逆转、一次次的创造奇迹!这就是老爵爷治下的铁血红魔!

  曼联可以没有大牌球星,但不能没有弗格森!在95年放弃当打之年的坎切尔斯基和保罗·因斯,在02年放弃了绝对的后防支柱斯塔姆,03年一只飞靴赶走绝对巨星大卫·贝克汉姆,06年为了保护C罗不惜赶走范尼斯特鲁伊,09年为了整支球队的薪资结构放走C罗……

  弗格森从来不害怕队内流失大牌球员,正如他的名言“有时候你必须做出残酷的决定。我的决定一直都是出于对曼联最大利益做出的。”正因为如此,当曼联的最大利益和里面的个别球星的利益不一致的时候,他会毫不犹豫的选择为球队的整体利益做出权衡。在这样一支纪律严明的球会里,没有哪个球星可以驾凌于球队之上!

  正是弗爵爷,开创了曼联一个鼎盛的时代。今天的90分钟比赛结束后,曼联告别了弗格森时代,告别了那个倔强的红鼻子老头。但是红魔依旧会继续前行,将老爵爷注入的精神,延续万世!

  这个夏天注定是充满着离别的一个夏天,我们告别了世界上最伟大的主教练。于此同时,我们也告别了生姜头保罗·斯科尔斯、告别了大卫·贝克汉姆、告别了迈克尔·欧文……尽管我一直为贝克汉姆当年的“叛逃”耿耿于怀,但不得不承认,当他和斯科尔斯一起在这个夏天退役的时候,心里面还是会有一阵失落。红魔的92黄金一代,如今就只剩下那代人里面年龄最大的王老吉还在球场上驰骋。

  一个时代的结束,同时带走的,是我们整个热火的青春年华。我们见证了99年诺坎普之夜那个不可思议的大逆转,见证了那个“三冠王”鼎盛时期的红魔王朝;我们见证了08年莫斯科的雨夜,见证了那一场点球大战中范德萨是如何用神奇的扑救将曼联从死神手中拉出来;我们见证了在被“吵闹的邻居”抢走联赛冠军之后,红魔是如何在本赛季用夺人的气势提前四轮夺冠!

  是红魔,充实了我们的整个青春年华!我很庆幸,在高中的三年,红魔用三连冠给了我面对高考的信心。记得08年欧冠决赛的晚上,在宿舍里凌晨爬起来用手机紧张地关注着文字直播,在C罗罚丢点球后心被提到了嗓子眼儿,不断地刷新着网页,最后奇迹地夺冠后,又激动得睡不着觉,早早地起床去教室自习。

  一转眼,大学的四年也就这么过去了,在这个离别的夏天,即将告别我的大学,告别我们美好的学生时代,告别那一群不知道以后还有没有机会再见面的兄弟姐妹。

  一日为红,终生为红!这是深入骨髓的信仰!如果要让我不再信仰曼彻斯特上空的那一片红色,除非改变我血液的颜色!告别了斯科尔斯,告别了弗格森,可红色的信仰依然继续,红魔曼联依旧前行!我们,也依旧前行在人生的路上!别了,青春!告别了青春,依旧前行!

一种基于定时器的按键检测方案

  对于按键检测,大家应该都不陌生。对于各种微控制器来说,按键检测都是最简单同时又最基础的东西。也许按键检测里面唯一比较需要花心思来考虑的地方就是去抖动而已。

  以往的按键检测无非是三种方式:基于CPU延时方式、基于外部中断方式、基于ADC转换器件方式。

  基于CPU延时的方式,就是通过CPU运行空指令的方式延时检测判断抖动。不管是上课也好,各种参考资料也好,都是介绍的这种方式,所以这应该是我们大家最早接触并且最常用的一种方式了。但是这种方式极大的降低了CPU的效率,实时性也非常差。特别是按键按着的时候CPU基本不能再做其他操作。

  基于外部中断的扫描方式,这种方法比起上一种,实时性很高。但是它需要占用外部中断资源,特别是常用的51单片机里面就只有2个外部中断,这显得相当浪费。

  第三种是使用ADC转换器件的方式,用这种方式进行按键扫描这种方法是非常有新意的,完全不同于之前两种。并且倒是很节省IO口,因为不管是单线并联多按键还是矩阵按键,最终只需要一根线接入ADC(当然IO口连ADC的数据线你们就另算吧,:-P ),而且可以很轻松的完成一些诸如“多按键检测”之类的高级功能。但是,对于要求不高的按键使用环境就用ADC就有点太大材小用了。

  这几天看书找到一种比较有新意的按键检测方案,就是使用定时器的资源,然后配合状态机的方式来进行按键检测。这样不仅可以轻松检测去抖和弹起,还可以做到既保证了CPU的效率,又在最大程度上释放了CPU。

  这种按键检测方式的流程大概是这样的,首先设定一个时间段的定时器中断(我用的是10ms),未到达定时器中断的时候CPU就执行程序其他操作。进入到定时器中断当中时,首先通过状态机判断状态(有3种状态,分别是状态0、状态1和状态2,未有按键按下时默认为状态0),进入状态0判断是否有按键按下,如若有按下则设置状态标志为状态1,如若没有则离开中断。当下一个10ms到来时再次进入中断,此时若之前有按键按下会进入到状态1,在状态1当中判断此时是否还是按下,若已经未按下说明刚才是按键抖动,不需要做动作,改变状态标志回状态0离开中断;如果此时继续按下说明是确实有按键按下,可以开始执行按键操作的程序,结束后设置状态标志为状态2,离开中断。当下一次进入状态机时,再进行判断是否是按下的状态,如果是则说明之前按下的没有抬起;如果此时没有按下了就说明已经抬起了,设置状态标志归零进行下一次按下的检测。

  整个方案的流程图如下:
流程图

  这种检测方式比起传统的那些有不少优势。它把一个完整的按键检测流程分割成不同的状态来分别呈现,这样的话就有效的节约了“延时”上面耗费的CPU效率,在延时的过程中CPU是回到主程序继续执行原来的流程的。这样的响应也很快,一旦检测到是非抖动的按键之后可以立即执行相应的操作(当然传统方式也可以通过编程实现一旦按下就执行相应操作,可是后面如果不检测弹起的话会变成按一下就动了好几次动作的状态,所以传统按键方式一般会采取松手后再执行动作)。而且它把松手的状态检测放在做相应动作之后,也可以很好的避免了按一下就动作好几次的情况。

  对了,刚想起来,如果用这种方式来进行状态判断的话,还可以通过增加状态来判断是否长按,对于按键不多但要实现功能多的系统来说,无疑有了更大的方便。

  当然这种检测方式也不是一点劣势也没有,毕竟它还是浪费了一个定时器中断的资源,如果是STM32之类的处理器当然是一丁点问题都没有的,但是如果是对于51之类本来资源就不多的处理器来说,可能还是会捉襟见肘。总之视情况使用呗,至少我觉得占用一个定时器比占用一个外部中断要来得实惠。

  最后晒一下我在我毕业设计里面分别用传统的延时方式检测按键和使用这种新型的方式检测按键的效果图对比一下~
传统的按键检测方式
(传统的按键检测方式)

采用定时器中断按键检测方式

(采用定时器中断按键检测方式)

  可能光看图还是看不出什么所以然来,我简单解说一下吧。上面采取传统按键检测方式的,当按键按下之后没弹起来之前,程序相当于停滞在按键检测的区域内,所以动态扫描七段数码管显示那里只能固定到按下之前的最后一个显示状态,ADC转换也是被暂停掉无法工作的。而下面采用定时器中断的按键检测方式,按下了立即在数码管上有所体现,没有多余的多按之类的误操作,并且ADC和数码管也是在持续工作中(锁定按下时,同时修改采集的电压,ADC能进行转换并把电压值显示在数码管上)。综上所述,还是能体现出这种方式的优势所在的。

  具体程序的源代码就不贴出来丢人现眼了,反正流程图都有在这里了,写出代码来还不是很简单的事情么?

检修美声达MX-08有源音箱小记

  也许是因为南宁前段时间的破天气,在我回到学校的头一天晚上还好好的音箱,第二天起来的时候就坏掉了。毕竟是在宿舍里被那潮湿的空气浸润了那么久,即便坏了也不觉得怎么奇怪。它坏掉的症状是按下开关没有反应,连电源指示灯什么的也不亮,更别说出声儿了。本来一开始就想自己拆来弄弄的,结果简单观察了一圈不知道从何下手,再加上音箱背面“机内高压,非专业人员严禁拆修;谨防触电,如机箱开裂不得使用!”的那两行小字,所以还是打算拿去狗洞的维修店去修。所以趁着同学修电脑的时候搭着一块儿拿过去,结果因为刚开学那里太忙了各种没时间帮看,加上用了好几天的耳机是在捂得难受,所以最后索性拿回来自己解决!好歹也是电子类专业的学生,怎么说也不能说是“非专业人员”吧,于是今天就开始动手了。

  首先第一步是拆音箱,这个是其实是整个过程里面最难的,因为它被用胶粘得稳稳的,最后要用小刀来割开各种撬才打开,这就是打开之后的样子。
拆开的样子
 
 话说虽然只是几十块钱的便宜货,但是里面的电路板什么的倒是不含糊,我舍友也是美声达的音箱,型号是MX901,结果他的拆开来电路板明显就比我这个的拆开来要“山寨”了许多。。。
电路板正面
电路板背面

  整块电路板分成两个部分,其中一部分是电源部分,另外一部分经过降压整流之后到达功放模块。这两个模块在电路板上面是相互独立的,仅仅通过线圈变压连接在一起,所以我觉得问题应该是出在电源模块的部分。于是拿万用表来测量电源模块上面的各个元件,经过多次测量之后发现是那个1MΩ的熔断电阻坏了。用电阻档来测试它的时候,正接读数稳定在0.737,反接的时候读数从负数一直网上跳动直至超出量程达到正无穷。
检测电阻
检测电阻
检测电阻
检测电阻

  我猜测应该是之前那天晚上忘记关掉音箱的电源,然后加上天气潮湿,可能引起电路里面部分短路,导致这个保险电阻熔断损坏,所以第二天就开不了机了。于是去隔壁班宿舍淘了一个同样的电阻,打算给它换上去。
准备换电阻
换电阻

  因为这种电阻上面并没有标明是多少瓦的,网上说一般这种电阻都是1/4W的,或者说根据元件引脚的粗细可以判断瓦数的大小,但是根据比较发现用来换的这个新的电阻引脚比原来的看起来要细呢,所以换上去之前也比较忐忑不知道能不能行。不过反正原来这个坏了,换上去死马当活马医吧。
更换后正面
更换后背面

  好吧,我承认我焊接技术一般,焊好之后就像上面的图那样子啦。然后在装上去之前先给它插上电,打开开关,嘿!电源灯亮了,看来问题果然是在这里。接下来就是把它安装回去了。
音箱内部小窥
安装上去插电测试

  恩,应该就这样,整个音箱的检修就基本上完成了,其实只要找到问题的所在解决起来还是很快的。不过还是给它留下了一些印记,整个前塑料面板和木箱的连接那里有很多撬开的痕迹。
小瑕疵

  虽然毕竟是修过有点小瑕疵,不过总算是修好能用了,省去了重新买个音箱的钱。另外,本来还担心有这些小裂痕会影响音质什么的,但是最后插上去使用跟原来一样。想着这种破天气以后也许还有机会坏,而且既然现在音质较原来也没有降低,所以也懒得重新拿胶来封上了,省得以后坏了难撬开。
  唉,木拆修过东西木调过音箱还真没脸说自己是电子专业的学生。。。

|