采用μPD78F0034單片機的出租車計費器方案設(shè)計與實現(xiàn)
本文引用地址:http://www.ex-cimer.com/article/171364.htm
1.2 通信模塊
圖3所示為通信模塊組成圖,它主要由單片機的兩個I/O口、MAX232和一些電阻電容等組成。圖中電阻均為10kΩ,電容均為10μF;單片機的P30為串行數(shù)據(jù)接收腳、P31為串行數(shù)據(jù)發(fā)送腳,通信的波特率設(shè)為9600。圖中,MAX232芯片的作用是將單片機輸出的TTL電平轉(zhuǎn)換成PC機能接收的232電平或?qū)ⅲ校脵C輸出的232電平轉(zhuǎn)換成單片機能接收的TTL電平。計費器通過通信模塊與PC機或手持式資料傳數(shù)器進行串行通信,以便設(shè)置計費器的各種參數(shù)及采集計費器里存儲的各種數(shù)據(jù)。
1.3 按鍵及顯示模塊
按鍵及顯示模塊如圖4所示,該模塊由4片4511、1片4028、1片2003、20個數(shù)碼管及一些發(fā)光二極管(作為計程、計時收費指示燈)組成。計費器有6個功能鍵,而實際上對外只有四個按鍵,分別設(shè)為A、B、C、D鍵??哲嚑顟B(tài)按下C鍵,計費器進入載客模塊;空車狀態(tài)按下B鍵,計費器進入通信模塊;空車狀態(tài)按下A鍵,計費器進入查詢模塊,然后按A鍵往上查詢、按D鍵往下查詢。另兩個功能按鍵放在計費器內(nèi),用跳線J1、J2表示。在空車狀態(tài),J1短路時,計費器清除存儲的所有數(shù)據(jù);當(dāng)計費器復(fù)位時,如J2短路,計費器直接進入資料傳輸模塊(此功能主要為了防止計費器內(nèi)資料紊亂或新計費器沒有資料時進入死循環(huán))。
1.4 防作弊及脈沖輸入模塊
防作弊及脈沖輸入模塊如圖5所示。為了提高計費器的抗干擾能力,脈沖輸入信號采用了光耦方式。出租車的脈沖傳感器通常有兩種,即單信號脈沖傳感器和雙信號脈沖傳感器;所謂單信號脈沖傳感器指的是出租車開動時,只有一條信號線輸出脈沖信號;而雙信號脈沖傳感器指的是出租車開動時,有兩條信號線同時輸出幅度相同、相位相反的脈沖信號。與此對應(yīng),防作弊方式有單信號防作弊和雙信號防作弊兩種。究竟選哪種,可由計費器內(nèi)的選項及硬件跳線來決定。
a 單信號防作弊的工作原理
如圖5所示,當(dāng)計費器通過選項選定單信號防作弊方式后,跳線開關(guān)B與A相連、B與C斷開,單片機通過P35使開關(guān)與K點相連。當(dāng)有脈沖輸入時,INT0產(chǎn)生一中斷,單片機執(zhí)行中斷子程序;然后通過P35使開關(guān)與K點斷開,即斷開脈沖傳感器的電源,此時檢測P36的電平,如為低,則為正常,為高則為作弊脈沖。當(dāng)作弊脈沖累積到一定數(shù)量(此數(shù)值由計費器的參數(shù)設(shè)定)后,計費器便認(rèn)定有作弊發(fā)生,于是報警,同時產(chǎn)生一系列動作如車資、計程公里和計程時間全部清零或者鎖死計費器等,究竟產(chǎn)生何種動作,可由選項來決定。
b 雙信號防作弊的工作原理
當(dāng)計費器選定雙信號防作弊后,跳線開關(guān)B與C接通、B與A斷開。當(dāng)有脈沖輸入時,INT0產(chǎn)生一中斷,單片機執(zhí)行中斷子程序,此時單片機須判別P36腳輸入的信號是否為低電平,為低則正常,否則為作弊脈沖。其余與單信號防作弊時一樣。
1.5 電源模塊
該模塊為一開關(guān)電源,用于將輸入的12V直流電源變?yōu)榉€(wěn)定的5V電源。由于12V電源由出租車上的電瓶提供,有一定的分散性,尤其當(dāng)電瓶質(zhì)量不好時,12V電源較低。而開關(guān)電源的適用范圍較廣,且驅(qū)動能力較強,因此,使用開關(guān)電源可有效防止因輸入電壓過低而產(chǎn)生的各種故障。
2 軟件設(shè)計
該計費器的軟件設(shè)計主要由兩部分組成,一是單片機的軟件設(shè)計,二是PC機的軟件設(shè)計。由于二者均采用模塊化設(shè)計方法,因此,該程序結(jié)構(gòu)清晰,便于今后修改及升級。鑒于篇幅的限制,下面只介紹這兩部分的設(shè)計流程。
2.1 單片機的軟件設(shè)計
單片機的軟件設(shè)計流程如圖6所示。其中初始化模塊由硬件初始化和軟件初始化兩部分組成,硬件初始化主要是對單片機及其它相關(guān)芯片進行初始化;而軟件初始化主要是對各種軟件標(biāo)志進行初始化,同時將斷電前保存的各種狀態(tài)數(shù)據(jù)讀入單片機的RAM中;然后根據(jù)選項決定是否要識別司機卡、以及是直接回到空車狀態(tài)還是回到斷電前計費器所處的載客狀態(tài)(如復(fù)位選項為0,則計費器復(fù)位后直接回到空車狀態(tài);而在為1時,如斷電前計費器處于載客狀態(tài),則復(fù)位后回到載客狀態(tài),如斷電前計費器處于非載客狀態(tài),則復(fù)位后直接回到空車狀態(tài))。圖中的每個模塊均由許多子模塊組成,如載客模塊應(yīng)包含計程計費、計時計費、打印車票、暫停、客次數(shù)據(jù)寫入RAM中等子模塊;而查詢則包括查詢當(dāng)天累計數(shù)據(jù)、總累積數(shù)據(jù)及客次記錄等子模塊。每個模塊均可通過按鍵回到空車模塊(圖中未畫出)。
2.2 PC機的軟件設(shè)計
由于VB6.0有串行通訊MSComm(電話盒)控件來為應(yīng)用程序提供串行通信,且具有良好的用戶界面及簡單方便的串行通信功能,因此,無須借用其它語言就可以開發(fā)出優(yōu)秀的通信軟件。PC機軟件主要由以下幾個模塊組成:計費資料修改及傳輸、打印命令數(shù)據(jù)修改及傳輸、選項數(shù)據(jù)修改及傳輸、采集當(dāng)天累積、采集總累積和采集客次記錄等(由于篇幅的限制,這里沒有給出程序流程圖)。由于軟件中設(shè)置了下拉式菜單及各種控制按鈕,因此,直接用鼠標(biāo)點擊控制按鈕或下拉式菜單即可完成相應(yīng)的操作(當(dāng)然,也可通過按下快捷鍵來實現(xiàn))。計費資料、打印命令數(shù)據(jù)及選項數(shù)據(jù)均各自存于一文本文件中;此外,該軟件還設(shè)置了各種口令,可防止無關(guān)人員非法修改數(shù)據(jù)。
3 設(shè)計時應(yīng)注意的問題
該計費器的選項多達64個,功能齊全,能適應(yīng)不同地區(qū)的需要,但軟件編程及調(diào)試也比較復(fù)雜,需要特別小心。為了使計費器能夠穩(wěn)定、可靠地工作,進行軟、硬件設(shè)計時要注意以下幾點:
(1)為了防止計費器死機,軟件編程時應(yīng)采用指令冗余技術(shù)、軟件陷阱技術(shù)以及軟件看門狗技術(shù)。有興趣者可查閱參考文獻。
(2)由于司機卡、采集卡、收費卡共用一個IC卡接口,因此,主控模塊要注意區(qū)分卡的類型,應(yīng)按照IC卡的有關(guān)控制命令正確編程。
(3)盡量不用IC插座。由于IC插座有較大的分布電容,因此,應(yīng)把IC直接焊在印刷電路板上。每個IC應(yīng)加一個去耦電容,去耦電容在印刷電路板上的引腳要盡量短。另外,石英晶體的外殼也要接地。
(4)由于計費器采用開關(guān)電源,因此,設(shè)計時第一要在開關(guān)管的C、E極間加RC吸收電路。并在二次整流回路的整流二極管兩端加RC吸收電路以抑制浪涌電壓。第二要加厚開關(guān)管與散熱片之間絕緣墊片的厚度,以減少開關(guān)管與散熱片之間的耦合電容。第三要使用電源濾波器。因為在電源的輸入端加入濾波器可以抑制輸入端的瞬態(tài)干擾;直流電源的輸出端也要接入電容濾波器,以將輸出電壓的紋波限制在一定范圍內(nèi),同時抑制數(shù)字信號產(chǎn)生的脈沖干擾。第四還應(yīng)采用屏蔽措施來進一步減少開關(guān)電源的干擾。
4 結(jié)束語
本計費器的設(shè)計由于采用了功能很強的單片機μPD78F0034、電源監(jiān)控和看門狗芯片MAX705及單、雙信號防作弊技術(shù),因而基本上杜絕了出租車在營運過程中計費器的死機現(xiàn)象及作弊現(xiàn)象。從使用情況看,該計費器穩(wěn)定性好、可靠性高、返修率很低。另外,由于采用了模塊式結(jié)構(gòu)和在系統(tǒng)可編程方法,因此,其軟件的修改和升級也非常方便。
評論