陳長安+吳建嵐+王升
摘 要: 目前業(yè)內(nèi)普遍使用的直讀式海流計功耗大,連續(xù)工作時間短,且無數(shù)據(jù)存儲功能,可靠性不高,在需長時間進行海洋觀測使用時十分不便。針對這一情況,為提高直讀式海流計的可靠性,以AVR單片機ATmega8為核心處理器,基于水下分機輸出脈沖信號形式,采用中斷計數(shù)的基本原理,重新設計開發(fā)了一種低功耗高可靠的海流計數(shù)據(jù)采集系統(tǒng)。樣機測試結(jié)果表明:該系統(tǒng)操作簡單、性能穩(wěn)定,可長時間在水下連續(xù)可靠工作,完全滿足各種海洋作業(yè)中海流測量需求。
關(guān)鍵詞: ATmega8; 海流計; 數(shù)據(jù)采集; 實時時鐘; 鐵電存儲器
中圖分類號: TN911?34; TP274 文獻標識碼: A 文章編號: 1004?373X(2014)16?0111?03
Design of current meter data acquisition system based on AVR single chip computer
CHEN Chang?an, Wu Jian?lan, WANG Sheng
(Unit 91388 of PLA, Zhanjiang 524022, China)
Abstract: Since the common used direct reading current meter has the disadvantages of high?power consumption, short continuous working time, low reliability and no storage function, a new current meter data acquisition system with low?power consumption and high reliability was designed on the basis of basic principle of the counting interrupt to improve the reliability of the direct reading current meter. The AVR microcomputer ATmega8 is adopted as kernel processor in the data acquisition system. The pulse signal form of underwater part is utilized in the system design. The testing results of prototype machine show that the system features easy operation, stable performance and low cost, and can work continuously for a long time under water. It can fully meet the requirements of various current measurements.
Keywords: ATmega8; current meter; data acquisition; real?time clock; ferroelectric memory
旋漿式流速儀是目前水文作業(yè)中普遍使用的測量儀器,其特點是結(jié)構(gòu)簡單,使用方便,價格低廉。其中,中國海洋大學海洋儀器廠生產(chǎn)的直讀式海流計為典型代表,該儀器由100 m負重電纜、一個水下探頭和一個水上監(jiān)控器組成,可以直接讀出溫度、流向和流速數(shù)據(jù)[1?2]。由于研制年代久遠,所用芯片功耗大,連續(xù)工作時間短,且無數(shù)據(jù)存儲,可靠性不高。針對這一情況,本文從實際應用出發(fā),設計了新型海流計數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)基于AVR單片機技術(shù),實時顯示測量數(shù)據(jù)和時間信息,具備數(shù)據(jù)快速存儲和事后導出功能。通過合理的電路和程序設計,降低了系統(tǒng)功耗,提高了儀器的可靠性和方便性。
1 系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)以水下分機輸出信號為采集對象,采用AVR單片機ATmega8為主控芯片,主要包括數(shù)據(jù)采集、實時時鐘、數(shù)據(jù)存儲三部分,系統(tǒng)總體結(jié)構(gòu)[3]如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
系統(tǒng)設計原理為:根據(jù)水下分機輸出信號的形式,設計了脈沖鑒寬電路,分辨不同寬度的信號,輸出數(shù)據(jù)類型(溫度、流向、流速)和數(shù)據(jù)值兩路信號到單片機。單片機以外部中斷方式采集數(shù)據(jù)類型和數(shù)據(jù)值,通過串行方式讀取實時時鐘信息,然后對數(shù)據(jù)值和時間信息進行格式轉(zhuǎn)化,最后寫入存儲芯片并發(fā)送到LCD顯示。測量完畢后,可以通過RS 232串口導出數(shù)據(jù)到PC。
2 系統(tǒng)硬件設計
整個硬件系統(tǒng)以ATmega8單片機為核心,ATmega8是一款采用低功耗CMOS工藝生產(chǎn)的基于AVR RISC(精簡指令集)結(jié)構(gòu)的8位單片機[4]。該單片機將32個工作寄存器和豐富的指令集聯(lián)結(jié)在一起,所有工作寄存器都與算術(shù)邏輯單元直接相連,一條指令可以同時訪問2個獨立的寄存器,提高了代碼效率,運行速度比普通單片機高出10倍[5]。本系統(tǒng)ATmega8 選用5 V電源,8 MHz外部晶振,采用外部中斷方式采集數(shù)據(jù)。實時時鐘選用獨立時鐘芯片DS1302,存儲芯片選用Ramtron公司的鐵電存儲器FM24C64。
2.1 水下分機輸出信號形式
水下分機輸出信號包括溫度、流向、流速信息,通過同一信號線以負脈沖形式發(fā)送到數(shù)據(jù)采集系統(tǒng),如圖2所示。經(jīng)調(diào)試可知,水下分機信號有其自身特點:信號產(chǎn)生頻率為1/15 Hz,信號高電平為 6 V,低電平為0 V,信號線空閑時為高電平;每個周期包括溫度、流向、流速三組信號,按時間順序依次出現(xiàn),每類信號以寬負脈沖信號起始,隨之而來的窄負脈沖數(shù)表示信號值,最后一個寬負脈沖表示一個周期結(jié)束。
圖2 水下探測器傳輸信號形式
2.2 數(shù)據(jù)采集電路
數(shù)據(jù)采集電路實際由脈沖鑒寬電路和單片機外部中斷接口組成,如圖3所示。
圖3 數(shù)據(jù)采集電路原理圖
脈沖鑒寬電路的作用是判別有效信號段,水下分機信號從Input端輸入,輸出type(數(shù)據(jù)類型)信號和value(數(shù)據(jù)值)信號到單片機外部中斷口,單片機中斷觸發(fā)設置為下降沿有效。信號線空閑時,type信號端為高電平。如果Input端出現(xiàn)寬負脈沖,三極管Q5截止,電容C10充分放電,兩端電位差為零,上升沿時三極管Q5導通,type端產(chǎn)生一個瞬時低電位,觸發(fā)單片機外部中斷1;如果Input端出現(xiàn)窄負脈沖,電容C10沒有充分放電,type端沒有瞬時低電位產(chǎn)生,不能觸發(fā)單片機外部中斷1。所以,當單片機外部中斷1被觸發(fā)時,表示上一組信號結(jié)束,下一組數(shù)據(jù)起始,隨即采集value端輸出的脈沖個數(shù)就可以獲得相應數(shù)據(jù)值大小。容易看出,value端電平變化與Input端同步,觸發(fā)單片機外部中斷2采集數(shù)據(jù)值。Input端有寬負脈沖出現(xiàn)時,type端觸發(fā)單片機外部中斷1,判別已采集數(shù)據(jù)類型并保存數(shù)據(jù)值,同時開始下一類數(shù)據(jù)采集。流速數(shù)據(jù)采集完后,一個采集周期結(jié)束。
2.3 實時時鐘模塊
實時時鐘模塊為測量數(shù)據(jù)提供時間參考,便于數(shù)據(jù)處理和事后結(jié)果分析。若采用單片機計時,則耗費單片機資源,且難于實現(xiàn)斷電情況下保持時鐘連續(xù)運行。基于以上原因,選用了獨立時鐘芯片DS1302。該芯片是一款高性能、低功耗時鐘電路,具有雙電源管腳和對后背電源涓流充電的功能,主電源關(guān)閉情況下,由紐扣電池繼續(xù)供電,保持時鐘的連續(xù)運行。內(nèi)部含有7 B實時時鐘/日歷寄存器和 31 B靜態(tài)RAM,可以對2100年以前的年、月、日、周日、時、分、秒進行計時。DS1302采用同步串行方式與單片機通信,如圖4所示,僅需三線連接:RST(復位),I/O(數(shù)據(jù)線),SCLK(串行時鐘)。單片機以發(fā)送控制字方式讀寫DS1302內(nèi)部寄存器,讀取時間信息與采集水下分機信號同步,兩者合并為一組數(shù)據(jù)存入FM24C64。
2.4 數(shù)據(jù)存儲模塊
系統(tǒng)每15 s接收一組數(shù)據(jù)并保存,每組數(shù)據(jù)包括時、分、秒、溫度、流向、流速,共9 B。選用容量64 KB的鐵電存儲器FM24C64,最大連續(xù)存儲時間約3 h,可擦寫次數(shù)1012次,完全滿足存儲空間及性能的要求。
FM24C64通過I2C總線與單片機通信,如圖4所示。單片機作為主器件,F(xiàn)M24C64作為從器件。FM24C64的1,2,3腳用于確定從器件地址,該模塊只有一個從器件,故把它們都接地;SCL(時鐘線)接單片機PC5腳,SDA(數(shù)據(jù)線)接單片機PC4腳。當SCL為高電平時,SDA由高電平跳變到低電平定義為“通信開始”信號,此時單片機可以讀寫FM24C64,SDA線發(fā)生低電平跳變到高電平定義為“通信結(jié)束”信號,開始和結(jié)束信號都是由單片機產(chǎn)生。數(shù)據(jù)采集完畢后,可以一次讀取FM24C64全部數(shù)據(jù)并通過RS 232串口發(fā)送到數(shù)據(jù)處理計算機[6]。
3 軟件設計
下位機軟件采用C語言編寫,C語言目前已成為設計嵌入式系統(tǒng)的標準語言,它既有普通高級語言結(jié)構(gòu)化編程、可讀性好、維護方便的特點,又具有低級語言對硬
件訪問方便、代碼執(zhí)行效率高的特點[7]。
本系統(tǒng)軟件以ICCAVR作為編譯平臺,采用模塊化設計,便于維護升級,可讀性好。軟件主要包括主程序、數(shù)據(jù)采集中斷程序、時間讀寫、數(shù)據(jù)存儲、數(shù)據(jù)顯示、RS 232串口通信等六部分,主程序流程圖[8]如圖5所示。
圖5 主程序流程圖
主程序循環(huán)檢測PC機指令和新采集數(shù)據(jù),如果接收到時間設置或上傳數(shù)據(jù)到PC機的指令,則掛起當前程序,運行時間設置或上傳數(shù)據(jù)的中斷程序,運行完后返回掛起程序;如果檢測到有新采集數(shù)據(jù),則轉(zhuǎn)換數(shù)據(jù)格式為固定位長,寫入FM24C64,進入下一個循環(huán)。
圖6為數(shù)據(jù)采集中斷程序流程圖。每組數(shù)據(jù)以溫度開始,以流速結(jié)束。因溫度數(shù)據(jù)包含4位有效數(shù)字,而流速、流向數(shù)據(jù)都不大于360,故以計數(shù)值是否大于360來判斷每組數(shù)據(jù)的起始點。每采集一個數(shù)據(jù)值,就轉(zhuǎn)換一次數(shù)據(jù)類型,采集完一組數(shù)據(jù)后,數(shù)據(jù)類型清零。鑒于篇幅限制,程序源代碼省略。
圖6 數(shù)據(jù)采集中斷程序流程圖
4 結(jié) 語
本文介紹以ATmega8微控制器為核心,包含數(shù)據(jù)采集電路、實時時鐘電路、數(shù)據(jù)存儲和串口通信多種功能的海流計監(jiān)控系統(tǒng)的實現(xiàn)方法。實際使用證明,本系統(tǒng)具有可靠、方便和連續(xù)工作時間長的特點,易于修改移植,有效提高了海流計的測量能力,對測控領域利用AVR單片機設計數(shù)據(jù)采集監(jiān)控系統(tǒng)具有一定的借鑒意義。
參考文獻
[1] 張正惕,吳辰,霍艷虹.SLC9?2型直讀式海流計的工作原理簡述及維護使用經(jīng)驗[J].東海海洋,2000,18(1):61?64.
[2] 宋文洋,吳葆仁,孟昭舫.新型淺海用旋漿式海流計[J].海洋技術(shù),1988,7(4):42?50.
[3] 王勇.基于AVR單片機的一體化GPS接收機設計[J].自動化儀表,2008,29(2):65?67.
[4] 馬潮,詹衛(wèi)前,耿德根.ATmega8原理及應用手冊[M].北京:清華大學出版社,2003.
[5] 駱驕,楊振強.基于ATmega8的新型電動自行車調(diào)速控制系統(tǒng)設計[J].國外電子元器件,2005(5):17?19.
[6] 廖平,陳峰,馬洪秋.Delphi環(huán)境下PC機與AVR單片機的串行通訊[J].現(xiàn)代電子技術(shù),2008,31(2):123?125.
[7] 沈文,Eagle lee,詹衛(wèi)前.AVR單片機C語言開發(fā)入門指導[M].北京:清華大學出版社,2003.
[8] 欒亞群,李炳建,巨永鋒.基于AT89C52單片機的溫度檢測及顯示設計[J].現(xiàn)代電子技術(shù),2008,31(15):130?132.
圖2 水下探測器傳輸信號形式
2.2 數(shù)據(jù)采集電路
數(shù)據(jù)采集電路實際由脈沖鑒寬電路和單片機外部中斷接口組成,如圖3所示。
圖3 數(shù)據(jù)采集電路原理圖
脈沖鑒寬電路的作用是判別有效信號段,水下分機信號從Input端輸入,輸出type(數(shù)據(jù)類型)信號和value(數(shù)據(jù)值)信號到單片機外部中斷口,單片機中斷觸發(fā)設置為下降沿有效。信號線空閑時,type信號端為高電平。如果Input端出現(xiàn)寬負脈沖,三極管Q5截止,電容C10充分放電,兩端電位差為零,上升沿時三極管Q5導通,type端產(chǎn)生一個瞬時低電位,觸發(fā)單片機外部中斷1;如果Input端出現(xiàn)窄負脈沖,電容C10沒有充分放電,type端沒有瞬時低電位產(chǎn)生,不能觸發(fā)單片機外部中斷1。所以,當單片機外部中斷1被觸發(fā)時,表示上一組信號結(jié)束,下一組數(shù)據(jù)起始,隨即采集value端輸出的脈沖個數(shù)就可以獲得相應數(shù)據(jù)值大小。容易看出,value端電平變化與Input端同步,觸發(fā)單片機外部中斷2采集數(shù)據(jù)值。Input端有寬負脈沖出現(xiàn)時,type端觸發(fā)單片機外部中斷1,判別已采集數(shù)據(jù)類型并保存數(shù)據(jù)值,同時開始下一類數(shù)據(jù)采集。流速數(shù)據(jù)采集完后,一個采集周期結(jié)束。
2.3 實時時鐘模塊
實時時鐘模塊為測量數(shù)據(jù)提供時間參考,便于數(shù)據(jù)處理和事后結(jié)果分析。若采用單片機計時,則耗費單片機資源,且難于實現(xiàn)斷電情況下保持時鐘連續(xù)運行?;谝陨显颍x用了獨立時鐘芯片DS1302。該芯片是一款高性能、低功耗時鐘電路,具有雙電源管腳和對后背電源涓流充電的功能,主電源關(guān)閉情況下,由紐扣電池繼續(xù)供電,保持時鐘的連續(xù)運行。內(nèi)部含有7 B實時時鐘/日歷寄存器和 31 B靜態(tài)RAM,可以對2100年以前的年、月、日、周日、時、分、秒進行計時。DS1302采用同步串行方式與單片機通信,如圖4所示,僅需三線連接:RST(復位),I/O(數(shù)據(jù)線),SCLK(串行時鐘)。單片機以發(fā)送控制字方式讀寫DS1302內(nèi)部寄存器,讀取時間信息與采集水下分機信號同步,兩者合并為一組數(shù)據(jù)存入FM24C64。
2.4 數(shù)據(jù)存儲模塊
系統(tǒng)每15 s接收一組數(shù)據(jù)并保存,每組數(shù)據(jù)包括時、分、秒、溫度、流向、流速,共9 B。選用容量64 KB的鐵電存儲器FM24C64,最大連續(xù)存儲時間約3 h,可擦寫次數(shù)1012次,完全滿足存儲空間及性能的要求。
FM24C64通過I2C總線與單片機通信,如圖4所示。單片機作為主器件,F(xiàn)M24C64作為從器件。FM24C64的1,2,3腳用于確定從器件地址,該模塊只有一個從器件,故把它們都接地;SCL(時鐘線)接單片機PC5腳,SDA(數(shù)據(jù)線)接單片機PC4腳。當SCL為高電平時,SDA由高電平跳變到低電平定義為“通信開始”信號,此時單片機可以讀寫FM24C64,SDA線發(fā)生低電平跳變到高電平定義為“通信結(jié)束”信號,開始和結(jié)束信號都是由單片機產(chǎn)生。數(shù)據(jù)采集完畢后,可以一次讀取FM24C64全部數(shù)據(jù)并通過RS 232串口發(fā)送到數(shù)據(jù)處理計算機[6]。
3 軟件設計
下位機軟件采用C語言編寫,C語言目前已成為設計嵌入式系統(tǒng)的標準語言,它既有普通高級語言結(jié)構(gòu)化編程、可讀性好、維護方便的特點,又具有低級語言對硬
件訪問方便、代碼執(zhí)行效率高的特點[7]。
本系統(tǒng)軟件以ICCAVR作為編譯平臺,采用模塊化設計,便于維護升級,可讀性好。軟件主要包括主程序、數(shù)據(jù)采集中斷程序、時間讀寫、數(shù)據(jù)存儲、數(shù)據(jù)顯示、RS 232串口通信等六部分,主程序流程圖[8]如圖5所示。
圖5 主程序流程圖
主程序循環(huán)檢測PC機指令和新采集數(shù)據(jù),如果接收到時間設置或上傳數(shù)據(jù)到PC機的指令,則掛起當前程序,運行時間設置或上傳數(shù)據(jù)的中斷程序,運行完后返回掛起程序;如果檢測到有新采集數(shù)據(jù),則轉(zhuǎn)換數(shù)據(jù)格式為固定位長,寫入FM24C64,進入下一個循環(huán)。
圖6為數(shù)據(jù)采集中斷程序流程圖。每組數(shù)據(jù)以溫度開始,以流速結(jié)束。因溫度數(shù)據(jù)包含4位有效數(shù)字,而流速、流向數(shù)據(jù)都不大于360,故以計數(shù)值是否大于360來判斷每組數(shù)據(jù)的起始點。每采集一個數(shù)據(jù)值,就轉(zhuǎn)換一次數(shù)據(jù)類型,采集完一組數(shù)據(jù)后,數(shù)據(jù)類型清零。鑒于篇幅限制,程序源代碼省略。
圖6 數(shù)據(jù)采集中斷程序流程圖
4 結(jié) 語
本文介紹以ATmega8微控制器為核心,包含數(shù)據(jù)采集電路、實時時鐘電路、數(shù)據(jù)存儲和串口通信多種功能的海流計監(jiān)控系統(tǒng)的實現(xiàn)方法。實際使用證明,本系統(tǒng)具有可靠、方便和連續(xù)工作時間長的特點,易于修改移植,有效提高了海流計的測量能力,對測控領域利用AVR單片機設計數(shù)據(jù)采集監(jiān)控系統(tǒng)具有一定的借鑒意義。
參考文獻
[1] 張正惕,吳辰,霍艷虹.SLC9?2型直讀式海流計的工作原理簡述及維護使用經(jīng)驗[J].東海海洋,2000,18(1):61?64.
[2] 宋文洋,吳葆仁,孟昭舫.新型淺海用旋漿式海流計[J].海洋技術(shù),1988,7(4):42?50.
[3] 王勇.基于AVR單片機的一體化GPS接收機設計[J].自動化儀表,2008,29(2):65?67.
[4] 馬潮,詹衛(wèi)前,耿德根.ATmega8原理及應用手冊[M].北京:清華大學出版社,2003.
[5] 駱驕,楊振強.基于ATmega8的新型電動自行車調(diào)速控制系統(tǒng)設計[J].國外電子元器件,2005(5):17?19.
[6] 廖平,陳峰,馬洪秋.Delphi環(huán)境下PC機與AVR單片機的串行通訊[J].現(xiàn)代電子技術(shù),2008,31(2):123?125.
[7] 沈文,Eagle lee,詹衛(wèi)前.AVR單片機C語言開發(fā)入門指導[M].北京:清華大學出版社,2003.
[8] 欒亞群,李炳建,巨永鋒.基于AT89C52單片機的溫度檢測及顯示設計[J].現(xiàn)代電子技術(shù),2008,31(15):130?132.
圖2 水下探測器傳輸信號形式
2.2 數(shù)據(jù)采集電路
數(shù)據(jù)采集電路實際由脈沖鑒寬電路和單片機外部中斷接口組成,如圖3所示。
圖3 數(shù)據(jù)采集電路原理圖
脈沖鑒寬電路的作用是判別有效信號段,水下分機信號從Input端輸入,輸出type(數(shù)據(jù)類型)信號和value(數(shù)據(jù)值)信號到單片機外部中斷口,單片機中斷觸發(fā)設置為下降沿有效。信號線空閑時,type信號端為高電平。如果Input端出現(xiàn)寬負脈沖,三極管Q5截止,電容C10充分放電,兩端電位差為零,上升沿時三極管Q5導通,type端產(chǎn)生一個瞬時低電位,觸發(fā)單片機外部中斷1;如果Input端出現(xiàn)窄負脈沖,電容C10沒有充分放電,type端沒有瞬時低電位產(chǎn)生,不能觸發(fā)單片機外部中斷1。所以,當單片機外部中斷1被觸發(fā)時,表示上一組信號結(jié)束,下一組數(shù)據(jù)起始,隨即采集value端輸出的脈沖個數(shù)就可以獲得相應數(shù)據(jù)值大小。容易看出,value端電平變化與Input端同步,觸發(fā)單片機外部中斷2采集數(shù)據(jù)值。Input端有寬負脈沖出現(xiàn)時,type端觸發(fā)單片機外部中斷1,判別已采集數(shù)據(jù)類型并保存數(shù)據(jù)值,同時開始下一類數(shù)據(jù)采集。流速數(shù)據(jù)采集完后,一個采集周期結(jié)束。
2.3 實時時鐘模塊
實時時鐘模塊為測量數(shù)據(jù)提供時間參考,便于數(shù)據(jù)處理和事后結(jié)果分析。若采用單片機計時,則耗費單片機資源,且難于實現(xiàn)斷電情況下保持時鐘連續(xù)運行?;谝陨显?,選用了獨立時鐘芯片DS1302。該芯片是一款高性能、低功耗時鐘電路,具有雙電源管腳和對后背電源涓流充電的功能,主電源關(guān)閉情況下,由紐扣電池繼續(xù)供電,保持時鐘的連續(xù)運行。內(nèi)部含有7 B實時時鐘/日歷寄存器和 31 B靜態(tài)RAM,可以對2100年以前的年、月、日、周日、時、分、秒進行計時。DS1302采用同步串行方式與單片機通信,如圖4所示,僅需三線連接:RST(復位),I/O(數(shù)據(jù)線),SCLK(串行時鐘)。單片機以發(fā)送控制字方式讀寫DS1302內(nèi)部寄存器,讀取時間信息與采集水下分機信號同步,兩者合并為一組數(shù)據(jù)存入FM24C64。
2.4 數(shù)據(jù)存儲模塊
系統(tǒng)每15 s接收一組數(shù)據(jù)并保存,每組數(shù)據(jù)包括時、分、秒、溫度、流向、流速,共9 B。選用容量64 KB的鐵電存儲器FM24C64,最大連續(xù)存儲時間約3 h,可擦寫次數(shù)1012次,完全滿足存儲空間及性能的要求。
FM24C64通過I2C總線與單片機通信,如圖4所示。單片機作為主器件,F(xiàn)M24C64作為從器件。FM24C64的1,2,3腳用于確定從器件地址,該模塊只有一個從器件,故把它們都接地;SCL(時鐘線)接單片機PC5腳,SDA(數(shù)據(jù)線)接單片機PC4腳。當SCL為高電平時,SDA由高電平跳變到低電平定義為“通信開始”信號,此時單片機可以讀寫FM24C64,SDA線發(fā)生低電平跳變到高電平定義為“通信結(jié)束”信號,開始和結(jié)束信號都是由單片機產(chǎn)生。數(shù)據(jù)采集完畢后,可以一次讀取FM24C64全部數(shù)據(jù)并通過RS 232串口發(fā)送到數(shù)據(jù)處理計算機[6]。
3 軟件設計
下位機軟件采用C語言編寫,C語言目前已成為設計嵌入式系統(tǒng)的標準語言,它既有普通高級語言結(jié)構(gòu)化編程、可讀性好、維護方便的特點,又具有低級語言對硬
件訪問方便、代碼執(zhí)行效率高的特點[7]。
本系統(tǒng)軟件以ICCAVR作為編譯平臺,采用模塊化設計,便于維護升級,可讀性好。軟件主要包括主程序、數(shù)據(jù)采集中斷程序、時間讀寫、數(shù)據(jù)存儲、數(shù)據(jù)顯示、RS 232串口通信等六部分,主程序流程圖[8]如圖5所示。
圖5 主程序流程圖
主程序循環(huán)檢測PC機指令和新采集數(shù)據(jù),如果接收到時間設置或上傳數(shù)據(jù)到PC機的指令,則掛起當前程序,運行時間設置或上傳數(shù)據(jù)的中斷程序,運行完后返回掛起程序;如果檢測到有新采集數(shù)據(jù),則轉(zhuǎn)換數(shù)據(jù)格式為固定位長,寫入FM24C64,進入下一個循環(huán)。
圖6為數(shù)據(jù)采集中斷程序流程圖。每組數(shù)據(jù)以溫度開始,以流速結(jié)束。因溫度數(shù)據(jù)包含4位有效數(shù)字,而流速、流向數(shù)據(jù)都不大于360,故以計數(shù)值是否大于360來判斷每組數(shù)據(jù)的起始點。每采集一個數(shù)據(jù)值,就轉(zhuǎn)換一次數(shù)據(jù)類型,采集完一組數(shù)據(jù)后,數(shù)據(jù)類型清零。鑒于篇幅限制,程序源代碼省略。
圖6 數(shù)據(jù)采集中斷程序流程圖
4 結(jié) 語
本文介紹以ATmega8微控制器為核心,包含數(shù)據(jù)采集電路、實時時鐘電路、數(shù)據(jù)存儲和串口通信多種功能的海流計監(jiān)控系統(tǒng)的實現(xiàn)方法。實際使用證明,本系統(tǒng)具有可靠、方便和連續(xù)工作時間長的特點,易于修改移植,有效提高了海流計的測量能力,對測控領域利用AVR單片機設計數(shù)據(jù)采集監(jiān)控系統(tǒng)具有一定的借鑒意義。
參考文獻
[1] 張正惕,吳辰,霍艷虹.SLC9?2型直讀式海流計的工作原理簡述及維護使用經(jīng)驗[J].東海海洋,2000,18(1):61?64.
[2] 宋文洋,吳葆仁,孟昭舫.新型淺海用旋漿式海流計[J].海洋技術(shù),1988,7(4):42?50.
[3] 王勇.基于AVR單片機的一體化GPS接收機設計[J].自動化儀表,2008,29(2):65?67.
[4] 馬潮,詹衛(wèi)前,耿德根.ATmega8原理及應用手冊[M].北京:清華大學出版社,2003.
[5] 駱驕,楊振強.基于ATmega8的新型電動自行車調(diào)速控制系統(tǒng)設計[J].國外電子元器件,2005(5):17?19.
[6] 廖平,陳峰,馬洪秋.Delphi環(huán)境下PC機與AVR單片機的串行通訊[J].現(xiàn)代電子技術(shù),2008,31(2):123?125.
[7] 沈文,Eagle lee,詹衛(wèi)前.AVR單片機C語言開發(fā)入門指導[M].北京:清華大學出版社,2003.
[8] 欒亞群,李炳建,巨永鋒.基于AT89C52單片機的溫度檢測及顯示設計[J].現(xiàn)代電子技術(shù),2008,31(15):130?132.