【正文】
極管是否點亮表示,故必須選好參數(shù)以確保發(fā)光二極管正常工作。 由于數(shù)碼管內(nèi)部二極管點亮?xí)r 需要 5mA 以上的電流,而單片機的輸出電流還不到 1mA,所以數(shù)碼管與單片機連接時需加驅(qū)動電路,可以使用上拉電阻的方法,也可以使用專門的驅(qū)動芯片,考慮到復(fù)用單片機 I/O 接口,節(jié)省單片機 I/O資源,此次設(shè)計采用 74HC573 鎖存器,其輸出電流較大,電路接口簡單且可直接驅(qū)動數(shù)碼管顯示。 OE11D22D33D44D55D66D77D88D9GND10 LE 118Q 127Q 136Q 145Q 154Q 163Q 172Q 181Q 19V CC 2074 H C5 73GNDP 1. 6 圖 24 74HC573 的引腳分布 OE :為三態(tài)允許輸入端 (低電平有效 ),也可稱作輸出允許端; 1D8D 為數(shù)據(jù)輸入端; 1Q8Q 為數(shù)據(jù)輸出端; LE 為鎖存允許端。 表 21 74HC573 真值表 INPUT OUTPUT OE LE D Q L H L L L X H X X H Q0 Z 其中 : H— 高電平 。 由真值表可以看出,當(dāng) OE 為高電平時,無論 LE 與 D 端為何電 平狀態(tài),其輸出均為高阻態(tài),此時芯片處于不可控狀態(tài)。當(dāng) OE 為低電平時,若 LE 為 H,則 D 與 Q 同時為 H 或者L,數(shù)據(jù)實現(xiàn)直通傳送;而當(dāng) LE 為 L 時,無論 D 為何狀態(tài) Q 都保持上一次的數(shù)據(jù)狀態(tài),數(shù)據(jù)被鎖存住,利用此特性即可實現(xiàn)對數(shù)碼管的控制。控制顯示時先給 高電平,使通道打開,接著送字碼,然后把 電平拉低,使字碼保持住;之后打開 (送高電平),緊接著送位碼 ,控制要顯示的位,然后把 拉低,數(shù)據(jù)被保持。 數(shù)碼管動態(tài)顯示電路如圖 25 所示。另外,在主程序模塊中還需要設(shè)置啟動/清除標(biāo)志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。 當(dāng)出租車運行后,就啟動計價器,根據(jù)里程寄存器中的內(nèi)容計算和判斷行駛里程是否已超過起步價公里數(shù)。程序流程如圖 31 所示。里程中斷子程序如圖 32 所示。計數(shù)初值可有以下公式獲得: X=(65536t)**10^6/12。 TL=X%256。 用定時器作為基準(zhǔn),可使測試的等待時間更為精確(可以精確到 uS 級);且每隔 5 秒比較一 次,能有效減小誤判率,避免把汽車低速行駛誤認(rèn)為靜止等待處理。 C C = 1 0 0 ?二 者 相等 嗎 ?5 0 m s了 嗎 ?變 量 c c + +YYN與 前 一個 5 s 比 較變 量 d d + +YND D = 1 2 ?等 待 時 間 + +YN返 回T 1 計 時 開 始N開 始 圖 33 中途等待中斷子程序流程圖 費用計算程序 計算程序根據(jù)里程數(shù)分別進入不同的計算公式。程序流程圖如圖 34 所示。要想每位顯示不同的字符,就必須采用動態(tài)掃描的方法輪流點亮各位 LED,即在每一時刻只使某一位顯示字符。如此循環(huán)操作,使每位分時顯示該位應(yīng)該顯示的字符 [7] 。 鍵盤程序 鍵盤采用查詢的方式,放在主程序中,當(dāng)有按鍵按下的時候,在相應(yīng) I/O 口產(chǎn)生一次低電平,當(dāng)單片機查詢出該低電平后便轉(zhuǎn)入進行處理,處理結(jié)束返回。 K e y 3 = 0 ?白 天 單 價 + 1返 回K e y 3 n u m 為 真K e y 3 n u m = 1 ?K e y n u m = 2 ?K e y 1 = 0 ?NYYNk e y 3 n u m = 0 ?K e y 2 = 0 ?YYN白 天 單 價 1Y顯 示k e y 3 n u m + +開 始N儲 存 白 天 單 價K e y 1 = 0 ?夜 晚 單 價 + 1YK e y 2 = 0 ?YNNK e y 3 n u m = 3 ?N儲 存 夜 晚 單 價K e y 1 = 0 ?等 待 單 價 + 1YK e y 2 = 0 ?夜 晚 單 價 1等 待 單 價 1K e y 3 n u m = 4 ?儲 存 等 待 單 價K e y 1 = 0 ?起 步 單 價 + 1K e y 2 = 0 ?起 步 單 價 1K e y 3 n u m = 5 ?儲 存 起 步 單 價K e y 3 n u m = 0YYYNNNNYNYNNYNNK e y 4 = 0 ?白 天 、 夜 晚 單價 切 換YK e y 0 = 0 ?僅 顯 示 總 金 額與 起 步 價 YNNY圖 35 鍵盤程序 按鍵檢測流程圖 36 所示。0x7f(共陽極時加入 amp。 改動如下: 1. 當(dāng)里程值大于 30(實際對應(yīng)大于 3 公里)且無進位時,溢出指示燈不亮,總金額 =起步價 +(里程十位數(shù)字 2) *運行單價 +等待 單價 *等待時間; 2. 當(dāng)里程值小于 30(實際對應(yīng)小于 3 公里),肯定無進位,溢出指示燈不亮,總金額 =起步價 +等待單價 *等待時間; 3. 有進位,溢出指示燈點亮,表示里程一定大于三公里,只需執(zhí)行總金額 =起步價 +7*運行單價 +(里程十位數(shù)字 +1) *運行單價 +等待單價 *等待時間 即:總金額 =起步價 +(里程十位數(shù)字 +8) *運行單價 +等待單價 *等待時間; 結(jié)果分析與性能改進 經(jīng)過反復(fù)調(diào)試驗證,基于 AT89C52 單片機的出租車計費器滿足了所要求的功能要求,所有器件均較為普通,價格合理,但是此計費器若要用于實踐 ,還需要改進。 其原理如圖 42 所示 。