何老师推出h-f1时,我非常看好这个频率计,感觉这个频率计的硬件部分设计很强大,但觉得那个vfd太大了,于是就买了套不带vfd的套件,准备日后改成1602或者数码管显示。之后因为单位搬迁等事情一直没有时间,直到春节过后,终于有空了,于是昨天开始着手搞一下。
开始考虑的改造方案有以下几种:
1、外接一个mcu加1602,对原频率计串口输出的显示信号进行解码,并显示在1602上。
2、改写原89c52的程序,直接驱动1602。(原pcb上有一组接口可以直接接1602,只是原版上面把这组端口用在于其他功能上)
3、更换mcu为8515,直接驱动1602。
第1个方案,可以保留原来频率计的全部功能,但原显示器是2002,显示在1602上,会造成部分字符无法显示,所以需要对解码出来的数据重新规划显示格式,编程不算复杂,但显示格式的规划会比较复杂,并且硬件增加较多。
第2个方案,需要重写全部代码,因为需要加入1602的显示驱动,所以因为程序存储容量问题,可能要减少些功能才能放得下。再者,我也不太相信自己写的程序的性能会比原来的好。而且我已经放弃使用51好久了,现在电脑上根本也都没安装51的编程环境。
第3个方案,优点在于avr芯片相对于51来讲,有更高的运算速度,并且有功能更加强大的内部定时器,因此相对51芯片来讲,可以更容易获得更高的性能。
最后,准备应用第3个方案,使用引脚与51兼容的8515芯片来进行改造。接下来对系统进行分析时,却碰到了一个相当头疼的问题。就是8515芯片虽然和51是引脚兼容的,只需要改一下复位脚电平就可以工作了,但经仔细对比才发现,两种芯片引脚的第2功能差别很大,尤其是需要使用的t0、t1之类的计数器时钟输入,脚位竟然完全不同……
这下麻烦了,如果仍然按照这种方案改造,那么必须割断原pcb的连接,重新飞线。或者用另一种方法,直接再买一块2002的vfd……
考虑了再三,还是决定用割线飞线的方法。仔细规划了一下,最终确定了3处割线点,飞3条线就可以了。
马上动手操作,很快完成了包括割线、飞线、外接1602、更改复位脚电平的操作。通电测试,发现显示屏背光不亮,仔细查看,原来在割原ea脚的时候,没注意到将另一处的供电同时给断开了。再飞一条线通电,1602的背光亮了~
装上8515,连上我的isp编程器,改熔丝为“外部时钟”后,我的isp编程器就再也连接不上8515了

仔细检查刚才的熔丝设置,发现并没有操作错。经过查找,发现是原11.3的tcxo不工作,于是换了一只16mhz的普通有源晶体,isp果然又可以连接了。
接下来就是编程工作了,先移植了一个1602的驱动,很快成功了。又按规划,把定时器0做为测频硬件计数器溢出的计数,定时器1做为闸门时间发生器。下午快下班时,程序基本定型了,刷入芯片测试。
手台开145.000mhz发射,1602显示b通道为145.006xxx(注意我的几档闸门只是刚写出来,并未校准),说明程序的测频原理基本正确,并且感觉通道b的灵敏度非常高,手台开0.5w,频率计测量接口上不接任何东西,在近距离就已经可以测量到信号了。
晚上回家后,对程序进行了一下优化。今天早上过来,校准了一下几档闸门时间(校准闸门的思路是这样的,因为系统是以外部晶体为基准的,所以在测量本身外部晶体时,不管外部晶体的实际频率如何,也应该要显示成晶体的标称值才对。至于晶体本身的实际频率,就需要用其他标准频率计来测量出来,并且代入程序中的计算式),再次进行测试。
在1s的闸门下,测量vhf、uhf频率,尾数的最大变化只有一个最小单位(由于b通道是64分频的,所以这个最小单位是64hz),并且不是一直变动,而是偶尔闪动一下。这充分说明了原硬件部分的设计优良。
由于现在使用的是普通有源晶体,所以我并未进行基准的校准工作,准备以后用4uvy将要送我的5mhz ocxo做基准(avr的高速再次得以表现,如果是51使用5mhz的基准,可能会计算能力不足~

)。
上张图片,显示的误差应该是频率计基准的误差+手台的频率误差。频率显示稳定,很少跳动,我的软件上并未做软件平滑滤波工作,说明硬件设计非常到位