出租車計價器課程設(shè)計_第1頁
出租車計價器課程設(shè)計_第2頁
出租車計價器課程設(shè)計_第3頁
出租車計價器課程設(shè)計_第4頁
出租車計價器課程設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘 要 本設(shè)計的是一個基于單片機STC89C52的出租車自動計費設(shè)計,附有復(fù)位電路,時鐘電路,鍵盤電路等。復(fù)位電路是單片機的初始化操作,除了正常的初始化外,為擺脫困境,通過復(fù)位電路可以重新開始。時鐘電路采用12MHz的晶振,作為系統(tǒng)的時鐘源,具有較高的準確性。在上電時字符型液晶1602顯示最初的起步價,里程收費,等待時間收費三種收費,通過按鍵可以調(diào)整起步價,里程收費,等待時間收費。通過按鍵模擬出租車的運行,暫停,停止。在1602液晶上可以顯示運行的時間,運行時暫停的時間,通過計算可以得出總共的費用和總的路程。在這里主要是以STC89C52單片機為核心控制器,P1口接1602液晶顯示模塊。關(guān)鍵字

2、 STC89C52;1602液晶;出租車計費器第一章 緒論1.1 出租車計價器概述我國在70年代開始出現(xiàn)出租車,但那時的計費系統(tǒng)大都是國外進口不但不夠準確,價格還十分昂貴。隨著改革開放日益深入,出租車行業(yè)的發(fā)展勢頭已十分突出,國內(nèi)各機械廠家紛紛推出國產(chǎn)計價器。出租車計價器的功能從剛開始的只顯示路程(需要司機自己定價,計算后四舍五入),到能夠自主計費,以及現(xiàn)在的能夠打一發(fā)票和語音提示、按時間自主變動單價等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個城市的文明程度。本次設(shè)計的目的在于現(xiàn)在各大中城市出租車行業(yè)都已普及自動計價器,所以計價器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及

3、,但隨著城市建設(shè)日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展,計價器的普及也是毫無疑問的,所以未來汽車計價器的市場還是十分有潛力的。1.2 單片機的概述計算機系統(tǒng)已明顯地朝巨型化、單片化、網(wǎng)絡(luò)化三個方向發(fā)展。巨型化發(fā)展的目的在于不斷提高計算機的運算速度和處理能力,以解決復(fù)雜系統(tǒng)計算和高速數(shù)據(jù)處理,比如系統(tǒng)仿真和模擬、實時運算和處理。單片化是把計算機系統(tǒng)盡可能集成在一塊半導體芯片上,其目的在于計算機微型化和提高系統(tǒng)的可靠性,這種單片計算簡稱單片機。單片機的內(nèi)部硬件結(jié)構(gòu)和指令系統(tǒng)主要是針對自動控制應(yīng)用而設(shè)計的所以單片機又稱微控制器MCU(Micro Controller Unit)。用它可以很

4、容易地將計算機嵌入到各種儀器和現(xiàn)場控制設(shè)備中,因此單片機又叫做嵌入式微控制器(Embedded MCU)。單片機自20世紀70年代問世以來,以其鮮明的特點得到迅猛發(fā)展,已廣泛應(yīng)用于家用電器、智能玩具、智能儀器儀表、工業(yè)控制、航空航天等領(lǐng)域,經(jīng)過30多年的發(fā)展,性能不斷提高,品種不斷豐富,已經(jīng)形成自動控制的一支中堅力量。據(jù)統(tǒng)計,我國的單片機年容量已達13億片,且每年以大約16的速度增長,但相對于國際市場我國的占有率還不到1。這說明單片機應(yīng)用在我國有著廣闊的前景。對于從事自動控制的技術(shù)人員來講,掌握單片機原理及其應(yīng)用已經(jīng)成為必不可少的學習任務(wù)。 單片機的應(yīng)用十分廣泛,在工業(yè)控制領(lǐng)域、家電產(chǎn)品、智能

5、化儀器儀表、計算機外部設(shè)備,特別是機電一體化產(chǎn)品中,都有重要的用途。其主要的用途可以分為以下方面。l 顯示:通過單片機控制發(fā)光二極管或是液晶,顯示特定的圖形和字符。l 機電控制:用單片機控制機電產(chǎn)品做定時或定向的動作。l 檢測:通過單片機和傳感器的聯(lián)合使用,用來檢測產(chǎn)品或者工況的意外發(fā)生。l 通信:通過RS-232串行通信或者是USB通信,傳輸數(shù)據(jù)和信號。l 科學計算:用來實現(xiàn)簡單的算法。那么單片機是不是解決上述應(yīng)用的唯一選擇呢?當然不是!單片機最明顯的優(yōu)點是價格便宜,從幾元人民幣到幾十元人民幣。這是因為這類芯片的生產(chǎn)量很大,技術(shù)也很成熟。其次,單片機的體積也遠小于其他兩種方案。單片機本身一般

6、用40引腳封裝,當然功能多一些的單片機也有引腳比較多的,如68引腳,功能少的只有10多個或20多個引腳,有的甚至只有8只引腳。當然,單片機無論在速度還是容量方面都小于其他兩種方案,但是在實際工作中并不是任何需要計算機的場合都要求計算機有很高的性能。例如,控制電冰箱的控制器就不需要使用嵌入式系統(tǒng),用一片51就可以輕松實現(xiàn)。所以應(yīng)用的關(guān)鍵是看能否夠用,是否有很好的性能價格比。51系列的單片機已經(jīng)面世十多年,依然沒有被淘汰,還在不斷發(fā)展中,這就說明是它有廣闊的應(yīng)用前景。第二章 系統(tǒng)總體設(shè)計2.1 課程設(shè)計任務(wù) 基于單片機出租車模擬計價器,采用at24c02存儲芯片+LCD1602液晶顯示等設(shè)計而成。

7、用24c02來存儲單價,通過按鍵來模擬增加里程,模擬出租車向前開。通過液晶顯示器顯示當前的行駛狀態(tài)、行駛公里、行駛時間時間(時、分、秒)、費用、單價、等信息。可以設(shè)置每公里單價,以及夜間單價和白天單價的不同模式,設(shè)置后掉電無需重新設(shè)置,設(shè)置有等待/繼續(xù)計時模式。計費分行走的里程*單價+等待的時間*價格。2.2 課程設(shè)計方案方案一:采用數(shù)字電子技術(shù),利用555定時芯片構(gòu)成多諧振蕩器,或采用外圍的晶振電路作為時鐘脈沖信號,采用計數(shù)芯片對脈沖盡心脈沖的計數(shù)和分頻,最后通過譯碼電路對數(shù)據(jù)進行譯碼,將譯碼所得的數(shù)據(jù)送給數(shù)碼管顯示,一下是該方案的流程框圖,方案一如圖1.1所示:時鐘脈沖等待信號公里脈沖計費

8、脈沖計時計費譯碼數(shù)碼管顯示圖1方案一 方案二:采用EDA技術(shù),根據(jù)層次化設(shè)計理論,該設(shè)計問題自頂向下可分為分頻模塊,控制模塊 計量模塊、譯碼和動態(tài)掃描顯示模塊,其系統(tǒng)框圖如圖2所示:時鐘信號等待信號公里脈沖計費/復(fù)位分頻器控制器計費計時計程譯碼顯示圖2方案二方案三:采用MCU技術(shù),通過單片機作為主控器,利用1602字符液晶作為顯示電路,采用外部晶振作為時鐘脈沖,通過按鍵可以方便調(diào)節(jié),一下是方案三的系統(tǒng)流程圖,本方案主要是必須對于數(shù)字電路比較熟悉,成本又高。方案圖如圖3所示:STC89C521602液晶LED燈電源電路按鍵電路復(fù)位電路圖3方案三方案總結(jié):通過各個方案的比較本次采用方案三,不但控制

9、簡單,而且成本低廉,設(shè)計電路簡單。第三章 系統(tǒng)硬件設(shè)計3.1 振蕩電路 單片機內(nèi)部有一個高增益、反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容(電容和一般取20pF)。這樣就構(gòu)成一個穩(wěn)定的自激振蕩器。 振蕩電路脈沖經(jīng)過二分頻后作為系統(tǒng)的時鐘信號,再在二分頻的基礎(chǔ)上三分頻產(chǎn)生ALE信號,此時得到的信號時機器周期信號。振蕩電路如圖4所示:圖4振蕩電路3.2 復(fù)位電路設(shè)計 復(fù)位操作有兩種基本形式:一種是上電復(fù)位,另一種是按鍵復(fù)位。按鍵復(fù)位具有上電復(fù)位功能外,若要復(fù)位,只要按圖中的RESET鍵,電源VCC經(jīng)電阻R1、R2分壓,在R

10、ESET端產(chǎn)生一個復(fù)位高電平。上電復(fù)位電路要求接通電源后,通過外部電容充電來實現(xiàn)單片機自動復(fù)位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RERST引腳的高電平將逐漸下降。RERST引腳的高電平只要能保持足夠的時間(2個機器周期),單片機就可以進行復(fù)位操作。按鍵復(fù)位電路圖如圖5所示。 圖5復(fù)位電路3.3 鍵盤接口電路 (1) 獨立式鍵盤:獨立式鍵盤中,每個按鍵占用一根I/O口線,每個按鍵電路相對獨立。I/O口通過按鍵與地相連,I/O口有上拉電阻,無鍵按下時,引腳端為高電平,有鍵按下時,引腳電平被拉低。I/O口內(nèi)部有上拉電阻時,外部可不接上拉電阻。鍵盤接口電路如圖6所示: 圖6鍵盤接

11、口電路3.4 顯示電路3.4.1 1602LCD的基本參數(shù)及引腳功能1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如圖7所示。 圖7 LM016L結(jié)構(gòu)圖LCD1602主要技術(shù)參數(shù): 容量:16×2個字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能說明:1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表1所示: 表1引腳接口說明表編號符號引腳說明

12、編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/

13、W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。 3.4.2 顯示模塊采用1602液晶顯示接口電路 圖8顯示電路 3.5 單片機各引腳功能說明 下面對STC89C52各引腳的功能進行較為詳細的介紹:1)電源引腳Vcc和Vss Vcc(40腳):電源端為+5V Vss(20腳):接地端。 2)時鐘電路引腳XTAL1和XTAL2XTAL2(18腳):接外部晶體和微調(diào)電

14、容的一端。在單片機內(nèi)部它是振蕩電路反向放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時針電路時,該引腳輸入外時鐘脈沖。要檢查89C52的振蕩電路是否正常工作,可用示波器查看XTAL2端是否有脈沖信號輸出。XTAL1(19腳):接外部晶體和微調(diào)電容的另一端。在片內(nèi),它是振蕩電路反向放大器的輸入端。在采用外部時鐘時,該引腳必須接地。 3)控制信號腳 RST ALE PSEN 和EA。 RST(9腳):RST是復(fù)位信號輸入端,高電平有效。在此輸入端保持兩個機器周期(24個時鐘振蕩周期)的高電平時,就可以完成復(fù)位操作。ALE/PROG(30引腳):地址鎖存允許信號端。當STC89C52上

15、電正常工作后,ALE引腳不斷向外輸出正脈沖信號。此頻率為振蕩器頻率fosc的1/6,當CPU訪問片外存儲器時,ALE輸出信號作為鎖存低8位地址的控制信號。在CPU訪問片外數(shù)據(jù)存儲時,每取值一次(一個機器周期)會丟失一個脈沖。平時不訪問片外存儲時,ALE端也以1/6的振蕩頻率固定輸出正脈沖,因而ALE信號可以用作對外輸出時鐘或定時信號。如果你想看一下STC89C52芯片的好壞,可用示波器查看ALE端是否有脈沖信號輸出,如有脈沖信號輸出,則STC89C52基本上是好的。ALE的負載驅(qū)動能力為8個LS型TTL(低功耗高速TTL)。 PSEN(29腳);程序存儲允許輸出信號引腳,在訪問片外程序存儲器時

16、,此端定時輸出負脈沖作為讀片外存儲器的選通信號。此引腳接ERROM的OE端。PSEN端有效,即允許讀出ERROM/ROM中的指令碼。CPU在從外部ERROM/ROM取指令期間,每個周期PSEN兩次有效。不過,在訪問片外RAM時,要少產(chǎn)生兩次PSEN負脈沖信號。要檢查一個STC89C52小系統(tǒng)上電后CPU能否正常到ERROM/ROM中讀取指令碼,也可用于示波器看PSEN端有無脈沖輸出。如有,說明基本上工作正常。EA/VPP(31腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端。當EA引腳接高電平時,CPU只訪問片內(nèi)ERROM/ROM并執(zhí)行內(nèi)部程序存儲器中的指令。但在PC(程序計數(shù)器)的值超

17、過OFFFH(對8751/8051為4k)時,將自動轉(zhuǎn)向執(zhí)行片外存儲器的程序。當出入信號EA引腳接低電平(接地)時,CPU只訪問外部ERROM/ROM并執(zhí)行外部程序存儲器中的指令,而不管是否有片內(nèi)程序存儲器。對于無芯片內(nèi)的ROM的8031或8032,須外擴ERROM,此時必須將EA引腳接地。如果使用有片內(nèi)ROM的STC89C52,外擴ERROM也是可以的,但也要使EA接地。4)I/O(輸入/輸出端口,P0,P1,P2,P3)P0口:P0口是一個漏極開路的8位準雙向I/O端口。P1口:8位準雙向I/O端口。P2口:即可以做地址總線輸出地址高8位,也可以做普通I/O用,(此時為準雙向口)。P3口:

18、雙功能口,即可以做普通I/O口用(此時為準向口,也可以按每位定義實現(xiàn)第二功能操作)。見表1。表2 P3口的第二功能表引腳第二功能P3.0RXD (串行輸入口)P3.1TXD (串行輸出口)P3.2INT0(外部中斷0)P3.3INT1(外部中斷1)P3.4T0(定時器0外部中斷)P3.5T1(定時器1外部中斷)P3.6WR(外部存儲器寫選通)P3.7RD(外部存儲器讀寫通)第四章 系統(tǒng)軟件設(shè)計4.1 單片機資源使用在本次設(shè)計中像電路鍵盤用到了P2口,其中P2.0到P2.5口作為鍵盤的輸入,顯示電路用到了P1和P3口,P1口為液晶的數(shù)據(jù)口。4.2 單片機軟件模塊設(shè)計4.2.1 中斷子函數(shù)對于中斷

19、程序,只要定時器計數(shù)滿就會產(chǎn)生中斷50ms中斷一次,共計20次,秒鐘加1,秒鐘計滿再分鐘加,當分鐘加到99時全部清零。以下是中斷子函數(shù)的流程圖如圖9所示:圖9中斷子程序流程圖4.2.2 判鍵子函數(shù) 對于獨立式鍵盤判鍵,首先看有鍵按下不,如果有鍵按下則延時一會兒,在判斷是否真的有鍵按下,如果確實有鍵按下,在判鍵釋放,最后執(zhí)行鍵功能程序。判鍵子函數(shù)的流程框圖如圖10所示: 圖10判鍵子程序流程圖4.2.3 顯示子程序 1602液晶是字符型液晶,它的內(nèi)部自帶字符庫,它可以寫兩行的字符,同時每行可以寫40個字符,在寫顯示程序的時候,我們先寫命令,再設(shè)定字符顯示,最后寫數(shù)據(jù),在每寫一次命令或數(shù)據(jù)都需要判

20、斷液晶是否忙。液晶顯示程序流程圖如圖11所示: 圖11顯示子程序流程圖4.3 總程序流程框圖整體程序的流程框圖如圖12所示: 圖12整體程序的流程框圖第五章 系統(tǒng)調(diào)試過程本設(shè)計需要用Keil uVision2對C51程序進行編譯,生成“.hex”文件,如下圖:圖13 Keil uVision2對C51程序進行編譯 在Proteus軟件中畫出仿真電路(如圖),把Keil uVision2編譯后生成的“.hex”導入到單片機中,按“運行仿真”鍵進行仿真。圖14 仿真圖第六章 設(shè)計的效果(實物圖或仿真效果圖)圖15 仿真效果圖第七章 結(jié)論總結(jié)作為一名電信專業(yè)的大三學生,我覺得做單片機課程設(shè)計是十分有

21、意義的,而且是十分必要的。在已度過的大學時間里,我們大多數(shù)接觸的是專業(yè)課。我們在課堂上掌握的僅僅是專業(yè)課的理論知識,如何去鍛煉我們的實踐能力?如何把我們所學的專業(yè)基礎(chǔ)課理論知識運用到實踐中去呢?我想做類似的課程設(shè)計就為我們提供了良好的實踐平臺。 單片機作為我們的主要專業(yè)課之一,雖然在大三開學初我對這門課并沒有什么興趣,覺得那些程序枯燥乏味,但在這次課程設(shè)計后我發(fā)現(xiàn)自己在一點一滴的努力中對單片機的興趣也在逐漸增加。 通過這次設(shè)計,我懂得了學習的重要性,了解到理論知識與實踐相結(jié)合的重要意義,學會了堅持、耐心和努力,這將為自己今后的學習和工作做出了最好的榜樣。我覺得作為一名電信專業(yè)的學生,單片機的課

22、程設(shè)計是很有意義的。更重要的是如何把自己平時所學的東西應(yīng)用到實際中。 雖然自己對于這門課懂的并不多,很多基礎(chǔ)的東西都還沒有很好的掌握,覺得很難,也沒有很有效的辦法通過自身去理解,但是靠著這一個多禮拜的“學習”,在小組同學的幫助和講解下,漸漸對這門課逐漸產(chǎn)生了些許的興趣,自己開始主動學習并逐步從基礎(chǔ)慢慢開始弄懂它。 我認為這個收獲應(yīng)該說是相當大的。覺得課程設(shè)計反映的是一個從理論到實際應(yīng)用的過程,但是更遠一點可以聯(lián)系到以后畢業(yè)之后從學校轉(zhuǎn)到踏上社會的一個過程。小組人員的配合相處,以及自身的動腦和努力,都是以后工作中需要的。參考文獻1 李廣弟,朱月秀,冷祖祁.單片機基礎(chǔ)M.第3版.北京航空航天大學出

23、版社,2007年1月2李華.MCS-51系列單片機實用接口技術(shù)M.北京航空航天大學出版社,19963 馬忠梅,張凱,馬巖,單片機的C語言應(yīng)用程序設(shè)計,M,北京:北京航空航天大學出版社,2003.11;4 胡輝,單片機原理及應(yīng)用設(shè)計21世紀高等院校規(guī)劃教材M,水利水電出版社,2005.7;5 劉守義,單片機應(yīng)用技術(shù)M,西安:西安電子科技大學出版社,1996.8;致謝 本課程設(shè)計是在石蕊老師的悉心指導下完成的,石老師的淵博學識和豐富經(jīng)驗給我留下了深刻的印象。從石老師那里我學到的不僅是專業(yè)知識與實際問題科學解決的方法,更為重要的是勤奮和嚴謹治學的精神以及對學生的認真負責,老師的諄諄教誨使我受益匪淺,

24、在此向石老師表示衷心的感謝并致以崇高的敬意!感謝家人給予我學業(yè)上和生活上的支持與照顧。同時感謝給予我?guī)椭母魑焕蠋?、同學以及朋友們!附錄1 程序清單#include <reg52.h> /調(diào)用單片機頭文件#define uchar unsigned char /無符號字符型 宏定義變量范圍0255#define uint unsigned int /無符號整型 宏定義變量范圍065535uchar miao,fen = 0,shi;uchar flag_bai_hei; /白天的晚上的標志位uchar value;uint bai_3l_price = 60; /白天3千米內(nèi)的單價

25、 6元uint bai_3w_price = 18; /白天3千米外的單價/千米 1.8元uint bai_wait_price = 5; /白天等待時的單價/分鐘 0.5元uint wan_3l_price = 70; /晚上3千米內(nèi)的單價/千米 7元uint wan_3w_price = 22; /晚上3千米外的單價/千米 2.2元uint wan_wait_price = 10; /晚上等待時的單價/分鐘 1元uint distance = 0; /行使的距離uint zong_jia; /總的價bit flag_300ms = 0;bit flag_1s ;bit flag_time_

26、en = 0;#include "lcd1602.h"/*1ms延時函數(shù)*/void delay_1ms(uint q)uint i,j;for(i=0;i<q;i+)for(j=0;j<120;j+);#include "iic.h"void write_iic_data()write_24c02(0,flag_bai_hei);write_24c02(1,bai_3l_price % 256); /保存數(shù)據(jù)write_24c02(2,bai_3l_price / 256); /保存數(shù)據(jù)write_24c02(3,bai_3w_price

27、% 256); /保存數(shù)據(jù) write_24c02(4,bai_3w_price / 256); /保存數(shù)據(jù) write_24c02(5,bai_wait_price % 256); /保存數(shù)據(jù) write_24c02(6,bai_wait_price / 256); /保存數(shù)據(jù) write_24c02(7,wan_3l_price % 256); /保存數(shù)據(jù)write_24c02(8,wan_3l_price / 256); /保存數(shù)據(jù)write_24c02(9,wan_3w_price % 256); /保存數(shù)據(jù) write_24c02(10,wan_3w_price / 256); /保

28、存數(shù)據(jù) write_24c02(11,wan_wait_price % 256); /保存數(shù)據(jù) write_24c02(12,wan_wait_price / 256); /保存數(shù)據(jù) /*自動初始化保存的數(shù)據(jù)*/ void zidong_chushifa_iic()value = read_24c02(200);value = read_24c02(200);if(value != 0x91)/新的單片機初始單片機內(nèi)問EEPOMvalue = 0x91;write_iic_data();write_24c02(200,value); /保存數(shù)據(jù)delay_1ms(300);/*讀出來保存的數(shù)據(jù)

29、*/ void read_iic_data()flag_bai_hei = read_24c02(0);bai_3l_price = read_24c02(2);bai_3l_price = bai_3l_price * 256 + read_24c02(1);bai_3w_price = read_24c02(4);bai_3w_price = bai_3w_price * 256 + read_24c02(3);bai_wait_price = read_24c02(6);bai_wait_price = bai_wait_price * 256 + read_24c02(5);wan_3

30、l_price = read_24c02(8);wan_3l_price = wan_3l_price * 256 + read_24c02(7);wan_3w_price = read_24c02(10);wan_3w_price = wan_3w_price * 256 + read_24c02(9);wan_wait_price = read_24c02(12);wan_wait_price = wan_wait_price * 256 + read_24c02(11);/*獨立按鍵處理函數(shù)*/ #define key_io P2uchar key_can;void key()stati

31、c uchar key_new = 0,key_old = 0,key_value = 0;key_io |= 0x3f;if(key_new = 0) /按鍵松開if(key_io & 0x3f) = 0x3f)key_value +;else key_value = 0;if(key_value >= 5) /按鍵松開松手檢測key_value = 0;key_new = 1;/按鍵松開后進入等待按鍵狀態(tài)else if(key_io & 0x3f) != 0x3f) /按鍵按下key_value +;else key_value =0;if(key_value >

32、;= 5)/按鍵按下消抖key_value = 0;key_new = 0; /按鍵松開后進入等待松開按鍵狀態(tài)key_can = 20;if(key_new = 0) && (key_old = 1)switch(key_io & 0x3f)case 0x3e: key_can = 1; break; /得到按鍵值 case 0x3d: key_can = 2; break; /得到按鍵值 case 0x3b: key_can = 3; break; /得到按鍵值 case 0x37: key_can = 4; break; /得到按鍵值 case 0x1f: key_

33、can = 5; break; /得到按鍵值 case 0x2f: key_can = 6; break; /得到按鍵值 /write_sfm2(2,0,key_can); /按鍵按下顯示按鍵值 key_old = key_new; #include "menu.h"/*對應(yīng)菜單內(nèi)的處理函數(shù)*/void menu_dis()if(menu_1 = 0)if(key_can = 6)distance +;write_sfm4(1,0,distance); if(key_can = 5) /清零 從新計價flag_time_en = 0;shi = 0;fen = 0;miao

34、 = 0;zong_jia = 0;distance = 0;if(key_can = 2)flag_time_en = flag_time_en;if(flag_300ms = 1)flag_300ms = 0;if(distance <= 30)/3公里內(nèi)的價格if(flag_bai_hei = 0)if(fen <= 3)zong_jia = bai_3l_price;else zong_jia = bai_3l_price + (shi * 60 + fen - 3) * bai_wait_price;else if(fen <= 3)zong_jia = wan_3

35、l_price; else zong_jia = wan_3l_price + (shi * 60 + fen - 3) * bai_wait_price;else /3公里外的價格if(flag_bai_hei = 0)if(fen <= 3)zong_jia = bai_3l_price + bai_3w_price * (distance - 30) / 10 ;else zong_jia = bai_3l_price + bai_3w_price * (distance - 30) / 10 + (shi * 60 + fen - 3) * bai_wait_price;else if(fen <= 3)zong_jia

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論