單片機(jī)課程設(shè)計(jì)出租車計(jì)價器設(shè)計(jì)_第1頁
單片機(jī)課程設(shè)計(jì)出租車計(jì)價器設(shè)計(jì)_第2頁
單片機(jī)課程設(shè)計(jì)出租車計(jì)價器設(shè)計(jì)_第3頁
單片機(jī)課程設(shè)計(jì)出租車計(jì)價器設(shè)計(jì)_第4頁
單片機(jī)課程設(shè)計(jì)出租車計(jì)價器設(shè)計(jì)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)課程設(shè)計(jì)課題: 出租車計(jì)價器設(shè)計(jì)系 別: 專 業(yè): 姓 名: 學(xué) 號: 年 月 日成績評定一、指導(dǎo)教師評語(根據(jù)學(xué)生設(shè)計(jì)報告質(zhì)量、答辯情況及其平時表現(xiàn)綜合評定)。二、評分評分項(xiàng)目設(shè)計(jì)報告評分答辯評分平時表現(xiàn)評分合 計(jì) (100分)任務(wù)完成情 況(20分)課程設(shè)計(jì)報告質(zhì)量(40分)表達(dá)情況(10分)回答問題情 況(10分)工作態(tài)度與紀(jì)律(10分)獨(dú)立工作能力(10分)得分課程設(shè)計(jì)成績評定班級 姓名 學(xué)號成績: 分(折合等級 )指導(dǎo)教師簽字 年 月 日目 錄一、 設(shè)計(jì)目的-4二、 設(shè)計(jì)要求-4三、 總體設(shè)計(jì)-41 程序框圖及說明-42 程序流程圖及說明-5四、各部分電路設(shè)計(jì)-7 1、鍵盤調(diào)整

2、單元-72、里程計(jì)算-73、顯示電路設(shè)計(jì)-84、等候時間電路設(shè)計(jì)-95、總金額計(jì)算-10五、整體電路圖-10六、設(shè)計(jì)總結(jié)-11參考文獻(xiàn)-11附錄(全部源程序)-12一、設(shè)計(jì)目的出租車計(jì)價器是乘客與司機(jī)雙方的交易準(zhǔn)則,是出租車行業(yè)發(fā)展的重要標(biāo)志,它關(guān)系著交易雙方的利益?,F(xiàn)在,城市建設(shè)日益加快,象征著城市面貌的出租車行業(yè)也將加快發(fā)展,計(jì)價器的普及是毫無疑問的,所以未來出租車行業(yè)計(jì)價器的市場是很有潛力的。本文是為了探索計(jì)價器的設(shè)計(jì)而制作的。二、設(shè)計(jì)要求1、不同情況具有不同的收費(fèi)標(biāo)準(zhǔn)。白天、晚上、途中等待(10min 開始收費(fèi))2、能進(jìn)行手動修改單價3、具有數(shù)據(jù)的復(fù)位功能4、io口分配的簡易要求,距離

3、檢測使用霍爾開關(guān)a44e,白天/晚上收費(fèi)標(biāo)準(zhǔn)的轉(zhuǎn)換開關(guān),數(shù)據(jù)的清零開關(guān),單價的調(diào)整(最好使用 和 按鍵)5、數(shù)據(jù)輸出(采用lcm103 )單價輸出2 位、路程輸出2 位、總金額輸出3 位6、按鍵啟動計(jì)時開關(guān)、數(shù)據(jù)復(fù)位(清零)、白天/晚上轉(zhuǎn)換三、總體設(shè)計(jì)1、采用單片機(jī)控制,程序框圖如下:89s51單片機(jī)鍵盤控制單價顯示總金額顯示at24c02掉電存儲里程計(jì)算單元串口顯示驅(qū)動電路 圖1 程序框圖利用單片機(jī)豐富的io端口,及其控制的靈活性,實(shí)現(xiàn)基本的里程計(jì)價功能和價格調(diào)節(jié)、時鐘顯示功能。單片機(jī)方案有較大的活動空間,不但能實(shí)現(xiàn)所要求的功能,而且能在很大的程度上擴(kuò)展功能,而且還可以方便的對系統(tǒng)進(jìn)行升級。

4、2、程序流程圖如下:開始初始化數(shù)據(jù)s1按下?否是s4按下?是否設(shè)定默認(rèn) 單價(白天)設(shè)定晚上單價否按下s4?是啟動計(jì)價器設(shè)定中途等待單價總路程加1總金額加1里程中斷?圖2 主程序流程圖s4按下?s3按下?到一公里?停止計(jì)價和里程計(jì)數(shù)s3按下?否是是否否是顯示金額及單價顯示路程和單價是是否返回時間顯示是否傳感有信號? 主程序流程圖如圖2 所示。當(dāng)按下s1時,就啟動計(jì)價,將根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷出行駛里程是否已超過起價公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價數(shù)和起價數(shù)來計(jì)算出當(dāng)前的累計(jì)價格,并將結(jié)果存于價格寄存器中,然后將時間和當(dāng)前累計(jì)價格送顯示電路顯示出來。當(dāng)?shù)竭_(dá)目的地的時候,由于

5、霍爾開關(guān)沒有送來脈沖信號,就停止計(jì)價,顯示當(dāng)前所應(yīng)該付的金額和對應(yīng)的單價,到下次啟動計(jì)價時,系統(tǒng)自動對顯示清零,并重新進(jìn)行初始化過程。四、各部分電路設(shè)計(jì)1、鍵盤調(diào)整單元 圖3 鍵盤調(diào)整單元 當(dāng)單價等信息需要進(jìn)行修改時,就要用到鍵盤進(jìn)行修改。由于調(diào)節(jié)信息不多,故采用4個獨(dú)立鍵盤即可,分別實(shí)現(xiàn)清零、切換、增大、減小和功能等作用。電路原理如圖3所示。s1:接p1.0口,對上一次的計(jì)費(fèi)進(jìn)行清零,為下次載客準(zhǔn)備s2:接p1.1口,實(shí)現(xiàn)白天和夜晚單價的切換;當(dāng)功能鍵s4按下時,s2可對數(shù)據(jù)進(jìn)行增大。s3:接p1.2口,當(dāng)功能鍵s4按下時,s3可對數(shù)據(jù)進(jìn)行減小。s4:接p1.3口,按1次,進(jìn)入調(diào)整白天單價;

6、按2次,進(jìn)入調(diào)整夜晚單價;按3次,進(jìn)入調(diào)整等待單價;按4次,進(jìn)入調(diào)整起步價;按5次,返回。2、里程計(jì)算里程計(jì)算是通過安裝在車輪上的霍爾傳感器a44e檢測到的信號,送到單片機(jī),經(jīng)處理計(jì)算,送給顯示單元的。其原理如圖4傳感器測距示意圖所示。圖 4 傳感器測距示意圖由于a44e 屬于開關(guān)型的霍爾器件,其工作電壓范圍比較寬(4.518v),其輸出的信號符合ttl 電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的io 端口上,而且其最高檢測頻率可達(dá)到1mhz。a44e 集成霍耳開關(guān)由穩(wěn)壓器a、霍耳電勢發(fā)生器(即硅霍耳片)b、差分放大器c、施密特觸發(fā)器d 和oc 門輸出e 五個基本部分組成。在輸入端輸入電壓cc v ,經(jīng)穩(wěn)

7、壓器穩(wěn)壓后加在霍耳電勢發(fā)生器的兩端,根據(jù)霍耳效應(yīng)原理,當(dāng)霍耳片處在磁場中時,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產(chǎn)生霍耳電勢差h v 輸出,該h v 信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到oc 門輸出。當(dāng)施加的磁場達(dá)到工作點(diǎn)(即op b )時,觸發(fā)器輸出高電壓(相對于地電位),使三極管導(dǎo)通,此時oc 門輸出端輸出低電壓,通常稱這種狀態(tài)為開。當(dāng)施加的磁場達(dá)到釋放點(diǎn)(即rp b )時,觸發(fā)器輸出低電壓,三極管截止,使oc 門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍耳開關(guān)完成了一次開關(guān)動作。我們選擇了p3.2 口作為信號的輸入端,內(nèi)部采用外部中斷0(這

8、樣可以減少程序設(shè)計(jì)的麻煩),車輪每轉(zhuǎn)一圈(我們設(shè)車輪的周長是1 米),霍爾開關(guān)就檢測并輸出信號,引起單片機(jī)的中斷,對脈計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到1000 次時,也就是1 公里。3、顯示電路設(shè)計(jì) 圖5 顯示電路顯示單元由7個8段共陽數(shù)碼管組成,采用動態(tài)掃描進(jìn)行顯示。前三個數(shù)碼管分別接p3.0、p3.1和p3.2,用于顯示總金額;中間兩個分別接p3.4和p3.5,用于顯示里程;后邊兩個分別接p3.6和p3.7,用于顯示單價。電路如圖5所示。4、等候時間電路設(shè)計(jì)當(dāng)在計(jì)數(shù)狀態(tài)下霍爾開關(guān)沒有輸出信號,片內(nèi)的t1 定時器便被啟動,每當(dāng)計(jì)時到達(dá)10分鐘,就對當(dāng)前金額加上中途等待的單價,以后每十分鐘都自動加上中途等待的

9、單價。當(dāng)中途等待結(jié)束的時候,也就自動切換到正常的計(jì)價。程序流程圖如下:開始保護(hù)現(xiàn)場重置計(jì)數(shù)初值否中斷10次?是數(shù)據(jù)送顯示緩沖單元調(diào)用顯示子程序恢復(fù)現(xiàn)場并中斷返回圖6 等時流程圖5、總金額計(jì)算(1)無等待:總金額=單價*里程+起步價(2)有等待:總金額=(t/10min)*單價+單價*里程+起步價 (t是等待時間)五、整體電路圖 圖7 整體電路圖1、s1按鍵的功能在出租車不走的時候,按下s1,可以實(shí)現(xiàn)數(shù)據(jù)的分屏顯示;車在行走的時候只有總金額和單價顯示屏在顯示,當(dāng)?shù)竭_(dá)目的地的時候,客戶要求查看總的里程的時候,就可以按下s1 切換到里程和單價顯示屏,供客戶查詢。2、s2按鍵的功能在按下s1按鍵之后,

10、若接著按下s2鍵則進(jìn)行單價調(diào)整(默認(rèn)為調(diào)整白天單價),當(dāng)接著按下s1時,則進(jìn)行晚上單價調(diào),再次按下s1可進(jìn)行中途等待單價調(diào)整。當(dāng)單價調(diào)整結(jié)束后,可以通過過按下s2按鍵進(jìn)行時間調(diào)整,默認(rèn)為調(diào)整時,接著按下s1可進(jìn)行調(diào)整分,分調(diào)整后再接下s1可進(jìn)行秒調(diào)整。當(dāng)時調(diào)整完成后,若接著按下s2則又可進(jìn)行單價調(diào)整。3、s3按鍵的功能在顯示金額及單價時,若按下s3鍵則顯示路程和單價,再次按下s3,可返回顯示金額及單價。4、s4按鍵的功能在按下s1按鍵之后,若接著按下s4按鍵,則進(jìn)行設(shè)定默認(rèn)晚上單價,并啟動計(jì)價器,若沒有按下s4則可設(shè)定默認(rèn)單價(白天),并啟動計(jì)價器。當(dāng)設(shè)定默認(rèn)晚上單價結(jié)束后,再次接下s4按鍵,

11、則可設(shè)定默認(rèn)中途等待單價,并啟動計(jì)價器。當(dāng)設(shè)定默認(rèn)中途等待單價后,若還按一次s4,則返回系統(tǒng)時間的顯示。六、設(shè)計(jì)總結(jié)經(jīng)過本周關(guān)于出租車計(jì)價器的課程設(shè)計(jì),我對單片機(jī)的應(yīng)用有了更深的了解。當(dāng)然在課程設(shè)計(jì)的過程中,不可避免的碰到了許多問題。對于代碼的前后順序及調(diào)用掌握得還不夠好;對于一些相關(guān)的應(yīng)用軟件沒能熟練掌握。通過這幾天的思考,以及參考網(wǎng)上的程序和聽取同學(xué)的講解,最終還是把問題解決了。通過本次課程設(shè)計(jì),又使我學(xué)到了許多書本上無法學(xué)到的知識,也使也深該體會到單片機(jī)技術(shù)應(yīng)用領(lǐng)域的廣泛,不僅使我對學(xué)過的單片機(jī)知識有了很多的鞏固,同時也對單片機(jī)這一門課程產(chǎn)生了更大的興趣。要做好一個課程設(shè)計(jì),就必須做到:

12、在設(shè)計(jì)程序之前,對所用單片機(jī)的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片機(jī)內(nèi)有哪些資源;要有一個清晰的思路和一個完整的的軟件流程圖;在設(shè)計(jì)程序時,不能妄想一次就將整個程序設(shè)計(jì)好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計(jì)的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,一個程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設(shè)計(jì)課程過程中遇到問題是很正常,我們應(yīng)該將每次遇到的問題記錄下來,并分析清楚,將之一一解決。參考文獻(xiàn) 1 郭天祥主編,51單片機(jī)入門及開發(fā),北京,電子工業(yè)出版社。 2 張毅坤等主編,單片微型計(jì)算機(jī)原理及應(yīng)用,西安,西安電子科技大學(xué)出版社。3 余成波主編,傳感

13、器與自動檢測技術(shù),北京,高等教育出版社。4 辛友順主編,單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),福建,福建科學(xué)技術(shù)出版社。附錄全部源程序該出租車計(jì)價器的系統(tǒng)軟件設(shè)計(jì)源程序如下:day_priceequ 6fhnight_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 ; 時分鈔顯示緩沖區(qū)ledsh

14、 equ 62hledml equ 61hledmh equ 60hledhl equ 5fhledhh equ 5ehleddanjial equ 5dh ; 總額,單價顯示緩沖區(qū)leddanjiah equ 5chline_ equ 5bhledcount1 equ 5ahledcount2 equ 59hledcount3 equ 58hleddanjia2l equ 57h ; 路程,單價顯示緩沖區(qū)leddanjia2h equ 56hline_ equ 55hline_ equ 54hleddistancel equ 53hleddistanceh equ 52hledday_pl

15、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 43horg 0000hajmpmainorg 0003hajmptoorg 000bhajmptotimeorg

16、001bhajmptostartorg 0030hmain: mov sp,#70hmov tmod, #11hmov th0, #3chmov tl0, #0b0hmov th1, #3chmov tl1, #0b0hmov 22h, #0ahsetb easetb tr0setb ex0setb it0setb et0setb et1mov r7,#34mov r0,#69hloopl:mov r0,#0dec r0djnzr7,looplmov countl, #00h ; 起步價mov counth, #05hmov day_price,#25h ; 白天價格初始化mov night_

17、price,#30h ; 晚上價格初始化mov midway_price,#10h ; 中途等待初始化mov start_price, #50h ; 起步價初始化mov s11, #0mov s22, #0mov s33, #0mov s44, #0mov distance, #02hmov hour, #12hkey_main: setb tr0acall hms_disacall t100msdacall t100msdacall t100msdjb s1, key_mainacall t10msdjb s1, key_mainjnb s1,$sjmp wai1wa1:jb s1, k1a

18、call t10msdjb s1, k1wait1:jnb s1, wait1mov r0, #leddanjialmov r2, #6clr amov countl,amov counth,amov m100, amov distance,abk1: mov r0, adec r0djnz r2, bk1mov price,day_price; 起動初始化mov countl, #00h; 起步價mov counth, #05hlcall cp_dis; 總金額和單價顯示k1: jb s2, k2acall t10msdjb s2, k2wait2: jnb s2, wait2inc s22

19、mov 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, h2sub

20、b a, h1mov h1, anxt2: 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_disnt2:cjne a, #3, nt3mov price,midway_pricesetb tr1lcall

21、cp_disnt3:cjne a, #4, bk_key_mainmov s44, #0ljmp key_mainbk_key_main: ljmp wa1key_dj:jb s1, ky1acall t10msdjb s1, ky1wait5:jnb s1, wait5inc s11mov a, s11cjne a, #1, next11ljmp day_pnext11: cjne a, #2,next12lcall nig_pnext12:cjne a, #3, ky1lcall mid_pmov s11, #0ljmp key_mainky1:jb s2, ky2acall t10msd

22、jb s2, ky2wait6:jnb s2, wait6inc s22mov a, s22cjne a, #1, next13lcall pa_disljmp key_djnext13:cjne a, #2, next14clr tr0lcall hms_dislcall key_sjnext14:cjne a, #3, ky2mov s22, #0ljmp key_mainky2:ajmp key_djkey_sj:jb s1, key1acall t10msdjb s1, key1wait7:jnb s1, wait7inc s11mov a, s11cjne a, #1,next21l

23、call hou_tnext21:cjne a, #2,next22lcall min_tnext22: cjne a, #3,key1mov s11, #0ljmp key_mainkey1: jb s2, key2acall t10msdjb s2, key2wait8:jnb s2, wait8inc s22mov a, s22cjne a, #1, next23lcall pa_disljmp key_djnext23:cjne a, #2, next24clr tr0lcall hms_disnext24:cjne a, #3, key2mov s22,#0lcall key_sjl

24、jmp key_mainkey2:ajmp key_sjday_p:setb f0 lcall t100msdlcall t100msdmov ledday_pl, #0ahmov ledday_ph, #0ahlcall pa_dis1lcall t100msdlcall t100msdlcall pa_dislp1: jb s3, key11mov a, #1add a, day_priceda amov day_price,amov a, day_pricecjne a, #99h, key11mov day_price, #0key11: jb s4, key12lcall t10ms

25、djb 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,

26、 #0key13:jb s2, key14lcall t10msdjb s2, key14wait12:jnb s2, wait12ljmp key_mainkey14:ajmp day_pnig_p:setb f0 ;調(diào)用定時延時標(biāo)志位lcall t100msdlcall t100msdmov lednig_pl, #0ahmov lednig_ph, #0ahlcall pa_dis1lcall t100msdlcall t100msdlcall pa_disjb s3, key21lcall t10msdjb s3, key21mov a, #1add a, night_priceda

27、amov night_price,acjne a, #99h,key21mov night_price,#0key21:jb s4, key22lcall t10msdjb s4, key22mov 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:

28、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_pmid_p: setb f0 ;調(diào)用定時延時標(biāo)志位lcall t100msdmov ledw_pl, #0ahmov ledw_ph, #0ahlcall pa_dis1lcall t100msd

29、lcall pa_disjb s3, key31lcall t10msdjb s3, key31mov a, midway_priceadd a, #1da amov midway_price,acjne a, #99h, key31mov midway_price, #00hcjne a, #100, key31mov midway_price, #0key31: jb s4, key32lcall t10msdjb s4, key32mov a, midway_priceadd a, #99hda amov midway_price,acjne a, #00h, key32mov nigh

30、t_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, w

31、ait31ljmp key_mainkey34: ajmp mid_phou_t: setb f0 ;調(diào)用定時延時標(biāo)志位lcall t100msdlcall t100msdmov ledhl, #0ahmov ledhh, #0ahlcall hms_dis1;直接調(diào)用顯示,不經(jīng)過拆分程序lcall t100msdlcall t100msdmov sec, #0lcall hms_disjb s3, key41mov a, houradd a, #1da amov hour,acjne a, #24h, key41mov hour, #0key41: jb s4, key42mov a, ho

32、uradd 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:

33、 jnb s2, wait32ljmp key_mainkey44: ajmp hou_tmin_t: setb f0 ;調(diào)用定時延時標(biāo)志位lcall t100msdlcall t100msdmov ledml, #0ahmov ledmh, #0ahlcall hms_dis1;直接調(diào)用顯示,不經(jīng)過拆分程序lcall t100msdlcall t100msdmov sec, #0lcall hms_disjb s3, key51mov a, minadd a, #1da amov min, acjne a, #60h, key51mov min, #0key51: jb s4, key52m

34、ov 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

35、s2, key54wait33: jnb s2, wait33ljmp key_mainkey54: ajmp min_ttotime: 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

36、, hourda amov hour,acjne a, #24h,returnmov hour,#0return: pop accpop pswretito: push pswpush accmov 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,amov a, priceadd a, countlda amov cou

37、ntl,acjne a, #10h,return1mov countl,#0mov a, #1add a, counthda amov counth,acjne a, #99h, return1mov counth,#0return1: pop accpop pswretitostart: push pswpush accmov th1, #3chmov tl1, #0b0hdjnz 22h, return2 ;1s未到返回mov 22h, #0ahmov a, #1add a, 23hda amov 23h, acjne a, #60h, return2mov 23h, #0mov a, #

38、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 pswretihms_dis:pushacc pushpswsetbrs1mov r0,#sec ;時分秒的拆分(三個字節(jié))mov r1,#l

39、edslmov 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,loopclrrs1poppswpopaccretcp_dis

40、:push acc push pswsetb rs1mov r0,#counth ;mov r1,#ledcount2mov a, r0mov b, aanl a, #0fhmov r1,adec r1mov a, bswapaanl a, #0fhmov r1,amov ledcount1,countlmov a,ledcount1 ;送總金額低位mov dptr,#tabmovc a, a+dptrmov sbuf,ajnb ti,$clr timov a,ledcount2 ;送總金額中位mov dptr,#tabmovc a,a+dptrcpl acc.4mov sbuf,ajnb t

41、i, $clr timov a,ledcount3 ;送總金額高位mov dptr,#tabmovc a,a+dptrmovsbuf,ajnb ti,$clr ticlr rs1mov sbuf,#0feh ;送短線(短線的字型碼是0feh)jnb ti, $clr timov r0,#price;單價拆分(兩個字節(jié))mov r1,#leddanjialmov r6,#03hmov a, r0mov b, aanl a, #0fhmov r1,adec r1mov a, bswapaanl a, #0fhmov r1,adec r1mov a,leddanjial ;送單價低位mov dptr

42、,#tabmovc a,a+dptrmov sbuf,ajnb ti, $clr timov a, leddanjiah ;送單價高位mov dptr,#tabmovca,a+dptrcpl acc.4mov sbuf,ajnb ti,$clr tipop pswpop accretdp_dis:push acc push pswsetb rs1mov r0,#price ;單價的拆分(一個字節(jié))mov r1,#leddanjialmov a, r0mov b, aanl a, #0fhmov r1,adec r1mov a, bswapaanl a, #0fhmov r1,adec r1mov a,l

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論