出租車計價器設計與制作
設計并制作一臺出租車計價器。調試時采用10Hz方波信號模擬,每個方波代表10m。基本要求:
(1)不同情況具有不同的收費標準
白天 1元/公里 晚上 2元/ 公里 途中等待(30s)1元/30s
(2)數據輸出(6位LED數碼管顯示)
單價輸出2位 路途輸出2位 總金額輸出2位
(3)按鍵(3個)
啟動計價開關 數據復位(清零) 白天/晚上轉換
3.4.1模塊1:系統設計
(1)分析任務要求,寫出系統整體設計思路
通過分析,需要實現四個主要的功能模塊,分別為脈沖計數模塊、定時器計時模塊、按鍵的處理以及數碼管動態掃描等功能。
定時器計時模塊主要完成途中等待(即沒有脈沖來時)30秒的計時。在啟動鍵按下后,定時器就不停的計時,只要有脈沖來就將計時的值清除為零。如果沒有脈沖來,當計時超過30秒時,相應的總金額要按照收費標準計價。
中斷的管理:盡管中斷有嵌套以及優先級的功能,但是由于定時器已經使用一個了中斷資源,脈沖檢測不宜再采用中斷方式,而是采用查詢方式。由于需要不停的要清除30秒的計時,因此,脈沖的計數不采用定時器的計數方式。
啟動鍵觸發定時器開始工作,而定時器的運行可以作為脈沖計數的標志,只要定時器計時在運行,每來一個中斷都應該計數。
主程序完成鍵盤的掃描和按鍵的處理,查詢脈沖產生的中斷,并完成脈沖的計數。每個脈沖代表10米,則當計數到100時表示1千米的距離,相應的總金額要按照收費標準計價
(2)選擇單片機型號和所需外圍器件型號,設計單片機硬件電路原理圖
采用MCS51系列單片機At89S51作為主控制器,外圍電路器件包括數碼管驅動、獨立式鍵盤、復位電路等。硬件電路原理圖如圖3-9所示。
數碼管驅動采用2個四聯共陰極數碼管顯示,由于單片機驅動能力有限,采用74HC244作為數碼管的驅動。在74HC244的7段碼輸出線上串聯100歐姆電阻起限流作用。
獨立式按鍵使用上提拉電路連接,在沒有鍵按下時,輸出高電平。P0口用于輸出7段LED共陰極顯示代碼,P2口用于輸出低電平有效的位選碼。0~9的7段LED共陰極顯示代碼:3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。
(3)分析軟件任務要求,寫出程序設計思路,分配單片機內部資源,畫出程序流程圖
軟件的任務要求包括定時器的設置、按鍵的掃描、按鍵的功能處理、脈沖的計數、路途等待超30秒的計時以及總金額的計算等。
程序設計的思路:使用中斷方式對定時器的溢出進行計數實現30秒的計時。主程序采用查詢外部中斷標志實現脈沖的計數,由于每個脈沖代表10m,因此,當脈沖計數超過100時,計價器按照收費標準計價。主程序在初始化變量和定時器參數設置之后,進入一個循環結構,循環掃描鍵盤、查詢脈沖的中斷、數碼管的動態掃描等功能,當脈沖的中斷標志被查詢到,若路途等待時間未超30秒時,要及時將路途等待時間的值清除為零。主程序的流程圖如圖3-12所示。
圖3-12 出租車計價器的主程序流程圖
評論