前一篇:
http://www.ifix.net.cn/thread-19876-1-1.html
说做就做,先理清思路。
总共要编两个程序,一是基于windows的程序,负责读取电脑里的BIN文件,然后按一定的时序要求将每一个字节发送给单片机;二是基于单片机的程序,负责将收到的字节按一定的规则写到25Q64中。开工了。。。。。。
第一个程序采用VC++6.0来编,查资料、参考例程、调试、改进。。。基本完成;
第二个程序采用Keil C 来写,写代码、调试、下载程序、实验、改进(采用串口中断方式来处理接受到的数据),基本完成;
两个程序联调,实现功能:在电脑界面上通过两个按钮分别控制单片机将25Q64片擦除和字节写入;
一开始采用的方式是:上位机程序发送一个字节,单片机接收一个字节,写入25Q64后,再将这个字节数据返回给上位机,上位机接收到这个字节后与刚刚发送的字节相比较,确定无误后,接着发下一个字节。
以下是上位机的程序界面:
没有美化,自己用嘛,不讲美观。
这是单片机程序的开发界面:
以下是对25Q64擦除的界面,擦除花了大概30S:
擦除好了后,进行第二步,读bin文件,写入数据。
毫无疑问,采用这种校验方式,可以防止串口传输数据的出错,但是问题来了,我根据程序界面上每秒钟传输字节的数量算了一下,要传完8388608个字节,需要73个小时!
我的天!难道我要在电脑旁等上73小时,三天三夜?!
我去,退出程序,重头再来。
为什么要这么慢呢,市场上买的编程器绝对不可能这么慢。想了一下,可能是我太过谨慎,在对每个字节进行校验的过程花费了大量的时间。
于是果断去掉校验过程,当然前提是查阅了一下25Q64的资料,每写入一个字节的时间是50uS,这么短的时间,上位机的串口根本不用等,发完一个字节后直接发下一个就是了,按照这个思路,先写入了4096个字节,再用单片机读出来对比了一下,准确无误,于是正式写入8M的数据,花了40分钟。
时间是长了点,但是起码还可以接受。
将25Q64从我的电路板上拆下来,重新焊回到液晶的主板上去。
给液晶通电,打开电源,按遥控器power键,指示灯变蓝色,可是屏幕一直是灰的,久违的长虹开机画面迟迟不出来。。。。
郁闷。。。怀疑。。。究竟哪里出了问题呢?
肯定是采用的BIN文件不对。
我的液晶屏号是:TPT390J1,而下载的LED32580程序的配屏是TPT315B5,就像电脑的显示器,一旦设置分辨率超出范围,也会导致黑屏,道理是差不多的。
于是又回到网上大海捞针。。。
要不说互联网上应有尽有,虽然找不到LED39920的BIN,但是得到一个十分有用的信息:
LED39920的主板和海尔LE39PUV3的主板一模一样,配屏也一样,
于是转头寻找LE39PUV3的程序,功夫不负有心人,在某网站里看到了网友“chenlipeng”发的LE39PUV3原厂bin文件,
而且是免费下载的,(瞧瞧人家,多好啊,赞一个!)。
重新将25Q64焊下来再写入这个bin。此处省略60分钟。。。。。。
通电,开机,哇,眼前一亮!启动了!就像黑暗中看到黎明前的一道曙光,心里无比激动。
可是,有点遗憾,好好的长虹液晶电视,开机画面竟然显示的是海尔的logo,而且,接视频源试了一下,HDMI及AV都是好的,用电视机上的按键可以操作,但是遥控器失灵了,一个键也不能用。
当然了,咱用的是海尔的程序嘛。
第二天就给爸爸打电话说修好了,只是遥控器可能要换一个海尔的。爸爸说,能看就行了,大不了用电视机上的按键。
就这样,过了几天,心里总是惦记着这个事,于是又不死心,继续在网上找。。。
这回要感谢网友“军仔电器”提供的“长虹39B2200”程序代码,真是好人一个啊!感谢他的这种分享精神!
但是我还是觉得烧写程序的时间太长了,40分钟漫长的等待受不了,
于是,又对程序进行了改进:
这次,因为25Q64本身支持按页写入功能,我要好好运用了。上位机每次发送4096个字节,由单片机接收后按页(256个字节)写入到25Q64中,写好16页,就给上位机回应一个正确信息,上位机验证后再发下一帧字节(4096个)。
这样,写完一片8M的flash,仅需15分钟。
个人觉得,如果我在传输中不加验证的话应该会更快,但是15分钟已经可以忍受了,喝杯茶就过了,于是就没再往下优化了。
于是等待烧写结束:
一样的过程,重新焊回芯片,上电,开机:
久违的长虹logo又出现了!
而且遥控器也可以正常使用了。接上信号源试了一下:
(放的是儿子在幼儿园表演的碟子,不是打广告),一切正常!
到此,深刻体会到付出劳动后,收获成功的喜悦!
也说明了只要肯动脑经,会有意想不到的收获的!
马上中秋节了,终于可以带上这份特别的礼物回老家看望父母了!
有需要液晶代码的可以跟帖联系,天下还是可以有免费的午餐的!