基于單片機的車用數(shù)字儀表設(shè)計與實現(xiàn)
引言
車輛儀表是駕駛員與汽車進行信息交流的重要接口和界面,是車輛安全行駛的重要保證。隨著電子技術(shù)的廣泛應用,傳統(tǒng)汽車儀表逐漸被微處理器為核心的電子控制數(shù)字儀表取代已成為必然趨勢。然而,目前國內(nèi)車輛儀表數(shù)字化水平還不高,絕大部分儀表還是模擬式的,而大多數(shù)模擬儀表表頭的體積較大、數(shù)量多,使得顯示系統(tǒng)擁擠不堪,影響美觀;另外一些模擬儀表故障率高,增加了用戶的經(jīng)濟負擔,減小了車輛行使的安全系數(shù)。
為克服這些缺點,文中提出用51單片機、模/數(shù)轉(zhuǎn)換器件ADC0809及霍爾開關(guān)及數(shù)字式溫度傳感器DS18B20等對其進行技術(shù)改進,設(shè)計并實現(xiàn)了新型全數(shù)字儀表系統(tǒng),該儀表系統(tǒng)有顯示直觀準確、靈敏度高、使用壽命長、靈巧美觀、成本低等優(yōu)點。
1系統(tǒng)組成及工作原理
本系統(tǒng)功能由硬件和軟件兩大部份協(xié)調(diào)完成,硬件部分主要完成各種傳感器信號的采集、轉(zhuǎn)換,各種信息的顯示等;軟件主要完成信號的處理及控制功能等。
其工作原理是89C51單片機依次查詢各傳感器的輸出信號(氣壓、油壓等模擬傳感器輸出的模擬信號需要經(jīng)過ADC0809進行模數(shù)轉(zhuǎn)換); 然后89C51對輸入信號進行相應處理后通過顯示模塊44780輸出,同時還可輸出各種告警信號。
2硬件構(gòu)成
該系統(tǒng)硬件主要包括以下幾個模塊: 89C51主控模塊、傳感器模塊、ADC0809模/數(shù)轉(zhuǎn)換模塊、44780顯示模塊等。其中89C51主要完成外圍硬件的控制以及一些運算功能,傳感器完成信號的采樣功能,ADC0809完成將模擬信號轉(zhuǎn)換成數(shù)字信號的功能,44780顯示模塊完成字符、數(shù)字的顯示功能。
2.1 主控模塊
系統(tǒng)采用ATMEL公司生產(chǎn)的AT89C51單片機,它帶有4KB閃速式存儲器、128B內(nèi)存,最大工作頻率24MHz,同時,具有32條輸入輸出線,16位定時/計數(shù)器,5個中斷源,1個串行口。
2.2 溫度傳感器DS18B20
DS18B20是Dallas公司推出的單線數(shù)字式測溫芯片,它能在現(xiàn)場采集溫度數(shù)據(jù),并將溫度數(shù)據(jù)直接轉(zhuǎn)換成數(shù)字量輸出。DS18B20與AT89C51的接口電路圖如圖2所示,其中DS18B20工作在外部電源供電方式,單片機89C51采用P2.0和DS18B20通信。
2.3 44780顯示模塊
本系統(tǒng)采用44780驅(qū)動的LCD,HD44780(KS0062)是用低功耗CMOS技術(shù)制造的大規(guī)模點陣LCD控制器(兼帶驅(qū)動器),和4bit/8bit微處理器相連,它能使點陣LCD顯示大小寫英文字母、數(shù)字和符號等豐富的信息,同時有較強的通用性應用,使用方便,用戶能用少量元件就可組成一個完整點陣LCD系統(tǒng),送入相關(guān)的數(shù)據(jù)和指令就可實現(xiàn)所需的顯示。
44780顯示模塊有8條數(shù)據(jù)線,3條控制線??膳c微處理器或微控制器相連,通過送入數(shù)據(jù)和指令,就可使模塊正常工作,44780顯示模塊和89C51單片機連接電路如圖3所示。
需要說明的是,真正投入使用的顯示模塊需要根據(jù)車輛生產(chǎn)廠家對儀表顯示界面的具體需求到液晶生產(chǎn)公司定制。
2.4 A/D轉(zhuǎn)換模塊
由于本系統(tǒng)需處理多路模擬信號,故采用ADC0809 A/D轉(zhuǎn)換模塊,它采用逐次逼近的方法完成A/D轉(zhuǎn)換;其片內(nèi)帶有鎖存功能的8 路模擬開關(guān),可對8路0~5V的輸入模擬電壓信號進行轉(zhuǎn)換, 完成一次轉(zhuǎn)換約需100μs。其輸出具有TTL三態(tài)鎖存緩沖器,可直接接到單片機89C51的P0口。 ADC0809 與89C51接口電路如圖4所示。
2.5 測速傳感器
經(jīng)調(diào)查,速度傳感器是車輛傳感器中的易損器件,所以該系統(tǒng)對測速傳感器進行了改進,測速傳感器由霍爾開關(guān)、磁鐵組成。其工作原理是將霍爾開關(guān)和磁鐵分別安裝在車架、車輪的適當位置,車輛行駛時,在磁鐵的作用下,霍爾開關(guān)產(chǎn)生開關(guān)信號,通過在單位時間對其計數(shù)可計算出車輛的行駛的瞬時速度,累計開關(guān)信號可計算出車輛行使的距離。它具有靈敏度高、價格低廉、不易損壞等優(yōu)點。
2.6 其他模擬傳感器
氣壓、油壓、油量等參數(shù)的測量采用模擬傳感器,其輸出的模擬信號通過ADC0809模數(shù)轉(zhuǎn)換后輸入單片機89C51,經(jīng)過相應軟件處理后輸出。
[next]
2.7 抗干擾設(shè)計
由于本儀表系統(tǒng)是為汽車、摩托車設(shè)計的,而汽車、摩托車的點火系統(tǒng)有較強的電磁干擾,另外車輛移動性大,有可能處于較強電磁干擾的環(huán)境中,因此必須采取抗干擾措施,否則系統(tǒng)難以穩(wěn)定、可靠運行。本系統(tǒng)采用的是由硬件和軟件相結(jié)合的抗干擾措施。
具體地講,該系統(tǒng)主要采用了以下五個方面的抗干擾措施。
采用抗干擾電源:
單片機系統(tǒng)供電線路是干擾的主要來源,本系統(tǒng)的電源由車載電瓶提供,車輛的點火系統(tǒng)、音響設(shè)備等都可能對本系統(tǒng)產(chǎn)生干擾,為此,可將車載電瓶12V電源經(jīng)磁珠和電容組成π形濾波電路后,再經(jīng)過UA7805C變壓,然后經(jīng)過穩(wěn)壓、濾波得到本系統(tǒng)電源。另外給每個集成電路芯片都安置一個0.01mF的陶瓷電容器,來消除大部分高頻干擾。同時,良好接地是系統(tǒng)穩(wěn)定工作的重要條件,由于本系統(tǒng)既有模擬電路又有數(shù)字電路,因此設(shè)計時將數(shù)字地與模擬地要分開,最后只在一點相連。
光電隔離:
在I/O通道上采用光電隔離器,將單片機系統(tǒng)與各種傳感器、開關(guān)從電氣上隔離開來,很大一部分干擾可被阻擋。本系統(tǒng)的測速子系統(tǒng)輸出的開關(guān)信號經(jīng)光電隔離器4N33耦合至單片機P3.2口。
過壓保護電路:
本系統(tǒng)在輸入輸出通道上也設(shè)計了過壓保護電路,它由限流電阻和穩(wěn)壓管組成,以防止引入高電壓,損害單片機系統(tǒng)?!?/P>
另外,本系統(tǒng)中,為消除按鈕動作時產(chǎn)生抖動干擾,在按鍵與89C51間加入一個Schmitt觸發(fā)器74HC14。
模/數(shù)轉(zhuǎn)換電路的抗干擾措施:
本系統(tǒng)模/數(shù)轉(zhuǎn)換模塊ADC0809送出的數(shù)字信號經(jīng)鎖存器鎖存后傳送給單片機,鎖存器對干擾非常敏感,當鎖存線上出現(xiàn)干擾時,會盲目鎖存當前數(shù)據(jù),為此可將鎖存器與單片機設(shè)計在同一電路板上,使傳輸線上傳送的是已經(jīng)鎖存好的控制信號。設(shè)計軟件時,盡可能快地重復輸出同一個信號,以減小干擾信號影響的概率。
CPU抗干擾措施:
當干擾信號作用到單片機本身時,單片機將不能按正常狀態(tài)執(zhí)行程序,從而引起混亂。為此本系統(tǒng)采用了以下幾種方法。
人工復位:當微處理器失控時,可使用復位方法處理,使程序自動從0000H開始執(zhí)行。為此系統(tǒng)設(shè)置了復位鍵,當微處理器失控時,只要按下復位鍵,并持續(xù)10ms以上即可。
掉電保護:因為當車輛顛簸的路況時,可能引起電源等接觸不良,使系統(tǒng)陷入混亂狀態(tài),電源電壓恢復正常后,系統(tǒng)難以恢復正常。為此系統(tǒng)設(shè)計了掉電保護。掉電信號由硬件電路檢測到,加到單片機的外部中斷輸入端。將掉電中斷規(guī)定為高級中斷,使系統(tǒng)及時對掉電做出反應。在掉電中斷子程序中,首先進行現(xiàn)場保護,當電源恢復正常時,單片機重新復位,恢復現(xiàn)場,繼續(xù)工作。至于程序跑飛,可以用軟件陷阱和看門狗將程序拉回到復位狀態(tài)。具體的講,可以在RAM中埋一些標志,在每次程序復位時,通過這些標志,可以判斷復位原因并根據(jù)不同的標志直接跳到相應的程序。這樣可以使程序運行有連續(xù)性,用戶在使用時也不易察覺到程序被重新復位過。
3 軟件設(shè)計
該系統(tǒng)軟件主要由主程序、中斷子程序、數(shù)據(jù)采集與A/D轉(zhuǎn)換子程序、顯示子程序、告警子程序等六大模塊組成,因為C語言編寫的軟件易于實現(xiàn)模塊化,生成的機器代碼質(zhì)量高、可讀性強、移植好,所以本系統(tǒng)的軟件采用C語言編寫,在Keil Vision3 Demo版本的集成開發(fā)環(huán)境下進行編譯連接。
3.1主程序設(shè)計
主程序主要完成硬件初始化、子程序調(diào)用等功能,主程序流程圖如圖5所示。
3.2數(shù)據(jù)采集子程序設(shè)計
數(shù)據(jù)采集與A/D轉(zhuǎn)換子程序根據(jù)輸入?yún)?shù)對相應的模擬信號進行采樣、量化及處理,并將相應信號的數(shù)值返回主程序。
3.3顯示子程序設(shè)計
顯示子程序完成符號、數(shù)值的顯示輸出。
3.4中斷子程序設(shè)計
中斷子程序有三種中斷源:鍵盤、車輪(車輪每轉(zhuǎn)一圈產(chǎn)生一個中斷脈沖)及掉電保護電路,分別完成面板功能設(shè)置、測速功能和掉電保護。由于本系統(tǒng)中斷源共有6個,所以用優(yōu)先權(quán)編碼器(74LS148)對外部中斷源進行了擴展。
3.5告警子程序
主要實現(xiàn)異常情況下控制告警信號輸出。如當冷卻液溫度升高到接近沸點(例如95~98℃)時,或燃油箱內(nèi)的燃油量少于某一規(guī)定值時,音頻告警裝置會發(fā)出不同頻率的告警信號,同時相應的指示燈發(fā)亮(點亮告警指示燈的任務(wù)由顯示子程序來完成),以引起駕駛員的注意。
4 仿真與調(diào)試
4.1仿真器選擇
本系統(tǒng)選用ME-52單片機仿真開發(fā)系統(tǒng),它實時仿真頻率高達33MHz,提供2~24MHz的時鐘信號。同時它提供64KB程序代碼存儲器,支持仿真所有程序和數(shù)據(jù)地址空間,支持Franklin V3.xx/Keil 6.xx編譯連接工具。具有分別獨立控制項目文件的項目管理器。另外具有VC++風格的窗口駐留,窗口動態(tài)切分和工作簿模式窗口界面。
4.2仿真調(diào)試
在仿真調(diào)試階段,采用“自底向上逐步集成”的策略,逐模塊進行仿真測試,在此基礎(chǔ)上逐步集成。譬如可先仿真顯示模塊、測速子模塊、測溫子模塊等,然后將仿真成功的模塊逐個加入主程序進行仿真,在仿真過程中發(fā)現(xiàn)錯誤,采用“分塊壓縮策略”,快速找到并改正錯誤;注意在集成過程中出現(xiàn)問題,大多是由于模塊間資源使用沖突引起的。當軟件模塊仿真成功后,可與硬件一起進行在線仿真,此時在調(diào)試中出現(xiàn)的問題大多是由于連接線連接錯誤、虛焊、布線不合理等原因造成的。
5 結(jié)束語
隨著電子技術(shù)的廣泛應用,車輛儀表顯示屏幕的液晶化必將成為一種發(fā)展趨勢,文中提出利用51單片機和新型傳感器對車用儀表進行改進,目前原型機已取得成功。運行結(jié)果表明,新型數(shù)字儀表系統(tǒng)可靠性高、使用方便,下一步將在此基礎(chǔ)上開發(fā)綜合信息系統(tǒng),擴充顯示和控制的信息種類,如:交通地圖信息、行程信息、網(wǎng)絡(luò)信息、電話信息、控制空調(diào)系統(tǒng)及音響系統(tǒng)等,給用戶提供更大的方便。
評論