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

雜亂的工作臺(tái)

外面

內(nèi)部
|
|