【正文】
,給人看上去每個(gè)數(shù)碼管總是在亮,以實(shí)現(xiàn)動(dòng)態(tài)顯示。中途等待子程序流程圖如圖 33 所示。 金 額 計(jì) 算顯 示NYNY清 零夜 晚 單 價(jià)切 換開(kāi) 始初 始 化按 鍵 掃 描 圖 31 主程序流程圖 里程計(jì)數(shù)中斷程序 每當(dāng) 按一次鍵 輸出一個(gè)低電平信號(hào),單片機(jī)定時(shí)器 0(工作在計(jì)數(shù)模式)就對(duì)其計(jì)數(shù)一次,相應(yīng)的變量設(shè)為 inter 就自加 1,當(dāng)里程計(jì)數(shù)器 inter 對(duì)里程脈沖計(jì)滿 500 次時(shí),對(duì)其自身進(jìn)行清零操作,為下一次計(jì)數(shù)做準(zhǔn)備,同時(shí)進(jìn)入里程計(jì)數(shù)中斷服務(wù)程序中,里程變量加 1,總金額根據(jù)此時(shí)所設(shè)單價(jià)做出相應(yīng)的變化。最后延時(shí) 5ms;依次循環(huán)掃描;利用數(shù)碼管點(diǎn)亮后的余暉和人眼視覺(jué)暫留 效應(yīng)即可實(shí)現(xiàn)動(dòng)態(tài)顯示。 74HC573 所對(duì) 應(yīng)真值表 21 如 表 。鍵盤(pán)去抖動(dòng)有專用的延時(shí)電路,也有專門的延時(shí)芯片,也可以用軟件去抖,考慮到電路的難易程度,從簡(jiǎn)化硬件的角度,本次設(shè)計(jì)采用軟件去抖動(dòng),用一個(gè)短延時(shí)程序,進(jìn)行鍵盤(pán)去抖操作。 3. 要特別注意的是 SDA 和 SCL 都是雙向傳輸線,平時(shí)均處于高電平備用狀態(tài),只有當(dāng)需要關(guān)閉時(shí)才使其鉗制在低電平,且僅在 SCL 為高電平時(shí)數(shù)據(jù)才能傳送,而當(dāng) SCL 為低電平時(shí)才允許數(shù)據(jù)發(fā)生變化。 該芯片內(nèi)的資料可在掉電情況下長(zhǎng)期保存。外接 12M 的晶振和兩個(gè) 30pF 電容組成系統(tǒng)的內(nèi)部時(shí)鐘電路,其中電容主要起到濾波、微調(diào)以及利用其充放電過(guò)程幫助單片機(jī)晶振啟振的作用 [1] 。 獨(dú)立 按鍵系統(tǒng) 可以調(diào)整單價(jià)等相關(guān)數(shù)據(jù),當(dāng)按下某按鍵,會(huì)給單片機(jī)相應(yīng)端口一低電平信號(hào),單片機(jī)會(huì)通過(guò)循環(huán)掃描檢測(cè)到此信號(hào),并根據(jù)預(yù)先設(shè)置好的程序做出相應(yīng)的處理;調(diào)整好的數(shù)據(jù)存儲(chǔ)到 EEPROM 中,掉電后可以使該數(shù)據(jù)不丟失,下次得電后直接從 EEPROMAT24C02 中讀到單片機(jī),并通 過(guò)數(shù)碼管實(shí)時(shí)顯示。從起步開(kāi)始,當(dāng)汽車行駛里程未滿 3 公里時(shí),均按起步價(jià)計(jì)算。 2. 寄存器分配、不同存儲(chǔ)器的尋址及數(shù)據(jù)類型等細(xì)節(jié)完全由編輯器自動(dòng)處理。 4. 通信方面。 附 錄 C 系統(tǒng)源程序 ................................................錯(cuò)誤 !未定義書(shū)簽。 計(jì)算程序的分析與設(shè)計(jì) .................................錯(cuò)誤 !未定義書(shū)簽。 里程計(jì)數(shù)中斷程序 .........................................錯(cuò)誤 !未定義書(shū)簽。 第 2 章 硬件設(shè)計(jì) .......................................................錯(cuò)誤 !未定義書(shū)簽。 出租車計(jì) 費(fèi) 器是單片機(jī)的一種典型應(yīng)用。里程檢測(cè)模塊脈沖代替輪轉(zhuǎn)實(shí)現(xiàn),控制模塊包括 AT89C52 單片機(jī),人機(jī)模塊包括獨(dú)立的按鍵模塊和 LED動(dòng)態(tài)顯示。 掉電存儲(chǔ)單元 .................................................錯(cuò)誤 !未定義書(shū)簽。 顯示程序 ........................................................錯(cuò)誤 !未定義書(shū)簽。 結(jié) 論 .........................................................................錯(cuò)誤 !未定義書(shū)簽。如數(shù)據(jù)采集、測(cè)控技術(shù)。如飛機(jī)、軍艦、導(dǎo)彈、魚(yú)雷制導(dǎo)、智能武器等。 5. 具有方便的模塊化編程技術(shù),使已編好的程序便于移植,可極大縮短開(kāi)發(fā)時(shí)間,增加程序的可讀性和可維護(hù)性。白天單價(jià)、夜晚單價(jià)、等待單價(jià)和起步價(jià)格都可通過(guò)獨(dú)立鍵盤(pán)進(jìn)行調(diào)節(jié)。芯片外圍電路最高可接入 40MHZ 的晶振( AT 單片機(jī)數(shù)值一般為 24MHZ)。但 P0 口不能同時(shí)作為地址 /數(shù)據(jù)總線和 I/O 使用。 事實(shí)上, AT24C02 為典型的支持 I2C 總線的器件,對(duì)其進(jìn)行編程時(shí)需遵守 I2C 總線的時(shí)序要求,以及 I2C 委員會(huì)對(duì)各種 I2C 芯片的地址分配規(guī)則。原理如圖 23 所示。由于溢出指示是采用發(fā)光二極管是否點(diǎn)亮表示,故必須選好參數(shù)以確保發(fā)光二極管正常工作。 由真值表可以看出,當(dāng) OE 為高電平時(shí),無(wú)論 LE 與 D 端為何電 平狀態(tài),其輸出均為高阻態(tài),此時(shí)芯片處于不可控狀態(tài)。另外,在主程序模塊中還需要設(shè)置啟動(dòng)/清除標(biāo)志寄存器、里程寄存器和價(jià)格寄存器,并對(duì)它們進(jìn)行初始化。計(jì)數(shù)初值可有以下公式獲得: X=(65536t)**10^6/12。程序流程圖如圖 34 所示。 K e y 3 = 0 ?白 天 單 價(jià) + 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白 天 單 價(jià) 1Y顯 示k e y 3 n u m + +開(kāi) 始N儲(chǔ) 存 白 天 單 價(jià)K e y 1 = 0 ?夜 晚 單 價(jià) + 1YK e y 2 = 0 ?YNNK e y 3 n u m = 3 ?N儲(chǔ) 存 夜 晚 單 價(jià)K e y 1 = 0 ?等 待 單 價(jià) + 1YK e y 2 = 0 ?夜 晚 單 價(jià) 1等 待 單 價(jià) 1K e y 3 n u m = 4 ??jī)?chǔ) 存 等 待 單 價(jià)K e y 1 = 0 ?起 步 單 價(jià) + 1K e y 2 = 0 ?起 步 單 價(jià) 1K e y 3 n u m = 5 ??jī)?chǔ) 存 起 步 單 價(jià)K e y 3 n u m = 0YYYNNNNYNYNNYNNK e y 4 = 0 ?白 天 、 夜 晚 單價(jià) 切 換YK e y 0 = 0 ?僅 顯 示 總 金 額與 起 步 價(jià) YNNY圖 35 鍵盤(pán)程序 按鍵檢測(cè)流程圖 36 所示。