【正文】
date_num=0。 } else { data_item=0。 case 7: if(temp==39。) { time_num=0。 break。$39。 break。 } break。 } break。 } break。 } break。 } break。 } break。 } break。 } default: break。 //采集溫度void Signal_INT(void) interrupt 2 using 3//傳感器中斷{ round_count++。}開始初始化串口和中斷接收完整數(shù)據(jù)?初始化PCF8563讀18B20數(shù)據(jù)是否計數(shù)霍爾元件的時間到?采集GPS的數(shù)據(jù)是否完整檢查是否收到存儲的指令(一分鐘)存儲YNNY第一次存儲完后啟動從機(jī)返回Y返回N中斷通信入口是否需要的數(shù)據(jù)采集數(shù)據(jù)Y退出外部中斷入口脈沖加一定時時間是否到?取值退出NYN(2) 顯示模塊在這個模塊中,主要是處理LCD界面的顯示以及發(fā)數(shù)據(jù)到PC地圖上定位。由于電子地圖只有接收到與串口參數(shù)設(shè)定的數(shù)據(jù)一致時才可以定位,所以將按照它的參數(shù)每兩秒發(fā)送一組數(shù)據(jù),下面就是每兩秒發(fā)送一組數(shù)據(jù)給PC地圖的程序:/******************************************************************************/void Timer1(void) interrupt 1 using 1//中斷入口,冒號閃爍{ unsigned char temp,i。 //50ms定時 TL0=(6553546080)%256。 num_Send++。 num_xianshi++。 rr_num++。 flag_move=1。 keep++。 num_xianshi=0。 flag = ~flag。 flag_auto=1。/**********************當(dāng)前狀態(tài)的發(fā)送*******************/ if(key_now_last==1) { for(i=0。i++) { switch(i) { case 0 : temp=39。break。G39。 case 2 : temp=39。break。G39。 case 4 : temp=39。break。A39。 case 6 : temp=39。break。039。 case 8 : temp=((hour_CLK8)+24)%24%10+39。break。039。 case 10: temp=(min_CLK%10)+39。break。039。 case 12: temp=39。break。,39。 case 14: temp=read_latlon[0]/10+39。break。039。 case 16: temp=read_latlon[1]/10+39。break。039。 case 18: temp=39。break。039。 case 20: temp=read_latlon[2]%10+39。break。039。 case 22: temp=read_latlon[3]%10+39。break。,39。 case 24: temp=read_latlon[4]。 case 25: temp=39。break。039。 case 27: temp=read_latlon[5]%10+39。break。039。 case 29: temp=read_latlon[7]/10+39。break。039。 case 31: temp=39。break。039。 case 33: temp=read_latlon[8]%10+39。break。039。 case 35: temp=read_latlon[9]%10+39。break。,39。 case 37: temp=read_latlon[10]。 case 38: temp=39。break。139。 case 40: temp=39。break。039。 case 42: temp=39。break。,39。 case 44: temp=39。break。.39。 case 46: temp=39。break。,39。 case 48: temp=39。break。.39。 case 50: temp=39。break。239。 case 52:temp=39。break。M39。 case 54: temp=39。break。739。 case 56: temp=39。break。039。 case 58: temp=39。break。M39。 case 60: temp=39。break。 39。 case 62: temp=39。break。*39。 case 64: temp=39。break。639。 case 66: temp=39。break。 while(TI==0)。 } }/****************************停止/回放狀態(tài)的發(fā)送*********/ else { for(i=0。i++) { switch(i) { case 0 : temp=39。break。G39。 case 2 : temp=39。break。G39。 case 4 : temp=39。break。A39。 case 6 : temp=39。break。039。 case 8 : temp=((hour8)+24)%24%10+39。break。039。 case 10: temp=(min%10)+39。break。039。 case 12: temp=39。break。,39。 case 14: temp=read_latlon[0]/10+39。break。039。 case 16: temp=read_latlon[1]/10+39。break。039。 case 18: temp=39。break。039。 case 20: temp=read_latlon[2]%10+39。break。039。 case 22: temp=read_latlon[3]%10+39。break。,39。 case 24: temp=read_latlon[4]。 case 25: temp=39。break。039。 case 27: temp=read_latlon[5]%10+39。break。039。 case 29: temp=read_latlon[7]/10+39。break。039。 case 31: temp=39。break。039。 case 33: temp=read_latlon[8]%10+39。break。039。 case 35: temp=read_latlon[9]%10+39。break。,39。 case 37: temp=read_latlon[10]。 case 38: temp=39。break。139。 case 40: temp=39。break。039。 case 42: temp=39。break。,39。 case 44: temp=39。break。.39。 case 46: temp=39。break。,39。 case 48: temp=39。break。.39。 case 50: temp=39。break。239。 case 52:temp=39。break。M39。 case 54: temp=39。break。739。 case 56: temp=39。break。039。 case 58: temp=39。break。M39。 case 60: temp=39。break。 39。 case 62: temp=39。break。*39。 case 64: temp=39。break。639。 case 66: temp=39。break。 } SBUF=temp。 TI=0。(1)GPS模塊GPS(Global Positioning System)是全球定位系統(tǒng)的縮寫,全球定位系統(tǒng)現(xiàn)在也經(jīng)常稱為全球衛(wèi)星導(dǎo)航技術(shù),是美國從20世紀(jì)70年代開始研制,于1994年全面建成,具有在海陸空進(jìn)行全方位實時三維導(dǎo)航與定位能力的新一代衛(wèi)星導(dǎo)航與定位系統(tǒng)。GPS接收到數(shù)據(jù)幀有定位信息GPGGA幀,衛(wèi)星信息GPGSA幀,地理定位信息GPGLL幀,衛(wèi)星狀態(tài)GPGSV幀,最小信息GPRMC幀等等,但是我們僅僅需要提取信息全面的GPRMC幀。在10℃~+85℃范圍內(nèi),精確度177。(3)霍爾元件ATS276適用范圍:無刷電機(jī),風(fēng)扇電機(jī),開關(guān)電路。(4)時鐘芯片PCF8563PCF8563是低功耗的CMOS實時時鐘芯片,他提供了一個可編程的時鐘芯片輸出,一個中斷輸出和掉電檢測器,所有的地址和數(shù)據(jù)通過I2C總線接口串行傳遞,最大總線速度為400 Kbits/s,每次讀寫數(shù)據(jù)后,內(nèi)嵌的字地址起存期會自動產(chǎn)生增量。3. 1 測試工具。 霍爾元件功能測試。3. 3 軟件調(diào)試。為了節(jié)省調(diào)試時間和更加直觀地看出數(shù)據(jù)變化過程,我們把一分鐘的存儲改為十秒鐘存儲一次。(2)單獨調(diào)試顯示模塊,看每十秒LED會不會滅一次,滅的時間是不是一秒。(3)存儲/顯示模塊聯(lián)調(diào)部分。對于時間進(jìn)行的調(diào)試步驟與第(2)相同,同時觀看LCD經(jīng)緯度的數(shù)據(jù)會不會跟隨時間的變化而變化,如果會,則說明對存儲芯片的讀取正常,將顯示芯片的串口連接到電腦,讓系統(tǒng)處于讀取當(dāng)前狀態(tài),觀看電腦接收到數(shù)據(jù)是不是每2 秒就接受到一條語句,該語句的是以$GPGGA開頭,看數(shù)據(jù)是不是每5組就更新了一下經(jīng)緯度,并且串口調(diào)試接收到經(jīng)緯度與LCD顯示的一樣。最后關(guān)閉串口調(diào)試,打開PC地圖設(shè)計導(dǎo)航,看在地圖上是否顯示出汽車行駛的軌跡。05′6871″113176。05′6865″113176。05′6809″113176。05′6638″113176。05′6560″113176。05′6354″113176。05′6265″113176。05′6052″113176。05′5947″113176。05′6589″113176。05′6665″113176。05′6917″113176。05′7165″113176。05′7165″113176。05′7876″113176。05′8122″113176。05′8362″113176。05′8458″113176。05′8477″113176。05′8427″113176。3. 5 調(diào)試過程中遇見的問題分析以及解決方案。考慮成本問題。我們數(shù)據(jù)的存儲是以當(dāng)時GPS接收到的時間作為地址運算的,讀出的時候也是利用對時間的運算讀出相應(yīng)地址的內(nèi)容。在顯示過程中我們是在第59秒進(jìn)行數(shù)據(jù)的存儲,但是對于數(shù)據(jù)的讀取更新是每10秒或者每十分鐘更新一次,完全避開了讀總線的沖突。提高交通的管理執(zhí)法水平和運輸管理水平、保障車輛運行安全也有著重要的實際作用及意義。并詳細(xì)記錄車輛每次的起動時間、行駛速度、行駛時間等,總的來說具有如下特點:(1)可靠性高:該作品在任何車輛能工作的的環(huán)境下都能正常穩(wěn)定的工作。 (3). FLASE顯示:該作品采用LCD液晶顯示,通過設(shè)計讓畫面更加美化,并且產(chǎn)生了循環(huán)漸變的FLASH數(shù)據(jù)更新效果。 (4).功能擴(kuò)展性強(qiáng):系統(tǒng)軟件具有動態(tài)裝載功能,即在不改變硬件的情況下,僅通過更新記錄儀的系統(tǒng)軟件 即可實現(xiàn)產(chǎn)品功能的更新和升級。四.結(jié)束語。本系統(tǒng)有待提升的部分就是細(xì)分行程,可以將時間分10秒鐘進(jìn)行存儲一組,有必要可以將記錄時間更長一些,比如1個月甚至1年以上,使記錄的數(shù)據(jù)更加緊湊,查詢的時間范圍加長,更能符合用戶的要求,不過我們作為樣品,只有1分存儲一次,存儲一個星期。五、附件參考文獻(xiàn)[1]:電子工業(yè)出版社,[2]:廣東高等教育出版社,[3],[4]于永,:電子工業(yè)出版社,[5]:清華大學(xué)出版社,附1:程序清單附2:電路圖附錄一:輸出模塊/*程序功能是實現(xiàn)查詢與