基于SmaU RTOS51的汽車動態稱重儀的設計
3.3 顯示和通訊模塊
顯示驅動采用SN74HC595,是一款串行輸入并行輸出的移位寄存器,僅需3根I/O端口線即可控制6個數碼管和8個發光二極管,極大節省了單片機的資源,電路如圖3所示。本文引用地址:http://www.104case.com/article/197891.htm
通訊模塊采用MAX232,并采取光隔離設計,以提高儀表的抗干擾能力,如圖4所示。
3.4 按鍵和外部看門狗電路
鍵盤采用典型的4x4矩陣薄膜按鍵鍵盤,用來設置儀表參數。為了提高儀表的抗干擾能力,增強儀表的穩定性,采用外部看門狗復位電路。選用的器件是MAX813,電路如圖5所示。
4 系統軟件設計
4.1 Small RTOS51簡介
Small RTOS5l是一個專門為5l系列單片機設計的嵌入式實時操作內核,使用Keil編譯器可以直接使用其代碼,其特點:①公開源代碼。只要遵循許可協議,任何人可以免費獲得源代碼,便于用戶的二次開發。②可移植性。用戶可以把與CPU有關的控制指令壓縮到最小。可以使用ANSIC編寫應用程序,不僅簡化了編程手段,而且便于程序移植。⑧可固化性。Small RTOS51為嵌入式系統設計,可以嵌入到產品中,成為產品的一部分。④占先式運行。Small RT0S51可以管理16個用戶任務,每個任務可以設置不同的優先級。Small RTOS5l總是運行優先級最高的任務。⑤中斷管理。采用中斷管理方式.當有更高級的中斷申請時,將目前正在執行的任務掛起。如果優先級更高的任務被中斷喚醒,則高優先級的任務在中斷嵌套結束后立刻執行。中斷嵌套層數可達255層。若需要,可以禁止中斷的嵌套管理。⑥RAM需求小。SmallRTOS51為小RAM的系統設計,因而對RAM的需求只有幾百字節,相應的系統服務也少。
4.2 系統軟件實現
按照儀表所要實現的功能,將整個系統劃分為多個并行的任務,占先式操作內核對任務的調度是按照任務優先權的高低進行。這里將系統劃分為8個任務,按其優先級從高到低的順序排序。用操作系統提供的任務建立函數OS一TaskCreate來實現。
(1)Task_AD負責接收A/D轉換后的數據,即信號的采樣,并判斷是否為汽車軸重數據,若是就保存。通過中斷服務程序接收A/D轉換后的數據,讀取完成會發一個信號量AD_Sem,Task_AD任務接收到AD_Sem信號量后開始判斷是否保存數據。如果任務檢測到一個軸完整通過稱臺,就發送相應軸的消息到數據處理任務。
(2)Task_Identify負責識別汽車的軸型和汽車是否完全通過稱臺。根據國家規定,不同軸型的汽車限載不同,所以動態稱重時,儀表要自動識別汽車軸型,然后根據該軸型汽車的限重判斷其是否超載。該任務還通過掃描車輛分離器的信號,識別車輛是否完全通過稱重臺面。若識別到車輛完全通過稱臺,就發送End_Sem信號量。
(3)Task_Comm_Rece負責接收來自上位機的命令和回應儀表的發送請求。儀表通過上位機發來的不同命令執行相應的操作。
(4)Task_Key負責按鍵的掃描和識別。
(5)Task_Data負責稱重數據的處理。當該任務接收到來自Task_AD任務發送的軸信息后,開始處理該軸的數據。通過稱重算法計算出該軸的重量。并將重量以信息的方式發送給Task_Display任務。
(6)Task_Display負責顯示重量和參數。該任務接收到數據處理發來的信息,將顯示該軸的重量,如果儀表檢測到汽車已完全通過稱臺,顯示汽車總重。如果Task_Key任務掃描到參數鍵按下時,切換到參數顯示狀態。
(7)Task_End負責汽車完全通過稱臺后的一系列處理工作,包括總重累加,軸組重量統計,軸型統計。處理完后向數據通訊信息隊列發送信息,通知數據發送任務向上位機發送相應數據。
(8)Task_Comm_Send負責向上位機發送數據,當該任務接收到通訊消息后,根據不同的信息值向上位機發送不同的數據,例如,若汽車正向通過稱重臺面,則通訊信息值為1,Task_Comm_Send接收到該消息后會向上位機發送車輛的重量信息和軸型信息。若汽車反向通過稱重臺面,則通訊信息值為0,Task_Comm_Send接收到該信息會向上位機發送車輛的倒車信息。
評論