新聞中心

EEPW首頁 > 測試測量 > 設計應用 > 基于PIC單片機的便攜式測試記錄儀設計

基于PIC單片機的便攜式測試記錄儀設計

作者:高培先, 張相 時間:2008-08-27 來源:電子技術應用 收藏

  2 軟件設計

本文引用地址:http://m.butianyuan.cn/article/87442.htm

  本軟件由實時處理程序和組成諸功能部件的組成。

  2.1 實時處理程序

  實時處理程序調用相關完成模擬量采集、數(shù)字濾波、插值運算、實時顯示、記錄合成及記錄保存。本采用的記錄格式從高至低依序為:傳感器號,量程,采集值,年,月,日,時,分,秒。

  2.2 設計

  驅動程序設計的基本思想是:首先完成相關接口、寄存器的初始化,然后根據(jù)具體物理部件產(chǎn)生微操作時序,并對操作過程中遇到的異常事件進行容錯處理。

  2.2.1 讀/寫E2PROM 驅動程序

  I2C總線由時鐘線(SCL)和數(shù)據(jù)線(SDA)組成。根據(jù)I2C總線協(xié)議,將圖1所采用的24LC65芯片的讀/寫操作按操作順序分解為:使總線處于空閑狀態(tài)(SCL、SDA均為高電平);發(fā)送讀/寫啟動信號(SCL保持高電平,SDA從高變低產(chǎn)生下降沿);在數(shù)據(jù)線SDA上讀或寫數(shù)據(jù)位(SCL高電平時,SDA狀態(tài)為有效的讀或寫數(shù)據(jù)位,SDA狀態(tài),即0或1的變化必須在 SCL低電平期間完成);發(fā)送讀/寫結束信號(SCL保持高電平,SDA從低變高產(chǎn)生上升沿)。如果為寫操作,每寫完1字節(jié)數(shù)據(jù)后,24LC65在數(shù)據(jù)線SDA上回送握手應答信號,表示該字節(jié)數(shù)據(jù)已被可靠寫入。以上微操作通過匯編語言編程實現(xiàn)。

  本記錄儀以記錄方式讀/寫數(shù)據(jù)片。因此,對寫來說,首先讀字典片,以便用其中的表頭參數(shù)判斷當前數(shù)據(jù)片是否已寫滿。若已寫滿,則在LCD上顯示無寫空間標記代碼,然后返回休眠狀態(tài);否則,將記錄寫入記錄指針所指向的數(shù)據(jù)片中,同時對表頭參數(shù)進行修改。在寫過程中,重要的是處理疵點單元。盡管24LC65在寫過程中出現(xiàn)的疵點概率極少,但若不正確處理,則會導致目標數(shù)據(jù)丟失甚至出現(xiàn)系統(tǒng)死機現(xiàn)象。作者曾采用數(shù)據(jù)輪詢技術進行容錯處理,收到了良好的效果。其基本思想是:每當在數(shù)據(jù)線上寫完1字節(jié)數(shù)據(jù)后,便反復查詢24LC65回送的應答信號,但最多不超過50次(此數(shù)足夠24LC65寫入時間);若超過查詢次數(shù)仍無應答信號,便認為該單元為疵點單元,將其地址記入疵點單元地址隊列,并使疵點單元計數(shù)器加1,然后在下一比鄰單元繼續(xù)寫入原數(shù)據(jù)。如果連續(xù)兩單元為疵點單元,則認為整個芯片有問題,此時,在LCD上顯示該單元所在的芯片號(芯片號參見圖1),然后,返回休眠狀態(tài)。

  對讀來說,首先判斷數(shù)據(jù)片是否為空。若為空,則在LCD上顯示無記錄標記代碼,然后返回休眠狀態(tài)。否則,繼續(xù)判斷數(shù)據(jù)片是否有疵點,如果無疵點,則從數(shù)據(jù)片首址開始按序讀出所有記錄;否則,在按序讀記錄過程中,根據(jù)疵點單元地址隊列內(nèi)容,跳過所有疵點單元,以保證讀出的記錄連續(xù)、真實、可靠。

  2.2.2 采集驅動程序設計

  A/D轉換器MAX189所帶串口與16C74的SPI口完全兼容。因此,在A/D轉換完成后,只要啟動SPI口產(chǎn)生13個同步時鐘脈沖便可連續(xù)兩次從SPI數(shù)據(jù)緩沖器上獲得12位轉換結果。由于本記錄儀采集的參數(shù)個數(shù)依現(xiàn)場安裝的傳感器數(shù)不同而不同,因此,驅動程序必須能予以自動識別。圖2為采集驅動程序流程,其基本設計思想是:首先讀識別片,以確定實際安裝的傳感器數(shù)量,然后從0通道傳感器開始進行采集,直到實際安裝的最后一個傳感器采集完畢為止。圖2中:CHAN:通道寄存器;COUNT:傳感器數(shù)量寄存器。

  3

  是通過測試程序完成對記錄儀本身各功能硬件的性能測試。測試程序獨立于實際應用程序,在單獨的中,使用時只要拔掉記錄儀模板上的單片機而用其代之即可。測試程序設計的基本思想是:首先根據(jù)不同測試對象(即部件)產(chǎn)生不同的測試數(shù)據(jù)和測試期望數(shù)據(jù),然后以測試數(shù)據(jù)為入口參數(shù),調度相關驅動程序產(chǎn)生目標數(shù)據(jù),最后用測試期望數(shù)據(jù)與目標數(shù)據(jù)進行比較,以此判斷所測硬件性能之良劣。

  3.1 E2PROM

  E2PROM測試需要與PC機通訊。其基本原理是:首先產(chǎn)生8種測試數(shù)據(jù):0x00、0xff、0x55、0xaa、0x0f、0xf0、0x5a、0xa5(0x表示16進制數(shù)),然后分別以此8種測試數(shù)據(jù)為入口參數(shù),交替調度寫、讀E2PROM驅動程序3次(即先寫后讀3次)。每讀一次,與測試期望數(shù)據(jù)(此處測試數(shù)據(jù)與測試期望數(shù)據(jù)相同)進行比較,若不相等,則對相應片錯誤計數(shù)器加1。測試結果實時地顯示在記錄儀LCD和PC機上。LCD只顯示總錯誤個數(shù),PC機則依次顯示、保存總錯誤個數(shù)及錯誤單元地址。

  3.2 A/D測試設計

  A/D測試也需要與PC機通訊。由于本記錄儀最多可采集8路傳感器參數(shù),因此,測試程序對鍵盤重新定義如下:當手動、自動、通訊、打印、清零鍵有鍵按下時,對應測試0~4通道傳感器;當手動、自動、通訊鍵其中之一與清零鍵同時按下時,則對應測試5~7通道傳感器。測試只對放大器滿量程的10%、50%、90%等3點進行采集。其原理是:首先,測試程序掃描鍵盤,當掃描到有鍵按下時,則調度采集驅動程序對該鍵盤定義的通道傳感器進行連續(xù)采集,采集結果不作任何處理,實時地顯示在記錄儀LCD和PC機上。LCD只顯示當前的A/D轉換碼值,PC機則顯示并保存當前A/D轉換碼值、各點最大、最小轉換碼值及兩者絕對差值。技術人員可以此判斷前向通道(傳感器、放大器、A/D)工作性能的好壞。筆者曾連續(xù)測試0通道傳感器6個半小時,發(fā)現(xiàn)最大碼差為9,表明前向通道工作相當穩(wěn)定。

  3.3 實時時鐘測試設計

  實時時鐘DS1302測試需要借助PC機完成。其測試原理是:首先PC機上的測試程序讀PC系統(tǒng)日歷信息─年、月、日、時、分、秒、星期,并進行發(fā)送。記錄儀在接收后,立即調度寫DS1302驅動程序將接收的PC系統(tǒng)日歷信息寫入DS1302相關功能寄存器中,并使DS1302以此為時基進行計時。此后,進入記錄儀發(fā)送、PC接收的無限循環(huán)狀態(tài),即:每隔10ms,記錄儀調度一次讀DS1302驅動程序,并將獲得的最近日歷信息予以迅速發(fā)送;而處于接收狀態(tài)的PC接收后,立即與PC系統(tǒng)當前日歷信息進行比較,如此循環(huán),直到人工干預結束測試為止。在上述測試過程中,記錄儀LCD只實時地顯示日歷信息的分、秒兩位,PC機則實時地顯示記錄儀和PC機兩端完整的日期、時間及兩者比較差。另外,通過觀察記錄儀LCD上顯示的分、秒位變化,也可初步判定DS1302的性能。筆者曾連續(xù)運行該測試程序24小時,偏差極小,足以滿足本系統(tǒng)的需要。

  4 實際應用

  本記錄儀已投入實際應用一年多,其可靠性、穩(wěn)定性、操作性和精度均受用戶歡迎。不足之處是:目前功耗還比較大,作者在+12V供電時測得電流為45.5mA,尚需進一步改進。

  參考文獻

  1 竇振忠. 系列單片機原理和程序設計.北京:北京航空航天大學出版社,1998

  2 王福瑞. 單片機測控系統(tǒng)設計大全. 北京:北京航空航天大學出版社,1999

  3 王幸之. 單片機應用系統(tǒng)抗干擾技術. 北京:北京航空航天大學出版社,2000


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉