版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p><b> 第1章 緒論2</b></p><p> 第2章 系統(tǒng)設(shè)計(jì)3</p><p> 2.1 系統(tǒng)組成3</p><p&g
2、t; 2.1.1 計(jì)費(fèi)及顯示3</p><p> 2.1.2 時(shí)鐘及顯示3</p><p> 2.1.3 計(jì)費(fèi)開始提示1</p><p> 2.2 功能模塊設(shè)計(jì)1</p><p> 第3章 硬件及軟件實(shí)現(xiàn)3</p><p><b> 3.1 傳感器3</b></
3、p><p> 3.1.1 光電傳感器電路設(shè)計(jì)3</p><p> 3.1.2車輪光電開關(guān)檢測(cè)電路4</p><p> 3.2 單片機(jī)4</p><p> 3.2.1 8051 單片機(jī)功能方塊圖5</p><p> 3.2.2 AT89S51單片機(jī)簡(jiǎn)介7</p><p>
4、 3.2.3 AT89S5l與51系列單片機(jī)相比具有如下特點(diǎn)8</p><p> 3.2.4 89S51的內(nèi)部框圖9</p><p> 3.2.5 中斷控制11</p><p> 3.2.6 單片機(jī)控制程序設(shè)計(jì)12</p><p> 3.2.7 單片機(jī)匯編語言源程序16</p><p>
5、3.3 顯示及按鍵控制系統(tǒng)31</p><p> 3.3.1 LED數(shù)碼管31</p><p> 3.3.2 數(shù)據(jù)顯示電路的設(shè)計(jì)32</p><p> 第4章 系統(tǒng)檢測(cè)及分析34</p><p> 4.1 系統(tǒng)仿真/硬件驗(yàn)證34</p><p> 4.1.1 系統(tǒng)的調(diào)試方法34&l
6、t;/p><p> 4.1.2 系統(tǒng)的硬件驗(yàn)證34</p><p> 4.2 設(shè)計(jì)技巧分析35</p><p><b> 結(jié) 論36</b></p><p> 附錄A: FPGA芯片引腳37</p><p><b> 摘 要</b></p>
7、<p> 本系統(tǒng)電源電壓為+16V,速度傳感器具有汽車每運(yùn)行1㎞提供1000個(gè)脈沖信號(hào)的特性。顯示器可以采用LED數(shù)碼管。系統(tǒng)采用單片機(jī)和FPGA的結(jié)合進(jìn)行系統(tǒng)的主體設(shè)計(jì),測(cè)控FPGA芯片通過采集傳感器脈沖信號(hào)WCLK進(jìn)行里程計(jì)算,里程計(jì)費(fèi),利用外部脈沖信號(hào)SCLK產(chǎn)生標(biāo)準(zhǔn)時(shí)鐘信號(hào),以計(jì)算等待時(shí)間,等待費(fèi)用,并產(chǎn)生里程標(biāo)志(LCBZ),等待標(biāo)志(DDBZ),熄燈標(biāo)志(XDBZ)等有關(guān)控制標(biāo)志信號(hào),同時(shí)根據(jù)單片機(jī)發(fā)出的開始信
8、號(hào)(START),時(shí)段標(biāo)志(SDBZ),傳輸數(shù)據(jù)選擇(SEL)等控制信號(hào)將有關(guān)計(jì)算結(jié)果傳送給FPGA芯片。單片機(jī)MCU除了完成鍵盤掃描,顯示控制外,還通過P0口與FPGA進(jìn)行數(shù)據(jù)交換,并向測(cè)控FPGA芯片發(fā)出有關(guān)控制信號(hào)。本設(shè)計(jì)方案利用單片機(jī)和FPGA的結(jié)合,發(fā)揮它們各自的長(zhǎng)處,分工清晰,實(shí)際使用和操作符合大眾邏輯,容易被人接受。而且,單片機(jī)豐富的I/O口和FPGA模塊化的設(shè)計(jì)為系統(tǒng)功能的擴(kuò)展提供了空間和便利。</p>&
9、lt;p> 關(guān)鍵詞 計(jì)費(fèi)系統(tǒng),單片機(jī),F(xiàn)PGA芯片</p><p><b> 第1章 緒論</b></p><p> 出租車是現(xiàn)代人類的重要交通工具,而出租車的計(jì)費(fèi)系統(tǒng)的安全性和先進(jìn)性是人們普遍關(guān)心的問題,要求計(jì)費(fèi)器性能穩(wěn)定,計(jì)費(fèi)準(zhǔn)確,以及預(yù)防司機(jī)作弊行為等等都關(guān)系到乘客的切身利益。因此,設(shè)計(jì)出符合人們普遍要求及放心的產(chǎn)品具有重要的意義。同時(shí),設(shè)計(jì)該系
10、統(tǒng)所應(yīng)用的知識(shí)涉及范圍廣,通過設(shè)計(jì)可以牢固掌握所學(xué)理論知識(shí),對(duì)電子信息工程專業(yè)的就業(yè)方向有初步認(rèn)識(shí),將理論與實(shí)際有機(jī)聯(lián)系起來。應(yīng)該是對(duì)以前所學(xué)知識(shí)的一次審核吧!</p><p> 本設(shè)計(jì)主要介紹了出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)思路和過程,并給出了所涉及的相關(guān)知識(shí)的詳細(xì)介紹。EDA技術(shù)應(yīng)用,單片機(jī)的功能及應(yīng)用,傳感器檢測(cè)技術(shù),VHDL編程語言及匯編語言程序,顯示系統(tǒng)設(shè)計(jì)及按鍵控制,等等。第一部分為緒論,第二部分為方案論證,
11、第三部分為系統(tǒng)設(shè)計(jì),第四部分是硬件及軟件實(shí)現(xiàn),第五部分系統(tǒng)檢測(cè)及分析,第六部分是結(jié)論,第七部分是附錄,第八部分是參考文獻(xiàn),第九部分是致謝.</p><p> 目前,普遍的出租車計(jì)費(fèi)器僅僅具有時(shí)鐘,起步價(jià),里程計(jì)費(fèi),等待計(jì)費(fèi)及顯示幾個(gè)功能。其發(fā)展前景是可觀的,將來的產(chǎn)品除具有這些功能外,另外還可增加如下功能:防作弊功能,IC卡付費(fèi):顧客能在制定點(diǎn)購(gòu)買一定額度的“顧客IC卡”,乘車后可用IC卡付帳,付帳是否成功有相
12、應(yīng)的提示。車主可定期將總營(yíng)業(yè)額寫入“車主IC卡”中,并據(jù)此IC卡向所屬公司領(lǐng)取報(bào)酬。車票資料打?。侯櫩透顿M(fèi)后可打印發(fā)票,打印內(nèi)容包括車主信息和車費(fèi)信息等??纱蛴≤囍骺偁I(yíng)業(yè)額信息。語音播報(bào):當(dāng)乘客上車時(shí),可自動(dòng)問候乘客,當(dāng)?shù)竭_(dá)目的地,自動(dòng)播報(bào)乘車費(fèi)用并禮貌再見,表達(dá)希望下次乘坐的意思。增加的這些功能將會(huì)更好地為乘客服務(wù)。</p><p> 本系統(tǒng)設(shè)計(jì)也可應(yīng)用于其他計(jì)費(fèi)系統(tǒng)中,如電腦計(jì)費(fèi)系統(tǒng)等等,其應(yīng)用技術(shù)也有相當(dāng)
13、范圍的應(yīng)用面,如顯示和播報(bào)部分也可應(yīng)用于智能飯卡﹑智能電動(dòng)車﹑機(jī)器人等電子相關(guān)產(chǎn)品中??梢娬莆樟嗽撓到y(tǒng)的設(shè)計(jì)和分析可實(shí)現(xiàn)對(duì)電子專業(yè)知識(shí)的具體應(yīng)用,增強(qiáng)理論聯(lián)系實(shí)際的能力。除此以外,所涉及的知識(shí)面也聯(lián)系到現(xiàn)實(shí)生活中很多相關(guān)電子產(chǎn)品,也將對(duì)其他電子產(chǎn)品有一定理論基礎(chǔ)。</p><p><b> 第2章 系統(tǒng)設(shè)計(jì)</b></p><p><b> 2.1
14、系統(tǒng)組成</b></p><p> 其中系統(tǒng)電源電壓為+16V。速度傳感器不需要進(jìn)行設(shè)計(jì),假設(shè)它具有汽車每運(yùn)行1㎞提供1000個(gè)脈沖信號(hào)的特性。顯示器采用LED數(shù)碼管。具體功能要求如下:</p><p><b> 圖2.1系統(tǒng)方框圖</b></p><p> 2.1.1 計(jì)費(fèi)及顯示</p><p>
15、?、倮锍蹋雌囆谐汤锍?,用四位數(shù)字顯示,顯示方式為“XXX.X”,單位為㎞,精確到0.1㎞。 </p><p> ?、趩蝺r(jià),即里程單價(jià),用三位數(shù)字顯示,顯示方式為“X.XX”,單價(jià)為元/㎞,根據(jù)每天不同的時(shí)間段有兩種情況:當(dāng)時(shí)間段為06:00~23:00時(shí)單價(jià)為1.4元/㎞,其他時(shí)間段內(nèi)單價(jià)為1
16、.80元/㎞。 </p><p> ?、鄣群驎r(shí)間,用四位數(shù)字顯示分鐘和秒,顯示方式為“XX:XX”,等候的定義是:當(dāng)汽車行駛速度小于或等于12㎞/h時(shí)為“等候”。在等候時(shí)間大于1小時(shí)的情況下,可以不顯示等候時(shí)間,但必須對(duì)等候時(shí)間進(jìn)行統(tǒng)計(jì)計(jì)算。</p><p> ?、艿群騿蝺r(jià),等候單價(jià)有兩種情況:在等候時(shí)間小于1小時(shí)的情況下,等候單價(jià)為1元每
17、5分鐘;在等候時(shí)間大于1小時(shí)的情況下,等候單價(jià)為20元每小時(shí)。 </p><p> ?、葙M(fèi)用的計(jì)算,出租車的起價(jià)為5.00元,當(dāng)里程小于2㎞時(shí),按起價(jià)計(jì)算費(fèi)用;當(dāng)里程大于2㎞時(shí)按下式計(jì)算費(fèi)用:費(fèi)用=
18、里程*里程單價(jià)+等候時(shí)間*等候單價(jià)。</p><p> ⑥費(fèi)用的顯示,用五位數(shù)字顯示,顯示方式為“XXX.XX”,單價(jià)為元。</p><p> 2.1.2 時(shí)鐘及顯示 </p><p> 當(dāng)出租車在通常運(yùn)行狀態(tài)下,應(yīng)能顯示當(dāng)前的時(shí)間,在汽車熄火的情況下,時(shí)鐘必須正常運(yùn)行,但是可以不顯示時(shí)鐘.</p><p> 2.1.3 計(jì)費(fèi)開始提示
19、 </p><p> 當(dāng)出租車載上乘客并起步后,將空車指示牌扳倒時(shí),空車指示牌里的指示燈熄滅,并有語音或燈光提示信號(hào)。</p><p> 圖2.2 總體原理框圖</p><p> 2.2 功能模塊設(shè)計(jì)</p><p> 根據(jù)系統(tǒng)的設(shè)計(jì)要求,將整個(gè)測(cè)控FPGA系統(tǒng)CZJFXT分為七個(gè)模塊,它們分別是:分頻器模塊FPQ,等待判別模
20、塊DDPB,里程計(jì)算模塊LCJS,里程計(jì)費(fèi)模塊LCJF,等待計(jì)時(shí)模塊DDJS,等待計(jì)費(fèi)模塊DDJF,輸出數(shù)據(jù)選擇模塊SCXZ。</p><p> 分頻器模塊FPQ:將外部時(shí)鐘信號(hào)SCLK(設(shè)計(jì)時(shí)假設(shè)為1024HZ)經(jīng)過適當(dāng)分頻后,產(chǎn)生1HZ的系統(tǒng)工作用基準(zhǔn)時(shí)鐘信號(hào)CLK1HZ,供給系統(tǒng)中的有關(guān)模塊計(jì)時(shí)用。</p><p> 等待判別模塊DDPB:根據(jù)速度傳感器脈沖信號(hào)WCLK和分頻器產(chǎn)
21、生的基準(zhǔn)時(shí)鐘信號(hào)CLK1HZ,計(jì)算單位時(shí)間里WCLK的脈沖個(gè)數(shù)(每㎞產(chǎn)生1000個(gè)脈沖信號(hào),即每米產(chǎn)生1個(gè)脈沖信號(hào)),亦即出租車行駛速度,從而判別出租車是否處于等待狀態(tài),發(fā)出等待標(biāo)志信號(hào)DDBZ。當(dāng)速度大于12㎞/H,即速度大于200M/MIN時(shí),出租車處于運(yùn)行狀態(tài),這時(shí)等待標(biāo)志DDBZ=0;當(dāng)速度小于等于12㏎/H,即速度小于等于200M/MIN時(shí),出租車處于等待狀態(tài),這時(shí)等待標(biāo)志DDBZ=1。該模塊的VHDL程序設(shè)計(jì)可分為三個(gè)進(jìn)程:
22、60S周期性跳變信號(hào)產(chǎn)生進(jìn)程,每分鐘行駛距離計(jì)算進(jìn)程,等待標(biāo)志判別進(jìn)程。等待標(biāo)志判別進(jìn)程就是比較每分鐘WCLK脈沖個(gè)數(shù)與等待狀態(tài)WCLK脈沖臨界個(gè)數(shù)200的大小,從而確定DDBZ的賦值。</p><p> 里程計(jì)算模塊LCJS:根據(jù)速度傳感器脈沖信號(hào)WCLK和等待標(biāo)志DDBZ,對(duì)出租車行駛的里程數(shù)XSLC進(jìn)行計(jì)算,同時(shí)發(fā)出里程標(biāo)志信號(hào)LCBZ和里程計(jì)費(fèi)標(biāo)志信號(hào)JFBZ。如果LCBZ=1,說明行駛距離超過2㎞,里
23、程計(jì)費(fèi)啟動(dòng);如果LCBZ=0,說明沒超過2㎞,按起價(jià)計(jì)費(fèi),每行駛1㏎應(yīng)計(jì)費(fèi)1次,并且計(jì)費(fèi)的啟動(dòng)信號(hào)應(yīng)是某一時(shí)刻,因此每行駛1㎞,計(jì)費(fèi)標(biāo)志信號(hào)JFBZ應(yīng)跳變1次。該模塊的VHDL程序設(shè)計(jì)可分為兩個(gè)進(jìn)程:里程計(jì)算及標(biāo)志產(chǎn)生進(jìn)程,產(chǎn)生計(jì)費(fèi)信號(hào)進(jìn)程。產(chǎn)生計(jì)費(fèi)信號(hào)進(jìn)程就是每行駛10百米(即1㎞)JFBZ由低電平0變?yōu)?,經(jīng)過一個(gè)系統(tǒng)時(shí)鐘周期后JFBZ又回復(fù)到低電平0,里程計(jì)費(fèi)模塊LCJF就是在JFBZ脈沖信號(hào)的上升沿到來時(shí)進(jìn)行計(jì)費(fèi)的加法操作。&l
24、t;/p><p> 里程計(jì)費(fèi)模塊LCJF:在計(jì)費(fèi)標(biāo)志信號(hào)JFBZ,等待標(biāo)志信號(hào)DDBZ,里程標(biāo)志信號(hào)LCBZ和時(shí)段標(biāo)志信號(hào)SDBZ等信號(hào)的控制下,計(jì)算行駛里程超過2㎞以上里程的費(fèi)用LCFY。該模塊的VHDL程序是通過由多個(gè)條件控制的加法進(jìn)程來完成里程計(jì)費(fèi)的,里程計(jì)費(fèi)的條件是在DDBZ=0,并且在JFBZ的上升沿根據(jù)SDBZ分別進(jìn)行加法計(jì)費(fèi)操作。當(dāng)SDBZ=1時(shí),表示在06:00~23:00時(shí)段,其單價(jià)SD1為1.4
25、元/㎞;當(dāng)SDBZ=0時(shí),表示其他時(shí)段,其單價(jià)SD2為1.8元/㎞。如果LCBZ=1,說明行駛距離超過2㎞,里程計(jì)費(fèi)啟動(dòng);如果LCBZ=0,說明沒超過2㎞,按起價(jià)計(jì)費(fèi)。</p><p> 等待計(jì)時(shí)模塊DDJS:在等待標(biāo)志信號(hào)DDBZ和基準(zhǔn)時(shí)鐘信號(hào)CLK1HZ的控制下,進(jìn)行等待時(shí)間DDSJ的計(jì)算,其中DDSJ的低8位表示等待時(shí)間的秒數(shù),DDSJ的高8位表示等待時(shí)間的分鐘數(shù),同時(shí)根據(jù)等待時(shí)間的長(zhǎng)短發(fā)出一個(gè)熄燈標(biāo)志信
26、號(hào)XDBZ。當(dāng)?shù)却龝r(shí)間小于等于1小時(shí),XDBZ=0,等待時(shí)間顯示燈亮;當(dāng)?shù)却龝r(shí)間大于1小時(shí),XDBZ=1,等待時(shí)間顯示不亮。該模塊的VHDL程序是通過一個(gè)多層嵌套的加法進(jìn)程來完成等待計(jì)時(shí)的。</p><p> 等待計(jì)費(fèi)模塊DDJF:在等待標(biāo)志信號(hào)DDBZ和熄燈標(biāo)志信號(hào)XDBZ控制下,進(jìn)行等待費(fèi)用DDFY的計(jì)費(fèi)操作。該模塊的VHDL程序包括兩個(gè)進(jìn)程:60S周期性跳變信號(hào)產(chǎn)生進(jìn)程,等待費(fèi)用計(jì)算進(jìn)程。等待費(fèi)用計(jì)算的條
27、件是在DDBZ=1并且在60S周期性跳變信號(hào)T60S的上升沿,根據(jù)XDBZ分別進(jìn)行加法計(jì)費(fèi)操作。當(dāng)DDBZ=1且XDBZ=0時(shí),按1元/5分鐘,即20分/分鐘計(jì)費(fèi);當(dāng)DDBZ=0且XDBZ=1時(shí),按20元/小時(shí),即33分/分鐘計(jì)費(fèi)。</p><p> 輸出數(shù)據(jù)選擇模塊SCXZ:根據(jù)單片機(jī)發(fā)出的數(shù)據(jù)傳輸選擇控制信號(hào)SEL,選擇有關(guān)計(jì)算處理結(jié)果傳輸給單片機(jī)。</p><p> 第3章 硬
28、件及軟件實(shí)現(xiàn)</p><p><b> 3.1 傳感器</b></p><p> 傳感器通常是指能感受并能按一定規(guī)律將所感受的被測(cè)非電量(包括物理量、化學(xué)量、生物量等)轉(zhuǎn)換成便于處理與傳輸?shù)碾娏?一般為電量,也有少數(shù)為其他物理量,如光信號(hào))的器件或裝置。</p><p> 光電傳感器是把光信號(hào)轉(zhuǎn)換為電信號(hào)的傳感器,光電傳感器的種類極多。它
29、們共同的特點(diǎn)是響應(yīng)速度快,易于實(shí)現(xiàn)非接觸測(cè)量,非常適于與計(jì)算機(jī)接口。</p><p> 3.1.1 光電傳感器電路設(shè)計(jì)</p><p> 光電傳感器工作時(shí),大致應(yīng)用了三種效應(yīng):通過光子與物質(zhì)的相互作用能直接得到電信號(hào)的量子效應(yīng);光被物質(zhì)吸收變成熱量后,利用熱電轉(zhuǎn)換得到電信號(hào)的熱效應(yīng);光作為一種電磁波,直接與物質(zhì)相互作用,從而感應(yīng)出電信號(hào)的波動(dòng)相互作用效應(yīng)。</p>&l
30、t;p> 反射式光電傳感器是用來檢測(cè)黑白線條的,如圖3.1.1(a)所示 </p><p> 由于黑白物體的反射系數(shù)不同,利用反射光可以使光敏三極管實(shí)現(xiàn)導(dǎo)通和斷開,調(diào)節(jié)傳感器與被測(cè)對(duì)象之間的距離,使光敏三極管只能接受到白色物體反射回來的光束。而黑色物體的反射系數(shù)小,所反射回來的光束很弱,光敏三極管無法接受到反射光。 從而實(shí)現(xiàn)對(duì)黑白線條的檢測(cè)。</p><p> 還要在輸出
31、信號(hào)處加個(gè)控制電路,如圖3.1.1(b)起隔離強(qiáng)信號(hào)和方波整形的作用.</p><p><b> (a)</b></p><p><b> (b)</b></p><p> 圖3.1.1 反射式光電傳感器</p><p> 3.1.2車輪光電開關(guān)檢測(cè)電路</p><p&g
32、t; 由于要測(cè)出出租車的運(yùn)行速度,每1千米產(chǎn)生1000個(gè)脈沖信號(hào)并計(jì)算出單位時(shí)間里的脈沖個(gè)數(shù),轉(zhuǎn)換成車輪所轉(zhuǎn)的圈數(shù),即產(chǎn)生脈沖數(shù)的多少。在該設(shè)計(jì)中采用在車輪的轉(zhuǎn)盤上安裝一個(gè)3條黑白線均勻的圓盤,再用光電開關(guān)來檢測(cè),如下圖4.1.2所示,當(dāng)出租車運(yùn)動(dòng)時(shí),車輪轉(zhuǎn)動(dòng),光電傳感器利用接收黑白電平時(shí)輸出的高低電平,當(dāng)光電傳感器檢測(cè)到黑色條紋時(shí),輸出高電平給單片機(jī),相反當(dāng)檢測(cè)到白色條紋時(shí)輸出低電平,從而把連續(xù)輸出高低電平轉(zhuǎn)化為脈沖數(shù),也就把電機(jī)轉(zhuǎn)
33、動(dòng)時(shí)帶動(dòng)有黑白線的圓盤黑白條數(shù)轉(zhuǎn)換成脈沖數(shù),從而測(cè)試出出租車運(yùn)行速度。</p><p> 圖3.1.2 光電檢測(cè)電路</p><p> 用一張貼有黑色膠帶的白紙,讓光電傳感器離紙不到5cm的平面上與膠帶垂直經(jīng)過,看計(jì)數(shù)是否與所經(jīng)過的的膠帶數(shù)目相等,若多次測(cè)試都是吻合的,則此光電傳感器良好.</p><p><b> 3.2 單片機(jī)</b&g
34、t;</p><p> 單片機(jī)既是一個(gè)微型的計(jì)算機(jī),它具有組成計(jì)算機(jī)系統(tǒng)的三個(gè)要素:CPU、內(nèi)存與I/O。</p><p> CPU:運(yùn)算或邏輯上的判斷;</p><p> 內(nèi)存:存放程序與數(shù)據(jù);</p><p> I/O:與外界溝通的橋梁。</p><p> 圖3.2.1 單片機(jī)簡(jiǎn)圖</p>
35、<p> 3.2.1 8051 單片機(jī)功能方塊圖</p><p> 圖3.2.2 8051 單片機(jī)功能方塊圖</p><p> 振蕩及時(shí)序單元(OSC):</p><p> 8051內(nèi)部有晶體振蕩電路,只要在外部加上石英振蕩晶體,即可產(chǎn)生頻率非常穩(wěn)定的振蕩信號(hào),這個(gè)振蕩信號(hào)正是8051的心臟,所有8051的時(shí)鐘序列都以此振蕩信號(hào)為基準(zhǔn)。<
36、;/p><p> 內(nèi)部數(shù)據(jù)存儲(chǔ)器(Data Memory):</p><p> 當(dāng)程序在運(yùn)行時(shí),有些數(shù)據(jù)是經(jīng)常在變動(dòng)的,例如LED的顯示狀態(tài)或顯示值等,它會(huì)因I/O測(cè)量的結(jié)果而變動(dòng),這些值就暫時(shí)放置在此區(qū)域中,供其他程序進(jìn)一步讀取,這也代表此區(qū)域是可以隨時(shí)讀寫的。8051系列的CPU提供128個(gè)字節(jié)可讀寫的數(shù)據(jù)存儲(chǔ)單元,52系列的CPU則提供256個(gè)字節(jié)的數(shù)據(jù)存儲(chǔ)單元,這個(gè)數(shù)據(jù)區(qū)域中有一
37、段區(qū)域16個(gè)字節(jié)共128位是可以進(jìn)行位尋址的,MCS—51系列的CPU有相當(dāng)強(qiáng)的位處理指令,可以妥善且有效地運(yùn)用該數(shù)據(jù)存儲(chǔ)器,使用方法將在8051的指令說明中再詳述。</p><p> 內(nèi)部程序存儲(chǔ)器(Program memory):</p><p> 這段區(qū)域用于存放我們的應(yīng)用程序,而且這部分一經(jīng)確認(rèn)后是永遠(yuǎn)不做修改的。8051系列的CPU提供內(nèi)部4096個(gè)字節(jié)(4KB)的程序存儲(chǔ)
38、器,8052系列的CPU則提供2倍即8192個(gè)字節(jié)(8KB)的程序存儲(chǔ)器,而8031和8032則不含此單元。此單元可以使CPU選擇由內(nèi)部的程序區(qū)啟動(dòng)或由外部的程序區(qū)啟動(dòng),內(nèi)部的程序區(qū)啟動(dòng)具有保護(hù)功能,后者成本較為低廉。在8051系統(tǒng)中特地將程序區(qū)和數(shù)據(jù)區(qū)分隔開,兩者最大的差異是后者可以讀取和寫入,簡(jiǎn)而言之,PROGRA MMEMORY就是 ROM,DATA MEMORY則是 RAM。</p><p> 定時(shí)
39、/計(jì)數(shù)器(Timer/Counter):</p><p> 51系列的CPU有2個(gè)定時(shí)/計(jì)數(shù)器,而52系列CPU則有3個(gè)定時(shí)/計(jì)數(shù)器,每個(gè)定時(shí)/計(jì)數(shù)器又有多種模式可供選擇。</p><p> 串行接口(Serial Port):</p><p> 8051可通過此接口與外部的計(jì)算機(jī)等設(shè)備連線交換信息,也可以通過此接口進(jìn)行I/O的擴(kuò)充。</p>
40、<p> 并行輸入/出端口(Parelled I/O):</p><p> 不論是8051或8052單片機(jī)都有4個(gè)輸入/出端口,總共有32個(gè)輸入/出,而且每個(gè)點(diǎn)都可以單獨(dú)定義成輸入或輸出。</p><p> 控制總線(Bus Control):</p><p> 當(dāng)程序的空間超出MSC—51系列內(nèi)存程序空間的限制時(shí),會(huì)通過本單元的控制線路向外部
41、送出地址線信號(hào)和控制信號(hào),同時(shí)當(dāng)程序執(zhí)行MOVX @DPTR,A指令時(shí),代表對(duì)外部數(shù)據(jù)內(nèi)存做寫入的運(yùn)行,此時(shí)也要靠本單元送出必要的控制信號(hào),才能達(dá)成外部READ與WRITE的運(yùn)行請(qǐng)求。</p><p> 8051運(yùn)算處理單元(Core):</p><p> 這是整個(gè)單片機(jī)的控制處理核心,它讀取程序碼,經(jīng)過計(jì)算及處理后,將結(jié)果送到各個(gè)寄存器或輸入/輸出端口上,并且接受內(nèi)部和外部的中斷信號(hào)
42、,然后執(zhí)行特定的中斷服務(wù)程序。只要加入電源并且石英晶體開始運(yùn)行后,本單元就一直不停地工作著,通常我們所謂的死機(jī)是指本單元跳入一個(gè)未知沒有出口的循環(huán)中執(zhí)行,而不是指CPU停止一切的運(yùn)行,不再執(zhí)行任何程序。</p><p> 累加器(Accumulator):</p><p> 累加器是眾多寄存器中最重要的一個(gè)寄存器,通常以簡(jiǎn)寫Acc代表累加器,8051的指令中有許多指令和Acc寄存器有關(guān)
43、,也有多個(gè)指令非通過Acc不可,基本上,8051的指令中賦予Acc 累加器的權(quán)限最大。Intel公司建議程序的執(zhí)行盡量以Acc為主。</p><p> B寄存器(B Register):</p><p> B寄存器是一個(gè)一般用途的工作寄存器,當(dāng)8051使用乘除指令時(shí),則一定要通過B寄存器來做運(yùn)算。</p><p> 中斷優(yōu)先順序控制寄存器(IPC,Inter
44、rupt Priority Control):</p><p> 這個(gè)寄存器中存放中斷時(shí)的優(yōu)先順序表,若對(duì)應(yīng)的位設(shè)成1時(shí),代表中斷有較高的中斷優(yōu)先權(quán)。</p><p> 允許中斷控制寄存器(IEC,Interrupt Enable Control):</p><p> 此寄存器內(nèi)含系統(tǒng)允許中斷的中斷源設(shè)置值,8051共有5個(gè)中斷可供選擇,8052則有6
45、個(gè)中斷源,IEC寄存器內(nèi)另有一個(gè)位簡(jiǎn)稱位,若=0時(shí)就禁止系統(tǒng)所有的中斷要求。</p><p> 串行輸出入緩沖寄存器(SBUF,Serial Buffer):</p><p> 所有待送出或剛進(jìn)入的串行數(shù)據(jù)值都存放在此寄存器中,8051的串行通信是非常簡(jiǎn)單的,只要一設(shè)置完通信協(xié)議后,再執(zhí)行一個(gè)MOVSBUF,A指令,就可立即將并行數(shù)據(jù)值轉(zhuǎn)化成串行數(shù)據(jù)送到外部。</p>&
46、lt;p> 串行通信控制寄存器 (SCON,Serial ControL或稱UART):</p><p> 此寄存器主要在設(shè)置串行通信的模式,當(dāng)串行數(shù)據(jù)已經(jīng)送完或數(shù)據(jù)已收妥時(shí),會(huì)有對(duì)應(yīng)的位被設(shè)置成1,這些位也可以當(dāng)成中斷要求信號(hào),請(qǐng)求CPU執(zhí)行特定的串行中斷服務(wù)程序。</p><p> 定時(shí)/計(jì)數(shù)控制寄存器(TCON,Timer/Counter Control):<
47、/p><p> 這個(gè)寄存器可以控制定時(shí)/計(jì)數(shù)器的打開或關(guān)閉,若一經(jīng)打開且計(jì)數(shù)到溢位時(shí),TCON上亦有對(duì)應(yīng)的位被設(shè)成1,CPU必須針對(duì)此位的狀態(tài),決定是否重新設(shè)置定時(shí)/計(jì)數(shù)值。</p><p> 堆棧指標(biāo)寄存器(SP,Stack Pointer):</p><p> 8051利用SP指引最近一次存入堆棧內(nèi)的地址,每當(dāng)我們?cè)诔绦蛑姓{(diào)用其他子程序時(shí),原程序的返回地址就
48、會(huì)自動(dòng)存入內(nèi)部DATA MEMORY組成的堆棧(Stack)中,而當(dāng)子程序執(zhí)行到RET指令時(shí),CPU會(huì)自動(dòng)由堆棧中取回原先存入的返回地址,繼續(xù)執(zhí)行原程序。每當(dāng)CPU將8位值存入堆棧時(shí),我們稱之為PUSH(推入),這時(shí)SP值會(huì)增加1,反之堆棧中取回8位值時(shí),則稱之為POP(提回),此時(shí)SP值會(huì)減少1。</p><p> 在寫8051單片機(jī)的控制程序時(shí),在程序起始狀態(tài)階段一定要設(shè)置SP值,以便程序有足夠的堆??臻g,
49、也可以利用軟件程序隨時(shí)機(jī)動(dòng)調(diào)整的堆棧指標(biāo)SP的值。</p><p> 特殊功能寄存器區(qū)(SFR,Special Function Register)</p><p> 8051單片機(jī)內(nèi)部將多個(gè)寄存器統(tǒng)稱成SFR,代表其特定的功能,甚至Port0、Port1、Port3也都是屬SFR 的成員之一,在這些SFR 中有部分的寄存器可以進(jìn)行位尋址,表 4.1是這些SFR 寄存器的整理,其中
50、加(*)記號(hào)的寄存器可進(jìn)行位尋址。</p><p> 表3.1 可進(jìn)行位尋址的SFR 寄存器</p><p> 3.2.2 AT89S51單片機(jī)簡(jiǎn)介</p><p> AT89S5l是新型高檔單片機(jī)。</p><p><b> 它的主要特性是:</b></p><p> 片內(nèi)含有 3
51、2 KB的 Flash程序存儲(chǔ)器,擦寫周期為 1000次;</p><p> 片內(nèi)數(shù)據(jù)存儲(chǔ)器內(nèi)含512字節(jié)的RAM;</p><p> 具有可編程32線I/O口(P0,P1,P2和P3口);</p><p> 具有3個(gè)可編程定時(shí)器T0,T1和T2;</p><p> 中斷系統(tǒng)是具有8個(gè)中斷源、6個(gè)中斷矢量、2級(jí)中斷優(yōu)先權(quán)的中斷結(jié)構(gòu);&
52、lt;/p><p> 具有一個(gè)全雙工 UART串行口;</p><p> 低功耗工作方式為空閑模式和掉電模式;</p><p> 具有雙數(shù)據(jù)指針DPTR0和DPTR1;</p><p> 具有3級(jí)程序鎖定位;</p><p> 具有硬件看門狗定時(shí)器WDT;</p><p> AT89S5
53、1工作電源為4.0~5.5V(AT89LV51RC為2.7~5.5V);</p><p> AT89S51最高工作頻率為33MHZ(AT89LV51RC為12MHZ);</p><p> 具有斷電標(biāo)志POF.</p><p> 3.2.3 AT89S5l與51系列單片機(jī)相比具有如下特點(diǎn)</p><p> ?、?程序存儲(chǔ)器由 8 KB增
54、加到32 KB;</p><p> ?、?片內(nèi)數(shù)據(jù)存儲(chǔ)器由256宇節(jié)增加到512字節(jié);</p><p> ?、?數(shù)據(jù)指針由1個(gè)增加到2個(gè);</p><p> ?、?增加了看門狗定時(shí)器,CPU在執(zhí)行程序過程中,由于瞬時(shí)的干擾使程序陷入死循環(huán)狀態(tài),WDT(Watchdog Timer)是使CPU擺脫這種困境而自動(dòng)恢復(fù)的一種方法;</p><p>
55、 ⑤ 退出掉電方式由單純硬件復(fù)位方式增加到硬件復(fù)位和中斷兩種方式;</p><p> ⑥ 新增加了斷電標(biāo)志POF.</p><p> 3.2.4 89S51的內(nèi)部框圖</p><p> 圖3.2.3 89S51的內(nèi)部框圖</p><p><b> 引腳排列及功能:</b></p><p
56、> AT89S51有3種封裝形式:PDIP.PLCC和TQFP.PDIP封裝的引腳排列如圖所示。</p><p> 圖3.2.4 單片機(jī)電路板</p><p><b> ?、伲桑峡诰€</b></p><p> P0口——8位、漏極開路的雙向 1/O口。</p><p> 當(dāng)使用片外存儲(chǔ)器及外擴(kuò) I/O口
57、時(shí),P0口作為低字節(jié)地址/數(shù)據(jù)復(fù)用線。在編程時(shí),P0口可用于接收指令代碼宇節(jié);在程序校驗(yàn)時(shí),P0口可輸出指令字節(jié)(這時(shí)需要加外部上拉電阻)。</p><p> P0口也可作通用I/O口使用.但需加上拉電阻.變?yōu)闇?zhǔn)雙向口。當(dāng)作為普通輸入時(shí),應(yīng)將 輸出鎖存器置1. PO口可驅(qū)動(dòng)8個(gè) TTL負(fù)載.</p><p> P1口——8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電阻。</p>&
58、lt;p> P1口是為用戶準(zhǔn)備的 1/O雙向口。在編程和校驗(yàn)時(shí),可用做輸入低8位地址。用做輸入時(shí),應(yīng)先將輸出鎖存器置1. P1口可驅(qū)動(dòng)4個(gè)TTL負(fù)載。</p><p> 表4.2 P1.0 P1.1替代功能</p><p> P2口——8位、準(zhǔn)雙向 1/O口.具有內(nèi)部上位電阻.</p><p> 當(dāng)使用片外存儲(chǔ)器或外擴(kuò)1/O口時(shí).P2口輸出高8位地
59、址。在編程/校驗(yàn)時(shí).P2口可接收高字節(jié)地址和某些控制信號(hào)。</p><p> P2口也可作普通I/O口使用。用做輸入時(shí),應(yīng)先將輸出鎖存器置1. P2口可驅(qū)動(dòng)4個(gè)TTL負(fù)載。</p><p> P3口——8位、準(zhǔn)雙向 1/O口,具有內(nèi)部上拉電阻。 </p><p> P3口可作為普通1/O口。用做輸入時(shí),應(yīng)先將輸出鎖存器置 1.在編程/校驗(yàn)時(shí).P3口接收某些
60、控制信號(hào)。它可驅(qū)動(dòng)4個(gè)TTL負(fù)載。</p><p> P3口還提供各種替代功能。</p><p> 表3.3 P3口替代功能</p><p><b> ?、?控制信號(hào)線</b></p><p> RST——復(fù)位輸入信號(hào),高電平有效。在振蕩器穩(wěn)定工作時(shí),在RST腳施加兩個(gè)機(jī)器周期(即24個(gè)晶振周期)以上的高電平,將
61、器件復(fù)位。</p><p> EA/VPP——外部程序存儲(chǔ)器訪問允許信號(hào)EA(External Access Enable)。</p><p> 當(dāng)EA信號(hào)接地時(shí),對(duì)ROM的讀操作限定在外部程序存儲(chǔ)器,地址為0000H~FFFFH;當(dāng)EA接地時(shí),對(duì)ROM的讀操作從內(nèi)部程序存儲(chǔ)器開始,并可延續(xù)至外部程序存儲(chǔ)器。</p><p> 在編程時(shí),該引腳可接編程電壓(A
62、T89C51的VPP為5V或12V;AT89LV51的VPP為12 V)。在編程校驗(yàn)時(shí),該引腳可接VCC。</p><p> PSEN——片外程序存儲(chǔ)器讀選通信號(hào)用PSEN(Program Store Enable),低電平有效.</p><p> 在片外程序存儲(chǔ)器取指令期間,當(dāng)PSEN有效時(shí),程序存儲(chǔ)器的內(nèi)容被送至 PO口(數(shù)據(jù)總線);在訪問外部RAM時(shí),PSEN無效。</p&
63、gt;<p> AIE/PROG——低字節(jié)地址鎖存信號(hào) AlE(Address latch Enable)。</p><p> 在系統(tǒng)擴(kuò)展時(shí),AlE的下降沿將PO口輸出的低8位地址鎖存在外接的地址鎖存器中,以實(shí)現(xiàn)低字節(jié)地址和數(shù)據(jù)的分時(shí)傳送。此外,ALE端連續(xù)輸出正脈沖.頻率為晶振頻率的1/6,</p><p> 可用做外部定時(shí)脈沖使用。但要注意,每次訪問外RAM時(shí)要丟失
64、一個(gè)ALE脈沖。</p><p> 在編程期間.該引腳輸入編程脈沖(PROG)。</p><p><b> ?、?電源線</b></p><p> VCC——電源電壓輸入。</p><p><b> GND——接地。</b></p><p><b> ?、?外
65、部晶振引線</b></p><p> XTAL1——片內(nèi)振蕩器反相放大器和時(shí)鐘發(fā)生線路的輸入端。使用片內(nèi)振蕩器時(shí),連接外部石英晶體和微調(diào)電容。</p><p> XTAL2——片內(nèi)振蕩器反相放大器的輸出端。當(dāng)使用片內(nèi)振蕩器時(shí),外接石英晶體 和微調(diào)電容。</p><p> 當(dāng)使用外部振蕩器時(shí),引腳XTAL1接收外振蕩器信號(hào),XTAIL2懸空。<
66、/p><p> 3.2.5 中斷控制</p><p><b> 可采用中斷的時(shí)機(jī):</b></p><p> ?、?當(dāng)計(jì)數(shù)值數(shù)完時(shí)要做一個(gè)特定的動(dòng)作。</p><p> ?、?當(dāng)外部信號(hào)有一個(gè)脈沖信號(hào)產(chǎn)生時(shí)要做某種特定的運(yùn)算。</p><p> ?、?當(dāng)外部某些信號(hào)成立時(shí),必須立即處理。&
67、lt;/p><p> ④ 當(dāng)收到通信界面上的一個(gè)特定值時(shí),必須立即反應(yīng)。</p><p> ?、?當(dāng)程序必須處理數(shù)個(gè)小程序,且這些程序必須幾乎同時(shí)都在執(zhí)行中。</p><p> ?、?當(dāng)程序必須隨時(shí)更新某項(xiàng)數(shù)據(jù)或顯示值。</p><p> ?、?當(dāng)程序必須自動(dòng)且隨時(shí)去檢查系統(tǒng)中的狀態(tài)值時(shí)。</p><p> 上
68、述的情形亦可采用平常的程序,以持續(xù)或經(jīng)常詢問的寫法來應(yīng)付,但是若系統(tǒng)有多個(gè)條件要詢問時(shí),寫法就會(huì)變得相當(dāng)?shù)膹?fù)雜。假如改用程序中斷的寫法,則程序的寫法就會(huì)變得較單純些,中斷程序通常有以下一個(gè)或一個(gè)以上的特征,假使我們的應(yīng)用中發(fā)現(xiàn)有這些特征時(shí),在程序規(guī)劃前就要考慮是否采用中斷的寫法。</p><p> 特征1:每隔一個(gè)時(shí)間間隔就必須做某件特定的事情。</p><p> 特征2:當(dāng)某個(gè)條件(
69、不論軟件或硬件線路)成立時(shí),就讓CPU立即處理。</p><p> 特征3:CPU 正以多任務(wù)(Multi-task)的模式,同時(shí)處理數(shù)個(gè)程序或信號(hào)。</p><p> 特征4:某項(xiàng)狀態(tài)可能平時(shí)均不成立,可是一成立時(shí),CPU 必須立即停止原先的動(dòng)作,馬上來處理這個(gè)狀態(tài)。</p><p> 3.2.6 單片機(jī)控制程序設(shè)計(jì)</p><p>
70、; 單片機(jī)模塊包括單片機(jī)AT89S51及其控制的顯示和鍵盤系統(tǒng),AT89S51對(duì)FPGA的數(shù)據(jù)進(jìn)行計(jì)算,計(jì)算出用車總費(fèi)用并送入顯示系統(tǒng)顯示,同時(shí)它接收鍵盤信息并處理顯示切換。系統(tǒng)采用6+1顯示,6個(gè)數(shù)碼管作常規(guī)顯示,一個(gè)數(shù)碼管作狀態(tài)顯示。按鍵共有5個(gè),分別是功能切換鍵,確定鍵,修改鍵,啟動(dòng)模擬鍵和空車牌壓下模擬鍵。</p><p> 圖3.2.5 主程序流程圖</p><p>
71、圖 3.2.6 按鍵處理流程圖</p><p> 圖3.2.7 顯示子程序流程圖</p><p> 圖3.2.8 里程顯示子程序流程圖</p><p> 圖3.2.9 乘車費(fèi)用顯示子程序流程圖</p><p> 3.2.7 單片機(jī)匯編語言源程序</p><p> ;CZJFXT.ASM&
72、lt;/p><p> LED8 EQU 7FH</p><p> LED7 EQU 7EH ;時(shí)間顯緩</p><p> LED6 EQU 7DH</p><p> LED5 EQU 7CH</p><p> LED4 EQU 7BH</p><p> LED3 EQ
73、U 7AH</p><p> LED2 EQU 79H</p><p> LED1 EQU 78H</p><p> FUNKEY EQU P1.0 ;功能</p><p> SELKEY EQU P1.1 ;選擇 </p><p> FIXKEY EQU P1.2
74、 ;修改</p><p> RUN EQU P1.4 ;運(yùn)行信號(hào)(傳感器)</p><p> RUNBZ EQU 28H.4</p><p> ZK EQU P1.5 ;載客信號(hào)-單片機(jī)(傳感器)</p><p> ZKBZ EQU 28H.2 ;載客標(biāo)志</p>
75、<p> SZKBZ EQU P2.7 ;送FPGA的載客標(biāo)志</p><p> INT_R1 EQU 46H</p><p> INT_R0 EQU 47H</p><p> INT_R2 EQU 48H</p><p> KEYNUM EQU 49H</p><p> ADA
76、 EQU P2.0</p><p> ADB EQU P2.1</p><p> ADC EQU P2.2</p><p> SDBZ EQU P2.3 ;時(shí)段標(biāo)志</p><p> LCBZ EQU P2.4 ;里程標(biāo)志</p><p> DDBZ EQU P2.
77、5 ;等待標(biāo)志</p><p> DDBZC EQU 28H.5</p><p> XDBZ EQU P2.6 ;等待超過1小時(shí)標(biāo)志</p><p> FYDY8 EQU 3FH ;費(fèi)用顯緩</p><p> FYDY7 EQU 3EH</p><p> F
78、YDY6 EQU 3DH</p><p> FYDY5 EQU 3CH</p><p> FYDY4 EQU 3BH</p><p> FYDY3 EQU 3AH</p><p> FYDY2 EQU 39H</p><p> FYDY1 EQU 38H</p><p><b&g
79、t; ??;主程序</b></p><p><b> START:</b></p><p> JMP MAIN ;轉(zhuǎn)移到主程序</p><p> ORG 000BH ;中斷服務(wù)入口地址</p><p><b> LJMP PIT0</b></
80、p><p><b> ORG 30H</b></p><p><b> MAIN:</b></p><p> CLEAR:MOV R0,#00H</p><p> MOV R1,#128</p><p> MOV A,#00H</p><p>
81、 L1: MOV @R0,A</p><p><b> INC R0</b></p><p> DJNZ R1,L1</p><p> MOV P2,#00H</p><p> MOV SP,#60H ;開辟堆棧區(qū)</p><p> MOV TMOD,#01H
82、 ;定時(shí)器0,定時(shí)工作方式1,16位</p><p> MOV TL0,#0B0H ;初值為4C00H,50MS</p><p> MOV TH0,#03CH</p><p> SETB TR0 ;啟動(dòng)定時(shí)器工作</p><p> SETB IE.7 ;中斷總允許</p>
83、<p> SETB IE.1 ;允許定時(shí)中斷</p><p> MOV 30H,#14H ;中斷循環(huán)次數(shù)初值為20次</p><p> ML2:LCALL KKEYI</p><p> MLL3:CJNE A,#04H,ML4</p><p> SETB RUNBZ</p>
84、<p><b> SJMP ML2</b></p><p><b> ??;調(diào)用鍵盤掃描程序</b></p><p> ML4: CJNE A,#00H,MLL1</p><p> CLR 28H.0</p><p> CLR 28H.6</p><p>
85、 LCALL SJJZ</p><p> LCALL KKEYI</p><p> CJNE A,#00H,MLL3</p><p> LCALL LCDJDISP</p><p> LCALL KKEYI</p><p> CJNE A,#00H,MLL3</p><p><
86、b> CLR 28H.0</b></p><p><b> LJMP ML6</b></p><p> LCALL KKEYI</p><p> MLLL1:CJNE A,#00H,MLL3</p><p><b> LJMP ML5</b></p><
87、;p> MLL1:JNB RUNBZ,ML2</p><p> CJNE A,#05H,ML2</p><p><b> SETB ZKBZ</b></p><p> SETB SZKBZ</p><p><b> NOP</b></p><p> LCAL
88、L DELAY3</p><p><b> CLR SZKBZ</b></p><p> ??;LCALL QJDISP ;起價(jià)顯示</p><p> ML5:LCALL FYDISP ;費(fèi)用顯示</p><p> LCALL KKEYII</p><p>
89、JNB 28H.3,ML3 ;有鍵按下轉(zhuǎn)ML3</p><p> LJMP ML5 ;沒鍵按下繼續(xù)刷新費(fèi)用顯示</p><p> ML3:LJMP MLL3</p><p> ML6:LCALL LCDISP</p><p> LCALL KKEYII</p><p>
90、 JNB 28H.3,MLLL1</p><p><b> LJMP ML6</b></p><p> DDDISP: ;等待時(shí)間顯示子程序</p><p> MOV FYDY8,#0DH</p><p> MOV FYDY7,#12H</p>&
91、lt;p> MOV FYDY6,#12H</p><p><b> RET</b></p><p><b> ?。粫r(shí)間校正子程序</b></p><p> SJJZ:MOV R6,#03H </p><p> MOV 40H,#LED
92、6</p><p> SJL0:LCALL KKEYI</p><p> CJNE A,#01H,NEXT3</p><p> SJL3:LCALL KKEYI</p><p> SJL1:CJNE A,#02H,NEXT3</p><p><b> MOV A,R6</b></p
93、><p> CJNE A,#03H,SL0</p><p> MOV R0,40H</p><p> LCALL DAAD1</p><p> MOV A,R2 ;是否到了60S?</p><p> XRL A,#24H</p><p> JNZ SJL4
94、 ;不到,轉(zhuǎn)RET1返回</p><p> LCALL CLR0 ;到了60S,則秒顯示緩沖單元清0</p><p><b> LJMP SJL4</b></p><p> SL0:CJNE A,#02H,SL1</p><p> MOV R0,40H<
95、/p><p> LCALL DAAD1</p><p> MOV A,R2 ;是否到了60S?</p><p> XRL A,#60H</p><p> JNZ SJL4 ;不到,轉(zhuǎn)RET1返回</p><p> LCALL CLR0
96、 ;到了60S,則秒顯示緩沖單元清0 </p><p><b> LJMP SJL4</b></p><p> SL1:CJNE A,#01H,SJL4</p><p> MOV R0,40H</p><p> LCALL DAAD1</p><p> MOV A,R2
97、 ;是否到了60S?</p><p> XRL A,#60H</p><p> JNZ SJL4 ;不到,轉(zhuǎn)RET1返回</p><p> LCALL CLR0 ;到了60S,則秒顯示緩沖單元清0</p><p><b> LJMP SJL4<
98、/b></p><p> SJL4:LCALL KKEYI</p><p> CJNE A,#01H,SJL1</p><p><b> DEC 40H</b></p><p><b> DEC 40H</b></p><p> DJNZ R6,SJL3<
99、;/p><p><b> NEXT3:RET</b></p><p> ??;起價(jià)顯示參數(shù)子程序</p><p> QJDISP:SETB 28H.0</p><p> MOV FYDY8,#0FH</p><p> MOV FYDY7,#12H</p><p> M
100、OV FYDY6,#12H</p><p> JB 28H.1,NEXT9</p><p> MOV FYDY5,#00H</p><p> MOV FYDY4,#00H</p><p> MOV FYDY3,#05H</p><p> MOV FYDY2,#00H</p><p>
101、 MOV FYDY1,#00H</p><p><b> NEXT9:RET</b></p><p> ??;里程單價(jià)顯示子程序</p><p> LCDJDISP:SETB 28H.0</p><p> MOV FYDY8,#0DH</p><p> MOV FYDY7,#12H</
102、p><p> MOV FYDY6,#12H</p><p> MOV FYDY5,#12H</p><p> MOV FYDY4,#12H</p><p> JNB SDBZ,DJL1</p><p> MOV FYDY3,#01H</p><p> MOV FYDY2,#04H<
103、/p><p> MOV FYDY1,#00H</p><p><b> LJMP DJL2</b></p><p> DJL1:MOV FYDY3,#01H</p><p> MOV FYDY2,#08H</p><p> MOV FYDY1,#00H</p><p>
104、;<b> DJL2:RET</b></p><p><b> LCDISP:</b></p><p> ANL P2,#0F8H</p><p><b> SETB P2.2</b></p><p><b> SETB P2.1</b><
105、/p><p> MOV R0,#4FH ;讀入數(shù)據(jù)</p><p> MOV R3,#02H ;讀3次P0口</p><p> LCDL0:MOV A,P0</p><p><b> MOV @R0,A</b></p><p><b> DEC R0<
106、/b></p><p><b> MOV A,P2</b></p><p> INC A ;指向CPLD下一個(gè)數(shù)據(jù)ADRC ADRB ADRA=</p><p><b> MOV P2,A</b></p><p> DJNZ R3,LCDL0</p&g
107、t;<p> ANL P2,#0F8H</p><p><b> IF 1=5</b></p><p> MOV 4FH,#0AAH</p><p> MOV 4EH,#00H</p><p><b> ENDIF</b></p><p> MOV
108、58H,4EH ;另存</p><p> MOV 59H,4FH</p><p> MOV 22H,4DH</p><p> MOV 21H,4EH</p><p> MOV 20H,4FH</p><p> LCALL HEXBCD2</p><p> SETB 28H
109、.6</p><p> MOV FYDY8,#13H</p><p> MOV FYDY7,#12H</p><p> MOV FYDY6,#12H</p><p> MOV FYDY5,#12H</p><p><b> RET</b></p><p><
110、b> FYDISP:</b></p><p> ANL P2,#0F8H</p><p><b> SETB P2.1</b></p><p> MOV R0,#4FH ;讀入數(shù)據(jù)</p><p> MOV R3,#02H ;讀3次P0口</p>
111、<p> FYL1: MOV A, P0</p><p> MOV @R0, A</p><p><b> DEC R0</b></p><p><b> MOV A, P2</b></p><p> INC A ;指向CPLD下一個(gè)數(shù)據(jù)ADRC
112、 ADRB ADRA=</p><p><b> MOV P2, A</b></p><p> DJNZ R3, FYL1</p><p> ANL P2, #0F8H</p><p><b> IF 1=4</b></p><p> MOV 4FH, #0FFH
113、</p><p> MOV 4EH, #00H</p><p><b> ENDIF</b></p><p> MOV 58H,4EH ;另存</p><p> MOV 59H, 4FH</p><p> MOV 5FH, #0F4H</p><p
114、> MOV 5EH, #01H</p><p> LCALL ADDMB</p><p> MOV 22H, 4DH</p><p> MOV 21H, 4EH</p><p> MOV 20H, 4FH</p><p> MOV 4FH, #00H</p><p> MOV
115、 4EH, #00H</p><p> MOV 4DH, #00H</p><p> LCALL HEXBCD2</p><p> SETB 28H.0</p><p> MOV FYDY8, #0FH</p><p> MOV FYDY7, #12H</p><p> MOV FY
116、DY6, #12H</p><p><b> RET</b></p><p> ??;BCD轉(zhuǎn)換及送顯緩</p><p> HEXBCD2:NOP ;3BYTE HEX TO 4BYTE BCD HEX(22~20H)-BCD(26~23H)</p><p> MUBTD: MOV R0, #23H&
117、lt;/p><p> MOV R7, #04H</p><p><b> CLR A</b></p><p> LOPP1: MOV @R0, A</p><p><b> INC R0</b></p><p> DJNZ R7, LOPP1</p>&l
118、t;p> MOV R7, #18H</p><p> LOOP4: MOV R1, #20H</p><p> MOV R6, #03H</p><p><b> CLR C</b></p><p> LOPP2: MOV A,@R1</p><p><b> RLC
119、A</b></p><p> MOV @R1, A</p><p><b> INC R1</b></p><p> DJNZ R6, LOPP2</p><p> MOV R5, #04H</p><p> MOV R0, #23H</p><p>
120、 LOOP3: MOV A,@R0</p><p> ADDC A,@R0</p><p><b> DA A</b></p><p> MOV @R0, A</p><p><b> INC R0</b></p><p> DJNZ R5, LOOP3<
121、/p><p> DJNZ R7, LOOP4</p><p> SBCD: MOV R0, #23H;</p><p> MOV R1, #38H</p><p> MOV R3, #04H</p><p> HEX1: MOV A,@R0</p><p> ANL A, #0FH<
122、;/p><p> MOV @R1, A</p><p><b> INC R1</b></p><p><b> MOV A,@R0</b></p><p> ANL A, #0F0H</p><p><b> SWAP A</b></p&g
123、t;<p> MOV @R1, A</p><p><b> INC R1</b></p><p><b> INC R0</b></p><p> DJNZ R3, HEX1</p><p> NEXT2: RET</p><p> ??;時(shí)鐘中斷處理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車計(jì)費(fèi)系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)【畢業(yè)論文】
- 出租車計(jì)費(fèi)器設(shè)計(jì)畢業(yè)論文
- 出租車自動(dòng)計(jì)費(fèi)eda設(shè)計(jì)畢業(yè)論文
- 出租車計(jì)費(fèi)系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)出租車計(jì)費(fèi)系統(tǒng)畢業(yè)論文
- 出租車計(jì)費(fèi)系統(tǒng)設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
- 出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文基于fpga的出租車計(jì)費(fèi)系統(tǒng)設(shè)計(jì)
- 基于fpga的出租車計(jì)費(fèi)器的設(shè)計(jì)畢業(yè)論文
- 2017畢業(yè)論文-基于fpga的出租車計(jì)費(fèi)器系統(tǒng)的設(shè)計(jì)
- 出租車計(jì)費(fèi)設(shè)計(jì).doc
- 出租車計(jì)費(fèi)設(shè)計(jì).doc
- 單片機(jī)出租車計(jì)費(fèi)器畢業(yè)論文
- 2017畢業(yè)論文-基于pic單片機(jī)的出租車計(jì)費(fèi)系統(tǒng)
- 出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)開題報(bào)告
- 畢業(yè)論文——出租車管理系統(tǒng)
- 出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)【開題報(bào)告】
評(píng)論
0/150
提交評(píng)論