版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于STC89C52單片機(jī)出租車計(jì)價(jià)器設(shè)計(jì)</p><p><b> 摘 要</b></p><p> 隨著城市建設(shè)日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展?,F(xiàn)在各大中城市出租車行業(yè)都已普及自動(dòng)計(jì)價(jià)器,所以計(jì)價(jià)器技術(shù)的發(fā)展有很好的前景。盡管小城市尚未普及,但計(jì)價(jià)器的普及也是毫無(wú)疑問(wèn)的,所以未來(lái)汽車計(jì)價(jià)器的市場(chǎng)還是十分有潛力的。<
2、/p><p> 出租車計(jì)價(jià)器是單片機(jī)的一種典型應(yīng)用?;趩纹瑱C(jī)的計(jì)價(jià)器是由單片機(jī)和外部電路組成。包括檢測(cè)模塊,控制模塊,人機(jī)模塊。里程檢測(cè)模塊由A44E構(gòu)成,控制模塊包括STC89C52單片機(jī)和AT24C02,人機(jī)模塊包括獨(dú)立鍵盤和LED動(dòng)態(tài)顯示。</p><p><b> 系統(tǒng)性能指標(biāo)</b></p><p><b> 1.設(shè)定價(jià)
3、格;</b></p><p> 2.顯示當(dāng)前單價(jià)、行駛里程和總金額;</p><p> 3.里程精確到0.1公里。</p><p> 通過(guò)多次調(diào)試系統(tǒng)性能達(dá)到設(shè)計(jì)要求。</p><p> 關(guān)鍵詞:STC89C52,霍爾傳感器A44E ,I2C總線,動(dòng)態(tài)顯示</p><p> Design of T
4、aximeter Based on STC89C52</p><p><b> ABSTRACT</b></p><p> With the rapid development of city constriction, the taxi industry which symbolizes the cityscape also has an accelerated
5、 progress. Nowadays the automatic taximeter has been widely used in taxi industry in many cites. Therefore, the development of automatic taximeter is doomed. Although automatic taximeter is not spread in some towns, ther
6、e is no doubt that it would be popularized. Thus, in future the business of automatic taximeter is still potential. </p><p> One typical application of single chip computer is automatic taximeter. The hardw
7、are of this design is composed of single chip computer and peripheral circuits which consist of Detection Unit, Processing Unit and Human Computer Interaction Unit. The Detection Unit is based on Hall-effect sensor. The
8、Processing Unit contains STC89C52 and AT24C02. Human Computer Interaction Unit is composed of keyboard and LED.</p><p> The function of this system includes as follows:</p><p> Set the unit pr
9、ice;</p><p> Display the unit price, total amount and mileage.</p><p> Accuracy: 0.1km. </p><p> After repeatedly debugging, the performance of this system is reached the design
10、requirements. </p><p> KEY WORDS: STC89C52, Hall-effect sensor, A44E, I2C Bus, Dynamic display</p><p><b> 目 錄</b></p><p><b> 前 言1</b></p><p>
11、; 第1章 系統(tǒng)工作原理3</p><p> 1.1功能要求3</p><p> 1.2基本原理3</p><p> 第2章 硬件設(shè)計(jì)5</p><p> 2.1 單片機(jī)最小系統(tǒng)單元5</p><p> 2.2 霍爾傳感器單元6</p><p> 2.3 掉電存儲(chǔ)單
12、元8</p><p> 2.4 鍵盤調(diào)整單元9</p><p> 2.5 顯示單元10</p><p> 第3章 軟件設(shè)計(jì)14</p><p> 3.1 系統(tǒng)主程序14</p><p> 3.2 里程計(jì)數(shù)中斷程序15</p><p> 3.3 中途等待中斷程序15<
13、;/p><p> 3.4 計(jì)算程序17</p><p> 3.5 顯示程序18</p><p> 3.6 鍵盤程序18</p><p> 第4章 調(diào)試改進(jìn)過(guò)程及運(yùn)行結(jié)果分析21</p><p> 4.1 動(dòng)態(tài)掃描的調(diào)試和分析21</p><p> 4.2 AT24C02的編程與
14、調(diào)試21</p><p> 4.3 按鍵查詢功能的實(shí)現(xiàn)21</p><p> 4.4 計(jì)算程序的分析與設(shè)計(jì)22</p><p> 4.5 結(jié)果分析與性能改進(jìn)23</p><p> 4.6 計(jì)價(jià)器系統(tǒng)的仿真23</p><p><b> 結(jié) 論26</b></p>
15、<p><b> 謝 辭27</b></p><p><b> 參考文獻(xiàn)28</b></p><p> 附 錄A 系統(tǒng)原理圖30</p><p> 附 錄B 仿真圖PCB板31</p><p> 附 錄C 系統(tǒng)源程序33</p><p>
16、;<b> 外文資料翻譯55</b></p><p><b> 前 言</b></p><p> 單片機(jī)是一種可通過(guò)編程控制的微處理器,雖其自身不能單獨(dú)用在某項(xiàng)工程或產(chǎn)品上,但當(dāng)其與外圍數(shù)字器件和模擬器件結(jié)合時(shí)便可發(fā)揮強(qiáng)大的功能,現(xiàn)在單片機(jī)已廣泛應(yīng)用于眾多領(lǐng)域。舉例如下:</p><p> 1. 工業(yè)自動(dòng)化。如數(shù)
17、據(jù)采集、測(cè)控技術(shù)。</p><p> 2. 智能儀器儀表。如數(shù)字示波器、數(shù)字信號(hào)源、感應(yīng)電流表等。</p><p> 3. 消費(fèi)類電子產(chǎn)品。如空調(diào)機(jī)、微波爐、IC卡、汽車電子設(shè)備等。</p><p> 4. 通信方面。如調(diào)制解調(diào)器、程控交換技術(shù)等。</p><p> 5. 武器裝備。如飛機(jī)、軍艦、導(dǎo)彈、魚(yú)雷制導(dǎo)、智能武器等。</
18、p><p> 作為與自動(dòng)化技術(shù)和電子密切相關(guān)的理工科學(xué)生,掌握單片機(jī)是最簡(jiǎn)單也最基礎(chǔ)的要求。為了進(jìn)一步豐富和鞏固單片機(jī)知識(shí),也為了能更好的聯(lián)系實(shí)際應(yīng)用,本次畢業(yè)設(shè)計(jì)選擇了基于單片機(jī)STC89C52控制的出租車計(jì)價(jià)器,并力求能做出實(shí)物。</p><p> 鑒于電子技術(shù)、計(jì)算機(jī)技術(shù)以及各種更先進(jìn)的仿真軟件的出現(xiàn),使用高級(jí)語(yǔ)言如C代替匯編語(yǔ)言進(jìn)行編程和控制已成為現(xiàn)實(shí),也成為一種發(fā)展趨勢(shì)。單片機(jī)C
19、語(yǔ)言編程相對(duì)于MC51匯編語(yǔ)言編程有如下優(yōu)點(diǎn):</p><p> 1. 對(duì)單片機(jī)的指令系統(tǒng)不需要有很深的理解就可以編程操作單片機(jī)。</p><p> 2. 寄存器分配、不同存儲(chǔ)器的尋址及數(shù)據(jù)類型等細(xì)節(jié)完全由編輯器自動(dòng)處理。</p><p> 3. 程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),可使程序結(jié)構(gòu)化。</p><p> 4. 庫(kù)中包括許
20、多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的處理能力,使用方便。</p><p> 5. 具有方便的模塊化編程技術(shù),使已編好的程序便于移植,可極大縮短開(kāi)發(fā)時(shí)間,增加程序的可讀性和可維護(hù)性。</p><p> 事實(shí)上,當(dāng)今許多硬件的開(kāi)發(fā)都已開(kāi)始用C語(yǔ)言編程,如各種單片機(jī)、DSP、ARM等,用C語(yǔ)言進(jìn)行工業(yè)控制也已成為一種趨勢(shì),為了更好的適應(yīng)當(dāng)今社會(huì)形勢(shì),為了更好的面對(duì)挑戰(zhàn)、把握機(jī)遇,此次畢業(yè)設(shè)計(jì)決定嘗試用C
21、語(yǔ)言編程完成。也希望能在進(jìn)一步熟悉單片機(jī)控制的同時(shí),對(duì)數(shù)字電子技術(shù)、模擬電子技術(shù)、計(jì)算控制技術(shù)以及常用外圍芯片有更深層次的了解,提高自己的綜合能力。</p><p> 綜上:基于單片機(jī)STC89C52設(shè)計(jì)的出租車計(jì)價(jià)器不僅可方便的用軟件代替硬件,降低成本,具備一般計(jì)價(jià)器的計(jì)算里程和顯示總金額的功能,還具備了掉電保持,白天、夜晚單價(jià)切換,并且還可很方便的擴(kuò)展為速度測(cè)試儀,具有很好市場(chǎng)前景。</p>
22、<p><b> 功能要求</b></p><p> 1. 設(shè)計(jì)一個(gè)出租車計(jì)價(jià)器,并利用霍爾傳感器和單片機(jī)內(nèi)集成的計(jì)數(shù)器測(cè)試出出租車運(yùn)行里程。</p><p> 2. 要求單價(jià)可調(diào),里程精確到0.1公里,并要求對(duì)等待時(shí)間進(jìn)行計(jì)時(shí)。</p><p> 3. 利用I2C總線通過(guò)EEPROM對(duì)存儲(chǔ)空間進(jìn)行擴(kuò)展,使其具備掉電存儲(chǔ)功能。
23、</p><p> 4. 有完整的軟件仿真結(jié)果和硬件電路,并用Protel設(shè)計(jì)系統(tǒng)原理圖。</p><p> 第1章 系統(tǒng)工作原理</p><p><b> 功能要求</b></p><p> 出租車計(jì)價(jià)器是根據(jù)乘客乘坐汽車行駛距離和等候時(shí)間的多少進(jìn)行計(jì)價(jià)的,并在行駛中同步顯示本次消費(fèi)、運(yùn)行里程、運(yùn)行單價(jià)以及等待
24、時(shí)間等信息。從起步開(kāi)始,當(dāng)汽車行駛里程未滿3公里時(shí),均按起步價(jià)計(jì)算。超過(guò)3公里后,實(shí)現(xiàn)每1公里單價(jià)收費(fèi),中間遇到暫停時(shí),計(jì)程數(shù)不再增加,開(kāi)始計(jì)時(shí)收費(fèi),計(jì)程收費(fèi)和計(jì)時(shí)收費(fèi)的和便構(gòu)成了一位乘客的車費(fèi)。同時(shí),白天和夜晚價(jià)格不同,可以進(jìn)行切換。白天單價(jià)、夜晚單價(jià)、等待單價(jià)和起步價(jià)格都可通過(guò)獨(dú)立鍵盤進(jìn)行調(diào)節(jié)。(默認(rèn)起步價(jià)為5元/3公里,里程單價(jià)白天為2.5元/公里,夜晚為3.5元/公里,等待計(jì)時(shí)單價(jià)為1元/1分鐘)</p><
25、p> 為提高計(jì)時(shí)、計(jì)價(jià)精度,確保乘客對(duì)自己消費(fèi)的知情權(quán),出租車計(jì)價(jià)器應(yīng)做到里程數(shù)精確到0.1公里,同時(shí)為減少司機(jī)朋友來(lái)回調(diào)整單價(jià)以及停車后需重設(shè)單價(jià)的麻煩,計(jì)價(jià)器應(yīng)具有掉電保持功能,即當(dāng)重新啟動(dòng)后維持原有數(shù)值(包括總金額、等待時(shí)間、行駛里程、單價(jià))不變,直至強(qiáng)制按下清零鍵,計(jì)價(jià)器顯示起步價(jià)(剛起步時(shí)對(duì)應(yīng)總金額)、運(yùn)行單價(jià),為下一次計(jì)價(jià)做準(zhǔn)備。</p><p><b> 基本原理</b&g
26、t;</p><p> 計(jì)價(jià)器系統(tǒng)主要由五部分組成:分別為基于霍爾傳感器A44E的里程檢測(cè)單元、STC89C52單片機(jī)、外擴(kuò)串行EEPROM-AT24C02、獨(dú)立鍵盤和LED顯示。</p><p> 霍爾傳感器主要用于檢測(cè)汽車行使的里程數(shù),出租車車輪每旋轉(zhuǎn)一周,霍爾傳感器A44E便產(chǎn)生一相應(yīng)的脈沖輸出,并把該脈沖交由單片機(jī)進(jìn)行處理,單片機(jī)則根據(jù)程序設(shè)定,通過(guò)計(jì)算脈沖個(gè)數(shù)換算出已行駛里程
27、(里程=脈沖個(gè)數(shù)*出租車車輪周長(zhǎng)),然后再根據(jù)從EEPROM-AT24C02中讀取的單價(jià)等相關(guān)數(shù)據(jù)進(jìn)行總的消費(fèi)金額的計(jì)算:當(dāng)里程小于3公里時(shí),總金額=起步價(jià)+等待時(shí)間*等待單價(jià);當(dāng)里程大于3公里時(shí),總金額=起步價(jià)+(里程-3)*運(yùn)行單價(jià)+等待時(shí)間*等待單價(jià);計(jì)算好的金額、等待時(shí)間、里程和單價(jià)等數(shù)據(jù)信息都可實(shí)時(shí)地顯示在數(shù)碼管上。其中,等待時(shí)間可根據(jù)霍爾傳感器A44E是否有脈沖輸出加以判斷,如可設(shè)定等待時(shí)基為5s,即假如A44E在5s后仍無(wú)
28、脈沖輸出便認(rèn)為進(jìn)入等待時(shí)間,并由單片機(jī)STC89C52內(nèi)部計(jì)時(shí)器對(duì)其進(jìn)行計(jì)時(shí)。</p><p> 獨(dú)立鍵盤可以調(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ù)不丟失,下次得電后直接從EEPROM-AT24C02中讀到單片機(jī),并通過(guò)數(shù)碼管實(shí)時(shí)顯示。系統(tǒng)結(jié)構(gòu)圖如圖1-1所示。
29、</p><p><b> 圖1-1系統(tǒng)結(jié)構(gòu)圖</b></p><p><b> 第2章 硬件設(shè)計(jì)</b></p><p> 2.1 單片機(jī)最小系統(tǒng)單元</p><p> 主控機(jī)系統(tǒng)采用STC公司生產(chǎn)的 STC89C52單片機(jī),它含有512 字節(jié)數(shù)據(jù)存儲(chǔ)器RAM,內(nèi)置8K 的電可擦除FLAS
30、H ROM,可重復(fù)編程,大小滿足主控機(jī)軟件系統(tǒng)設(shè)計(jì),所以不必再擴(kuò)展程序存儲(chǔ)器。芯片外圍電路最高可接入40MHZ的晶振(AT單片機(jī)數(shù)值一般為24MHZ)。復(fù)位電路和晶振電路,以及P0口接入的10K的上拉電阻便構(gòu)成了STC89C52 單片機(jī)工作所需的最簡(jiǎn)外圍電路。單片機(jī)最小系統(tǒng)電路圖如圖2-1所示。</p><p> 圖2-1 單片機(jī)最小系統(tǒng)</p><p> STC89C52單片機(jī)的復(fù)位
31、端接74LS14,它是一個(gè)史密特觸發(fā)輸入的芯片,高電平有效,具有穩(wěn)定波形的作用。RST端若由低電平上升到高電平并持續(xù)2個(gè)周期,系統(tǒng)將實(shí)現(xiàn)一次復(fù)位操作;在該復(fù)位電路中,按一下復(fù)位開(kāi)關(guān),利用電容沖放電的所產(chǎn)生的延時(shí),就會(huì)在RST端產(chǎn)生一段時(shí)間的高電平,進(jìn)而進(jìn)行復(fù)位操作。外接12M的晶振和兩個(gè)30pF 電容組成系統(tǒng)的內(nèi)部時(shí)鐘電路,其中電容主要起到濾波、微調(diào)以及利用其充放電過(guò)程幫助單片機(jī)晶振啟振的作用 [1] 。</p><
32、p> 對(duì)于單片機(jī)的P0口,可以作為地址/數(shù)據(jù)總線使用,也可以作為一般的I/O口使用。但當(dāng)其作為I/O使用時(shí),由于輸出屬于開(kāi)漏電路,無(wú)上拉電阻故也無(wú)法進(jìn)行高低電平的操作,此時(shí)必須接上拉電阻,一般阻值選為10K。但P0口不能同時(shí)作為地址/數(shù)據(jù)總線和I/O使用。本設(shè)計(jì)利用P0口的I/O功能 [2] 。</p><p> 2.2 霍爾傳感器單元</p><p> A44E 屬于開(kāi)關(guān)型的
33、霍爾器件,其工作電壓范圍比較寬(4.5~18V),其輸出的信號(hào)符合TTL電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的I/O 端口上,而且其最高檢測(cè)頻率可達(dá)到1MHZ[3] 。</p><p> A44E 集成霍耳開(kāi)關(guān)由穩(wěn)壓器A、霍耳電勢(shì)發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個(gè)基本部分組成。</p><p> 在輸入端輸入電壓Vcc,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢(shì)發(fā)生器的兩端
34、,根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處在磁場(chǎng)中時(shí),在垂直于磁場(chǎng)的方向通以電流,則與這二者相垂直的方向上將會(huì)產(chǎn)生霍爾電勢(shì)差VH輸出,該VH信號(hào)經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當(dāng)施加的磁場(chǎng)達(dá)到工作點(diǎn)時(shí),觸發(fā)器輸出高電平,三極管導(dǎo)通, OC門輸出端輸出低電壓,這種狀態(tài)為開(kāi);當(dāng)觸發(fā)器輸出低電平時(shí),三極管截止,OC門輸出高電壓,這種狀態(tài)為關(guān) [4] 。這樣兩次電壓變換,使霍爾開(kāi)關(guān)完成了一次開(kāi)關(guān)動(dòng)作。A44E霍爾傳感器原理
35、如圖2-2所示。</p><p> 圖2-2 A44E霍爾傳感器原理</p><p> 里程計(jì)算主要通過(guò)霍爾傳感器A44E檢測(cè)完成,出租車車輪每旋轉(zhuǎn)一周,霍爾傳感器A44E便產(chǎn)生一相應(yīng)的脈沖輸出,并把該脈沖交由單片機(jī)進(jìn)行處理,單片機(jī)則根據(jù)程序設(shè)定,通過(guò)計(jì)算脈沖個(gè)數(shù)換算出已行駛里程:里程=脈沖個(gè)數(shù)*出租車車輪周長(zhǎng)。其原理如圖2-3所示。</p><p>
36、 圖2-3傳感器測(cè)距示意圖</p><p> 本系統(tǒng)選擇將A44E的脈沖輸出端接到P3.2口,即做為定時(shí)器/計(jì)數(shù)器1的輸入端,車輪每轉(zhuǎn)一圈(設(shè)車輪的周長(zhǎng)是2米),霍爾開(kāi)關(guān)便輸出一低電平信號(hào),然后利用單片機(jī)定時(shí)器1對(duì)該脈沖計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到500次時(shí),則達(dá)到1公里,單片機(jī)將自動(dòng)刷新里程、總金額等信息。</p><p> 2.3 掉電存儲(chǔ)單元</p><p> A
37、T24C02的作用是在電源斷開(kāi)的時(shí)候,存儲(chǔ)當(dāng)前設(shè)定的總金額,等待時(shí)間,運(yùn)行里程以及單價(jià)等信息。AT24C02 是Ateml公司的2KB的電可擦除存儲(chǔ)芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10uA(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8 腳的DIP 封裝,使用方便。AT24C02芯片引腳配置如圖2-4所示。</p><p> 圖2-4
38、 AT24C02引腳配置圖</p><p> 圖中R4、R5 是上拉電阻,其作用是減少AT24C02 的靜態(tài)功耗。由于AT24C02的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),只用兩根線SCL(時(shí)鐘脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)P3.6和P3.7口連接,進(jìn)行傳送數(shù)據(jù)時(shí)遵守I2C總線協(xié)議。</p><p> 每當(dāng)設(shè)定一次單價(jià),系統(tǒng)就調(diào)用存儲(chǔ)程序,將單價(jià)信息保存在芯片內(nèi);當(dāng)系統(tǒng)
39、重新上電的時(shí)候,自動(dòng)調(diào)用讀存儲(chǔ)器程序,將存儲(chǔ)器內(nèi)的單價(jià)等信息,讀到緩存單元中,供主程序使用。</p><p> 事實(shí)上AT24C02為典型的支持I2C總線的器件,對(duì)其進(jìn)行編程時(shí)需遵守I2C總線的時(shí)序要求,以及I2C委員會(huì)對(duì)各種I2C芯片的地址分配規(guī)則?,F(xiàn)把I2C總線與AT24C02的通訊時(shí)序、通訊規(guī)則簡(jiǎn)要介紹如下:</p><p> 1. I2C總線節(jié)點(diǎn)的尋址字節(jié)</p>
40、<p> 主機(jī)產(chǎn)生起始條件后,發(fā)送的第一個(gè)字節(jié)為尋址字節(jié)。該字節(jié)的頭七位為從機(jī)地址,對(duì)于AT24C02來(lái)說(shuō)高四位為1010,它是I2C總線器件的固有地址,緊接著是A1、A2、A3通過(guò)接地或者高電平?jīng)Q定外圍器件的地址數(shù)據(jù),第八位是讀寫控制為,當(dāng)為0是表示主節(jié)點(diǎn)向從節(jié)點(diǎn)發(fā)送數(shù)據(jù),當(dāng)為1時(shí)表示要接收數(shù)據(jù)。</p><p> 2. I2C總線數(shù)據(jù)傳輸?shù)母袷?lt;/p><p> (1
41、) 主控器的寫數(shù)據(jù)格式:</p><p> 首先由主機(jī)發(fā)送起始信號(hào)—當(dāng)SCL為高電平時(shí),SDA由高到低有跳變;然后發(fā)一個(gè)尋址字節(jié),當(dāng)收到應(yīng)答信號(hào)后發(fā)送數(shù)據(jù),其中應(yīng)答信號(hào)為當(dāng)SCL為高時(shí)SDA傳送0,并持續(xù)4.7us以上;當(dāng)主機(jī)產(chǎn)生停止信號(hào)時(shí),數(shù)據(jù)傳送結(jié)束,停止信號(hào)是當(dāng)SCL為高電平時(shí)SDA有一個(gè)由低到高的跳變。</p><p> (2)主控器的讀數(shù)據(jù)格式:</p><
42、;p> 與寫數(shù)據(jù)的不同之處在于數(shù)據(jù)發(fā)送結(jié)束和停止位之間加一個(gè)非應(yīng)答位,表示數(shù)據(jù)發(fā)送結(jié)束,格式為當(dāng)SCL為高時(shí)SDA傳送1,并持續(xù)4.7us以上。 </p><p> 3. 要特別注意的是SDA和SCL都是雙向傳輸線,平時(shí)均處于高電平備用狀態(tài),只有當(dāng)需要關(guān)閉時(shí)才使其鉗制在低電平,且僅在SCL為高電平時(shí)數(shù)據(jù)才能傳送,而當(dāng)SCL為低電平時(shí)才允許數(shù)據(jù)發(fā)生變化。</p><p> 2.4
43、 鍵盤調(diào)整單元</p><p> 當(dāng)單價(jià)等信息需要進(jìn)行修改時(shí),就要用到鍵盤。由于調(diào)節(jié)信息不多,故采用5個(gè)獨(dú)立鍵盤即可,分別實(shí)現(xiàn)清零、切換、增大、減小和功能等作用。電路原理如圖2-5所示。</p><p> 圖2-5 鍵盤調(diào)整單元接線圖</p><p> 圖中,鍵盤從上至下依次為:</p><p> S0:接P1.0口,對(duì)上一次的計(jì)費(fèi)進(jìn)
44、行清零,為下次載客做準(zhǔn)備;</p><p> S1:接P1.1口,通過(guò)對(duì)功能鍵S3按下次數(shù)的計(jì)數(shù),實(shí)現(xiàn)單價(jià)數(shù)據(jù)的增大;</p><p> S2:接P1.2口,通過(guò)對(duì)功能鍵S3按下次數(shù)的計(jì)數(shù),實(shí)現(xiàn)單價(jià)數(shù)據(jù)的減?。?lt;/p><p> S3:接P1.3口,按1次,進(jìn)入調(diào)整白天單價(jià);按2次,進(jìn)入調(diào)整夜晚單價(jià);按3次,進(jìn)入調(diào)整等待單價(jià);按4次,進(jìn)入調(diào)整起步價(jià);按5次,返
45、回。</p><p> S4: 實(shí)現(xiàn)白天單價(jià)和夜晚單價(jià)的切換。</p><p> 需要注意的時(shí),當(dāng)按鍵按下和釋放的瞬間都有抖動(dòng)現(xiàn)象,一般來(lái)說(shuō),抖動(dòng)的時(shí)間長(zhǎng)短與鍵盤的機(jī)械特性有關(guān),大約為5-10ms [5] 。所以在實(shí)際編程時(shí)一定要注意鍵盤的去抖動(dòng)。鍵盤去抖動(dòng)有專用的延時(shí)電路,也有專門的延時(shí)芯片,也可以用軟件去抖,考慮到電路的難易程度,從簡(jiǎn)化硬件的角度,本次設(shè)計(jì)采用軟件去抖動(dòng),用一個(gè)短延
46、時(shí)程序,進(jìn)行鍵盤去抖操作。</p><p><b> 2.5 顯示單元</b></p><p> 顯示單元由兩個(gè)4位8段共陽(yáng)數(shù)碼管組成,電路連接時(shí),公共端接高電平,因此我們需要點(diǎn)亮哪個(gè)發(fā)光二極管只需給哪個(gè)二極管陰極送低電平,并采用動(dòng)態(tài)掃描進(jìn)行顯示[6]。前三個(gè)數(shù)碼管分別接P2.0、P2.1和P2.2,用于顯示總金額;第四個(gè)接P2.3 ,顯示等待時(shí)間;第五個(gè)和第六個(gè)
47、數(shù)碼管分別接P2.4和P2.5,用于顯示里程,由于需精確到小數(shù)位,故最多只能顯示9.9公里,但經(jīng)過(guò)添加溢出指示,可計(jì)到20公里,在現(xiàn)實(shí)中已基本夠用;后面兩個(gè)數(shù)碼管分別接P2.6和P2.7,用于顯示單價(jià)。由于溢出指示是采用發(fā)光二極管是否點(diǎn)亮表示,故必須選好參數(shù)以確保發(fā)光二極管正常工作。根據(jù)元件手冊(cè)(也可用萬(wàn)用表測(cè)量)查得,發(fā)光二極管點(diǎn)亮?xí)r壓降為1.7V,點(diǎn)亮電流為3-20mA,取導(dǎo)通電流為5mA,所以限流電阻可選擇為(5-1.7)/5=6
48、60,故可選擇限流電阻值510Ω。</p><p> 由于數(shù)碼管內(nèi)部二極管點(diǎn)亮?xí)r需要5mA以上的電流,而單片機(jī)的輸出電流還不到1mA,所以數(shù)碼管與單片機(jī)連接時(shí)需加驅(qū)動(dòng)電路,可以使用上拉電阻的方法,也可以使用專門的驅(qū)動(dòng)芯片,考慮到復(fù)用單片機(jī)I/O接口,節(jié)省單片機(jī)I/O資源,此次設(shè)計(jì)采用74HC573鎖存器,其輸出電流較大,電路接口簡(jiǎn)單且可直接驅(qū)動(dòng)數(shù)碼管顯示。74HC573的引腳分布圖2-6如下。</p>
49、;<p> 圖2-6 74HC573的引腳分布</p><p> :為三態(tài)允許輸入端(低電平有效),也可稱作輸出允許端;</p><p> 1D-8D為數(shù)據(jù)輸入端;</p><p> 1Q-8Q為數(shù)據(jù)輸出端;</p><p><b> LE為鎖存允許端。</b></p><p&
50、gt; 74HC573所對(duì)應(yīng)真值表2-1如表。</p><p> 表2-1 74HC573真值表</p><p> 其中 :H—高電平;L—低電平;X—任意電平;Z—高阻態(tài),既不是高電平也不是低電平,其電平狀態(tài)由與它相連接的其它電氣狀態(tài)決定;Q0—上次的電平狀態(tài)。</p><p> 由真值表可以看出,當(dāng)為高電平時(shí),無(wú)論LE與D端為何電平狀態(tài),其輸出均為高阻態(tài)
51、,此時(shí)芯片處于不可控狀態(tài)。做設(shè)計(jì)時(shí)必須使其處于可控狀態(tài),即應(yīng)該接低電平。當(dāng)為低電平時(shí),若LE為H,則D與Q同時(shí)為H或者L,數(shù)據(jù)實(shí)現(xiàn)直通傳送;而當(dāng)LE為L(zhǎng)時(shí),無(wú)論D為何狀態(tài)Q都保持上一次的數(shù)據(jù)狀態(tài),數(shù)據(jù)被鎖存住,利用此特性即可實(shí)現(xiàn)對(duì)數(shù)碼管的控制。</p><p> 本次設(shè)計(jì)中:段選信號(hào)LE接P1.5,對(duì)應(yīng)圖中標(biāo)號(hào)P1.5;位選信號(hào)LE接P1.6,對(duì)應(yīng)圖中標(biāo)號(hào)P1.6??刂骑@示時(shí)先給P1.5高電平,使通道打開(kāi),接著
52、送字碼,然后把P1.5電平拉低,使字碼保持住;之后打開(kāi)P1.6(送高電平),緊接著送位碼,控制要顯示的位,然后把P1.6拉低,數(shù)據(jù)被保持。最后延時(shí)5ms;依次循環(huán)掃描;利用數(shù)碼管點(diǎn)亮后的余暉和人眼視覺(jué)暫留效應(yīng)即可實(shí)現(xiàn)動(dòng)態(tài)顯示。數(shù)碼管動(dòng)態(tài)顯示電路如圖2-7所示。</p><p> 圖2-7 數(shù)碼管動(dòng)態(tài)顯示電路</p><p><b> 第3章 軟件設(shè)計(jì)</b><
53、;/p><p><b> 3.1 系統(tǒng)主程序</b></p><p> 在主程序模塊中,需要完成對(duì)各參量和接口的初始化、出租車起步價(jià)和單價(jià)的初始化以及中斷、計(jì)算、循環(huán)等工作。另外,在主程序模塊中還需要設(shè)置啟動(dòng)/清除標(biāo)志寄存器、里程寄存器和價(jià)格寄存器,并對(duì)它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動(dòng)、清除、計(jì)程和計(jì)價(jià)等不同的操作。</p>
54、;<p> 當(dāng)出租車運(yùn)行后,就啟動(dòng)計(jì)價(jià)器,根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷行駛里程是否已超過(guò)起步價(jià)公里數(shù)。若已超過(guò),則根據(jù)里程值、每公里的單價(jià)值和起步價(jià)來(lái)計(jì)算出當(dāng)前的總金額,并將結(jié)果存于總金額寄存器中;中途等待時(shí),無(wú)脈沖輸入,不產(chǎn)生中斷,當(dāng)時(shí)間超過(guò)等待設(shè)定值時(shí),開(kāi)始進(jìn)行計(jì)時(shí),并把等待金額加到總金額里,然后將總金額、里程、等待時(shí)間和單價(jià)送數(shù)碼管顯示出來(lái)。程序流程如圖3-1所示。</p><p>
55、圖3-1 主程序流程圖</p><p> 3.2 里程計(jì)數(shù)中斷程序</p><p> 每當(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)的變化。里程中斷子程
56、序如圖3-2所示。</p><p> 圖3-2 里程中斷服務(wù)子程序</p><p> 3.3 中途等待中斷程序</p><p> 在中途等待中斷程序中,定時(shí)器1每50ms計(jì)一次數(shù),每計(jì)夠100次(5sec),便將當(dāng)前里程值送入某個(gè)緩存變量,與前一個(gè)5秒的值進(jìn)行比較,如果兩者相同,則表明霍爾傳感器沒(méi)有輸出信號(hào),認(rèn)為出租車停了下來(lái),進(jìn)入等待計(jì)時(shí),計(jì)時(shí)中間變量dd自
57、加1,計(jì)夠12次為一分鐘,dd自清零,同時(shí)根據(jù)所設(shè)的等待單價(jià)刷新總金額。計(jì)數(shù)初值可有以下公式獲得:</p><p> X=(65536-t)*11.0592*10^6/12;</p><p> TH=X/256; </p><p><b> TL=X%256;</b></p><p> 其中:X表示計(jì)數(shù)初
58、值,TH、TL分別為16位計(jì)數(shù)器高8位和低8位應(yīng)裝入的初值。</p><p> 用定時(shí)器作為基準(zhǔn),可使測(cè)試的等待時(shí)間更為精確(可以精確到uS級(jí));且每隔5秒比較一次,能有效減小誤判率,避免把汽車低速行駛誤認(rèn)為靜止等待處理。中途等待子程序流程圖如圖3-3所示。</p><p> 圖3-3 中途等待中斷子程序流程圖</p><p><b> 3.4 計(jì)算
59、程序</b></p><p> 計(jì)算程序根據(jù)里程數(shù)分別進(jìn)入不同的計(jì)算公式。如果里程大于3公里,則執(zhí)行公式:總金額=起步價(jià)+(里程-3)*單價(jià)+等待時(shí)間*等待單價(jià);否則,執(zhí)行公式:總金額=起步價(jià)+等待時(shí)間*等待單價(jià)。程序流程圖如圖3-4所示。</p><p> 圖3-4 計(jì)算程序流程圖</p><p><b> 3.5 顯示程序</b
60、></p><p> 由于8位數(shù)碼管所有段選皆有8位的P0口進(jìn)行控制,因此,在每一瞬間,8位LED會(huì)顯示同一個(gè)數(shù)字。要想每位顯示不同的字符,就必須采用動(dòng)態(tài)掃描的方法輪流點(diǎn)亮各位LED,即在每一時(shí)刻只使某一位顯示字符。在此瞬間,段選控制I/O口輸出相應(yīng)字符段選碼(字符碼),而位選則控制I/O口在該顯示的位送入選通電平,以保證該位顯示顯示相應(yīng)字符。如此循環(huán)操作,使每位分時(shí)顯示該位應(yīng)該顯示的字符 [7] 。&l
61、t;/p><p> 在本次設(shè)計(jì)中顯示程序利用延時(shí)程序,每隔5ms刷新一次,相應(yīng)的數(shù)碼管點(diǎn)亮,顯示一位數(shù)據(jù),利用主函數(shù)內(nèi)的循環(huán),實(shí)現(xiàn)動(dòng)態(tài)掃描顯示,同時(shí)根據(jù)數(shù)碼管余輝和人眼暫留現(xiàn)象,給人看上去每個(gè)數(shù)碼管總是在亮,以實(shí)現(xiàn)動(dòng)態(tài)顯示。</p><p><b> 3.6 鍵盤程序</b></p><p> 鍵盤采用查詢的方式,放在主程序中,當(dāng)有按鍵按下的
62、時(shí)候,在相應(yīng)I/O口產(chǎn)生一次低電平,當(dāng)單片機(jī)查詢出該低電平后便轉(zhuǎn)入進(jìn)行處理,處理結(jié)束返回。鍵盤程序流程圖如圖3-5。 </p><p><b> 圖3-5 鍵盤程序</b></p><p> 按鍵檢測(cè)流程圖3-6所示。</p><p> 圖3-6 按鍵檢測(cè)子程序流程圖</p><p> 第4章 調(diào)試改進(jìn)過(guò)程及運(yùn)行
63、結(jié)果分析</p><p> 4.1 動(dòng)態(tài)掃描的調(diào)試和分析</p><p> 動(dòng)態(tài)掃描是單片機(jī)編程中最基本的知識(shí),雖對(duì)其原理有比較清晰的掌握,也曾用匯編語(yǔ)言寫過(guò)程序,但此次用C語(yǔ)言編寫還是出現(xiàn)了錯(cuò)誤。</p><p> 第一就是把段碼和位碼順序送反,結(jié)果是只有在延時(shí)時(shí)間較長(zhǎng)時(shí)才能顯示正常,當(dāng)然這樣的代價(jià)是沒(méi)有靜態(tài)的效果;第二就是用動(dòng)態(tài)掃描時(shí)給八個(gè)數(shù)碼管送了10個(gè)
64、數(shù),顯然這樣做結(jié)果必定混亂;最后就是開(kāi)始時(shí)用switch、case語(yǔ)句實(shí)現(xiàn)動(dòng)態(tài)掃描,當(dāng)程序較小時(shí)可以正常工作,但當(dāng)后期程序較大時(shí),出現(xiàn)了時(shí)序混亂的問(wèn)題。最后解決的方法是用了鎖存器,顯示結(jié)果正常為固定的預(yù)設(shè)的八個(gè)數(shù)字。</p><p> 4.2 AT24C02的編程與調(diào)試</p><p> 對(duì)AT24C02編程對(duì)我來(lái)說(shuō)是一個(gè)比較新知識(shí)點(diǎn),遇到了不少問(wèn)題, 這里僅把經(jīng)驗(yàn)教訓(xùn)簡(jiǎn)要介紹一下。首
65、先是一定要對(duì)I2C總線時(shí)序有較深刻了解后再嘗試編程,第二就是要注意向 AT24C02寫一個(gè)字和讀一個(gè)字的區(qū)別,當(dāng)從 AT24C02讀數(shù)據(jù)時(shí)一定要注意,當(dāng)讀完時(shí)從機(jī) AT24C02一定要發(fā)送一個(gè)非應(yīng)答信號(hào)表示數(shù)據(jù)讀完。</p><p> 調(diào)試的方法是在指定地址寫一個(gè)數(shù)字再看能是否讀出,當(dāng)顯示程序編寫好后,可以在Ptoteus中用數(shù)碼管顯示看是否與分析一致,也可以把讀出的數(shù)據(jù)賦給某個(gè)變量,再通過(guò)在keil中執(zhí)行vi
66、ew/watch&call stack window 調(diào)出相應(yīng)變量觀察。</p><p> 4.3 按鍵查詢功能的實(shí)現(xiàn)</p><p> 按鍵查詢比較容易實(shí)現(xiàn),只要注意1. 按鍵結(jié)束后注意退出按鍵處理;2.不要陷入死循環(huán),即避免顯示一個(gè)數(shù)據(jù)后退不出來(lái);3.在做實(shí)際鍵盤時(shí)要注意按下去抖和釋放去抖。按鍵去抖可通過(guò)以下語(yǔ)句實(shí)現(xiàn):</p><p> if(ke
67、y==0) </p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(key==0)</p><p><b> {</b></p><p> w
68、hile(!key);</p><p><b> delay(5);</b></p><p> while(!key);</p><p><b> {</b></p><p><b> 按鍵處理程序</b></p><p><b>
69、}</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.4 計(jì)算程序的分析與設(shè)計(jì)</p><p> 由于里程和單價(jià)都精確的小數(shù)點(diǎn)后一位,而顯示時(shí)仍按整數(shù)顯示,只不過(guò)人為的加入 &0x7f(共陽(yáng)極時(shí)加入&0x7f
70、,共陰極時(shí)加入 ||0x)控制是否顯示小數(shù)點(diǎn)兒,故實(shí)際計(jì)算時(shí)要做適當(dāng)改動(dòng)。</p><p><b> 改動(dòng)如下:</b></p><p> 1. 當(dāng)里程值大于30(實(shí)際對(duì)應(yīng)大于3公里)且無(wú)進(jìn)位時(shí),溢出指示燈不亮,總金額=起步價(jià)+(里程十位數(shù)字-2)*運(yùn)行單價(jià)+等待單價(jià)*等待時(shí)間;</p><p> 2. 當(dāng)里程值小于30(實(shí)際對(duì)應(yīng)小于3公
71、里),肯定無(wú)進(jìn)位,溢出指示燈不亮,總金額=起步價(jià)+等待單價(jià)*等待時(shí)間;</p><p> 3. 有進(jìn)位,溢出指示燈點(diǎn)亮,表示里程一定大于三公里,只需執(zhí)行總金額=起步價(jià)+7*運(yùn)行單價(jià)+(里程十位數(shù)字+1)*運(yùn)行單價(jià)+等待單價(jià)*等待時(shí)間</p><p> 即:總金額=起步價(jià)+(里程十位數(shù)字+8)*運(yùn)行單價(jià)+等待單價(jià)*等待時(shí)間;</p><p> 4.5 結(jié)果分析與
72、性能改進(jìn)</p><p> 經(jīng)過(guò)反復(fù)調(diào)試驗(yàn)證,基于STC89C52單片機(jī)控制設(shè)計(jì)的出租車計(jì)價(jià)器滿足了所有預(yù)設(shè)性能指標(biāo),具有較好的抗干擾性,價(jià)格也較為合理,具有很好的工業(yè)開(kāi)發(fā)和市場(chǎng)前景。</p><p> 可以改進(jìn)的地方可能有很多;就我現(xiàn)在所思考的可從以下兩個(gè)方面加以考慮:</p><p> 1. 嘗試著把兩個(gè)鎖存器74HC573去掉,當(dāng)然不能影響整個(gè)計(jì)價(jià)器的功
73、能,這樣會(huì)使硬件電路更簡(jiǎn)潔,成本也會(huì)更低,符合實(shí)際中的最大利潤(rùn)空間定理。</p><p> 2. 設(shè)計(jì)PCB板時(shí)把鍵盤和顯示器放在芯片和其它電路的反面,這樣封裝成實(shí)際產(chǎn)品時(shí)可把人機(jī)接口留在外面,更人性化,也符合人們的習(xí)慣。</p><p> 4.6 計(jì)價(jià)器系統(tǒng)的仿真</p><p> 當(dāng)各個(gè)子模塊都實(shí)現(xiàn)后,聯(lián)調(diào)則主要是看當(dāng)把他們?nèi)诤显谝黄饡r(shí)是否會(huì)有時(shí)序上的沖突
74、,以及可能存在的分析不周全的地方。本次設(shè)計(jì)聯(lián)調(diào)時(shí)出現(xiàn)的問(wèn)題主要有:第一是顯示時(shí)存在時(shí)序上的沖突,詳見(jiàn)4.1第三點(diǎn);第二就是中斷設(shè)置時(shí)出現(xiàn)混亂,即同時(shí)用定時(shí)器0,定時(shí)器1,和外部中斷1時(shí),后兩者都不再工作(通過(guò)編一個(gè)方波程序,發(fā)現(xiàn)定時(shí)器1即P3.5無(wú)跳變),解決方法時(shí)讓定時(shí)器1工作在計(jì)數(shù)方式代替工作在定時(shí)方式,如此不但可以完成相應(yīng)功能,解決了問(wèn)題,更重要的是省去一個(gè)中斷,簡(jiǎn)化了程序設(shè)計(jì)。</p><p> 調(diào)試完
75、成后在Proteus 7.5 上仿真結(jié)果如圖4-1,4-2,4-3,4-4所示。</p><p> 圖4-1里程無(wú)溢出時(shí)仿真結(jié)果(小于三公里)</p><p> 圖4-2里程無(wú)溢出時(shí)仿真結(jié)果(大于三公里)</p><p> 圖4-3里程溢出時(shí)仿真結(jié)果(大于十公里)</p><p> 圖4-4 單價(jià)調(diào)整(起步價(jià))</p>
76、<p><b> 結(jié) 論</b></p><p> 經(jīng)過(guò)近幾個(gè)月的設(shè)計(jì),在多位老師和同學(xué)的幫助下,全面實(shí)現(xiàn)了預(yù)先設(shè)定的計(jì)價(jià)器應(yīng)具有的功能,且滿足了所有設(shè)計(jì)指標(biāo)。</p><p> 1. 能準(zhǔn)確計(jì)算出出租車運(yùn)行里程;</p><p> 2. 實(shí)現(xiàn)了單價(jià)可調(diào),里程精確到0.1公里,并可以對(duì)等待時(shí)間進(jìn)行計(jì)時(shí);</p>
77、<p> 3.利用I2C總線通過(guò)EEPROM-AT24C02對(duì)存儲(chǔ)空間進(jìn)行了擴(kuò)展,使其具備掉電存儲(chǔ)功能。</p><p> 4. 有完整的軟件仿真結(jié)果和硬件電路,并用Protel設(shè)計(jì)出了系統(tǒng)原理圖,制作了PCB板。</p><p> 通過(guò)對(duì)基于Proteus 7.5的仿真和實(shí)際電路的測(cè)試結(jié)果分析,表明用此方法設(shè)計(jì)的計(jì)價(jià)器。實(shí)現(xiàn)了單價(jià)可調(diào),掉電保持,計(jì)程精度達(dá)到0.1公里,此
78、外還增加了等待計(jì)時(shí)功能,白天夜晚單價(jià)自動(dòng)切換,并且能實(shí)時(shí)顯示總金額,等待時(shí)間,運(yùn)行里程,運(yùn)行單價(jià)等詳細(xì)信息;且能很方便的在不改變硬件電路的情況下通過(guò)改變軟件實(shí)現(xiàn)計(jì)價(jià)精度的提高,進(jìn)行功能上的擴(kuò)展,如可把現(xiàn)有的計(jì)價(jià)器轉(zhuǎn)變?yōu)橛?jì)速器,完善的功能使得基于STC89C52單片機(jī)的出租車計(jì)價(jià)器的通用性和實(shí)用性有著無(wú)可比擬的優(yōu)勢(shì),具有很高的現(xiàn)實(shí)意義和很好的市場(chǎng)前景。</p><p> 當(dāng)然設(shè)計(jì)存在不少缺陷,做如下改進(jìn)。<
79、/p><p> 1. 應(yīng)嘗試著在不影響整個(gè)計(jì)價(jià)器的功能的前提下把兩個(gè)鎖存器74HC573去掉,這樣會(huì)使硬件電路更簡(jiǎn)潔,成本也會(huì)更低。</p><p> 2. PCB板中如果把鍵盤和顯示器放在芯片和其它電路的反面,這樣封裝成實(shí)際產(chǎn)品時(shí)可把人機(jī)接口留在外面,更人性化,也符合人們的習(xí)慣。</p><p><b> 謝 辭</b></p>
80、;<p> 在此次設(shè)計(jì)中,陳文清老師作為我的指導(dǎo)老師,至始至終都給予我了不少幫助,從下任務(wù)書(shū)開(kāi)始,就幫我制定規(guī)劃,提醒我應(yīng)注意的問(wèn)題;借給我資料,幫我聯(lián)系硬件;和我一起調(diào)程序,并提出了很多的修改意見(jiàn)以及完善方案;此外還認(rèn)真批閱了我的論文,指出其中很多瑕疵和不清晰的地方;更重要的是在我遇到困難時(shí)對(duì)我的鼓勵(lì),讓我不懈怠、不退縮、也讓我更有信心;可以說(shuō)我的每一點(diǎn)進(jìn)展都與陳老師的付出是分不開(kāi)的。</p><p
81、> 當(dāng)然還在此,我向身邊關(guān)心我的老師、同學(xué)致以誠(chéng)摯的謝意!最后感謝母校對(duì)我這幾年的辛勤培養(yǎng)。有其他老師和同學(xué),都幫了我不少忙,在此不再贅述。謹(jǐn)祝老師們工作順利,萬(wàn)事如意,桃李滿天下;同學(xué)們學(xué)業(yè)有成,前程似錦! 參考文獻(xiàn)</p><p> 李朝青. 單片機(jī)原理及接口技術(shù)(第三版). 北京: 北京航空航天大學(xué)出版社, 2008</p>
82、<p> 郭天祥. 51單片機(jī)C語(yǔ)言教程. 北京:電子工業(yè)出版社, 2008</p><p> 單成祥, 牛彥文. 傳感器設(shè)計(jì)基礎(chǔ). 北京: 國(guó)防工業(yè)出版社, 2007</p><p> 竇振中. 單片機(jī)外圍部件實(shí)用手冊(cè)輸出通道器件分冊(cè). 北京:北京航空航天大學(xué)出版社.2003.</p><p> 楊素行.模擬電子技術(shù)基礎(chǔ)簡(jiǎn)明教程.(第三版).北京
83、:高等教育出版社, 2005</p><p> 閻石.數(shù)字電子技術(shù).(第五版).北京:高等教育出版社, 2006</p><p> 張一斌, 余建坤.單片機(jī)原理課程設(shè)計(jì) .長(zhǎng)沙:中南大學(xué)出版社, 2008</p><p> 萬(wàn)隆, 巴奉麗. 單片機(jī)原理及應(yīng)用技術(shù).北京:清華大學(xué)出版社, 2008</p><p> 馬淑華, 王鳳文,
84、張美金. 單片機(jī)原理與接口技術(shù)(第二版). 北京:北京郵電大學(xué)出版社, 2007</p><p> 陳威. 基于單片機(jī)的電子密碼鎖的設(shè)計(jì):[畢業(yè)論文] .浙江:浙江科技學(xué)院, 2009</p><p> 高炎萃, 武一. 基于單片機(jī)的電機(jī)保護(hù)裝置設(shè)計(jì). 四川理工學(xué)院學(xué)報(bào), 2009,第23卷第1期</p><p> 譚浩強(qiáng). C程序設(shè)計(jì)(第三版). 北京: 清
85、華大學(xué)出版社, 2005</p><p> 劉宏,余勤科. Protel電路設(shè)計(jì)使用指南. 西安: 西安電子科技大學(xué)出版社, 2000</p><p> 趙偉軍. Protel99E教程. 北京: 人民郵電出版社, 2004</p><p> 龍脈工作室. Protel99S入門與典型實(shí)例. 北京: 人民郵電出版社, 2008</p><p
86、> 譚浩強(qiáng)著. C程序設(shè)計(jì)[M]. 北京: 清華大學(xué)出版社, 2005</p><p> 張友德, 趙志英,涂時(shí)亮著. 單片微型機(jī)原理應(yīng)用與實(shí)驗(yàn)[M]. 上海: 復(fù)旦大學(xué)出版社, 2006.10</p><p> 吳戈李, 玉峰編著. 案例學(xué)單片機(jī)C語(yǔ)言開(kāi)發(fā)[M]. 北京: 人民郵電出版社, 2008.10</p><p> 孫余凱. 傳感器應(yīng)用電路
87、300例[M]. 北京: 電子工業(yè)出版社,2008.</p><p> 田立. 51單片機(jī)C語(yǔ)言程序設(shè)計(jì)快速入門[M]. 北京: 人民郵電出版社, 2007</p><p> Chirs J. Georgopoulos. Interface Fundamentals In Microprocessor-Controlled System[M]. D.Reidel Publishing
88、 Company, 1985</p><p> 附 錄A 系統(tǒng)原理圖</p><p> 附 錄B 仿真圖PCB板</p><p> 附 錄C 系統(tǒng)源程序</p><p> #include<reg52.h></p><p> #include <intrins.h></p&
89、gt;<p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};</p><p> //uchar code
90、 table2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};</p><p> //sbit exter=P3^3; </p><p> //sbit fangbo=P3^5;</p><p> sbit key0=P1^0; // 清零</p><p>
91、sbit key1=P1^1; // +</p><p> sbit key2=P1^2; // -</p><p> sbit key3=P1^3; // 功能鍵</p><p> sbit key4=P1^4;// 切換</p><p> sbit
92、led=P1^7; //里程溢出指示</p><p> //sbit dula=P3^0; </p><p> //sbit wela=P3^1 ;</p><p> sbit dula=P1^5; </p><p> sbit wela=P1^6 ;</p><p> sbit S
93、da=P3^7; // I2C引腳</p><p> sbit Scl=P3^6;</p><p> //sbit WP=P3^5; //硬件寫保護(hù) </p><p> uint zongjine,dengdai;licheng;</p><p> uint key3num,qiehuantemp;<
94、/p><p> //uchar danjia1=11,danjia2=22,danjia3=33,qibu=44,danjiazc;</p><p> uchar danjia1,danjia2,danjia3,qibu,danjia; //分別為白天單價(jià)、夜晚單價(jià)、//等待單價(jià)、 白天夜晚單價(jià)切換暫存、起步價(jià)</p><p> uint aa,bb,temp
95、,temp1,inter,exter; //中斷調(diào)用 </p><p> uint cc,dd,qufan;</p><p> void delay(uint x) </p><p><b> {</b></p><p><b> int i,j;</b></p>
96、<p> for(i=x;i>0;i--)</p><p> for(j=110;j>0;j--);</p><p><b> }</b></p><p> void delayNOP( ) // 保證I2C的時(shí)序要求 >=4.7us</p><p><b> {<
97、;/b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p>&
98、lt;p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _
99、nop_();</b></p><p><b> _nop_();</b></p><p><b> }</b></p><p> void I2C _init()</p><p><b> {</b></p><p><b&g
100、t; Sda=1; </b></p><p><b> Scl=1;</b></p><p> delayNOP( ) ;</p><p><b> }</b></p><p> void start()</p><p><b> {<
101、/b></p><p><b> Scl=1;</b></p><p> delayNOP( ) ;</p><p><b> Sda=1;</b></p><p> delayNOP( ) ;</p><p><b> Sda=0;</b&g
102、t;</p><p> delayNOP( ) ;</p><p><b> Scl=0;</b></p><p> delayNOP( ) ;</p><p><b> }</b></p><p> void stop()</p><p>
103、;<b> { </b></p><p><b> Sda=0;</b></p><p> delayNOP( ) ;</p><p><b> Scl=1;</b></p><p> delayNOP( ) ;</p><p><b&
104、gt; Sda=1;</b></p><p> delayNOP( ) ;</p><p><b> }</b></p><p> void Ack()</p><p><b> { </b></p><p><b> Sda=0;<
105、;/b></p><p> delayNOP( );</p><p><b> Scl=1;</b></p><p> delayNOP( );</p><p><b> Scl=0;</b></p><p> delayNOP( );</p>
106、<p><b> }</b></p><p> void NoAck()</p><p><b> {</b></p><p><b> Sda=1;</b></p><p> delayNOP( ); </p><p><b
107、> Scl=1;</b></p><p> delayNOP( );</p><p><b> Scl=0;</b></p><p> delayNOP( );</p><p><b> }</b></p><p> void Send(ucha
108、r Data)</p><p><b> {</b></p><p> uchar BitCounter=8;</p><p> uchar temp;</p><p><b> do</b></p><p><b> {</b></p&
109、gt;<p> temp=Data;</p><p><b> Scl=0;</b></p><p> delayNOP( );</p><p> if((temp&0x80)==0x80)</p><p><b> Sda=1;</b></p><
110、;p><b> else </b></p><p><b> Sda=0;</b></p><p><b> Scl=1;</b></p><p> temp=Data<<1;</p><p> Data=temp;</p><p
111、> BitCounter--;</p><p><b> }</b></p><p> while(BitCounter);</p><p><b> Scl=0;</b></p><p><b> } </b></p><p>
112、uchar Read() //讀一個(gè)字節(jié)的數(shù)據(jù),并返回該字節(jié)值</p><p><b> {</b></p><p> uchar temp=0;</p><p> uchar temp1=0;</p><p> uchar BitCounter=8;</p><p> Sda=1;
113、 // 置 Sda為輸入方式</p><p><b> do{</b></p><p><b> Scl=0;</b></p><p> delayNOP( );</p><p><b> Scl=1;</b></p><p> dela
114、yNOP( );</p><p> if(Sda) //如果Sda=1;</p><p> temp=temp|0x01; //temp的最低位置1</p><p><b> else</b></p><p> temp=temp&0xfe; //否則temp的最低位清0<
115、/p><p> if(BitCounter-1)</p><p> {temp1=temp<<1;</p><p> temp=temp1;</p><p><b> }</b></p><p> BitCounter--;</p><p> }whil
116、e(BitCounter);</p><p><b> Scl=0;</b></p><p> return(temp);</p><p><b> }</b></p><p> void WrToROM(uchar Addresss,uchar Data)</p><p
117、><b> {</b></p><p><b> start();</b></p><p> Send(0xa0);</p><p><b> Ack();</b></p><p> Send(Addresss);</p><p><
118、;b> Ack(); </b></p><p> Send(Data);</p><p><b> Ack();</b></p><p><b> stop();</b></p><p> delay(20);</p><p><b>
119、 }</b></p><p> uchar RdFromROM(uchar Addresss)</p><p><b> {</b></p><p> uchar Data;</p><p><b> start();</b></p><p> Se
120、nd(0xa0);</p><p><b> Ack();</b></p><p> Send(Addresss);</p><p><b> Ack();</b></p><p><b> start();</b></p><p> Send
121、(0xa1);</p><p><b> Ack();</b></p><p> Data=Read();</p><p><b> NoAck();</b></p><p><b> stop();</b></p><p> return(D
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于at89c52單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)
- 課程設(shè)計(jì)--基于at89c52單片機(jī)出租車計(jì)價(jià)器設(shè)計(jì)
- 基于單片機(jī)的出租車計(jì)價(jià)器畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的出租車計(jì)價(jià)器畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的出租車計(jì)價(jià)器畢業(yè)設(shè)計(jì)
- 基于at89c51單片機(jī)的出租車計(jì)價(jià)器系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于at89s51單片機(jī)出租車計(jì)價(jià)器系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的出租車計(jì)價(jià)器系統(tǒng)
- 畢業(yè)設(shè)計(jì)----多功能單片機(jī)出租車計(jì)價(jià)器
- 基于單片機(jī)的出租車計(jì)價(jià)器的設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 基于單片機(jī)出租車多功能計(jì)價(jià)器設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的出租車計(jì)價(jià)器的設(shè)計(jì)
- 基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)
- 基于at89c51單片機(jī)出租車計(jì)價(jià)器的研究
- 基于at89s51單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)
- 基于51單片機(jī)的出租車計(jì)價(jià)器畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的出租車計(jì)價(jià)器的設(shè)計(jì)
- 基于51單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論