首先拆开控制面板,发现是有专门一块sanyo的芯片LC75853控制LCD显示和4*4键盘矩阵。通过sanyo的CCB协议和机身中CPU通讯。通过对键盘按钮的测量,发现如果用集成模拟开关很费事。不如尝试通过模拟CCB协议,去模拟控制面板,从而控制整个音响。
CCB有4个引脚,输入DI,输出DO,时钟CL和使能CE。要了解这个协议的细节并能用单片机模拟,再用示波器这种古董设备当然不行。于是在网上买了一个简易的逻辑分析仪,一百多。8个通道,20M采样,搞单片机级别的够用了。如图:
有了这个先进武器,再结合LC75853的资料。初步用PIC单片机模拟DO信号来“欺骗”音响主机的CPU有按键发生。当CPU发现有键按下,会发出键盘的地址,来询问键盘被按下了哪个。这个时候只需要用单片模拟发往CPU的键码就能实现控制了。至少理论上是这样。CCB的按键波形如下(还包括我的开发和烧写环境):
图:
首先,单片机拉低DO,告诉CPU有按键了。然后CPU发过来地址,单片判断这个地址是不是要是问键盘的。然后模拟从LC75853通过DO发往CPU的键码。于是按这个时序,用PIC模拟一遍。由于PIC单片机速度较慢。而LC75853的时钟是4M级别的,PIC单片机20M的主频(一个指令4个周期)根本跟不上。当晚折腾很久之后,决定第二天用AVR试试。因为AVR是一个指令一个周期。8M应该够用。
中秋第二天,早早起来开始干。果然,AVR速度能够胜任。经过一上午的艰苦调试,过中午之后,已经能模拟出所有按键时序。完成这个作品已经没有技术上的障碍了。于是从机身电路板把系统5v电源和CCB四条线以及音量和电源开关信号接了出来。
由于音量加减和电源信号是单独的控制逻辑,都是通过拉低来控制。于是用单片机接三个三极管,做了3个OC门来控制这三路信号拉低。用单片调试的时候,电源控制很简单很顺利。但音量控制遇到不少困难。一方面不停的用逻辑分析仪分析原来的时序,一方面用单片机程序模拟。原来vol-up和vol-down的区别,在于几ms的先后。鏖战到晚上,终于搞定音量控制。。。终于,可以说,完成已经毫无悬念。混乱的调试桌面:
图:
中秋第三天,大早起来把音响所有部件还原,只有控制排线从后面引出来。如图:
图:
把程序控制部分,按红外键码和功能做了对应。并做程序调试和验证工作。确定程序和硬件配合部分已经完成。由于现在还是实验板上,无法直接投入使用。很有把握后,放心的出门买菜做饭洗碗。午饭后,就又新作了一块板子,就只有ATMEGA8一片和若干排线接口。很利落(背后连线很复杂,不美观,就不看了):
图:
由于是照着实验板接一遍,所以剩下的就是细心别出错。想当年大学的微机原理实验室,每次都是我第一个做完,这些年更是经验丰富。很快,插上实验板上的已经烧写好单片机,插上排线。通电,一次成功。o yeah!
看看最后的合影吧:特意选用了很炫的蓝色LED作为接收指示。
图:
上书架的效果:用书把单片机线路板挡在后面,把LED和红外接收管的引线也用书挡住。
图:
终于可以坐在沙发上边看书边选择喜欢的音乐了。。。文中省略了上百次的不停调试,烧写,失败,挫折。事实证明,凡事要有个强大的内心,之后才能享受成功所带来的成就感!DIY和登山登顶后一样,会上瘾的!