汽車行駛記錄系統中AT89C51ED2 的設計與實現
隨著社會的發展,汽車越來越普及,隨著汽車擁有量的增加,發生交通事故的概率也隨之增加,發生事故后用傳統的方法進行分析、判斷、維修有一定的困難。這樣,就給人們提出了一個問題,怎樣及時、準備地分析故障的存在,客觀地分析事故的責任。汽車行駛記錄儀作為一種降低交通事故的發生率,規范和保障駕駛人員的行為和權益, 方便交通管理部門執法檢查和事故責任認定, 提高運營單位對司乘人員和車輛的監督管理的一種重要手段,越來越得到人們的關注和重視。設計一種能滿足車輛管理,事故認定及疲勞駕駛提醒的車載儀器迫在眉睫。本文介紹一種價格低,功能較齊全且能擴展的采用AT89C51ED2 作為MCU 的汽車行駛記錄系統設計與實現。
本文引用地址:http://www.j9360.com/article/173902.htm本記錄儀采用Atmel 公司AT89C51ED2 單片機作為主控機,并行接口鐵電存儲器FM1808 作為大容量閃速存儲器,選用DS12C887 時鐘電路,利用高精度A/D 轉換器采集汽車傳感器轉換的模擬量,并直接記錄各種汽車信號的開關量。同時利用USB 口、IC 卡或串口實現與微機的數據通信,把汽車行駛記錄數據信息存儲到計算機上。汽車行駛記錄儀工作時,由單片機通過前端接口電路拾取汽車行駛狀態的各種信息, 包括車速、發動機轉速和車輛各種開關信號等。汽車行駛記錄儀以實時時鐘為基準, 把車輛信息按類別分別存入FRAM 和FLASH。需要從汽車行駛記錄儀中獲取汽車記錄狀態信息時,用戶插入優盤,單片機自動識別優盤并加載驅動程序,當完成設備枚舉和Bulk_Only 傳輸協議后,單片機就可以把汽車行駛記錄儀中記錄的狀態信息以文件的形式傳輸到優盤,也可以通過協議將信息以文件的形式傳輸到大容量的24C64 的IC 卡上。系統框架如圖1 所示。AT89C51ED2 單片機是汽車行駛記錄儀的核心,整個系統由數據采集模塊、信息處理、存儲模塊、時鐘模塊、通信模塊、顯示模塊和電源模塊組成。
考慮到汽車的復雜工況以及記錄儀的性價比,單片機至少為工業級產品,AT89C51ED2 是美國ATMEL 公司生產的低電壓,高性能CMOS 8 位單片機,片內含4k byte 的可反復擦寫的只讀程序存儲器(PEROM) 和128 bytes 的隨機存取數據存儲器(RAM),器件采用ATMEL 公司的高密度、非易失性存儲技術生產,兼容標準MCS-51 指令系統,片內置通用8 位中央處理器(CPU)和16KB 的Flash 存儲單元,2KB 的EEPROM,3 個16 位定時器,有看門狗和ISP 功能,同時具有封裝小、功耗低等優點,非常適合作為汽車行駛記錄儀的主控MCU 。
2 主控單元實現信息采集和數據處理設計
汽車行駛記錄儀要求實時記錄車輛行駛的各種狀態信息,MCU 主控單元把從外圍設備傳來的數據進行分析、處理并作出相應的指令。而其外圍設備主要包括開關量數據采集模塊、時鐘數據采集模塊、速度數據采集模塊、信息處理及存儲模塊設計、模擬量數據采集模塊。
2.1 開關量數據采集
如圖2 所示開關量數據采集示意圖。汽車行駛記錄儀要求實時記錄車輛行駛的各種狀態信息,如圖所示各種車輛開關量數據狀態信息,都必須經過光耦的隔離,并行輸入74HC573 中,然后經過74HC573 轉換成CPU 能接收的“0”或“1” 狀態信號,再由AT89C51ED2 進行接收,按一定的時間間隔傳送到存儲器相應的地址位。
2.2 速度數據采集設計
汽車速度的測量是通過計數速度傳感器產生的脈沖信號,脈沖信號經過抗擾度大于50% 施密特觸發器電路CD40106 傳送到AT89C51ED2 型單片機的P3.2 口,該單片機可設定一個守量器來計數速度脈沖信號, 并將其轉換成汽車的實際行程, 同時根據行程和時間可計算汽車行駛的速度,按一定的時間間隔傳送到存儲器相應的地址位。速度計算運行部分程序如下
2.3 信息處理及存儲設計
由于要求系統具有實時時間、日期及駕駛時間的采集、記錄、存儲功能;車輛行駛速度的測量、記錄、存儲功能;車輛行駛里程的測量、記錄、存儲功能;記錄儀應能以不大于0.2 s 的時間間隔,持續記錄并存儲停車前20 s 實時時間對應的車輛行駛速度值,及車輛制動狀態信號,記錄次數至少為10 次的功能。因此要有既滿足了數據存儲擦寫次數的要求,也有存儲量大和成本比較低的功能。RAMTRON 公司生產的并行接口高性能鐵電存儲器FM1808 是比較理想選擇產品,FM1808 具有100 億次的讀寫壽命,幾乎可以像RAM 那樣無限次寫入;廣泛應用于在系統掉電后需要可靠保存程序及數據的應用領域;
數據存儲模塊FM1808 的引腳如圖3 所示,AT89C51ED2 通過AD0~AD7 八位數據總線和FM1808 相連,AT89C51ED2 通過八位數據總線把記錄下來的整度、汽車的實時行駛狀態定時地傳送到存儲器的相應地址位置上(程序略)。
2.4 時鐘數據采集
本系統選用DS12887 時鐘電路。DS12887 是跨越 2000 年的時鐘電路,采用4 位數表示年度的日歷系統。DS12887 能夠自動存取并更新當前的時間,AT89C51ED2 通過讀DS12887 的內部時標寄存器得到當前的時間和日歷,也可通過選擇二進制碼或BCD 碼初始化電路的10 個時標寄存器。由于 圖3 FM1808 封裝及引腳排列數據采集以固定的秒間隔來進行,因此,系統只是在剛開始運行時和每個扇區的起始位置采集并存儲時鐘信號作為時間標記, 而后面數據的采集時間則以這些時間標記為參照。在本系統重新上電運行時, 需要記錄開始采集的時間信息。由于系統電源是由汽車電源提供的, 所以開始采集的時間也就是汽車啟動的時間, 以此作為汽車開始行駛的時間標記。在程序運行中, 由主程序設定一個汽車啟動標志, 在第一次寫數據之前汽車啟動標志有效, 然后首先判斷當前存儲地址是否有某個扇區的首地址, 如果是, 則根據寫扇區的要求在第七個字節開始處存儲當前的時鐘信號, 否則, 在當前存儲地址處開始用10 個字節存儲當前的時鐘信號,記錄汽車開始運行的起始時間,然后清除汽車啟動標志。扇區開始地址處記錄的時間信息是否是汽車開始運行的起始時間, 可根據前一個扇區記錄的時間信息進行判斷。若前后兩個扇區記錄的數據是連續的, 則后一個扇區頭記錄的時間信息不是表示汽車開始運行的起始時間,否則情況相反。
2.5 串口通信和USB 存儲設計
計算機可以通過串口讀取行駛記錄儀存儲的數據。行駛記錄儀與計算機之間的串口通信遵循RS232 協議。串行通信時,CPU 依次將Flash 中存儲的數據讀出并經P3.0(OUT) 串口發出,然后經過MAX232 電平轉換器送給計算機,再由計算機通過串口接收該數據。接收數據時, 計算機通過串口發送數據給MAX232 電平轉換器, MCU 經P3.1(IN) 串口接收。
用USB 進行數據的采集,目前市場上的USB 設備芯片比較多,而HOST 要少一些,選擇USB HOST 接口芯片主要考慮兩點:一是在硬件上比較容易和51 單片機相連接,二是軟件開發難度不太大,因此選擇SL811HST 比較合適。SL811HST 通過D0~D7 和AT89C51DE2 的P0.0~P0.7 來進行數據的交換。存儲器上存儲的數據也可以通過AT89C51DE2 的P3.4 和P3.5 口直接寫到24C64 的IC 卡上。
3 管理軟件的設計
由于國家對行駛記錄儀通信協議有具體的要求,因此行駛記錄儀和管理軟件的通信協議滿足國家規定要求。它將從記錄儀上傳來的各種信息進行歸類整理。利用Visual C++ 6.0 作為開發工具,編寫微機數據分析處理程序, 模擬顯示汽車運行時的狀態; 利用圖形顯示各分量的波形, 如前向燈開關情況、左右方向燈開關情況、開門信息、剎車信號、水溫變化情況(范圍為0℃~100℃) 等,并能實現文檔保存,也可以進行打印。4 結束語
本車輛充分發揮了AT89C51ED2 微控制器強大的功能、簡化了外圍電路設計,同時采用嵌入式USB 數據管理機制加上通過串口或IC 卡接收汽車行駛的數據,并對數據進行分析處理;不僅解決了以往車輛行駛記錄儀中數據難以管理的問題, 而且大大降低了硬件成本。采用本設計的車輛行駛記錄儀已應用到企事業單位的車輛管理中,實現了對車輛運營的透明化管理,節約了運營費用
評論