




已閱讀5頁,還剩21頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
出租車計價器摘要: 隨著社會進步,出租車已經越來越貼近生活,成為我們重要的交通工具,現在的生活中,出租文化已成為一種顯著的文化,成為社會生活的組成部分,而其中,出租車計價器成了必不可少的工具。隨著生活水平的提高,人們已不再滿足于衣食住的享受,出行的舒適已受到越來越多人的關注。于是,出租車行業以低價高質的服務給人們帶來了出行的享受。但是總存在著買賣糾紛困擾著行業的發展。而在出租車行業中解決這一矛盾的最好方法就是改良計價器。用更加精良的計價器來為乘客提供更加方便快捷的服務。這次的課程設計采用單片機作為控制系統,按照傳統的模式,在整個項目設計開發過程中,先根據控制系統要求設計原理圖,pcb電路圖繪制,電路板制作,元器件的焊接,然后進行軟件編程,通過仿真器對系統硬件和軟件調試,最后將調試成功的程序固化到單片機中。本設計利用單片機豐富的i/o端口,及其控制的靈活性實現基本的里程計價功能和價格調整、時鐘顯示功能。 隨著改革開放日益深入,出租車行業的發展勢頭已十分突出,國內各機械廠家紛紛推出國產計價器。出租車計價器的功能從剛開始的只顯示路程(需要司機自己定價,計算后四舍五入),到能夠自主計費,以及現在的能夠打發票和語音提示、按時間自主變動單價等功能。隨著城市旅游業的發展,出租車行業已成為城市的窗口,象征著一個城市的文明程度。關鍵詞:出租車計價器 電子線路 單片機 第一章 引言1.1本課題研究的意義 出租汽車是一種流動、分散、獨立經營的行業,歷來采用手工開票的交易方式,交管部門及其所屬單位對其實際應運情況不易掌握,難以管理。多收費、亂開票、拒開票的宰客舞弊現象時有發生。而計價器在出租車收費中的應用則可以改人為影響因素較大的不公平現象。消費者的權益也得到了很好的保障,也便于交通部門和所屬行業對出租車和司機的情況進行管。計價器作為出租車的一個重要組成部分,關系著出租車司機和乘客雙方利益,起著重要的作用,因此,具有良好性能的計價器對廣大出租車司機朋友來說是很必要的。采用了單片機進行設計,相對來說功能強大,用較少的硬件和適當的軟件相互配合可以很容易的實現設計要求,且靈活性強,可以通過軟件編程來完成更多的附加功能。針對計費模式的切換,通過軟件編程就可以輕易而舉的實現。避免了機械開關帶來的不穩定因素。1.2本論文的目的、內容 凡坐過出租車的人都知道,只要汽車一開動,隨著行駛里程的增加,就會看到汽車前面的計價器里程數字顯示的讀數從零逐漸增大,而當行駛到某一值時(如5km)計費數字顯示開始從起步價(如10元)增加。當出租車到達某地需要在那里等候時,司機只要按一下“計時”鍵,每等候一定時間,計費顯示就增加一個該收的等候費用。汽車繼續行駛時,停止計算等候費,繼續增加里程計費。消費者到達目的地后,便可按顯示的數字收費。在單片機性能不斷提高而價格卻不斷下降的情況下, 本論文以at89s51單片機為中心,附加a44e霍爾傳感器測距,實現對出租車計價統計,采用at24c02實現對系統的掉電保護,而且能夠對白天、晚上、中途等待采取不同的收費標準,操作簡單方便。構成:里程傳感器,單片機,顯示器這三個零部件,再通過線路連接.簡單原理:采集車速信號,(也可以自己做車速傳感器,采用霍爾效應做),車速信號為脈沖信號,采集脈沖信號的頻率就可以得到車速,可以用到單片機的定時器捕獲。應用單片機計算其公里數 計算時間可以用到定時器確定時間,或者用rtc中斷采集到更精確的時間、用數碼管或液晶顯示公里數、時間、以及價格。第二章研究現狀及設計目標2.1現行研究存在的問題我國在70年代開始出現出租車,但那時的計費系統大都是國外進口不但不夠準確,價格還十分昂貴。最早投入市場的計價器是2型機(1型機是試驗機),兩個顯示屏,4個按鍵,數據存儲器和程序存儲器都較小,沒有時鐘,功能僅僅是計程和計價。其集成電路組成:cpu80c39:eprom27c64;srom6264,其它有i0擴展、邏輯運算、光偶隔離、電源芯片是單片機進入單片機的初級階段。2.2本課題要達到的設計目標本課題屬3、4型機屬過渡產品,因為一方面用戶和管理部門對計價器提出了新的要求,另一方面,市場推出了89s51,功能更強、使用方便,所以就用89s51取代了epu8039,顯示屏由原先的2屏發展為3屏或4屏,顯示內容為:單價、計程、計時、金額;車次數據存儲由原先的幾十車次發展到100 300車次;增加實時時鐘; 能輸入較多參數。外形也有了變化,集成電路配置:cpu89s51;eprom27c64;srom6264;timerl46818;其它芯片也作了相應改進。一、為了滿足客戶的更高的要求,目前5型機的面世,加了打印機,是其顯著標志。顯示屏增加為5屏,新增時鐘顯示,數據存儲器和程序存儲器都得到有效增加,行業標準的 臺提高了計價器的產品質量和設計精度,新的計量檢定停機功能保證了計價器的良好受控狀態和公平交易質量。其集成電路配置為:cdu80e31;eprom27c128;srom62256;timer8583;數據通訊接151:語言提示開始進入;其它io接口作了相應改進。二、稅控計價器的推廣,1998年為了規范出租汽車行業管理加快稅收監控、保障乘客的合法權益,國家三部局決定在大中城市出租汽車行業逐步推廣使用稅控計價器。1999年國家技術監督局和國稅總局又出臺了出租汽車稅控計價器定型鑒定大綱,給出租車計價器的設計和制造提供了法律依據和技術平臺,稅控計價器電路由計量組件、稅控組件、ic卡接口及稅控計價器的硬件配置lepu78e586:riles51內核;skcpu稅控芯片廠家訂置;數據存儲器24c256:ize; 總線32kezprom:timer per8583。現在各大中城市出租車行業都已普及自動計價器,所以計價器技術的發展已成定局。而部分小城市尚未普及,但隨著城市建設日益加快,象征著城市面貌的出租車行業也將加速發展,計價器的普及也是毫無疑問的,所以未來汽車計價器的市場還是十分有潛力的。出租車進入了大多數人們的生活之中,為了更加完善現階段出租車的計費系統功能,我們采用單片微型計算機系統(micro control unit 簡寫為mcu)設計了一款符合大眾化的計算系統。 第三章 要解決的幾個關鍵問題本電路以89s51 單片機為中心、附加a44e 霍爾傳感器測距,實現對出租車計價統計,采用at24c02 實現在系統掉電的時候保存單價和系統時間等信息,輸出采用8 段數碼顯示管。本電路設計的計價器不但能實現基本的計價,而且還能根據白天、黑夜、中途等待來調節單價,同時在不計價的時候還能作為時鐘為司機同志提供方便。第四章 系統結構與模型系統總體結構4.1 設計思路出租車計價器是利用單片機計算總價并送顯示端顯示的智能儀器。89s51作為一個單片微型計算系統,靈活性高,其強大的控制處理功能和可擴展功能為設計電路提供了很好的選擇。此設計可分為五部分考慮,顯示用驅動后的數碼管,主控制用單片機芯片,掉電保護用e2prom24c02,外加復位電路,霍爾感應電路即可完成功能的分配。在對顯示的控制上,我采取的是按鈕掃描控制,不同的按鈕對應不同的顯示模式,分別顯示時間、單價、里程以及總金額。4.2 總體設計框圖出租車計價器的工作原理圖如圖1所示。89s51顯示電路單價里程總金額時間掉電保護電路復位電路功能按鍵里程測量電路圖1 工作原理圖模塊劃分幾功能說明4.3 顯示電路顯示電路采用的是傳統的7段8位數碼管,用74ls245以及74ls244作為驅動芯片以便于數碼管達到足夠的亮度,顯示電路利用并行接口以及動態掃描完成4個數碼管依次顯示里程,單價,總金額。4.4 掉電存儲電路存儲電路用來保存數據,一般的存儲芯片在掉電以后,內部數據全部丟失,我們要采用一種能夠在突然掉電情況下,把內部的數據保存起來,等到重新接通電源時候恢復正常的顯示。這就意味著此種存儲器必須是可擦寫的,并且對數據的存儲不需要外加電源就能完成。這樣以來,我們會考慮到使用e2prom(electrically erasable programmable read only memory)等類似的芯片,例如at24c02芯片,其電路接線如圖2所示。應用時,每設定一次單價,系統就自動調用存儲程序,將信息保存在芯片內;當重新上電時,自動調用存儲器程序,供主程序使用。圖2中兩個電阻是上拉電阻,可以減少at24c02的靜態功耗,由于at24co2的數據線和地址線是復用的,采用串口的方式傳送數據。 2 掉電保護電路4.5里程測量電路對于行駛路程,我們采用霍爾器件來檢測。把磁性物質固定于車輪的某個位置,通過計數器來測量出車輪轉過的圈數,根據車輪的周長來計算行駛過的路程。此處采用a44e集成開關型霍爾傳感器。圖3 霍爾器件內部結構圖a44e集成霍爾開關由穩壓器a、霍爾電勢發生器b、差分放大器c、施密特觸發器d和oc門輸出e五個基本部分組成,如圖3所示。由于a44e是開關型霍爾器件,其工作電壓范圍比較寬(4.5v18v),其輸出信號符合ttl電平標準,可以直接接到單片機的i/o端口上,其外型及接線如圖4所示。圖4 霍爾器件外部構造接線圖4.6 復位電路rst引腳是復位信號的輸入端,復位信號是高電平有效,其有效時間應持續24個振蕩周期以上。在系統電路中,設計一個復位按鈕,用來作為清除里程計數的開關。將該按鈕開關接到單片機的復位端口上,當開關被按下一次時就作為系統的計程清0處理。復位電路的基本功能是:系統上電時提供復位信號,直至系統電源穩定后,撤銷復位信號。為可靠起見,電源穩定后還要經一定的延時才撤銷復位信號,以防電源開關或電源插頭分-合過程中引起的抖動而影響復位。圖1所示的rc復位電路可以實現上述基本功能,圖3為其輸入-輸出特性。但解決不了電源毛刺(a 點)和電源緩慢下降(電池電壓不足)等問題 而且調整 rc 常數改變延時會令驅動能力變差。左邊的電路為高電平復位有效 右邊為低電平 sm為手動復位開關 ch可避免高頻諧波對電路的干擾 調頻fm發射話筒制作套件4.7 功能按鍵當有客人乘坐時,司機可以手動點擊一下啟動鍵,系統開始工作,數碼管顯示系統時間,并且進入正常計費狀態。當時鐘的時間顯示是:6:00:0020:59:59時間段時候,計費模式按照白天的標準計費;當時間顯示是:21:00:005:59:59時間段時候,計費模式自動轉換成晚上的計費標準。單價顯示部分顯示的是當前的單價,這個模式是在系統時間的控制下自動轉換的。路程顯示部分是當前汽車行駛過的路程具體顯示,路程是通過霍爾開關檢測出來車輪的轉動周數(獲得到的脈沖個數),然后根據車輪的設定周長,通過單片機來計算出實際的路程。總金額顯示部分顯示的是當前應付的金額總數,同樣通過霍爾開關來實現數值的增加。4個功能按鍵分別調用不同的顯示程序,同時也實現時間設置的加一、減一功能以及返回功能。4.8單片機系統單片微型計算機(mcu),我們采用的是低功耗、高性能的at89s51。內含有4kb的快閃可編程/擦除只讀存儲器的8 位cmos微控制器,使用高密度、非易失存儲技術制造,可與80c51引腳和指令系統完全兼容。主要性能包括:與mcs-51微控制器產品系列兼容;片內有4kb的可在線重復編程的flash閃存;存儲器可循環寫入/擦除1000次;存儲數據可保存10年;工作電壓可以從2.76v;全靜態工作可從0hz16mhz;程序存儲器具有3級加密保護;1288位內部ram;32條可編程i/o線;兩個16位定時器/計數器;5個中斷源和2個優先級;可編程全雙工串行通道;空閑狀態維持低功耗和掉電狀態保存存儲內。第五章 系統實現5.1 里程計算、計價單元的設計里程計算是通過安裝在車輪上的霍爾傳感器a44e檢測到的信號,送到單片機,經處理計算,送給顯示單元的。其原理如圖51所示。圖5 1 傳感器測距示意圖由于a44e 屬于開關型的霍爾器件,其工作電壓范圍比較寬(4.518v),其輸出的信號符合ttl 電平標準,可以直接接到單片機的io 端口上,而且其最高檢測頻率可達到1mhz。圖52 集成開關型霍耳傳感器原理圖a44e 集成霍耳開關由穩壓器a、霍耳電勢發生器(即硅霍耳片)b、差分放大器c、施密特觸發器d 和oc 門輸出e 五個基本部分組成。在輸入端輸入電壓cc v ,經穩壓器穩壓后加在霍耳電勢發生器的兩端,根據霍耳效應原理,當霍耳片處在磁場中時,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產生霍耳電勢差h v 輸出,該h v 信號經放大器放大后送至施密特觸發器整形,使其成為方波輸送到oc 門輸出。當施加的磁場達到工作點(即op b )時,觸發器輸出高電壓(相對于地電位),使三極管導通,此時oc 門輸出端輸出低電壓,通常稱這種狀態為開。當施加的磁場達到釋放點(即rp b )時,觸發器輸出低電壓,三極管截止,使oc 門輸出高電壓,這種狀態為關。這樣兩次電壓變換,使霍耳開關完成了一次開關動作。其集成霍耳開關外形及接線如圖53 所示。圖53 集成霍耳開關外形及接線我們選擇了p3.2 口作為信號的輸入端,內部采用外部中斷0(這樣可以減少程序設計的麻煩),車輪每轉一圈(我們設車輪的周長是1 米),霍爾開關就檢測并輸出信號,引起單片機的中斷,對脈計數,當計數達到1000 次時,也就是1 公里,單片機就控制將金額自動的加增加,其計算公式:當前單價 公里數=金額。5.2 數據顯示單元的設計由于設計要求有單價(2 位)、路程(2 位)、總金額(3 位)顯示輸出,加上我們另外擴展了時鐘顯示(包含時分秒的顯示),采用lcd 液晶段碼顯示,在距離屏幕1 米之外就無法看清數據,不能滿足要求,而且在白天其對比度也不能夠滿足要求,因此我們采用6 位led數碼管的分屏顯示,如圖5-4 ad 所示:圖54 a 單價調整顯示(圖中顯示為右起白天單價4 .6 元/晚上7.8 /中途等待1.2 元)數據的分屏的顯示是通過按鍵s1 來實現切換的,如圖55 所示。圖5 5 s1 切換顯示屏在出租車不走的時候,按下s1,可以實現數據的分屏顯示;車在行走的時候只有總金額和單價顯示屏在顯示,當到達目的地的時候,客戶要求查看總的里程的時候,就可以按下s1 切換到里程和單價顯示屏,供客戶查詢。顯示電路的電路原理圖如圖56所示。圖56 顯示器原理圖從單片機串口輸出的信號先送到左邊的移位寄存器(74hc164),由于移位脈沖的作用,使數據向右移,達到顯示的目的。移位寄存器74hc164還兼作數碼管的驅動,插頭1(header1)接電源,插頭2(header2)接數據和脈沖輸出端。電路中的三個整流管d1d3 的作用是降低數碼管的工作電壓,增加其使用壽命。5.3 at24c02 掉電存儲單元的設計掉電存儲單元的作用是在電源斷開的時候,存儲當前設定的單價信息。at24c02 是atmel 公司的2kb 字節的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,電壓最低可以到2.5v,額定電流為1ma,靜態電流10ua(5.5v),芯片內的資料可以在斷電的情況下保存40 年以上,而且采用8 腳的dip 封裝,使用方便。其電路如圖57 所示。圖57 掉電存儲電路原理圖圖中r8、r10 是上拉電阻,其作用是減少at24c02 的靜態功耗,由于at24c02 的數據線和地址線是復用的,采用串口的方式傳送數據,所以只用兩根線scl(移位脈沖)和sda(數據/地址)與單片機傳送數據。每當設定一次單價,系統就自動調用存儲程序,將單價信息保存在芯片內;當系統重新上電的時候,自動調用讀存儲器程序,將存儲器內的單價等信息,讀到緩存單元中,供主程序使用。5.4 按鍵單元的設計電路共采用了四個按鍵,s1、s2、s3、s4,其功能分別是:s1 分屏顯示切換按鍵,s2功能設定按鍵,s3 /白天晚上切換按鍵,s4 /中途等待開關。5.5 設計總框圖圖58總體設計框圖5.6 設計總體電路圖圖59 總體電路圖5.7 程序模塊分析5.7.1 主程序模塊在主程序模塊中,需要定義各個寄存器,完成對各接口芯片的初始化,出租車起步價和單價(白天、晚上和中途等待)的初始化,中斷向量的設計以及開中斷、循環等待等工作,然后主程序將啟動定時器以及循環鍵盤掃描程序,主程序流程圖見附錄一,總程序見附錄二。當上電時就啟動計價,將根據里程寄存器中的內容計算和判斷出行駛里程是否超出起價公里,若已經超出,則根據里程值、單價、起步價來計算當前累計金額,將結果存于價格寄存器內,然后通過顯示電路顯示出。當達到目的地,霍爾開關器件沒有送來脈沖信號時就停止計價,可以調用當前的總金額,到下次啟動計價時,系統自動重新初始化。主程序開始控制芯片初始化對出租車起價和每公里單價付初值,并用顯示器顯示各操作寄存器初始化設置中斷向量開中斷,等待有“啟動中斷”標志嗎? n y里程已超過起步價公里數嗎 n y計算當前已行駛公里數和累計價格并送顯示器顯示有“清零中斷”標志 n y將當前里程和累計價顯示清0圖510 主程序流程圖5.7.2 中途等待中斷程序在計數狀態下,當需要停車時,手動按鍵進行中途等待的開啟,片內t1定時器啟動,一旦達到5min,便開始中途等待計費程序,在當前金額上累加中途等待單價。5.7.3 顯示子程序由于是分別顯示里程、單價、總金額以及時間,所以需要4個子程序,分別是時間顯示子程序,里程顯示子程序,單價顯示子程序,總金額顯示子程序。5.7.4 定時中斷程序在定時中斷程序中,每100ms產生一次中斷,當產生10次中斷時,也就是1s,送數據到相應的顯示緩沖單元,并調用相應的顯示子程序實時顯示。5.7.5 里程計數中斷程序每當霍爾開關器件輸出一個低電平脈沖信號就使單片機中斷一次,設定車輪周長是1米,當里程計數器計滿1000次時,就將當前的里程數和金額存入相應的寄存器中。5.7.6 按鍵程序按鍵采用查詢的方式放在主程序中,在循環主程序的同時,一旦按鍵按下便轉向相應的子程序處理,其流程圖如圖5-11所示。鍵盤掃描noyesyesyesyesnonono鍵盤掃描s1s2s3s1s2s3s4總金額顯示路程顯示單價顯示調整/等待時調整分調整中途等待圖5-11 按鍵掃描流程圖計價器源程序day_priceequ 6fh26 night_priceequ 6ehmidway_priceequ 6dhstart_priceequ 6chcountl equ 6bhcounth equ 6ahm100 equ 69h ;外部中斷次數distance equ 68h ;行車距離ms100 equ 67hsec equ 66hmin equ 65hhour equ 64hledsl equ 63h ;時分鈔顯示緩沖區ledsh equ 62hledml equ 61hledmh equ 60hledhl equ 5fhledhh equ 5ehleddanjial equ 5dh ;總額,單價顯示緩沖區leddanjiah equ 5chline_ equ 5bhledcount1 equ 5ahledcount2 equ 59hledcount3 equ 58hleddanjia2l equ 57h ;路程,單價顯示緩沖區leddanjia2h equ 56hline_ equ 55hline_ equ 54hleddistancel equ 53hleddistanceh equ 52hledday_pl equ 51h ;中途,晚上,白天顯示緩沖區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計價器源程序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 ;起步價mov counth, #05hmov day_price,#25h ;白天價格初始化mov night_price,#30h ;晚上價格初始化mov midway_price,#10h ;中途等待初始化mov start_price, #50h ;起步價初始化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;起步價mov counth, #05h;mov distance,#02hlcall cp_dis;總金額和單價顯示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 ;調用定時延時標志位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 ;調用定時延時標志位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 ;調用定時延時標志位lcall t100msdlcall t100msdmov ledhl, #0ahmov ledhh, #0ahlcall hms_dis1;直接調用顯示,不經過拆分程序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 ;調用定時延時標志位lcall t100msdlcall t100msdmov ledml, #0ahmov ledmh, #0ahlcall hms_dis1;直接調用顯示,不經過拆分程序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; -; 時鐘中斷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 ;算出當前價格轉100次的錢數,并給20h單元mov a,#1add a,m100mov m100,amov a, m100cjne a, #100,return1mov m100,#0inc 21hmov a,21hcjne a, #0ah, return1 ;已經到了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; * 顯示子程序*;功能:分四屏幕顯示數據,時分秒(hms_dis)總額單價(cp_dis)路程單價(dp_dis)單價調整(pa_dis); 使用資源:使用第三組寄存器r7,r6,r1,r0; 時鐘顯示(包括時分秒調整)hms_dis:pushacc ;(hourminutesseconddisplay)pushpswsetbrs1mov r0,#sec ;時分秒的拆分(三個字節)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;總金額和單價顯示cp_dis:push acc ;(countpricedisplay)push pswsetb rs1mov r0,#counth ;mov r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國數據收集器行業投資前景預測研究報告
- 2025屆內蒙古自治區錫林郭勒盟太仆寺旗寶昌鎮第一中學高三最后一卷英語試卷含解析
- 網店運營基礎復習題(含參考答案)
- 中藥炮制考試模擬題與參考答案
- 福建省閩侯第二中學2025屆高考沖刺英語模擬試題含解析
- 廣東省深圳市2024-2025學年高二下學期4月期中考試政治試題(原卷版+解析版)
- 數字化教具發展考核試卷
- 畜牧良種選育與繁殖方法考核試卷
- 精神康復中的壓力管理技巧考核試卷
- 企業信用體系建設考核試卷
- 2025年四川省成都市“蓉漂”人才薈武候區招聘23人歷年自考難、易點模擬試卷(共500題附帶答案詳解)
- 2025新疆交投集團所屬子公司招56人筆試參考題庫附帶答案詳解
- 《氓》《孔雀東南飛并序》聯讀課件 【知識精研】統編版高二語文選擇性必修下冊
- 耳鼻喉科學耳部疾病講解
- 施工現場5S安全管理
- 2024年大學生就業力調研報告-智聯招聘
- 團隊培訓領導力
- 層壓機操作規程(2篇)
- 白俄羅斯文化之旅(西安外國語大學)學習通測試及答案
- 中國干眼臨床診療專家共識(2024年)解讀
- 2024年湖南長沙中考生物真題及答案
評論
0/150
提交評論