基于單片機的汽車組合電子儀表
2、硬件描述
圖1
? PLL:外部晶振32.768k;內部總線倍頻至4M;
? SCI:用于上位機通訊,比特率9600,中斷方式;
? SPI:時鐘1M,作為MC33970的控制,用兩個通用管腳作為SPI的片選信號;
? LCD:使用26×4模式,即26前極、4背極的模式,動態驅動;因為設計中用到6位LCD模塊,所以使用FP1~FP12、BP0~BP3已經足夠;
? Flash:利用常駐內存函數(ROM-Resident Routine)將里程數據以32位數據的形式保存于用戶閃存中。
選取SWITEC公司出品的步進電機作為執行器。六位筆段式動態驅動液晶模塊,用于里程,單次里程或時間日期的顯示。出于習慣,汽車儀表需要一直保持帶電狀態,無需重置時間參數,為了方便演示,用兩個按鈕實現LCD顯示模式的切換。六個發光二極管分別用于顯示制動、危險、機油壓力、電瓶、發動機以及空檔信息,利用MC1413作為發光二極管的驅動。
MC33970由微控制器的SPI直接驅動;車速和發動機轉速為脈寬調制信號或來自串口輸入,通過定時器模塊的輸入捕捉功能得到其頻率,換算得數據。
(1) 電源及掉電保護
輸入端使用7805。為了在掉電的時候也可以及時地保存里程數據,在電源地輸入端加一個1000uF或兩個470uF的電解電容。電源斷開的時候在IRQ管腳會產生一個中斷信號,大電容可以維持單片機電源足夠長的時間,使得單片機可以完成外部中斷的服務程序。
(2)調理電路
為了改善波形,在定時器管腳外添加了調理電路。
(3)整體設計
本設計面向的是市場上的中低檔轎車,為了表現這個初衷,根據長安轎車的儀表外殼及內部尺寸設計了儀表的PCB,并重新布局。
圖2 系統框圖
(1) 初始化函數
內部總線倍頻至4M;設置定時器模塊的通道為捕捉功能;SCI波特率9600,開接收中斷;SPI時鐘頻率1M;LCD模塊26×4模式;使能Real Time Clock模塊;MC33970與指針初始化;從用戶Flash中讀取先前記錄的里程數據,并根據ODO/TRIP信號加以顯示。
(2) 中斷服務程序
? 外部中斷:斷電后短時間內利用大電容的放電使指針回零。
? SCI中斷:遵循一定的上位機協議,接受命令,改變LCD顯示內容;改變車速和轉速數據。
? RTC中斷:每秒記錄一次里程數據;根據車速信號換算里程數據。
(3) 主函數
定時讀取里程數據,并在LCD上顯示;每一次主循環結束的時候重啟WATCHDOG;當車速或轉速信號改變之后通過指針位置的變化作出反應。
圖3 主程序流程圖
評論