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