版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 華夏學院</b></p><p> 《單片機原理與接口技術(shù)》畢業(yè)課程設(shè)計</p><p> 題 目: 基于51單片機的出租車計價器 </p><p> 學院(系): 信 息 工 程 系 </p><p> 年級專業(yè): 自 動 化 1081
2、 班 </p><p> 學 號: 10212408108 </p><p> 學生姓名: 鄭 兵 </p><p> 指導教師: 李 波 </p><p><b> 課程設(shè)計任務(wù)書</b&
3、gt;</p><p> 學生姓名: 鄭 兵 專業(yè)班級: 自動化1081班 </p><p> 指導教師: 李 波 工作單位: 信息工程系 </p><p> 題 目: 基于51單片機的出租車計價器的設(shè)計
4、 </p><p><b> 初始條件:</b></p><p> 運用所學的單片機原理與接口技術(shù)知識和數(shù)字電路知識;</p><p> 51單片機應(yīng)用開發(fā)系統(tǒng)一套;</p><p> PC機及相關(guān)應(yīng)用軟件;</p><p> 要求完成的主要任務(wù):</p>
5、<p> 以目前生活中正在使用的出租車計價器為原型進行設(shè)計,要求具有按時間和里程綜合計算車價的功能,能顯示時間、里程、單價、總車價等相關(guān)信息。</p><p> 完成出租車計價器的設(shè)計和調(diào)試。 </p><p> 撰寫課程設(shè)計說明書,說明書使用A4打印紙計算機打印,用Protel等繪圖軟件繪制電子線路圖紙。</p><p><b>
6、 時間安排:</b></p><p> 第1周 下達課程設(shè)計任務(wù)書和日程安排,調(diào)研和查找資料,明確設(shè)計任務(wù)要求;</p><p> 第2周 完成方案論證、總體設(shè)計和硬件設(shè)計;</p><p> 第3周 完成軟件設(shè)計和程序的編寫; </p><p> 第4周 調(diào)試硬件系統(tǒng)和軟件程序,完成整個系統(tǒng)的設(shè)計和調(diào)試;</p&
7、gt;<p> 結(jié)果分析整理、撰寫課程設(shè)計報告,驗收和答辯。</p><p> 指導教師簽名: 2011 年 11 月 28 日</p><p> 系主任(或責任教師)簽名: 2011 年 11 月 28 日</p><p> 基于51單片機原理出租車計價器的設(shè)計</p>
8、<p><b> 摘要 </b></p><p> 現(xiàn)在各大中城市出租車行業(yè)都已普及自動計價器,所以計價器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及,但隨著城市建設(shè)日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展,計價器的普及也是毫無疑問的,所以未來汽車計價器的市場還是十分有潛力的。</p><p> 本設(shè)計以 89S51 單片機為中心,利用信號發(fā)生器
9、模擬代替霍爾傳感器測距,實現(xiàn)對出租車計價統(tǒng)計,輸出采用1602液晶顯示屏。本電路設(shè)計的計價器不但能實現(xiàn)基本的計價,而且還能根據(jù)里程或手動來調(diào)節(jié)單價。通過單片機上的鍵盤上的按鍵來執(zhí)行開始、暫停、復位等功能。步驟如下:首先,程序開始做一些必要的初始化工作,等待鍵盤輸入。然后,啟動鍵S1按下后單片機開始計數(shù)傳感器傳來的計數(shù)脈沖,1602液晶顯示器顯示路程和總費用。最后,當需要停止是可按相應(yīng)的鍵S4對路程計數(shù)器進行停止。而且還可以按下S2進行等
10、待計時收費和按下S3鍵進行起步價的調(diào)整。</p><p> 關(guān)鍵詞:89S51單片機 1602液晶顯示屏 計價器</p><p><b> 目錄</b></p><p><b> 前 言1</b></p><p> 第一章 出租車計價系統(tǒng)的設(shè)計要求與設(shè)計方案2</p&g
11、t;<p> 1.1出租車計價器設(shè)計要求2</p><p> 1.2系統(tǒng)主要功能2</p><p> 1.3方案論證與比較2</p><p> 第二章 出租車計價系統(tǒng)的硬件設(shè)計4</p><p> 2.1 振蕩電路4</p><p> 2.2 復位電路設(shè)計4</
12、p><p> 2.3 鍵盤接口電路4</p><p> 2.4 顯示電路5</p><p> 2.5 路程測量部分5</p><p> 2.6 單片機各引腳功能說明6</p><p> 2.7 1602液晶的簡介7</p><p> 第三章 出租車計價系統(tǒng)
13、的軟件設(shè)計10</p><p> 3.1系統(tǒng)主程序10</p><p> 3.2里程計數(shù)子程序10</p><p> 3.3等待計時子程序11</p><p> 3.4單價設(shè)置子程序11</p><p> 第四章 設(shè)計體會與小結(jié)12</p><p><b&g
14、t; 參考文獻13</b></p><p><b> 附 錄14</b></p><p><b> 源程序14</b></p><p><b> 硬件電路圖19</b></p><p><b> 前 言</b></p
15、><p> 單片機課程設(shè)計是單片機技術(shù)學習中非常重要的一個環(huán)節(jié),是將理論知識和實踐能力相統(tǒng)一的一個環(huán)節(jié),是真正鍛煉學生能力的一個環(huán)節(jié)。出租車能保證乘客快速,輕松的到達目的地。 這些優(yōu)點受到人們的歡迎。</p><p> 隨著出租車行業(yè)的發(fā)展,出租車已經(jīng)是城市交通的重要組成部分,從加強行業(yè)管理以及減少司機與乘客的糾紛出發(fā),具有良好性能的計價器對出租車司機和乘客來說都是很必要的。而采用模擬電路
16、和數(shù)字電路設(shè)計的計價器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試。而采用單片機進行的設(shè)計,相對來說功能強大,用較少的硬件和適當?shù)能浖嗷ヅ浜峡梢院苋菀椎貙崿F(xiàn)設(shè)計要求,且靈活性強,可以通過軟件編程來完成更多的附加功能。本設(shè)計采用AT89C52單片機,輔以按鍵,實現(xiàn)對出租車的多功能的計價設(shè)計,輸出采用1062液晶顯示屏。本電路設(shè)計的計價器不但能實現(xiàn)基本的計價,而且還能根據(jù)里程或手動來調(diào)節(jié)單價。</p><p&
17、gt; 要將出租車計價系統(tǒng)產(chǎn)品化,應(yīng)該根據(jù)客戶不同的需求進行不同的設(shè)計,應(yīng)該在程序中增加一些可以人為改變的參數(shù),以便客戶根據(jù)不同的需要隨時調(diào)節(jié)單價以及計價方式。因此,研究出租車計價器及擴大其應(yīng)用,有著非常現(xiàn)實的意義。</p><p> 第一章 出租車計價系統(tǒng)的設(shè)計要求與設(shè)計方案</p><p> 出租車計價器設(shè)計要求</p><p> 設(shè)計一個出租車自動計
18、費器,計費包括起步價、行車里程計費、等待時間計費三部分,用1602液晶 顯示總金額,運行時間,暫停時間,最大值為999元,起步價為6元,3Km之內(nèi)起步價計費,超過3Km,每一公里增加1元(即1KM增加1元),等待時間單價為每分鐘1元,用液晶顯示總里程,同時用液晶顯示等待時間。</p><p><b> 計費功能</b></p><p> 費用的計算是按行駛里程收費
19、。設(shè)起步價為6元。</p><p> 1、當里程<3km時,按起價計算費用</p><p> 2、當里程>3km時,每公里按1元計費</p><p> 3、等待累計時間>1min時,按1元/min計費</p><p> 4、S1為啟動按鈕、S2等待按鈕、S3調(diào)整計費按鈕、S4停止按鈕</p><p
20、><b> ?、凇@示功能</b></p><p> 1、顯示行駛里程:用三位數(shù)字顯示,顯示方式為“XX.X”,單位為km。計程范圍0-99.9km,精確到0.1km。</p><p> 2、顯示等候時間:用兩位數(shù)字顯示,顯示方式為“XX”,單位為min。計時范圍0-59min,精確到1min。</p><p> 3、顯示總費用:用
21、三位數(shù)字顯示,顯示方式為“XXX”,單位為元。計價范圍0-999元,精確到1元。</p><p><b> 系統(tǒng)主要功能</b></p><p> 本出租車自動計費,上電后顯示最初的起步價,里程計費單價,等待時間計費單價,通過按鍵可以調(diào)節(jié)起步價,里程計費單價。同時具有運行,暫停,停止等狀態(tài),可以顯示暫停的時間,具有累加功能,暫停和運行時間在暫停和運行前一次的狀態(tài)上
22、計時。出租車停止后能夠顯示行駛的總費用。</p><p><b> 方案論證與比較</b></p><p> 方案一:采用數(shù)字電子技術(shù),利用555定時芯片構(gòu)成多諧振蕩器,或采用外圍的晶振電路作為時鐘脈沖信號,采用計數(shù)芯片對脈沖盡心脈沖的計數(shù)和分頻,最后通過譯碼電路對數(shù)據(jù)進行譯碼,將譯碼所得的數(shù)據(jù)送給數(shù)碼管顯示,一下是該方案的流程框圖,方案一如圖1-1所示:<
23、/p><p><b> 圖1-1方案一</b></p><p> 案二:采用EDA技術(shù),根據(jù)層次化設(shè)計理論,該設(shè)計問題自頂向下可分為分頻模塊,控制模塊 計量模塊、譯碼和動態(tài)掃描顯示模塊,其系統(tǒng)框圖如圖1-2所示:</p><p><b> 圖1-2方案二</b></p><p> 方案三:采用M
24、CU技術(shù),通過單片機作為主控器,利用1602字符液晶作為顯示電路,采用外部晶振作為時鐘脈沖,通過按鍵可以方便調(diào)節(jié),以下是方案三的系統(tǒng)流程圖,本方案主要是必須對于數(shù)字電路比較熟悉,成本又不高。方案圖如圖1-3所示:</p><p><b> 圖1-3方案三</b></p><p> 方案總結(jié):通過各個方案的比較,本次采用方案三,不但控制簡單,而且成本低廉,設(shè)計電路簡
25、單。</p><p> 第二章 出租車計價系統(tǒng)的硬件設(shè)計</p><p><b> 2.1振蕩電路</b></p><p> 單片機內(nèi)部有一個高增益、反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容(電容和一般取33pF)。這樣就構(gòu)成一個穩(wěn)定的自激振蕩器。
26、 振蕩電路脈沖經(jīng)過二分頻后作為系統(tǒng)的時鐘信號,再在二分頻的基礎(chǔ)上三分頻產(chǎn)生ALE信號,此時得到的信號時機器周期信號。振蕩電路如圖2-1所示:</p><p><b> 圖2-1振蕩電路</b></p><p><b> 2.2復位電路設(shè)計</b></p>
27、<p> 復位操作有兩種基本形式:一種是上電復位,另一種是按鍵復位。按鍵復位具有上電復位功能外,若要復位,只要按圖中的RESET鍵,電源VCC經(jīng)電阻R1、R2分壓,在RESET端產(chǎn)生一個復位高電平。上電復位電路要求接通電源后,通過外部電容充電來實現(xiàn)單片機自動復位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RERST引腳的高電平將逐漸下降。RERST引腳的高電平只要能保持足夠的時間(2個機器周期),單片機就可以進行
28、復位操作。按鍵復位電路圖如圖2-2所示。</p><p> 圖2-2 AT89C51引腳配置</p><p><b> 2.3鍵盤接口電路</b></p><p> 獨立式鍵盤:獨立式鍵盤中,每個按鍵占用一根I/O口線,每個按鍵電路相對獨立。I/O口通過按鍵與地相連,I/O口有上拉電阻,無鍵按下時,引腳端為高電平,有鍵按下時,引腳電平被拉
29、低。I/O口內(nèi)部有上拉電阻時,外部可不接上拉電阻。鍵盤接口電路如圖2-3所示:</p><p> 圖2-3鍵盤接口電路</p><p><b> 2.4顯示電路</b></p><p> 對于現(xiàn)實電路我們可以采用數(shù)碼管,也可以采用液晶顯示,液晶又分字符型和點陣型,我們使用的液晶是字符型液晶,并且?guī)ё址麕斓?,不需要查找代碼。英文字符就可。液
30、晶電路使用時,如果發(fā)現(xiàn)液晶不亮可以調(diào)節(jié)連接液晶的點位器,改變液晶的亮度。顯示電路如圖2-4所示:</p><p> 圖2-4 數(shù)碼管封裝圖及數(shù)據(jù)線與數(shù)碼管管腳關(guān)系</p><p><b> 2.5路程測量部分</b></p><p> 出租車中需要一個能準確獲得車輪轉(zhuǎn)動即路量信號的裝置,以得到標準的脈沖信號送入單片機的定時/ 計數(shù)器T1
31、即P3. 5 引腳,利用單片機的T1 的計數(shù)功能完成100次的計數(shù)后產(chǎn)生一中斷來完成路程的測量。(設(shè)車輪周長為1 m ,則霍爾傳感器每產(chǎn)生100 個脈沖便表示車已行程0. 1 km ,根據(jù)際情況在程序中進行設(shè)置) 。汽車聯(lián)軸器按圓周間隔嵌入磁鋼,用霍傳感器集成芯片A44E 測并輸出脈沖,其工作原理如圖4 所示,霍爾傳感器集成芯片A44E 有信號轉(zhuǎn)換、電壓放大、等功能,為增加其抗干擾的能力,經(jīng)過74L S14 對信號整形后再通過光偶送入P
32、3. 5 引腳。</p><p> 圖2-5路程測量電路</p><p> 2.6單片機各引腳功能說明</p><p> AT89S52電路圖如圖2-6所示: </p><p> VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門流。當P1口的管腳第一
33、次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行。校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p> 圖2-6 AT89S52</p><p> P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。 </
34、p><p> P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉
35、低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p> P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入
36、“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89S52的一些特殊功能口,P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p> RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。</p><p> ALE/PROG:當訪問外部存儲器時,地址鎖存允許的
37、輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位
38、無效。</p><p> /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。</p><p> /EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電
39、平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p> XTAL2:來自反向振蕩器的輸出。</p><p> 2.7 1602液晶的簡介</p><p> 字符型液晶1602主要技術(shù)參數(shù)如表2-1所示:
40、</p><p> 表2-1 字符型液晶1602主要技術(shù)參數(shù)</p><p> 接口信號說明如表2-2所示:</p><p> 表2-2 1602接口信號說明</p><p> 控制器接口說明(HD44780及兼容芯片)</p><p><b> 1、 基本操作時序</b></p&
41、gt;<p> a 讀狀態(tài):輸入:Rs=L, Rw=H, E=H 輸出:D0—D7=狀態(tài)字</p><p> b 寫指令:輸入:Rs=L, Rw=L, D0—D7=指令碼 輸出:無</p><p><b> E=高脈沖</b></p><p> C 讀數(shù)據(jù):輸入:Rs=H, Rw=L, E=H
42、 輸出:D0—D7=數(shù)據(jù)</p><p> d 寫數(shù)據(jù):輸入:Rs=H, Rw=L, D0—D7=數(shù)據(jù) 輸出:無</p><p><b> E=高脈沖</b></p><p> 狀態(tài)字說明如表2-3所示:</p><p> 表2-3狀態(tài)字說明(a)</p><p&
43、gt; 表2-4 狀態(tài)字說明(b)</p><p> 注:對控制器進行讀寫操作之前,都必須進行讀寫檢測,確保STA7為0</p><p><b> RAM地址映射圖</b></p><p> 控制器內(nèi)部帶有80*8位的RAM緩沖區(qū),對應(yīng)關(guān)系如下圖2-5所示:</p><p> 表2-5 RAM地址映射圖LCD1
44、6字*2行</p><p> 顯示模式設(shè)置如表2-6所示:</p><p> 表2-6 顯示模式設(shè)置</p><p> 表2-7 顯示開關(guān)及光標設(shè)置數(shù)據(jù)控制</p><p> 控制器內(nèi)部沒有一個數(shù)據(jù)地址指針,用戶可通過它們來訪問內(nèi)部的全部80字節(jié)RAM。</p><p> 第三章 出租車計價系統(tǒng)的軟件設(shè)計&
45、lt;/p><p><b> 系統(tǒng)主程序</b></p><p> 在主程序模塊中,需要完成對各參量和接口的初始化、出租車起價和單價的初始化等工作。另外,在主程序模塊中還需要設(shè)置修改單價的程序。</p><p> 然后將總金額、里程和單價送數(shù)碼管顯示出來。程序流程如圖所示。</p><p><b> 里程計
46、數(shù)子程序</b></p><p> 當汽車運行起來時,就啟動計價,根據(jù)里程寄存器中的內(nèi)容計算和判斷行駛里程是否已超過起步價公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價數(shù)和起步價數(shù)來計算出當前的總金額,并將結(jié)果輸出在顯示屏上。</p><p><b> 等待計時子程序</b></p><p> 中途等待時,產(chǎn)生計時,當時間超過等
47、待設(shè)定值時,開始進行計價,并把等待價格加到總金額里。</p><p><b> 單價設(shè)置子程序</b></p><p> 設(shè)置單價時,按下S3鍵,此時按下S2起步價加一元,按下S4起步價減一元。按下S1鍵程序跳回等待運行階段。</p><p> 第四章 設(shè)計體會與小結(jié) </p><p> 經(jīng)過這些天有關(guān)于出租車
48、計價器的課程設(shè)計,使我對單片機的應(yīng)用有了更深的了解。在課程設(shè)計的過程中,還是碰到了許多的問題。比如,對于數(shù)碼管動態(tài)掃描顯示、數(shù)碼管的閃爍和鍵盤的延時防抖的綜合編程不能較好地解決;對于一些相關(guān)的應(yīng)用軟件沒能熟練掌握。通過這幾天晚上的苦想和反復調(diào)試,最終還是把問題解決了。</p><p> 通過這次課程設(shè)計,我最大的收獲就是自己的動手能力和獨立解決問題的能力得到了很大的提高,也充分體會到了自己設(shè)計東西的樂趣、學會查
49、閱資料和對別人的東西融會變通的重要性,也明白了很多知識光靠趴在書本上學是學不到其中的精髓的,必須親自去試著實踐,親自去經(jīng)歷才能對它們真正的掌握。</p><p> 最大的收獲是更清晰了如何有條理的編程。第一個就是流程圖,原來不以為然的事現(xiàn)在覺得非常的有必要。第二就是編程順序,要寫一個功能很復雜的程序首先寫那些自己可以很快完成的較簡單的內(nèi)容,比如調(diào)單價時的閃爍,那么就可以開始只寫調(diào)一位單價,然后再加入程序可以調(diào)兩
50、位單價,再然后加入閃爍功能,這樣既可以使編程變得更有條理,而且對心態(tài)也是很有幫助的。一步一步的完成相應(yīng)的要求會使自己的心情倍感舒爽而不是一直未能達到要求時的迷茫。</p><p> 凡事都要自己去動下手,去實踐一下,遇到困難,永遠不要沮喪氣餒。在動手的過程中,不僅能增強實踐能力,而且在理論上可以有更深的認識;這次設(shè)計給了我極大的鼓舞和信心,相信在以后的學習中可以通過不斷的摸索和實踐來提高其他方面的知識。<
51、/p><p><b> 參考文獻</b></p><p> 李群芳、張士軍、黃建.《單片微型計算機與接口技術(shù)》(第三版).電子工業(yè)出版社,2008.</p><p> 張鑫、華臻、陳書謙.《單片機原理及應(yīng)用》[M].電子工業(yè)出版社,2005. </p><p> 丁元杰、吳大偉.《單片微機實題集與實驗指導書》[M].
52、機械工業(yè)出版社, 2004.</p><p> 李群芳,肖看.單片機原理接口與應(yīng)用.北京:清華大學出版社,2005.</p><p> 張迎新.單片微型計算機原理、應(yīng)用及接口技術(shù).北京:國防工業(yè)出版社,1999.</p><p> 高峰.單片微型應(yīng)用系統(tǒng)設(shè)計及實用技術(shù).北京:機械工業(yè)出版社,2004.</p><p><b>
53、 附 錄 </b></p><p><b> 源程序</b></p><p> ORG 0000H</p><p> AJMP MAIN</p><p> ORG 000BH</p><p> AJMP IP0</p><p>
54、 ORG 0030H</p><p> CMD EQU 20H</p><p> DAT EQU 21H</p><p> BIT_RSEQU P2.0</p><p> BIT_RW EQU P2.1</p><p> BIT_E EQU
55、 P2.2</p><p> MAIN: MOV R0,#30H ;初始化 </p><p> MOV R2,#1EH</p><p> MOV R3,#00H</p><p> MOV R4,#00H</p><p> MOV R1,#06H</p>
56、<p> LCALL SHOW</p><p> MAIN1: JNB P1.0,RUN ;掃描按鍵</p><p> JNB P1.2,SEZHI</p><p> AJMP MAIN1</p><p> RUN: LCALL SHOW ;行駛里程計數(shù)</p>&l
57、t;p> MOV TMOD,#60H</p><p> MOV TH1,#64H</p><p> MOV TL1,#64H</p><p> SETB TR1</p><p> AGAI: JNB P1.1,WAIT</p><p> JNB P1.3,STOP
58、</p><p> JBC TF1,LU1</p><p> SJMP AGAI</p><p> LU1: LCALL LU2</p><p> DJNZ R2,RUN</p><p> LCALL LU3</p><p> AJMP RUN</p
59、><p> LU2: INC R3</p><p><b> RET</b></p><p> LU3: INC R1</p><p> MOV R2,#0AH</p><p><b> RET</b></p><p&g
60、t; WAIT: MOV TMOD,#01H ;等待時間計數(shù)</p><p> MOV TH0,#3CH</p><p> MOV TL0,#0B0H</p><p> SETB ET0</p><p><b> SETB EA</b></p><p>
61、 MOV R5,#28H</p><p> MOV R6,#1EH</p><p> SETB TR0</p><p><b> SJMP $</b></p><p> IP0: DJNZ R5,RET0</p><p> MOV R5,#28H&l
62、t;/p><p> DJNZ R6,IP0</p><p> MOV R6,#1EH</p><p><b> INC R4</b></p><p><b> INC R1</b></p><p> LCALL SHOW</p>&
63、lt;p> RET0: MOV TH0,#3CH</p><p> MOV TL0,#0B0H</p><p> JNB P1.0,RUN</p><p> SETB TR0</p><p><b> RETI</b></p><p> SEZHI:
64、JNB P1.1,SEZHI1 ;單價設(shè)置</p><p> JNB P1.3,SEZHI2</p><p> JNB P1.0,RUN</p><p> AJMP SEZHI</p><p> SEZHI1: LCALL DELAY1</p><p> JB P1.1,SEZ
65、HI</p><p><b> INC R1</b></p><p> LCALL SHOW</p><p> AJMP SEZHI</p><p> SEZHI2: LCALL DELAY1</p><p> JB P1.3,SEZHI</p>&l
66、t;p><b> DEC R1</b></p><p> LCALL SHOW</p><p> AJMP SEZHI</p><p> STOP: LJMP MAIN</p><p> SHOW: MOV A,R3 ;顯示</p><p>
67、 MOV B,#64H</p><p><b> DIV AB</b></p><p> MOV @R0,A ;里程顯示</p><p><b> INC R0</b></p><p> MOV A,#0AH</p><p> X
68、CH A,B</p><p><b> DIV AB</b></p><p> MOV @R0,A</p><p><b> INC R0</b></p><p> MOV @R0,#0AH</p><p><b> INC
69、 R0</b></p><p> MOV A,B</p><p> MOV @R0,A</p><p><b> INC R0</b></p><p> MOV @R0,#0BH</p><p><b> INC R0</b&
70、gt;</p><p> MOV @R0,#01H ;里程單價顯示</p><p><b> INC R0</b></p><p> MOV @R0,#0BH</p><p><b> INC R0</b></p><p> MOV
71、 A,R4 ;等待時長顯示</p><p> MOV B,#0AH</p><p><b> DIV AB</b></p><p> MOV @R0,A</p><p><b> INC R0</b></p><p> MOV
72、 A,B</p><p> MOV @R0,A</p><p><b> INC R0</b></p><p> MOV @R0,#0BH</p><p><b> INC R0</b></p><p> MOV @R0,#01H
73、 ;等待1min單價顯示</p><p><b> INC R0</b></p><p> MOV @R0,#0BH</p><p><b> INC R0</b></p><p> MOV A,R1 ;總價顯示</p><p>
74、 MOV B,#64H</p><p><b> DIV AB</b></p><p> MOV @R0,A</p><p><b> INC R0</b></p><p> MOV A,#0AH</p><p> XCH A,
75、B</p><p><b> DIV AB</b></p><p> MOV @R0,A</p><p><b> INC R0</b></p><p> MOV A,B</p><p> MOV @R0,A</p>&l
76、t;p> MOV R0,#30H</p><p> LCALL MAIN2</p><p><b> RET</b></p><p> MAIN2: LCALL INI ;液晶顯示</p><p> MOV CMD,#80H</p><p> LC
77、ALL WR_CMD</p><p> MOV DPTR,#TAB</p><p> MOV R5,#15 </p><p> WRIN:MOV A,@R0</p><p> MOVC A,@A+DPTR</p><p> MOV DAT,A</p&g
78、t;<p> LCALL WR_DATA</p><p> LCALL DELAY</p><p> INC R0</p><p> DJNZ R5,WRIN</p><p> MOV CMD,#80H</p><p> LCALL WR_CMD</p&
79、gt;<p> LCALL RD_DATA</p><p> MOV CMD,#0C0H</p><p> LCALL WR_CMD</p><p> LCALL WR_DATA</p><p> MOV R0,#30H</p><p><b> RET&
80、lt;/b></p><p> INI: MOV CMD,#38H ;液晶屏初始化</p><p> LCALL WR_CMD</p><p> MOV CMD,#38H</p><p> LCALL WR_CMD</p><p> MOV CMD,#38H<
81、;/p><p> LCALL WR_CMD</p><p> MOV CMD,#38H</p><p> LCALL WR_CMD</p><p> MOV CMD,#01H</p><p> LCALL WR_CMD</p><p> MOV CMD
82、,#06H</p><p> LCALL WR_CMD</p><p> MOV CMD,#0FH</p><p> LCALL WR_CMD</p><p><b> RET</b></p><p> WR_CMD: PUSH ACC ;液晶屏寫指令程序
83、</p><p> BUSY1: SETB BIT_RW</p><p> CLR BIT_RS</p><p> SETB BIT_E</p><p> LCALL DELAY</p><p> MOV P0,#0FFH</p><p> MOV
84、 A,P0</p><p> CLR BIT_E</p><p> JB ACC.7,BUSY1</p><p> CLR BIT_RW</p><p> CLR BIT_RS</p><p> MOV A,CMD</p><p>
85、MOV P0,A</p><p> SETB BIT_E</p><p> LCALL DELAY</p><p> CLR BIT_E</p><p> POP ACC</p><p><b> RET</b></p><p>
86、 WR_DATA: PUSH ACC ;液晶屏寫數(shù)據(jù)程序</p><p> BUSY2: SETB BIT_RW</p><p> CLR BIT_RS</p><p> SETB BIT_E</p><p> LCALL DELAY</p><p> MOV
87、 P0,#0FFH</p><p> MOV A,P0</p><p> CLR BIT_E</p><p> JB ACC.7,BUSY2</p><p> CLR BIT_RW</p><p> SETB BIT_RS</p><p>
88、MOV A,DAT</p><p> MOV P0,A</p><p> SETB BIT_E</p><p> LCALL DELAY</p><p> CLR BIT_E</p><p> POP ACC</p><p><b>
89、 RET</b></p><p> RD_DATA: PUSH ACC ;液晶屏讀顯示數(shù)據(jù)程序</p><p> SETB BIT_RW</p><p> CLR BIT_RS</p><p> SETB BIT_E</p><p> LCALL DELAY
90、</p><p> MOV P0,#0FFH</p><p> MOV A,P0</p><p> MOV DAT,A</p><p> CLR BIT_E</p><p> POP ACC</p><p><b> RET</
91、b></p><p> DELAY: MOV R7,#0 ;延時程序</p><p> LOP: NOP</p><p><b> NOP</b></p><p> DJNZ R7,LOP</p><p><b> RET</b&
92、gt;</p><p> DELAY1: MOV R5,#200 ;延時去抖動程序</p><p> MOV R6,#200</p><p> LOP1: DJNZ R5,LOP1</p><p> LOP2:DJNZ R6,LOP1</p><p><b>
93、; RET</b></p><p> TAB: DB 30H,31H,32H,33H,34H,35H ;0,1,2,3,4,5</p><p> DB 36H,37H,38H,39H,2EH,20H ;6,7,8,9,小數(shù)點,空格</p><p><b> END</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計--出租車計價器
- 單片機課程設(shè)計--出租車計價器
- 單片機課程設(shè)計---出租車計價器
- 單片機課程設(shè)計--出租車計價器
- 單片機課程設(shè)計出租車計價器
- 單片機課程設(shè)計----出租車計價器
- 單片機課程設(shè)計-出租車計價器
- 單片機課程設(shè)計--出租車計價器
- 基于51單片機的出租車計價器設(shè)計
- 單片機課程設(shè)計--出租車計價器設(shè)計
- 單片機課程設(shè)計---出租車計價器設(shè)計
- 單片機課程設(shè)計論文---出租車計價器
- 課程設(shè)計--基于單片機的出租車計價器的設(shè)計
- 基于單片機的出租車計價器的設(shè)計(課程設(shè)計)
- 單片機原理及應(yīng)用課程設(shè)計--基于51單片機的出租車計價器程序
- 基于單片機的出租車計價器設(shè)計
- 基于單片機的出租車計價器
- 基于at89s51單片機的出租車計價器設(shè)計
- 基于51單片機的出租車計價器畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計(論文)-單片機課程設(shè)計出租車計價器
評論
0/150
提交評論