這幾天我放棄我們學校那邊的電賽培訓而跟李老師做項目,因為那邊的培訓越來越覺得是一個幌子。這個項目的基本思路其實很簡單,相信會單片機的人應該很容易明白。他其實就是一對多的相互通信,通過紅外傳輸,剛開始李老師選的紅外通信是用的IRDA協議,發送接收管用ZH1810,可是它里面沒有IRDA的協議,需要自己寫,我們花了一個晚上,也沒找到什么可靠的資料,我們也實驗過,沒有成功。于是李老師決定換方案,采用現成的模塊,直接通過串口發送,這樣就不需要我們軟件來解碼,基本上就相當于一個一對的串口通信,采用分時的思維來實現。先前沒用過51做項目,自己應付考試也是臨時把51的基本功能所對應的寄存器地址熟悉下,可惜的是我記這玩意的記憶力細胞實在少得可憐。都是通過邊翻書邊解決所遇到的問題的。呵呵,我花了一天的時間把液晶【128*64】顯示做出來【ST7920】,這個芯片驅動很扯蛋,漢字是16*16的很正常,字母都16*8,太可惡啦,還有沒有與,或,異或,同或的功能,而我們這個項目要顯示一行漢字——中南民族大學,接下來顯示6行溫度測量的度數,而且每一行一個實測溫度,一個與之對應的報警溫度,也就是說一行對應一個從機所測的溫度,如果超過我們認為設【通過按鍵實現】的溫度時,就報警,好在我4月份用ARM 寫過6960【驅動芯片】的液晶,看ST7920的資料沒費什么勁,可是這個界面寫下來還是花了我一天時間。呵呵,笨啊,菜鳥一個。
第二天,即昨天我開始寫串口通信的協議,呵呵,這玩意我最痛苦啦,由于我用的是仿真器,而且只有一個仿真器,另一個不知道為啥罷工啦,李老師說另一個就用燒錄器,呵呵,這個問題也花了我好幾個小時,主要是電腦的并口也罷工啦,好在找到原因并解決啦,怎么解決的,換臺電腦。呵呵,然后開始調試程序,真是奇了怪了,我分別主機自發自收沒問題,從機自發自收沒問題,聯機就是不聽話,然后我通過示波器一一把問題解決,到最后顯示時,已經是晚上7點啦,真是奇怪,他怎么一會顯示是正確的,復位后又不正確,再復位又可以,當時實在費解,我主機里面專門有校驗的程序的,怎么可能會出現這樣的情況呢,如果是接收不是我要的數據,他壓根就不會顯示,呵呵,別急,會有辦法的,當時我一步一步的的運行,呵呵,怎么單步運行怎么沒問題,難道是波特率快啦,2400不快吧,先改小點看看,于是把它改為1200,得了,集體罷工,無論我怎么弄都不行啦,改回2400也不行啦,一直找到晚上10點,還沒找到,當時真不想走啊,可是宿舍10點就要關門了的,還是走吧,今天早上一來,我隨意的看了一下仿真器,發現仿真器上面有個晶振,仔細一看是我的板子上的一半大,于是我馬上想到難道是它在作怪,先試試看,呵呵,果然是它,真要我命。可是主機我一復位,接收的不是溫度,我單步運行【這篇所說的單步運行就是設一個斷點,在哪設,網友們自己想想看】卻又可以,真笨啊我,剛開始我以為我主機的校驗程序有問題,怎么看也沒有發現,突然靈光一想,為什么我中斷一下可以,中斷一下有什么影響,延遲,馬上就想到了它,呵呵,搞定,然后我又把一個從機分別扮演6個從機的角色,主機發送數據命令那個從機發送溫度,主機校驗后把溫度顯示出來。就這樣這么個小玩意弄了我2天半,不過收獲還算很大的,至少里面所遇到的問題以后有良策啦。
不過我還么有把紅外的模塊添上去,不知道添了后有沒有影響,不過我敢肯定會有,因為我還沒有玩過這紅外,呵呵,不過我相信我能解決,畢竟我旁邊還有個老師呢,李老師真的肯教東西,比起我們的小危不知道強哪去啦,一提起他,讓我白白花費了5、6 月份時間,真想揍他。
|