以前做的“点阵LED时钟+温度计”,可能是由于晶振精度的原因,每个月大概要快几分钟。当时的解决方案是用ADC作了3个按键,用来调整时间。后来觉得太麻烦,懒得调,也懒得看这个钟了。
无所不能的我,怎们会甘心家里的标志性DIY作品有损本人面子。。。于是,改装行动开始。
基本思路:利用电话线路中来电显示信息中的时间信息,来自动调整时间。平常只要有电话进来,时钟自动对准。
说干就干,先找到一块坏的电话机电路板,有独立的FSK制式的来电显示芯片SM8221。直接在该电路板基础上,引出数据输出引线到单片机调试板上。然后买了一块1602的LCD显示屏,用于调试程序输出结果。开始非常不顺,在4bit模式下的lcd折腾了我很多天。后来发现是lcd是坏的。。。最后经过非常痛苦的单片机调试(用手机往自家拨了几百个电话,iPhone上的“最近通话”都只有我家了),终于能顺利读出信息,并显示在LCD上。
接下来就是移植工作。需要接到我的电子钟ATMEGA8芯片上,还需要更新以前的时钟程序。因为需要用到硬件中断,以及以前把单片机的所有IO口的用完了,所以程序要做的还有对端口的复用,改造。还好,没开始那么不顺。最后就是把硬件焊接到电子钟板子上,并且用74lhc04反相器做了一个3.58M的方波时钟,用于提供给SM8221工作。
最后的样子,给大家看看。
来电显示芯片和3.58M时钟部分