這次的DIY經過了4個階段:
1.1602液晶顯示驅動測試;
2.GPS模塊與單片機的通訊測試;
3.GPS數據處理顯示程序設計;
4.硬件安裝調試.
1602液晶顯示器的驅動調試經歷一點點的波折,好在網上共享的程序不少,費了點時間也就找到適用的程序了.
而GPS模塊與單片機的串行通訊則要自己來寫了,好在N年前就寫過類似的程序,還有串口調試助手之類的軟件可以用,所以這一關也就過去了.接下來是數據處理,GPS送出的數據是ASCII字符串,每個數據字段用","隔開,若干個字段組成一個協議字符串,每個協議字符串又有一個$打頭的6個字符組成一個協議標志,通過判讀這個標志來區分不同的協議,這個過程看似很簡單,確實如果用PC來實現的話是再容易不過的事情了,但是單片機不行,它沒有什么字符串處理函數可以隨意調用,而且單片機的運算速度遠不如PC,如何把發過來的字符串拆分成一個一個的字段是個很要緊的事情,好在在一本書上看到了一種思路,就是對","進行計數,通過判讀這個計數值來區分不同的字段,試驗證明這種方法很有效,接下來的實際編程碰到了不少的問題,最后發現都是程序流程的問題,用軟件仿真或者仿真器仿真一下也就可以解決了.
前天開始做安裝機殼,焊接線路板,機殼是上次從江蘇買的,線路板還是3毛5分一塊的實驗板,另外買回若干中XH2.54系列的接插件及銅柱,電源插座等等,開液晶顯示的空花了不少時間,還廢掉了一個小切割砂輪片;等板子插座都焊接好了,才發現機殼內部亂的不行,而且也就顯示器和主板的距離挨得太近,安裝比較困難,只好用砂輪打磨了一下銅柱,讓兩塊板子距離盡量的遠些,好歹把所有的東西都裝進去了,放電池盒的地方也所剩無幾了,索性不用電池供電了.通電測試,主板運行不起來,花了一天的時間思考這個問題,老是懷疑是晶振電路不起振,把個晶振拆了裝,裝了拆,好好的線路板焊片也給燙壞了,翻書找89C51的最小系統電路圖,對比自己的電路似乎沒有問題,但是同樣的程序在開發板上是能正常運行的,問題還是出在電路上,后來看一個BLOG找到一張最小系統的電路,這才看到89C51出PSEN/VPP引腳要接VCC的,趕緊焊接好,程序馬上運行正常,原來這個引腳接正電源的時候,程序要從能不ROM開始運行的,否則從外部ROM運行,我的程序全在內部,而這只引腳又是懸空的,當然運行不正常了;這里要批判一下那些所謂的單片機入門書工具書,電路圖是N年前8031時代的書上抄的,程序又是運行89c51系統上的,整個書上沒一點說明,真是害人不淺.
昨天下午坐上老婆的車出去測試了一下,基本正常,今天早上又換成了24M的晶體,顯示器背光加了限流電阻,整機的耗電量因此下降了2/3,運行速度明顯加快,至于換了晶振以后的問題就暫且不去理會了,畢竟不是很大的問題,再說這個DIY說到底還是拿來練練手的,離實用還有不少距離,那些問題就留在以后有心情的時候再解決吧.
以下是實物照片,紀念一下:

雜亂的工作臺

外面

內部
|