李庚森
摘要:該設(shè)計(jì)是基于Atmel公司的低成本8位微控制器AT89S8252作為單片機(jī)應(yīng)用系統(tǒng)核心,以電源變換模塊(DC / DC轉(zhuǎn)換控制電路芯片),信號(hào)采集模塊,可編程邏輯器件模塊,日期時(shí)鐘模塊,顯示模塊以及數(shù)據(jù)存儲(chǔ)模塊等為功能部件,采用硬軟件協(xié)同方式所開發(fā)的汽車行駛狀態(tài)記錄器。
關(guān)鍵詞:AT89S8252微控制器;單片機(jī)系統(tǒng);硬軟件協(xié)同設(shè)計(jì)
中圖分類號(hào):TP332 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)04-0221-03
為了有助于需要大量監(jiān)控汽車運(yùn)行狀況的相關(guān)行業(yè),如公共交通營(yíng)運(yùn)企業(yè)及其管理部門,同時(shí)也為監(jiān)控管理方提供一種低成本的車輛管理技術(shù)方法與手段。從營(yíng)運(yùn)單位日常維護(hù)成本及易于維護(hù)性上考慮,本文以低成本的AT89S8252微控制器及相關(guān)硬件集成為出發(fā)點(diǎn),逐步深入到應(yīng)用程序開發(fā),設(shè)計(jì)了這個(gè)嵌入式汽車行駛狀態(tài)記錄器。
嵌入式汽車行駛狀態(tài)記錄器作為汽車電子系統(tǒng)的重要組成部分,其模塊化的功能結(jié)構(gòu),可隨時(shí)與汽車電子系統(tǒng)接口快速連接使用的特性受到各相關(guān)方的高度關(guān)注。特別是如今以基于Android操作系統(tǒng)為搭載平臺(tái)的各種汽車電子設(shè)備層出不窮,但在汽車行駛狀態(tài)記錄器這種需要高實(shí)時(shí)性記錄各種行駛數(shù)據(jù)并且在一定情況下必須做出快速響應(yīng)的應(yīng)用設(shè)備來(lái)說(shuō),使用簡(jiǎn)單、實(shí)時(shí)性高的微控制器處理系統(tǒng)并利用在其上直接運(yùn)行應(yīng)用程序的方式可以以較低的成本優(yōu)勢(shì)在相關(guān)行業(yè)內(nèi)普及,起到預(yù)防駕駛員違章駕駛、管控車輛的作用。
1 設(shè)計(jì)功能
該汽車行駛狀態(tài)記錄器的功能主要包括以下幾個(gè)方面:
1)對(duì)汽車行駛的速度、里程等重要數(shù)據(jù)能夠?qū)崟r(shí)監(jiān)測(cè)并記錄。
2)對(duì)所記錄的信息具備輸出功能,可通過移動(dòng)存儲(chǔ)卡(IC卡)讀出,這些信息包括駕駛員信息(如姓名,工號(hào)等)和汽車信息(如車號(hào)等),為有關(guān)營(yíng)運(yùn)部門的檢查提供必要的數(shù)據(jù)。
3)安裝在汽車上的行駛狀態(tài)記錄器要提供簡(jiǎn)單易用的人機(jī)交互界面,以方便駕駛員輸入信息。同時(shí)還要有實(shí)時(shí)信息的顯示及具備汽車超速報(bào)警功能。
1.1 設(shè)計(jì)功能的宏觀實(shí)現(xiàn)過程
當(dāng)行駛狀態(tài)記錄器接通電源后,電源指示燈亮。
用戶根據(jù)主屏的提示依次插入IC卡,通過鍵盤輸入車號(hào)等有關(guān)信息。之后主屏?xí)@示速度和里程,同時(shí)顯示當(dāng)前的年,月,日,時(shí),分,秒等。
汽車啟動(dòng)后,主屏?xí)?shí)時(shí)顯示當(dāng)前的行駛速度和里程。如果超速,則超速報(bào)警燈亮。
到站停車前,按相應(yīng)的功能鍵,最后行駛狀態(tài)記錄器會(huì)進(jìn)行數(shù)據(jù)的保存工作。
在主屏提示“保存完成”后,可以拔出IC卡,關(guān)閉行駛狀態(tài)記錄器的電源。
2 硬件結(jié)構(gòu)分析
如圖1所示,AT89S8252微控制器是整個(gè)系統(tǒng)的核心,應(yīng)用程序通過直接運(yùn)行在其上的方式來(lái)高效地完成整個(gè)系統(tǒng)的運(yùn)行控制。
供電模塊的作用是將汽車電子系統(tǒng)內(nèi)部配電器提供的電壓轉(zhuǎn)換成記錄器的工作電壓。
信號(hào)采集模塊是指將汽車內(nèi)部感應(yīng)車輪轉(zhuǎn)速的霍爾傳感器傳過來(lái)的一對(duì)差分信號(hào)經(jīng)過適當(dāng)?shù)淖儞Q成一個(gè)脈沖信號(hào)提供給微控制器系統(tǒng)。
信息存儲(chǔ)模塊是指微控制器系統(tǒng)將采集到的數(shù)據(jù)信息經(jīng)過處理之后存儲(chǔ)到IC卡中,然后使用讀卡設(shè)備讀出IC卡中的信息,以進(jìn)行行駛分析。
微控制器系統(tǒng)還要用到可編程邏輯器件(PLD),它可以方便靈活地產(chǎn)生譯碼,控制等信息。
鍵盤輸入和液晶顯示是微控制器輸入輸出模塊,目的是為駕駛員提供方便的人機(jī)交互界面,駕駛員可以輸入信息,也可以看到實(shí)時(shí)的速度、里程以及時(shí)間等信息,以做出相應(yīng)的響應(yīng)判斷。
3 軟件設(shè)計(jì)
本設(shè)計(jì)的單片機(jī)采用的是Atmel公司的AT89S8252微控制器芯片,如圖2。該單片機(jī)兼容C51單片機(jī)的所有指令系統(tǒng)??紤]到C51單片機(jī)應(yīng)用范圍的廣泛,所以使用帶有uVision集成開發(fā)環(huán)境的Keil編譯器這個(gè)目前流行的C51單片機(jī)開發(fā)集成環(huán)境。
3.1 應(yīng)用程序流程設(shè)計(jì)
應(yīng)用程序流程設(shè)計(jì)是和汽車行駛狀態(tài)記錄器工作時(shí)的應(yīng)用模式(該應(yīng)用模式可設(shè)置)相對(duì)應(yīng)的,如圖3所示?,F(xiàn)以公交營(yíng)運(yùn)車輛為例,具體流程為:汽車啟動(dòng)后,將IC卡插入記錄器USB接口中,微控制器收到觸發(fā)信號(hào)后顯示屏提示輸入站號(hào),車號(hào)等信息,駕駛員通過鍵盤輸入信息。汽車開動(dòng)以后,顯示屏實(shí)時(shí)顯示汽車速度和當(dāng)次已行駛的里程信息。汽車到站以后,駕駛員按下功能鍵“FUNCTION”,輸入到站的站號(hào)。之前記錄下的行駛狀態(tài)數(shù)據(jù)存入到IC卡中。汽車在行駛過程中還要判斷有無(wú)超速,若有超速的話,除了記錄下發(fā)生超速的時(shí)間段和速度外,同時(shí)記錄器要發(fā)出超速警報(bào)提示。
可編程邏輯器件是對(duì)汽車內(nèi)部的車輪轉(zhuǎn)速傳感器(霍爾傳感器)所發(fā)來(lái)的一對(duì)差分信號(hào)進(jìn)行計(jì)數(shù),微控制器利用定時(shí)中斷對(duì)計(jì)數(shù)值進(jìn)行累加計(jì)算,從而得到速度等信息。在程序中不斷將當(dāng)前速度值和設(shè)定閥值作比較,如果速度超過設(shè)定閥值記錄器發(fā)出警報(bào)。
本記錄器使用了一個(gè)定時(shí)中斷和一個(gè)外部中斷。對(duì)于外部中斷,汽車到站以后,用戶按下“FUNCTION”鍵就會(huì)觸發(fā)此中斷,程序檢測(cè)到此中斷會(huì)執(zhí)行到站后的相應(yīng)操作。
主程序在檢測(cè)到汽車開動(dòng)以后,隨即進(jìn)入一個(gè)無(wú)限循環(huán),循環(huán)和中斷的配合實(shí)現(xiàn)了記錄器的所有功能。
3.2 程序流程設(shè)計(jì)中的關(guān)鍵程序開發(fā)
正如圖3程序流程圖所示,定時(shí)器程序開發(fā)對(duì)于主程序來(lái)說(shuō)非常關(guān)鍵。在本設(shè)計(jì)中使用了用于定時(shí)顯示速度、行駛里程等信息的工作在計(jì)數(shù)器方式的定時(shí)器0中斷和用于到站操作的外部中斷0。
主程序中設(shè)置:
TMOD = 0x06 ; // 定時(shí)器 0,8位,選擇計(jì)數(shù)器方式
定時(shí)中斷服務(wù)程序如下:
在定時(shí)中斷服務(wù)程序中的三個(gè)變量分別為circle_calc、ttcy、time_stat 。其中circle_calc表示汽車輪子轉(zhuǎn)速,它是由可編程邏輯器件通過霍爾傳感器計(jì)算獲得。Ttcy變量值是對(duì)circle_calc進(jìn)行累加的結(jié)果,在主程序中正是由它得到行駛里程信息。time_stat 變量是一個(gè)全局變量,它通過在定時(shí)中斷中不斷累加,以決定主程序中刷新速度和里程的更新顯示速率。
外部中斷采用經(jīng)典的中斷查詢方式,當(dāng)有外部中斷到來(lái)的時(shí)候做置位操作(中斷標(biāo)志位置1),通過主程序不斷輪詢此標(biāo)志位,發(fā)現(xiàn)被置位后進(jìn)行相應(yīng)的中斷處理。
外部中斷服務(wù)程序如下:
作為程序開發(fā)中最核心的是如何實(shí)時(shí)獲取行駛狀態(tài)數(shù)據(jù),其原理是汽車輪子每轉(zhuǎn)一周信號(hào)采集模塊都會(huì)提供一個(gè)計(jì)數(shù)脈沖信號(hào)SIG給可編程邏輯器件,然后可編程邏輯器件會(huì)將計(jì)數(shù)脈沖信號(hào)按日期時(shí)鐘芯片提供的SQW信號(hào)通過可編程邏輯器件中的timer模塊產(chǎn)生的鎖存信號(hào)suocun給其自身芯片中集成的sigcounter模塊,從而統(tǒng)計(jì)出定時(shí)的轉(zhuǎn)速信息,并且通過P0口發(fā)送給微控制器。
前面已經(jīng)提到,time_stat是一個(gè)全局變量,它在定時(shí)中斷程序中不斷累加,決定了主程序中刷新速度和里程的更新顯示速率。Circle_calc也為全局變量,它是通過中斷程序從P0口獲得的由可編程邏輯器件提供的單位時(shí)間(該時(shí)間由timer模塊決定)內(nèi)輪子所轉(zhuǎn)的圈數(shù)即轉(zhuǎn)速。
這里需要特別說(shuō)明的是一旦微控制器從P0口獲得已轉(zhuǎn)過的圈數(shù)信息后,可編程邏輯器件立即將igcounter模塊清0,這是由硬件實(shí)現(xiàn)的。
這樣微控制器獲取行駛狀態(tài)數(shù)據(jù)(速度和里程)的程序如下:
4 結(jié)束語(yǔ)
本文探討了基于AT89S8252嵌入式汽車行駛狀態(tài)記錄器的硬軟件協(xié)同設(shè)計(jì),其中既要考慮硬件系統(tǒng)的選型需要符合設(shè)計(jì)的要求及性價(jià)比,同時(shí)也要兼顧到硬件系統(tǒng)對(duì)軟件的支持以及所選硬件為軟件開發(fā)所帶來(lái)的便利性,這點(diǎn)非常重要。該汽車行駛狀態(tài)記錄器的功能主要由數(shù)據(jù)采集,鍵盤輸入,液晶顯示和數(shù)據(jù)存儲(chǔ)四大模塊構(gòu)成,采用AT89S8252微控制器實(shí)現(xiàn)這樣的系統(tǒng)確實(shí)非常合適。
參考文獻(xiàn):
[1] 肖洪兵, 李國(guó)峰, 李兵, 等. 80C51嵌入式系統(tǒng)教程[M]. 北京: 北京航空航天大學(xué)出版社, 2008.
[2] 曹家喆. 汽車電子控制基礎(chǔ)[M].北京: 機(jī)械工業(yè)出版社, 2007.
[3] 孫德文. 微型計(jì)算機(jī)技術(shù)[M].3版.北京: 高等教育出版社,2010.
[4] Atmel公司. AT89S8252芯片電子文檔[EB/OL].(2009-03)[2016-12]. http://www.dzsc.com/xinghao/AT89S8252.html.