畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的出租車計(jì)價(jià)器控制系統(tǒng)設(shè)計(jì).doc_第1頁
畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的出租車計(jì)價(jià)器控制系統(tǒng)設(shè)計(jì).doc_第2頁
畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的出租車計(jì)價(jià)器控制系統(tǒng)設(shè)計(jì).doc_第3頁
畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的出租車計(jì)價(jià)器控制系統(tǒng)設(shè)計(jì).doc_第4頁
畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的出租車計(jì)價(jià)器控制系統(tǒng)設(shè)計(jì).doc_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

出租車計(jì)價(jià)器摘要: 隨著社會進(jìn)步,出租車已經(jīng)越來越貼近生活,成為我們重要的交通工具,現(xiàn)在的生活中,出租文化已成為一種顯著的文化,成為社會生活的組成部分,而其中,出租車計(jì)價(jià)器成了必不可少的工具。隨著生活水平的提高,人們已不再滿足于衣食住的享受,出行的舒適已受到越來越多人的關(guān)注。于是,出租車行業(yè)以低價(jià)高質(zhì)的服務(wù)給人們帶來了出行的享受。但是總存在著買賣糾紛困擾著行業(yè)的發(fā)展。而在出租車行業(yè)中解決這一矛盾的最好方法就是改良計(jì)價(jià)器。用更加精良的計(jì)價(jià)器來為乘客提供更加方便快捷的服務(wù)。這次的課程設(shè)計(jì)采用單片機(jī)作為控制系統(tǒng),按照傳統(tǒng)的模式,在整個(gè)項(xiàng)目設(shè)計(jì)開發(fā)過程中,先根據(jù)控制系統(tǒng)要求設(shè)計(jì)原理圖,pcb電路圖繪制,電路板制作,元器件的焊接,然后進(jìn)行軟件編程,通過仿真器對系統(tǒng)硬件和軟件調(diào)試,最后將調(diào)試成功的程序固化到單片機(jī)中。本設(shè)計(jì)利用單片機(jī)豐富的i/o端口,及其控制的靈活性實(shí)現(xiàn)基本的里程計(jì)價(jià)功能和價(jià)格調(diào)整、時(shí)鐘顯示功能。 隨著改革開放日益深入,出租車行業(yè)的發(fā)展勢頭已十分突出,國內(nèi)各機(jī)械廠家紛紛推出國產(chǎn)計(jì)價(jià)器。出租車計(jì)價(jià)器的功能從剛開始的只顯示路程(需要司機(jī)自己定價(jià),計(jì)算后四舍五入),到能夠自主計(jì)費(fèi),以及現(xiàn)在的能夠打發(fā)票和語音提示、按時(shí)間自主變動單價(jià)等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個(gè)城市的文明程度。關(guān)鍵詞:出租車計(jì)價(jià)器 電子線路 單片機(jī) 第一章 引言1.1本課題研究的意義 出租汽車是一種流動、分散、獨(dú)立經(jīng)營的行業(yè),歷來采用手工開票的交易方式,交管部門及其所屬單位對其實(shí)際應(yīng)運(yùn)情況不易掌握,難以管理。多收費(fèi)、亂開票、拒開票的宰客舞弊現(xiàn)象時(shí)有發(fā)生。而計(jì)價(jià)器在出租車收費(fèi)中的應(yīng)用則可以改人為影響因素較大的不公平現(xiàn)象。消費(fèi)者的權(quán)益也得到了很好的保障,也便于交通部門和所屬行業(yè)對出租車和司機(jī)的情況進(jìn)行管。計(jì)價(jià)器作為出租車的一個(gè)重要組成部分,關(guān)系著出租車司機(jī)和乘客雙方利益,起著重要的作用,因此,具有良好性能的計(jì)價(jià)器對廣大出租車司機(jī)朋友來說是很必要的。采用了單片機(jī)進(jìn)行設(shè)計(jì),相對來說功能強(qiáng)大,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎膶?shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可以通過軟件編程來完成更多的附加功能。針對計(jì)費(fèi)模式的切換,通過軟件編程就可以輕易而舉的實(shí)現(xiàn)。避免了機(jī)械開關(guān)帶來的不穩(wěn)定因素。1.2本論文的目的、內(nèi)容 凡坐過出租車的人都知道,只要汽車一開動,隨著行駛里程的增加,就會看到汽車前面的計(jì)價(jià)器里程數(shù)字顯示的讀數(shù)從零逐漸增大,而當(dāng)行駛到某一值時(shí)(如5km)計(jì)費(fèi)數(shù)字顯示開始從起步價(jià)(如10元)增加。當(dāng)出租車到達(dá)某地需要在那里等候時(shí),司機(jī)只要按一下“計(jì)時(shí)”鍵,每等候一定時(shí)間,計(jì)費(fèi)顯示就增加一個(gè)該收的等候費(fèi)用。汽車?yán)^續(xù)行駛時(shí),停止計(jì)算等候費(fèi),繼續(xù)增加里程計(jì)費(fèi)。消費(fèi)者到達(dá)目的地后,便可按顯示的數(shù)字收費(fèi)。在單片機(jī)性能不斷提高而價(jià)格卻不斷下降的情況下, 本論文以at89s51單片機(jī)為中心,附加a44e霍爾傳感器測距,實(shí)現(xiàn)對出租車計(jì)價(jià)統(tǒng)計(jì),采用at24c02實(shí)現(xiàn)對系統(tǒng)的掉電保護(hù),而且能夠?qū)Π滋?、晚上、中途等待采取不同的收費(fèi)標(biāo)準(zhǔn),操作簡單方便。構(gòu)成:里程傳感器,單片機(jī),顯示器這三個(gè)零部件,再通過線路連接.簡單原理:采集車速信號,(也可以自己做車速傳感器,采用霍爾效應(yīng)做),車速信號為脈沖信號,采集脈沖信號的頻率就可以得到車速,可以用到單片機(jī)的定時(shí)器捕獲。應(yīng)用單片機(jī)計(jì)算其公里數(shù) 計(jì)算時(shí)間可以用到定時(shí)器確定時(shí)間,或者用rtc中斷采集到更精確的時(shí)間、用數(shù)碼管或液晶顯示公里數(shù)、時(shí)間、以及價(jià)格。第二章研究現(xiàn)狀及設(shè)計(jì)目標(biāo)2.1現(xiàn)行研究存在的問題我國在70年代開始出現(xiàn)出租車,但那時(shí)的計(jì)費(fèi)系統(tǒng)大都是國外進(jìn)口不但不夠準(zhǔn)確,價(jià)格還十分昂貴。最早投入市場的計(jì)價(jià)器是2型機(jī)(1型機(jī)是試驗(yàn)機(jī)),兩個(gè)顯示屏,4個(gè)按鍵,數(shù)據(jù)存儲器和程序存儲器都較小,沒有時(shí)鐘,功能僅僅是計(jì)程和計(jì)價(jià)。其集成電路組成:cpu80c39:eprom27c64;srom6264,其它有i0擴(kuò)展、邏輯運(yùn)算、光偶隔離、電源芯片是單片機(jī)進(jìn)入單片機(jī)的初級階段。2.2本課題要達(dá)到的設(shè)計(jì)目標(biāo)本課題屬3、4型機(jī)屬過渡產(chǎn)品,因?yàn)橐环矫嬗脩艉凸芾聿块T對計(jì)價(jià)器提出了新的要求,另一方面,市場推出了89s51,功能更強(qiáng)、使用方便,所以就用89s51取代了epu8039,顯示屏由原先的2屏發(fā)展為3屏或4屏,顯示內(nèi)容為:單價(jià)、計(jì)程、計(jì)時(shí)、金額;車次數(shù)據(jù)存儲由原先的幾十車次發(fā)展到100 300車次;增加實(shí)時(shí)時(shí)鐘; 能輸入較多參數(shù)。外形也有了變化,集成電路配置:cpu89s51;eprom27c64;srom6264;timerl46818;其它芯片也作了相應(yīng)改進(jìn)。一、為了滿足客戶的更高的要求,目前5型機(jī)的面世,加了打印機(jī),是其顯著標(biāo)志。顯示屏增加為5屏,新增時(shí)鐘顯示,數(shù)據(jù)存儲器和程序存儲器都得到有效增加,行業(yè)標(biāo)準(zhǔn)的 臺提高了計(jì)價(jià)器的產(chǎn)品質(zhì)量和設(shè)計(jì)精度,新的計(jì)量檢定停機(jī)功能保證了計(jì)價(jià)器的良好受控狀態(tài)和公平交易質(zhì)量。其集成電路配置為:cdu80e31;eprom27c128;srom62256;timer8583;數(shù)據(jù)通訊接151:語言提示開始進(jìn)入;其它io接口作了相應(yīng)改進(jìn)。二、稅控計(jì)價(jià)器的推廣,1998年為了規(guī)范出租汽車行業(yè)管理加快稅收監(jiān)控、保障乘客的合法權(quán)益,國家三部局決定在大中城市出租汽車行業(yè)逐步推廣使用稅控計(jì)價(jià)器。1999年國家技術(shù)監(jiān)督局和國稅總局又出臺了出租汽車稅控計(jì)價(jià)器定型鑒定大綱,給出租車計(jì)價(jià)器的設(shè)計(jì)和制造提供了法律依據(jù)和技術(shù)平臺,稅控計(jì)價(jià)器電路由計(jì)量組件、稅控組件、ic卡接口及稅控計(jì)價(jià)器的硬件配置lepu78e586:riles51內(nèi)核;skcpu稅控芯片廠家訂置;數(shù)據(jù)存儲器24c256:ize; 總線32kezprom:timer per8583?,F(xiàn)在各大中城市出租車行業(yè)都已普及自動計(jì)價(jià)器,所以計(jì)價(jià)器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及,但隨著城市建設(shè)日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展,計(jì)價(jià)器的普及也是毫無疑問的,所以未來汽車計(jì)價(jià)器的市場還是十分有潛力的。出租車進(jìn)入了大多數(shù)人們的生活之中,為了更加完善現(xiàn)階段出租車的計(jì)費(fèi)系統(tǒng)功能,我們采用單片微型計(jì)算機(jī)系統(tǒng)(micro control unit 簡寫為mcu)設(shè)計(jì)了一款符合大眾化的計(jì)算系統(tǒng)。 第三章 要解決的幾個(gè)關(guān)鍵問題本電路以89s51 單片機(jī)為中心、附加a44e 霍爾傳感器測距,實(shí)現(xiàn)對出租車計(jì)價(jià)統(tǒng)計(jì),采用at24c02 實(shí)現(xiàn)在系統(tǒng)掉電的時(shí)候保存單價(jià)和系統(tǒng)時(shí)間等信息,輸出采用8 段數(shù)碼顯示管。本電路設(shè)計(jì)的計(jì)價(jià)器不但能實(shí)現(xiàn)基本的計(jì)價(jià),而且還能根據(jù)白天、黑夜、中途等待來調(diào)節(jié)單價(jià),同時(shí)在不計(jì)價(jià)的時(shí)候還能作為時(shí)鐘為司機(jī)同志提供方便。第四章 系統(tǒng)結(jié)構(gòu)與模型系統(tǒng)總體結(jié)構(gòu)4.1 設(shè)計(jì)思路出租車計(jì)價(jià)器是利用單片機(jī)計(jì)算總價(jià)并送顯示端顯示的智能儀器。89s51作為一個(gè)單片微型計(jì)算系統(tǒng),靈活性高,其強(qiáng)大的控制處理功能和可擴(kuò)展功能為設(shè)計(jì)電路提供了很好的選擇。此設(shè)計(jì)可分為五部分考慮,顯示用驅(qū)動后的數(shù)碼管,主控制用單片機(jī)芯片,掉電保護(hù)用e2prom24c02,外加復(fù)位電路,霍爾感應(yīng)電路即可完成功能的分配。在對顯示的控制上,我采取的是按鈕掃描控制,不同的按鈕對應(yīng)不同的顯示模式,分別顯示時(shí)間、單價(jià)、里程以及總金額。4.2 總體設(shè)計(jì)框圖出租車計(jì)價(jià)器的工作原理圖如圖1所示。89s51顯示電路單價(jià)里程總金額時(shí)間掉電保護(hù)電路復(fù)位電路功能按鍵里程測量電路圖1 工作原理圖模塊劃分幾功能說明4.3 顯示電路顯示電路采用的是傳統(tǒng)的7段8位數(shù)碼管,用74ls245以及74ls244作為驅(qū)動芯片以便于數(shù)碼管達(dá)到足夠的亮度,顯示電路利用并行接口以及動態(tài)掃描完成4個(gè)數(shù)碼管依次顯示里程,單價(jià),總金額。4.4 掉電存儲電路存儲電路用來保存數(shù)據(jù),一般的存儲芯片在掉電以后,內(nèi)部數(shù)據(jù)全部丟失,我們要采用一種能夠在突然掉電情況下,把內(nèi)部的數(shù)據(jù)保存起來,等到重新接通電源時(shí)候恢復(fù)正常的顯示。這就意味著此種存儲器必須是可擦寫的,并且對數(shù)據(jù)的存儲不需要外加電源就能完成。這樣以來,我們會考慮到使用e2prom(electrically erasable programmable read only memory)等類似的芯片,例如at24c02芯片,其電路接線如圖2所示。應(yīng)用時(shí),每設(shè)定一次單價(jià),系統(tǒng)就自動調(diào)用存儲程序,將信息保存在芯片內(nèi);當(dāng)重新上電時(shí),自動調(diào)用存儲器程序,供主程序使用。圖2中兩個(gè)電阻是上拉電阻,可以減少at24c02的靜態(tài)功耗,由于at24co2的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù)。 2 掉電保護(hù)電路4.5里程測量電路對于行駛路程,我們采用霍爾器件來檢測。把磁性物質(zhì)固定于車輪的某個(gè)位置,通過計(jì)數(shù)器來測量出車輪轉(zhuǎn)過的圈數(shù),根據(jù)車輪的周長來計(jì)算行駛過的路程。此處采用a44e集成開關(guān)型霍爾傳感器。圖3 霍爾器件內(nèi)部結(jié)構(gòu)圖a44e集成霍爾開關(guān)由穩(wěn)壓器a、霍爾電勢發(fā)生器b、差分放大器c、施密特觸發(fā)器d和oc門輸出e五個(gè)基本部分組成,如圖3所示。由于a44e是開關(guān)型霍爾器件,其工作電壓范圍比較寬(4.5v18v),其輸出信號符合ttl電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的i/o端口上,其外型及接線如圖4所示。圖4 霍爾器件外部構(gòu)造接線圖4.6 復(fù)位電路rst引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩周期以上。在系統(tǒng)電路中,設(shè)計(jì)一個(gè)復(fù)位按鈕,用來作為清除里程計(jì)數(shù)的開關(guān)。將該按鈕開關(guān)接到單片機(jī)的復(fù)位端口上,當(dāng)開關(guān)被按下一次時(shí)就作為系統(tǒng)的計(jì)程清0處理。復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分-合過程中引起的抖動而影響復(fù)位。圖1所示的rc復(fù)位電路可以實(shí)現(xiàn)上述基本功能,圖3為其輸入-輸出特性。但解決不了電源毛刺(a 點(diǎn))和電源緩慢下降(電池電壓不足)等問題 而且調(diào)整 rc 常數(shù)改變延時(shí)會令驅(qū)動能力變差。左邊的電路為高電平復(fù)位有效 右邊為低電平 sm為手動復(fù)位開關(guān) ch可避免高頻諧波對電路的干擾 調(diào)頻fm發(fā)射話筒制作套件4.7 功能按鍵當(dāng)有客人乘坐時(shí),司機(jī)可以手動點(diǎn)擊一下啟動鍵,系統(tǒng)開始工作,數(shù)碼管顯示系統(tǒng)時(shí)間,并且進(jìn)入正常計(jì)費(fèi)狀態(tài)。當(dāng)時(shí)鐘的時(shí)間顯示是:6:00:0020:59:59時(shí)間段時(shí)候,計(jì)費(fèi)模式按照白天的標(biāo)準(zhǔn)計(jì)費(fèi);當(dāng)時(shí)間顯示是:21:00:005:59:59時(shí)間段時(shí)候,計(jì)費(fèi)模式自動轉(zhuǎn)換成晚上的計(jì)費(fèi)標(biāo)準(zhǔn)。單價(jià)顯示部分顯示的是當(dāng)前的單價(jià),這個(gè)模式是在系統(tǒng)時(shí)間的控制下自動轉(zhuǎn)換的。路程顯示部分是當(dāng)前汽車行駛過的路程具體顯示,路程是通過霍爾開關(guān)檢測出來車輪的轉(zhuǎn)動周數(shù)(獲得到的脈沖個(gè)數(shù)),然后根據(jù)車輪的設(shè)定周長,通過單片機(jī)來計(jì)算出實(shí)際的路程??偨痤~顯示部分顯示的是當(dāng)前應(yīng)付的金額總數(shù),同樣通過霍爾開關(guān)來實(shí)現(xiàn)數(shù)值的增加。4個(gè)功能按鍵分別調(diào)用不同的顯示程序,同時(shí)也實(shí)現(xiàn)時(shí)間設(shè)置的加一、減一功能以及返回功能。4.8單片機(jī)系統(tǒng)單片微型計(jì)算機(jī)(mcu),我們采用的是低功耗、高性能的at89s51。內(nèi)含有4kb的快閃可編程/擦除只讀存儲器的8 位cmos微控制器,使用高密度、非易失存儲技術(shù)制造,可與80c51引腳和指令系統(tǒng)完全兼容。主要性能包括:與mcs-51微控制器產(chǎn)品系列兼容;片內(nèi)有4kb的可在線重復(fù)編程的flash閃存;存儲器可循環(huán)寫入/擦除1000次;存儲數(shù)據(jù)可保存10年;工作電壓可以從2.76v;全靜態(tài)工作可從0hz16mhz;程序存儲器具有3級加密保護(hù);1288位內(nèi)部ram;32條可編程i/o線;兩個(gè)16位定時(shí)器/計(jì)數(shù)器;5個(gè)中斷源和2個(gè)優(yōu)先級;可編程全雙工串行通道;空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲內(nèi)。第五章 系統(tǒng)實(shí)現(xiàn)5.1 里程計(jì)算、計(jì)價(jià)單元的設(shè)計(jì)里程計(jì)算是通過安裝在車輪上的霍爾傳感器a44e檢測到的信號,送到單片機(jī),經(jīng)處理計(jì)算,送給顯示單元的。其原理如圖51所示。圖5 1 傳感器測距示意圖由于a44e 屬于開關(guān)型的霍爾器件,其工作電壓范圍比較寬(4.518v),其輸出的信號符合ttl 電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的io 端口上,而且其最高檢測頻率可達(dá)到1mhz。圖52 集成開關(guān)型霍耳傳感器原理圖a44e 集成霍耳開關(guān)由穩(wěn)壓器a、霍耳電勢發(fā)生器(即硅霍耳片)b、差分放大器c、施密特觸發(fā)器d 和oc 門輸出e 五個(gè)基本部分組成。在輸入端輸入電壓cc v ,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍耳電勢發(fā)生器的兩端,根據(jù)霍耳效應(yīng)原理,當(dāng)霍耳片處在磁場中時(shí),在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產(chǎn)生霍耳電勢差h v 輸出,該h v 信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到oc 門輸出。當(dāng)施加的磁場達(dá)到工作點(diǎn)(即op b )時(shí),觸發(fā)器輸出高電壓(相對于地電位),使三極管導(dǎo)通,此時(shí)oc 門輸出端輸出低電壓,通常稱這種狀態(tài)為開。當(dāng)施加的磁場達(dá)到釋放點(diǎn)(即rp b )時(shí),觸發(fā)器輸出低電壓,三極管截止,使oc 門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍耳開關(guān)完成了一次開關(guān)動作。其集成霍耳開關(guān)外形及接線如圖53 所示。圖53 集成霍耳開關(guān)外形及接線我們選擇了p3.2 口作為信號的輸入端,內(nèi)部采用外部中斷0(這樣可以減少程序設(shè)計(jì)的麻煩),車輪每轉(zhuǎn)一圈(我們設(shè)車輪的周長是1 米),霍爾開關(guān)就檢測并輸出信號,引起單片機(jī)的中斷,對脈計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到1000 次時(shí),也就是1 公里,單片機(jī)就控制將金額自動的加增加,其計(jì)算公式:當(dāng)前單價(jià) 公里數(shù)=金額。5.2 數(shù)據(jù)顯示單元的設(shè)計(jì)由于設(shè)計(jì)要求有單價(jià)(2 位)、路程(2 位)、總金額(3 位)顯示輸出,加上我們另外擴(kuò)展了時(shí)鐘顯示(包含時(shí)分秒的顯示),采用lcd 液晶段碼顯示,在距離屏幕1 米之外就無法看清數(shù)據(jù),不能滿足要求,而且在白天其對比度也不能夠滿足要求,因此我們采用6 位led數(shù)碼管的分屏顯示,如圖5-4 ad 所示:圖54 a 單價(jià)調(diào)整顯示(圖中顯示為右起白天單價(jià)4 .6 元/晚上7.8 /中途等待1.2 元)數(shù)據(jù)的分屏的顯示是通過按鍵s1 來實(shí)現(xiàn)切換的,如圖55 所示。圖5 5 s1 切換顯示屏在出租車不走的時(shí)候,按下s1,可以實(shí)現(xiàn)數(shù)據(jù)的分屏顯示;車在行走的時(shí)候只有總金額和單價(jià)顯示屏在顯示,當(dāng)?shù)竭_(dá)目的地的時(shí)候,客戶要求查看總的里程的時(shí)候,就可以按下s1 切換到里程和單價(jià)顯示屏,供客戶查詢。顯示電路的電路原理圖如圖56所示。圖56 顯示器原理圖從單片機(jī)串口輸出的信號先送到左邊的移位寄存器(74hc164),由于移位脈沖的作用,使數(shù)據(jù)向右移,達(dá)到顯示的目的。移位寄存器74hc164還兼作數(shù)碼管的驅(qū)動,插頭1(header1)接電源,插頭2(header2)接數(shù)據(jù)和脈沖輸出端。電路中的三個(gè)整流管d1d3 的作用是降低數(shù)碼管的工作電壓,增加其使用壽命。5.3 at24c02 掉電存儲單元的設(shè)計(jì)掉電存儲單元的作用是在電源斷開的時(shí)候,存儲當(dāng)前設(shè)定的單價(jià)信息。at24c02 是atmel 公司的2kb 字節(jié)的電可擦除存儲芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5v,額定電流為1ma,靜態(tài)電流10ua(5.5v),芯片內(nèi)的資料可以在斷電的情況下保存40 年以上,而且采用8 腳的dip 封裝,使用方便。其電路如圖57 所示。圖57 掉電存儲電路原理圖圖中r8、r10 是上拉電阻,其作用是減少at24c02 的靜態(tài)功耗,由于at24c02 的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線scl(移位脈沖)和sda(數(shù)據(jù)/地址)與單片機(jī)傳送數(shù)據(jù)。每當(dāng)設(shè)定一次單價(jià),系統(tǒng)就自動調(diào)用存儲程序,將單價(jià)信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電的時(shí)候,自動調(diào)用讀存儲器程序,將存儲器內(nèi)的單價(jià)等信息,讀到緩存單元中,供主程序使用。5.4 按鍵單元的設(shè)計(jì)電路共采用了四個(gè)按鍵,s1、s2、s3、s4,其功能分別是:s1 分屏顯示切換按鍵,s2功能設(shè)定按鍵,s3 /白天晚上切換按鍵,s4 /中途等待開關(guān)。5.5 設(shè)計(jì)總框圖圖58總體設(shè)計(jì)框圖5.6 設(shè)計(jì)總體電路圖圖59 總體電路圖5.7 程序模塊分析5.7.1 主程序模塊在主程序模塊中,需要定義各個(gè)寄存器,完成對各接口芯片的初始化,出租車起步價(jià)和單價(jià)(白天、晚上和中途等待)的初始化,中斷向量的設(shè)計(jì)以及開中斷、循環(huán)等待等工作,然后主程序?qū)佣〞r(shí)器以及循環(huán)鍵盤掃描程序,主程序流程圖見附錄一,總程序見附錄二。當(dāng)上電時(shí)就啟動計(jì)價(jià),將根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷出行駛里程是否超出起價(jià)公里,若已經(jīng)超出,則根據(jù)里程值、單價(jià)、起步價(jià)來計(jì)算當(dāng)前累計(jì)金額,將結(jié)果存于價(jià)格寄存器內(nèi),然后通過顯示電路顯示出。當(dāng)達(dá)到目的地,霍爾開關(guān)器件沒有送來脈沖信號時(shí)就停止計(jì)價(jià),可以調(diào)用當(dāng)前的總金額,到下次啟動計(jì)價(jià)時(shí),系統(tǒng)自動重新初始化。主程序開始控制芯片初始化對出租車起價(jià)和每公里單價(jià)付初值,并用顯示器顯示各操作寄存器初始化設(shè)置中斷向量開中斷,等待有“啟動中斷”標(biāo)志嗎? n y里程已超過起步價(jià)公里數(shù)嗎 n y計(jì)算當(dāng)前已行駛公里數(shù)和累計(jì)價(jià)格并送顯示器顯示有“清零中斷”標(biāo)志 n y將當(dāng)前里程和累計(jì)價(jià)顯示清0圖510 主程序流程圖5.7.2 中途等待中斷程序在計(jì)數(shù)狀態(tài)下,當(dāng)需要停車時(shí),手動按鍵進(jìn)行中途等待的開啟,片內(nèi)t1定時(shí)器啟動,一旦達(dá)到5min,便開始中途等待計(jì)費(fèi)程序,在當(dāng)前金額上累加中途等待單價(jià)。5.7.3 顯示子程序由于是分別顯示里程、單價(jià)、總金額以及時(shí)間,所以需要4個(gè)子程序,分別是時(shí)間顯示子程序,里程顯示子程序,單價(jià)顯示子程序,總金額顯示子程序。5.7.4 定時(shí)中斷程序在定時(shí)中斷程序中,每100ms產(chǎn)生一次中斷,當(dāng)產(chǎn)生10次中斷時(shí),也就是1s,送數(shù)據(jù)到相應(yīng)的顯示緩沖單元,并調(diào)用相應(yīng)的顯示子程序?qū)崟r(shí)顯示。5.7.5 里程計(jì)數(shù)中斷程序每當(dāng)霍爾開關(guān)器件輸出一個(gè)低電平脈沖信號就使單片機(jī)中斷一次,設(shè)定車輪周長是1米,當(dāng)里程計(jì)數(shù)器計(jì)滿1000次時(shí),就將當(dāng)前的里程數(shù)和金額存入相應(yīng)的寄存器中。5.7.6 按鍵程序按鍵采用查詢的方式放在主程序中,在循環(huán)主程序的同時(shí),一旦按鍵按下便轉(zhuǎn)向相應(yīng)的子程序處理,其流程圖如圖5-11所示。鍵盤掃描noyesyesyesyesnonono鍵盤掃描s1s2s3s1s2s3s4總金額顯示路程顯示單價(jià)顯示調(diào)整/等待時(shí)調(diào)整分調(diào)整中途等待圖5-11 按鍵掃描流程圖計(jì)價(jià)器源程序day_priceequ 6fh26 night_priceequ 6ehmidway_priceequ 6dhstart_priceequ 6chcountl equ 6bhcounth equ 6ahm100 equ 69h ;外部中斷次數(shù)distance equ 68h ;行車距離ms100 equ 67hsec equ 66hmin equ 65hhour equ 64hledsl equ 63h ;時(shí)分鈔顯示緩沖區(qū)ledsh equ 62hledml equ 61hledmh equ 60hledhl equ 5fhledhh equ 5ehleddanjial equ 5dh ;總額,單價(jià)顯示緩沖區(qū)leddanjiah equ 5chline_ equ 5bhledcount1 equ 5ahledcount2 equ 59hledcount3 equ 58hleddanjia2l equ 57h ;路程,單價(jià)顯示緩沖區(qū)leddanjia2h equ 56hline_ equ 55hline_ equ 54hleddistancel equ 53hleddistanceh equ 52hledday_pl equ 51h ;中途,晚上,白天顯示緩沖區(qū)ledday_ph equ 50hlednig_pl equ 4fhlednig_ph equ 4ehledw_pl equ 4dhledw_ph equ 4chs1 bit p1.0s2 bit p1.1s3 bit p1.2s4 bit p1.3s11 equ 4bhs22 equ 4ahs33 equ 49hs44 equ 48hm1 equ 47hh1 equ 46hm2 equ 45hh2 equ 44hprice equ 43h計(jì)價(jià)器源程序org 0000hajmpmainorg 0003hajmptoorg 000bhajmptotimeorg 001bhajmptostartorg 0030hmain: mov sp,#70hmov tmod, #11hmov th0, #3chmov tl0, #0b0hmov th1, #3chmov tl1, #0b0hmov 22h, #0ahsetbeasetbtr0setbex0setbit0setbet0setbet1; -ram單元初始化mov r7,#34mov r0,#69hloopl:mov r0,#0dec r0djnzr7,looplmov countl, #00h ;起步價(jià)mov counth, #05hmov day_price,#25h ;白天價(jià)格初始化mov night_price,#30h ;晚上價(jià)格初始化mov midway_price,#10h ;中途等待初始化mov start_price, #50h ;起步價(jià)初始化mov s11, #0mov s22, #0mov s33, #0mov s44, #0mov distance, #02hmov hour, #12h; 鍵盤第一層掃描程序; (鍵盤掃描主程序);*key_main: setb tr0acall hms_disacall t100msdacall t100msdacall t100msdjb s1, key_mainacall t10msdjb s1, key_mainjnb s1,$sjmp wai1wa1: jb s1, k1acall t10msdjb s1, k1wait1: jnb s1, wait1wai1: ;inc s11;mov a, s11;cjne a, #1, n1; mov m1, min; mov h1, hourmov r0, #leddanjialmov r2, #6clr amov countl,amov counth,amov m100, amov distance,abk1: mov r0, adec r0djnz r2, bk1;起動初始化mov price,day_pricemov countl, #00h;起步價(jià)mov counth, #05h;mov distance,#02hlcall cp_dis;總金額和單價(jià)顯示k1: jb s2, k2acall t10msdjb s2, k2wait2: jnb s2, wait2inc s22mov a, s22cjne a, #1, next1lcall pa_disljmp key_djnext1: cjne a, #2, next2clr tr0lcall hms_disljmp key_sjnext2: cjne a, #3, k2mov s22, #0k2: jb s3, k3acall t10msdjb s3, k3wait3: jnb s3, wait3inc s33mov a, s33cjne a, #1, nxt1lcall dp_disnxt1: cjne a, #2, nxt2clr cmov a, m2subb a, m1mov m1, amov a, h2subb a, h1mov h1, a;lcall xcsj_disnxt2: cjne a, #3, k3mov s33, #0lcall cp_disk3: jb s4, bk_key_mainacall t10msdjb s4, bk_key_mainwait4: jnb s4, wait4inc s44mov a, s44cjne a, #1, nt1mov price,day_pricelcall cp_disnt1: cjne a, #2, nt2mov price,night_pricelcall cp_dislcall t100msd;lcall t100msd;lcall t100msd;mov ledday_pl, #0ahmov ledday_ph, #0ahlcall pa_dis1; lcall t100msd;lcall t100msd;lcall t100msd; lcall t100msd; mov a, day_price; mov b, #10; div ab; da a; mov ledday_pl, b; mov ledday_ph, alcall pa_dis; ajmp lp1lp1: jb s3, key11; lcall t10msd; jb s3, key11; wait9: jnb s3, wait9; inc day_pricemov a, #1add a, day_priceda amov day_price,amov a, day_pricecjne a, #99h, key11mov day_price, #0key11: jb s4, key12lcall t10msdjb s4, key12mov a,day_priceadd a, #99hda amov day_price,acjne a, #00h, key12mov a, #99hkey12: jb s1, key13acall t10msdjb s1, key13wait11: jnb s1, wait11inc s11mov a, s11cjne a, #1,next31lcall day_pnext31: cjne a, #2,next32lcall nig_pnext32: cjne a, #3,next33lcall mid_pnext33: cjne a, #4, key13mov s11, #0key13: jb s2, key14lcall t10msdjb s2, key14wait12:jnb s2, wait12ljmp key_mainkey14: ajmp day_p; nig_p: setb f0 ;調(diào)用定時(shí)延時(shí)標(biāo)志位lcall t100msdlcall t100msd; lcall t100msd; lcall t100msd; lcall t100msdmov lednig_pl, #0ahmov lednig_ph, #0ahlcall pa_dis1lcall t100msdlcall t100msd; lcall t100msd; lcall t100msd; lcall t100msdlcall pa_disjb s3, key21lcall t10msdjb s3, key21; wait13: jnb s3, wait13; mov a, #1add a, night_priceda amov night_price,acjne a, #99h,key21mov night_price,#0key21: jb s4, key22lcall t10msdjb s4, key22; wait14: jnb s4, wait14; mov a, night_priceadd a, #99hda amov night_price,acjne a, #00h, key22mov night_price,#99hkey22: jb s1, key23acall t10msdjb s1, key23wait15: jnb s1, wait15inc s11mov a, s11cjne a, #1,next41lcall day_pnext41: cjne a, #2,next42lcall nig_pnext42: cjne a, #3,next43lcall mid_pnext43: cjne a, #4, key23mov s11, #0ljmp key_djkey23: jb s2, key24lcall t10msdjb s2, key24wait30:jnb s2, wait30ljmp key_mainkey24: ajmp nig_p; mid_p: setb f0 ;調(diào)用定時(shí)延時(shí)標(biāo)志位lcall t100msd; lcall t100msd; lcall t100msd; lcall t100msdmov ledw_pl, #0ahmov ledw_ph, #0ahlcall pa_dis1lcall t100msd; lcall t100msd; lcall t100msd; lcall t100msdlcall pa_disjb s3, key31lcall t10msdjb s3, key31; wait16: jnb s3, wait16; inc midway_pricemov a, midway_priceadd a, #1da amov midway_price,acjne a, #99h, key31mov midway_price, #00h; cjne a, #100, key31mov midway_price, #0key31: jb s4, key32lcall t10msdjb s4, key32;wait17: jnb s4, wait17mov a, midway_priceadd a, #99hda amov midway_price,acjne a, #00h, key32mov night_price,#99hkey32: jb s1, key33acall t10msdjb s1, key33wait18: jnb s1, wait18inc s11mov a, s11cjne a, #1,next51lcall day_pnext51: cjne a, #2,next52lcall nig_pnext52: cjne a, #3,next53lcall mid_pnext53: cjne a, #4, key33mov s11, #0ljmp key_djkey33: jb s2, key34lcall t10msdjb s2, key34wait31:jnb s2, wait31ljmp key_mainkey34: ajmp mid_p; hou_t: setb f0 ;調(diào)用定時(shí)延時(shí)標(biāo)志位lcall t100msdlcall t100msdmov ledhl, #0ahmov ledhh, #0ahlcall hms_dis1;直接調(diào)用顯示,不經(jīng)過拆分程序lcall t100msdlcall t100msdmov sec, #0lcall hms_disjb s3, key41; lcall t10msd; jb s3, key41; wait19: jnb s3, wait19mov a, houradd a, #1da amov hour,acjne a, #24h, key41mov hour, #0key41: jb s4, key42; lcall t10msd; jb s4, key42; wait20: jnb s4, wait20mov a, houradd a, #99hda amov hour,acjne a, #99h, key42mov hour, #23hkey42: jb s1, key43acall t10msdjb s1, key43wait21: jnb s1, wait21inc s11mov a, s11cjne a, #1,next61ljmp hou_tnext61: cjne a, #2,next62ljmp min_tnext62: cjne a, #3,key43mov s11, #0ljmp key_sjkey43: jb s2, key44lcall t10msdjb s2, key44wait32: jnb s2, wait32ljmp key_mainkey44: ajmp hou_t; min_t: setb f0 ;調(diào)用定時(shí)延時(shí)標(biāo)志位lcall t100msdlcall t100msdmov ledml, #0ahmov ledmh, #0ahlcall hms_dis1;直接調(diào)用顯示,不經(jīng)過拆分程序lcall t100msdlcall t100msdmov sec, #0lcall hms_disjb s3, key51; lcall t10msd; jb s3, key41; wait22: jnb s3, wait22mov a, minadd a, #1da amov min, acjne a, #60h, key51mov min, #0key51: jb s4, key52; lcall t10msd; jb s4, key52; wait23: jnb s4, wait23mov a, minadd a, #99hda amov min, acjne a, #99h, key52mov min, #59hkey52: jb s1, key53acall t10msdjb s1, key53wait24: jnb s1, wait24inc s11mov a, s11cjne a, #1,next71lcall hou_tnext71: cjne a, #2,next72lcall min_tnext72: cjne a, #3,key53setb tr0mov s11, #0ljmp key_sjkey53: jb s2, key54lcall t10msdjb s2, key54wait33: jnb s2, wait33ljmp key_mainkey54: ajmp min_t; -; 時(shí)鐘中斷totime: push pswpush accmov th0, #3chmov tl0, #0b0hinc ms100mov a, ms100cjne a, #10,returnmov ms100,#0mov a, secadd a, #1da amov sec,acjne a,#60h,returnmov sec,#0mov a, #1hadd a, minda amov min,acjne a,#60h, returnmov min,#0mov a, #1hadd a, hourda amov hour,acjne a, #24h,returnmov hour,#0return: pop accpop pswreti; 外部霍兒中斷to: push pswpush acc; mov a, r0; mov b, #10; div ab;mov 20h,a ;算出當(dāng)前價(jià)格轉(zhuǎn)100次的錢數(shù),并給20h單元mov a,#1add a,m100mov m100,amov a, m100cjne a, #100,return1mov m100,#0inc 21hmov a,21hcjne a, #0ah, return1 ;已經(jīng)到了1公里mov 21h,#0mov a, #1add a, distanceda amov distance,a;acalldp_dismov a, priceadd a, countlda amov countl,acjne a, #10h,return1mov countl,#0mov a, #1add a, counthda amov counth,acjne a, #99h, return1mov counth,#0; acall cp_disreturn1: pop accpop pswretitostart: push pswpush accmov th1, #3chmov tl1, #0b0hdjnz 22h, return2 ;1s未到返回mov 22h, #0ahmov a, #1add a, 23h; 23h,存放秒,24h存放分da amov 23h, acjne a, #60h, return2mov 23h, #0mov a, #1add a, 24hda amov 24h,acjne a, #10h, return2mov 24h, #0mov a, start_priceadd a, countlda amov countl,acjne a, #10h, return2mov countl, #0mov a, #1add a, counthda amov counth,acjne a, #99h,return2mov counth,#0return2: pop accpop pswreti; * 顯示子程序*;功能:分四屏幕顯示數(shù)據(jù),時(shí)分秒(hms_dis)總額單價(jià)(cp_dis)路程單價(jià)(dp_dis)單價(jià)調(diào)整(pa_dis); 使用資源:使用第三組寄存器r7,r6,r1,r0; 時(shí)鐘顯示(包括時(shí)分秒調(diào)整)hms_dis:pushacc ;(hourminutesseconddisplay)pushpswsetbrs1mov r0,#sec ;時(shí)分秒的拆分(三個(gè)字節(jié))mov r1,#ledslmov r6,#03hloop1:mov a, r0mov b, aanl a, #0fhmov r1,adec r1mov a, bswapaanl a, #0fhmov r1,adec r1dec r0djnzr6,loop1pop pswpop acchms_dis1: push accpush pswmov r7,#06hmov r0,#ledslloop: mova, r0movdptr,#tabmovca,a+dptrmov sbuf,abk: jbcti,nextsjmpbknext: decr0djnzr7,loopclrrs1poppswpopaccret;總金額和單價(jià)顯示cp_dis:push acc ;(countpricedisplay)push pswsetb rs1mov r0,#counth ;mov r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論