

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢 業(yè) 設(shè) 計</b></p><p> 題 目 基于單片機的出租車計價器 </p><p> 畢 業(yè) 設(shè) 計 任 務(wù) 書</p><p> 畢 業(yè) 設(shè) 計(論 文)開 題 報 告</p><p> 畢 業(yè) 設(shè) 計(論 文)開 題 報 告</p&
2、gt;<p><b> 摘 要</b></p><p> 隨著城市改革開放的進一步深化,出租車行業(yè)迅速發(fā)展,出租車計價器的市場需求量也大大增加,計價器作為出租車的一個重要組成部分,計價器的普及必將大勢所趨,預計未來計價器市場將很有發(fā)展前景。與此同時計價器作為出租汽車的經(jīng)營者和乘坐出租汽車的消費者之間用于公平貿(mào)易結(jié)算的工具,計價器計價準確與否,直接關(guān)系到經(jīng)營者和消費者的經(jīng)濟利
3、益。因此怎樣設(shè)計出一種既能準確計價又能方便司機的計價器尤為重要。</p><p> 本課題是出租車計價器系統(tǒng)的設(shè)計。以出租車計價器的實用性和節(jié)約成本為起點出發(fā),以AT89S52 單片機為中心、通過霍爾傳感器對脈沖的計數(shù)實現(xiàn)對里程和總金額的統(tǒng)計,人機交互界面輸出采用LCD1602液晶屏。獨立按鍵進行復位、清零、白天黑夜模式選擇功能的控制,本電路設(shè)計的計價器不但能實現(xiàn)基本的計價,掉電時進行數(shù)據(jù)存儲,而且還能根據(jù)白天
4、、黑夜、中途等待來調(diào)節(jié)單價,進行里程、單價、總車價相關(guān)信息的顯示。</p><p> 關(guān)鍵詞:出租車計價器 AT89S52 霍爾傳感器 軟硬件設(shè)計</p><p> Title Microcontroller-based taxi meter </p><p><b> Abstract:
5、</b></p><p> With the further deepening of reform and opening up of the city, the taxi industry rapid development, the taximeter market demand also increased significantly, as an important part of the
6、 taxi meter, the meter's popularity is bound to the trend of the times, it is expected that the future meterthe market is promising. At the same time the meter as taxi operators and taxi consumer tools for fair trade
7、 settlement, the accuracy of the meter denominated, directly related to the economic interests of</p><p> The issue is the design of the taxi meter system. Taxi meter practicality and cost savings as the st
8、arting point, AT89S52 microcontroller as pulse count on the mileage and the total amount of statistics, interactive interface output LCD1602 LCD. Independent button reset, clear, day and night control mode selection func
9、tion, the meter circuit design not only to achieve the basic pricing, but also according to the day and night, half-way wait to adjust the unit price, mileage, price, gross vehicle</p><p> Keywords: taxi me
10、ter AT89S52 Hall sensor hardware and software designed</p><p><b> 目 錄</b></p><p> 1 引言 …………………………………………………………………………………………1</p><p> 2 出租車計價器的方案論證…………………………………………
11、………………………2</p><p> 2.1 出租車計價器的基本功能…………………………………………………………………2</p><p> 2.2 出租車計價器的主要設(shè)計參數(shù)……………………………………………………………2</p><p> 2.3 方案論證與比較……………………………………………………………………………3</p><p&
12、gt; 3 系統(tǒng)硬件設(shè)計………………………………………………………………………………4</p><p> 3.2 單片機的介紹………………………………………………………………………………4</p><p> 3.3 硬件電路組成………………………………………………………………………………7</p><p> 3.3.1 復位電路……………………………………
13、……………………………………………8</p><p> 3.3.2 晶振震蕩電路……………………………………………………………………………9</p><p> 3.3.3 數(shù)據(jù)采集模塊介紹………………………………………………………………………9</p><p> 3.3.4 掉電存儲模塊介紹 ……………………………………………………………………10</p
14、><p> 3.3.5 按鍵模塊介紹 …………………………………………………………………………11</p><p> 4.系統(tǒng)軟件設(shè)計 ………………………………………………………………………………13</p><p> 4.1主程序模塊 ………………………………………………………………………………13</p><p> 4.2 中斷程序流
15、程圖 …………………………………………………………………………13</p><p> 5.系統(tǒng)調(diào)試 ……………………………………………………………………………………16</p><p> 5.1 軟件測試 …………………………………………………………………………………18</p><p> 5.1.1編程工具—C51語言 …………………………………………………
16、……………….18</p><p> 5.1.2 單片機仿真軟件在線調(diào)試—PROTEUS ………………………………………………18</p><p> 5.2 硬件調(diào)試 …………………………………………………………………………………19</p><p> 結(jié) 論 …………………………………………………………………………………………20</p>&
17、lt;p> 致 謝 …………………………………………………………………………………………21</p><p> 參 考 文 獻……………………………………………………………………………………22</p><p> 附 錄……………………………………………………………………………………………23</p><p><b> 1 引言</
18、b></p><p> 隨著生活水平的提高,人們已不再滿足于衣食住的享受,出行的舒適已受到越來越多人的關(guān)注。于是,出租車行業(yè)以快捷便利的服務(wù)給人們帶來了出行的享受。但是,一直以來存在著的買賣糾紛困擾著行業(yè)的發(fā)展。而在出租車行業(yè)中解決這一矛盾的最好方法就是改良計價器。用更加精良的計價器來為乘客提供更加方便快捷的服務(wù)。 我國在70年代開始出現(xiàn)出租車,但那時的計費系統(tǒng)大都是國外進口不但不夠準確,價格還十
19、分昂貴。隨著改革開放日益深入,出租車行業(yè)的發(fā)展勢頭已十分突出,國內(nèi)各機械廠家紛紛推出國產(chǎn)計價器。出租車計價器的功能從剛開始的只顯示路程,到能夠自主計費,以及現(xiàn)在的能夠打發(fā)票和語音提示、按時間自主變動單價等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個城市的文明程度。 鑒于目前有關(guān)出租車計費又出臺了新的政策,在原有政策基礎(chǔ)上新增了等待費用,為了與時俱進,設(shè)計一個計費功能較全面的系統(tǒng)也已是迫在眉睫。 凡乘
20、過出租車的人都知道,只要汽車開動,隨著行駛里程的增加,就會看到汽車前面的計價器里程數(shù)字顯示的讀數(shù)從零逐漸增大,而當行駛到某一值時計費數(shù)字顯示開始從起步價增加。當出租車到達某地需</p><p> 2 出租車計價器的方案論證</p><p> 2.1 出租車計價器的基本功能</p><p> 本課題所設(shè)計的出租車計價器的主要功能有:數(shù)據(jù)的復位、白天/晚上轉(zhuǎn)換、
21、計時計價、路程和總金額的統(tǒng)計,掉電數(shù)據(jù)儲存。當按下按鍵后,啟動計價器,開始采集脈沖信號,然后傳送到單片機,單片機進行處理,計算出行駛路程以及總金額,將計算結(jié)果通過液晶顯示屏顯示,本電路設(shè)計的計價器不但能實現(xiàn)基本的計價,還能根據(jù)白天、黑夜、中途等待來調(diào)節(jié)單價,并且在計價器掉電后能將數(shù)據(jù)存儲,不影響后續(xù)計費功能。</p><p> 2.2 出租車計價器的主要設(shè)計參數(shù)</p><p> 本課
22、題對出租車計價器的設(shè)計要求如下:</p><p> 設(shè)計一個出租車自動計價器,計價包括起步價、行車里程計費、等待時間計費三部分,用1602液晶顯示總金額,運行時間,最大值為999元,起步價為6元,等待時間單價為超過等待時間30秒后每分鐘1元,用液晶顯示總里程、等待時間和總金額。</p><p><b> 1、計費功能</b></p><p>
23、; 費用的計算是按行駛里程收費。設(shè)白天起步價為6元,晚上起步價為7元。</p><p> 等待時間超過30秒后按1元/min計費,未超過30秒時清零等待時間。</p><p><b> 2、顯示功能</b></p><p> ?。?)顯示單價:用兩位數(shù)字顯示,顯示方式“XX”,單位為1元/km.</p><p>
24、?。?)顯示行駛里程:用兩位數(shù)字顯示,顯示方式為“XX”,單位為km。計程范圍0-99km,里程精確到1km。</p><p> ?。?)顯示總費用:用三位數(shù)字顯示,顯示方式為“XXX”,單位為元。計價范圍0-999元,精確到1元。</p><p> 2.3方案論證與比較</p><p> 方案一: 采用數(shù)字電子技術(shù),利用555定時芯片構(gòu)成多諧振蕩器,或采用外圍
25、的晶振電路作為時鐘脈沖信號,計數(shù)芯片對脈沖的計數(shù)和分頻,最后通過譯碼電路對數(shù)據(jù)進行譯碼,將譯碼所得的數(shù)據(jù)送給數(shù)碼管顯示。</p><p> 方案二:用FPGA(可編程門陣列)實現(xiàn):利用硬件描述語言編程,仿真調(diào)試后下載到可編程期間上(CPLD)上實現(xiàn)??梢詫τ嫵誊囌麄€過程進行判斷、處理。整個過程完全實現(xiàn)了自動化和智能化。 </p><p> 方案三:采用單片機控制。以單片機為核心,設(shè)計上
26、采用89S52單片機為主控器,利用單片機豐富的IO端口,及其控制的靈活性,實現(xiàn)基本的里程計價功能和價格選擇功能。不但能實現(xiàn)所要求的功能而且能在很大的程度上擴展功能,而且還可以方便的對系統(tǒng)進行升級。</p><p> 通過各個方案的比較,我們知道采用數(shù)字電路設(shè)計的計價器整體電路的規(guī)模較大,用到的器件多,造成故障率高,并且難調(diào)試,而采用單片機進行設(shè)計,相對來說功能強大,用較少的硬件和適當?shù)能浖嗷ヅ浜峡梢院苋菀椎膶?/p>
27、現(xiàn)設(shè)計要求,且靈活性強,有較大的活動空間,可以通過軟件編程來完成更多的附加功能,方便對系統(tǒng)進行升級和功能擴展。所以我們采用第三方案,用AT89S52單片機實現(xiàn)出租車計價的功能。</p><p> 系統(tǒng)結(jié)構(gòu)如圖2.1下:</p><p> 圖2.1 系統(tǒng)結(jié)構(gòu)圖</p><p><b> 3. 系統(tǒng)硬件設(shè)計</b></p>&l
28、t;p> 3.1 硬件設(shè)計說明</p><p> 單片機是單片微型計算機的簡稱,單片機以其卓越的性能,得到廣泛的應用,已經(jīng)深入到各個領(lǐng)域。在這次設(shè)計中,我們用到P0口和P2口,P0口為8位三態(tài)I/O口,此口為地址總線及數(shù)據(jù)總線分時復用;P2口為8位準雙向口,與地址總線高八位復用;P0口和P2口都有一定的驅(qū)動能力,P0口的驅(qū)動能力較強。 </p><p> 在數(shù)據(jù)采集部分本系統(tǒng)采
29、用霍爾傳感器A3144,</p><p> 在數(shù)據(jù)顯示部分本系統(tǒng)采用的是LCD1602這款液晶屏,由于采用LCD液晶屏顯示器功能強大,可顯示各種字體的數(shù)字、漢字、圖像,還可以自定義顯示內(nèi)容,時尚美觀,而且液晶的功耗和LED比起來要小的多。</p><p> 我們還設(shè)計了控制按鍵,能夠很好的對出租車計價器控制,如啟動/停止按鍵,清零按鍵,白天黑夜模式選擇等。</p><
30、;p> 3.2 單片機的介紹</p><p> AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52在眾
31、多嵌入式控制應用系統(tǒng)中得到廣泛應用。</p><p> AT89S52基本特性:</p><p> 8 位的 CPU, 片內(nèi)有振蕩器和時鐘電路,工作頻率為0~24MHz片內(nèi)有 256字節(jié) 數(shù)據(jù)存儲器 RAM片內(nèi)有 8K字節(jié) 程序存儲器 ROM4個8位 的并行I/O口(P0、P1、P2、P3)1個 全雙工串行通訊口3個16位 定時器/計數(shù)器(T0、T1、T2)可處理 6個中
32、斷源,兩級中斷優(yōu)先級</p><p> AT89S52的引腳如圖所示3.1: </p><p> 圖3.1 AT89S52的引腳結(jié)構(gòu) 圖3.2 AT89S52封裝圖</p><p> AT89S52各引腳功能說明:</p><p> P0 口:P0口是一個
33、8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏 輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。 當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下, P0不具有內(nèi)部上拉電阻。 在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗 時,需要外部上拉電阻。</p><p> P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,
34、p1 輸出緩沖器能驅(qū)動4 個 TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。</p><p> 此外,P1.0和P1.1分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和定時器/計數(shù)器2 的觸發(fā)輸入(P1.1/T2EX)。 在flash編程和校驗時,P1口接收低8位地址字節(jié)。</p
35、><p><b> 引腳號第二功能:</b></p><p> P1.0 T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出</p><p> P1.1 T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制)</p><p> P1.5 MOSI(在系統(tǒng)編程用)</p><p> P1
36、.6 MISO(在系統(tǒng)編程用)</p><p> P1.7 SCK(在系統(tǒng)編程用)</p><p> P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個 TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 在訪問外部程序存儲器或用
37、16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR) 時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用 8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。 在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。</p><p> P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動4 個 TT
38、L 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入 口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。 在flash編程和校驗時,P3口也接收一些控制信號。</p><p> 端口引腳 第二功能:</p><p> P3.0 RXD(串行輸入口)<
39、;/p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 INTO(外中斷0)</p><p> P3.3 INT1(外中斷1)</p><p> P3.4 TO(定時/計數(shù)器0)</p><p> P3.5 T1(定時/計數(shù)器1)</p><p> P3.6 WR(
40、外部數(shù)據(jù)存儲器寫選通)</p><p> P3.7 RD(外部數(shù)據(jù)存儲器讀選通)</p><p> 此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。</p><p> RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將是單片機復位。</p><p> ALE/PROG:當訪問外部程序存儲器或數(shù)據(jù)
41、存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此
42、外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設(shè)置ALE禁止位無效。</p><p> PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。</p><p> EA/VPP:外部訪問允許,欲使CPU僅訪問外部程序存儲
43、器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。</p><p> XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。</p><
44、p> XTAL2:振蕩器反相放大器的輸出端。</p><p> 3.3 硬件電路組成</p><p> 本系統(tǒng)硬件電路組成主要包括:復位電路、晶振震蕩電路、顯示模塊,掉電存儲電路,按鍵電路。</p><p> 整體硬件原理圖如圖3.3所示</p><p> 圖3.3 硬件電路原理圖</p><p>
45、 3.3.1 復位電路</p><p> 復位操作有兩種基本形式:一種是上電復位,另一種是按鍵復位。本系統(tǒng)采用按鍵復位(如圖3.4)。</p><p> 按鍵復位電路原理:在單片機啟動后,電容C兩端的電壓持續(xù)充電為5V,這是時候10K電阻兩端的電壓接近于0V,RESET處于低電平所以系統(tǒng)正常工作。當按鍵按下的時候,開關(guān)導通,這個時候電容兩端形成了一個回路,電容被短路,所以在按鍵按下的這
46、個過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚至更大,所以RESET引腳又接收到高電平。單片機系統(tǒng)自動復位。</p><p> 圖3.4 按鍵復位電路</p><p> 3.3.2 晶振震蕩電路</p><p> 單片機內(nèi)部有一個高增益、
47、反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容(電容一般取30pF)。這樣就構(gòu)成一個穩(wěn)定的自激振蕩器。振蕩電路脈沖經(jīng)過二分頻后作為系統(tǒng)的時鐘信號,再在二分頻的基礎(chǔ)上三分頻產(chǎn)生ALE信號,此時得到的信號是機器周期信號。晶振電路如圖3.5所示:</p><p> 圖 3.5 晶振震蕩電路</p><p> 3.3.3
48、 數(shù)據(jù)采集模塊介紹</p><p> 里程計算是通過安裝在車輪上的霍爾傳感器A44E檢測到的信號,送到單片機,經(jīng)處理計算,送給顯示單元的。其原理如圖3.6所示。</p><p> 圖3.6傳感器測距原理圖 </p><p> 一端接在P3.2口,另一端接地,車輪每轉(zhuǎn)一圈小磁鐵提供一個磁場,通過霍爾傳感器進出磁場來回高低電平的變化,就檢測并輸出信號,引起單片
49、機的中斷,每中斷一次代表汽車輪胎旋轉(zhuǎn)了一圈。本設(shè)計以165/70R14這款輪胎為準,165代表胎寬,指輪胎的名義寬度就是165mm,就是輪胎與地面接觸的那個面得寬度。/70代表扁平比,指輪胎的扁平比是70% ,扁平比可以間接反映胎壁的名義高度胎壁的名義高度計算式為:名義寬度×扁平比。所以該輪胎的胎壁名義高度為:165mm×70%=115.5mm。</p><p> 輪胎的外圓半徑為:胎壁高度
50、(115.5mm)+輪胎內(nèi)圓半徑(330.2mm/2) ;</p><p> 周長=2*3.14*半徑;所以汽車輪胎轉(zhuǎn)一圈大概行駛1.88米,輪胎旋轉(zhuǎn)圈543轉(zhuǎn)行駛一公里的路程,通過在程序中設(shè)置的里程和金額的信息,就可以在LCD顯示屏上分別顯示總金額和總里程。</p><p> 霍爾傳感器集成芯片管腳圖如圖3.7所示</p><p> 圖3.7 霍爾傳感器集成
51、芯片管腳圖</p><p> 霍爾傳感器集成芯片A44E外部引腳說明:</p><p> Vcc 外接供電電源輸入端</p><p><b> GND外接電源地</b></p><p> OUT 數(shù)字信號輸出端</p><p> 3.3.4 掉電存儲單元設(shè)計 </p>&
52、lt;p> 當計價器因為外界因素的影響而發(fā)生掉電現(xiàn)象時,應該把統(tǒng)計得到的里程,總金額,單價等數(shù)據(jù)進行保存,當恢復供電后還能夠繼續(xù)進行計價,這就是掉電保護模塊的作用??梢赃M行存儲的芯片有很多種,在這個設(shè)計中采用了AT24C08這款芯片。</p><p> AT24C08是一個2K串行CMOS EPROM,內(nèi)部有1024個8位字節(jié),CATALYST公司的先進CMOS技術(shù)實質(zhì)上減少了器件的功耗,AT24C08
53、還有一個16字節(jié)頁寫緩沖器。</p><p> 當遇到意外斷電的情況,通過程序每次都會自動從AT24C08中讀取信息,這樣就達到了對單價,路程,總費用信息的保護,避免司機和乘客因為掉電數(shù)據(jù)丟失而造成不必要的價格糾紛。</p><p> AT24C08管腳圖如圖3-6所示。</p><p> 圖3-6 AT24C08管腳圖</p><p>
54、; AT24C08管腳描述見表3-1。</p><p> 表3-1 AT24C08管腳描述</p><p> 所有引腳中只需要將SCL和SDA加到單片機的數(shù)據(jù)端,其它引腳接地就可以了。</p><p> 3.3.5 顯示模塊介紹</p><p> 顯示部分要求顯示里程、等待時間、總金額信息的顯示。</p><
55、;p> 下面是LCD1602的基本參數(shù)和各個引腳的功能,必須根據(jù)下面的參數(shù)來設(shè)計顯示電路的原理圖。</p><p> LCD1602的基本參數(shù)及各引腳功能見表3-2和3-3。</p><p> 表3-2 LCD1602主參數(shù) </p><p> 表3-3 LCD1602接口信號說明</p><p> 根據(jù)LCD1602的基
56、本工作參數(shù)和引腳接口信號的介紹,設(shè)計出顯示電路,顯示模塊如圖3.7所示。</p><p> 圖 3.7 LCD1602液晶顯示屏</p><p> 此模塊電路電源電壓為5V,由接口VCC引入,上電后可看到發(fā)光二極管被點亮。數(shù)據(jù)端8位接分別由單片機的P1 I/O口與其線連接,3個控制端口分別有P05~P06端口來控制,8位雙向數(shù)據(jù)線7~14與單片機的P1端口相連,實現(xiàn)液晶與單片機的通信。
57、液晶對比度通過1602的第三腳接可調(diào)電阻來提供可調(diào)。</p><p> 3.3.6 按鍵模塊介紹</p><p> 單片機常用的鍵盤分為獨立式鍵盤和矩陣式鍵盤。</p><p> 獨立式鍵盤特點:每個按鍵占用一條I/O線,當按鍵數(shù)量較多時,I/O口利用率不高,但程序編制簡單。適用于所需按鍵較少的場合。</p><p> 矩陣鍵盤特點:
58、電路連接復雜,但提高了I/O口利用率,軟件編程較復雜。適用于需使用大量按鍵的場合。</p><p> 由于本設(shè)計用到的按鍵較少如果使用矩陣鍵盤(如圖3.8所示),掃描時需要較長的時間,因此利用三個獨立按鍵作為系統(tǒng)開始,結(jié)束和白天黑夜模式切換的按鍵,運用比較方便。 </p><p><b> 圖3.8 獨立按鍵</b></
59、p><p><b> 4.程序設(shè)計</b></p><p><b> 4.1主程序模塊</b></p><p> 主程序軟件的任務(wù)要求包括定時器的設(shè)置、按鍵的掃描、按鍵的功能處理、脈沖的計數(shù)、路途等待超3分鐘的計時以及總金額的計算等。</p><p> 程序設(shè)計的思路:使用中斷方式對定時器的溢出
60、進行計數(shù)實現(xiàn)3分鐘的計時。主程序采用查詢外部中斷標志實現(xiàn)脈沖的計數(shù),由于每個脈沖代表 1.88m,因此,當脈沖計數(shù)超過543時,計價器按照收費標準計價。主程序在初始化變量和定時器參數(shù)設(shè)置之后,進入一個循環(huán)結(jié)構(gòu),循環(huán)掃描鍵盤、查詢脈沖的中斷、數(shù)碼管的動態(tài)掃描等功能,當脈沖的中斷標志被查詢到,若路途等待時間未超3分鐘時,要及時將路途等待時間的值清除為零。主程序的流程圖如圖 4-1 所示。</p><p><b&
61、gt; N</b></p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p><b>
62、N</b></p><p><b> Y</b></p><p> 圖 4.1 主程序流程圖</p><p><b> 以下是主函數(shù)程序</b></p><p> void main()</p><p><b> {</b><
63、/p><p> LcdInitiate();</p><p> EX0=1; //允許使用外中斷</p><p> IT0=1; //選擇負跳變來觸發(fā)外中斷</p><p> EA=1; //開總中斷</p><p>
64、 ET0=1; //定時器T0中斷允許 </p><p> TMOD=0x01; //使用定時器T0的模式1</p><p> TH0=0x4C; //定時器T0的高8位賦初值</p><p> TL0=0x00; //定時器T0的高8位賦初值</p>
65、<p> TR0=0; //啟動定時器 TR0=1時啟動計數(shù) TR0=0時停止計數(shù)</p><p><b> while(1)</b></p><p><b> {</b></p><p> key_val=scan_key(); //255</p>&l
66、t;p> if(key_val!=key_val_old)</p><p><b> {</b></p><p> key_val_old=key_val;</p><p> if(key_val!=255)</p><p> {switch(key_val)</p><p>&l
67、t;b> {</b></p><p> case 0://啟動鍵</p><p><b> TR0=1;</b></p><p><b> begin=0;</b></p><p> if(flag==0)</p><p><b> {
68、 </b></p><p> if(state_val==0)</p><p><b> {</b></p><p> cnt_cost=6;</p><p><b> }</b></p><p><b> else</b><
69、/p><p> cnt_cost=7;</p><p> flag=1; //啟動計時,TR0=1為啟動了的標志</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p&g
70、t;<p><b> flag=0;</b></p><p><b> }</b></p><p><b> break;</b></p><p> case 1://清除鍵</p><p> init_variant();//清除變量</p>
71、;<p> TR0=0; //關(guān)閉定時器</p><p><b> break;</b></p><p> case 2://白天/黑夜的切換</p><p> if(state_val==0)</p><p><b> {</b></p><p>
72、 state_val=1;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> state_val=0;</p><p><b> }</b&
73、gt;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> lcd_show();</p
74、><p><b> }</b></p><p><b> }</b></p><p> 4.2 中斷程序流程圖</p><p> 中斷服務(wù)程序主要實現(xiàn)計時功能,當啟動鍵按下之后,定時器開始工作,用一個變量對定時器溢出中斷的次數(shù)進行計數(shù),達到計時功能,該變量在每次脈沖到來時被清零,當脈沖長時間沒有
75、來,則當該變量計數(shù)超過 30 秒時,總金額按照途中等待計費標準進行計價。</p><p> 中斷子程序的流程圖如圖 3-13 所示。</p><p><b> 以下是中斷程序</b></p><p> void Time0(void) interrupt 1 using 0 </p><p><b>
76、{</b></p><p><b> T0_cnt++;</b></p><p> if(T0_cnt>40) //如果計數(shù)>3999,計時1s</p><p><b> { </b></p><p><b> T0_cnt=0;</b><
77、/p><p> if(cnt_3<180) </p><p><b> { </b></p><p><b> cnt_3++;</b></p><p><b> }</b></p><p> else //超過30秒,途中等待計價&
78、lt;/p><p><b> {</b></p><p><b> cnt_3=0;</b></p><p> cnt_cost=cnt_cost+cost_val[2];}</p><p> } </p><p> TH0=0x4C; //定時
79、器T0的高8位重新賦初值</p><p> TL0=0x00; //定時器T0的高8位重新賦初值</p><p><b> }</b></p><p><b> Y</b></p><p><b> Y</b></p><p><b>
80、 N</b></p><p> 圖 4.2 中斷程序流程圖</p><p><b> 5.系統(tǒng)調(diào)試</b></p><p> 根據(jù)系統(tǒng)設(shè)計方案,本系統(tǒng)的調(diào)試共分為兩大部分:軟件調(diào)試,硬件調(diào)試。</p><p><b> 5.1 軟件調(diào)試</b></p><
81、p> 5.1.1編程工具—C51語言</p><p> 8051單片機的應用程序設(shè)計,使用C51語言進行程序設(shè)計雖然相對于匯編語言代碼效率有所下降,但可以方便地實現(xiàn)程序設(shè)計模塊化,代碼結(jié)構(gòu)清晰、可讀性強,易于維護、更新和移植,適合較大規(guī)模的單片機程序設(shè)計。近年來,隨著C51語言的編譯器性能的不斷提高,在絕大多數(shù)應用環(huán)境下,C51程序的執(zhí)行效率已經(jīng)非常接近匯編語言,因此,使用C51進行單片機程序設(shè)計已經(jīng)成
82、為單片機程序設(shè)計的主流選擇之一。</p><p> 本設(shè)計的軟件都是在 Keil μ Vision 7.5上進行編寫,編譯,調(diào)試以及運行操作并生成Hex文件。</p><p> 5.1.2 單片機仿真軟件在線調(diào)試—PROTEUS</p><p> 1.打開Proteus軟件。</p><p> 2.選擇file菜單下的 open de
83、sign選項,找到所需的元器件,元器件上單擊右鍵選中,再單擊左鍵對其進行命名和賦值,接著在編輯器左邊的一欄中,找出并繪制設(shè)計所要的各種元器件,按照電路圖連接后并保存。</p><p> 3.將用keil編譯產(chǎn)生的hex文件下載到單片機中:雙擊51單片機,在對話框中把保存過的hex文件打開,再單擊確定。 </p><p> 4.單擊左下角運行按鈕,進行軟件仿真調(diào)試,直到出現(xiàn)正確的結(jié)果。&
84、lt;/p><p> 下圖是在PROTEUS中仿真通過的整體硬件原理圖。</p><p> 圖 5.1 PROTEUS仿真原理圖</p><p><b> 5.2 硬件調(diào)試</b></p><p> 由于本系統(tǒng)的硬件電路完全符合銳志單片機開發(fā)板的電路結(jié)構(gòu),所以我們將程序燒進銳志單片機開發(fā)板進行硬件調(diào)試,表5.1 的測
85、試條件是:設(shè)定白天的起步價是6 元,晚上起步價是7元,等待價格測得數(shù)據(jù)如表5-1。</p><p> 表5-1 硬件測試數(shù)據(jù)表</p><p> 從上表的測得的數(shù)據(jù)得出,本計價器運行穩(wěn)定,測得的數(shù)據(jù)滿足計價器的需求。</p><p><b> 結(jié) 論</b></p><p> 在本次設(shè)計中,我們采用AT89S
86、52芯片為核心器件,設(shè)計出了簡單的出租車計價器,能夠?qū)崿F(xiàn)顯示總金額和總里程,按鍵控制清零,調(diào)價,白天,黑夜模式的轉(zhuǎn)換,還能進行掉電數(shù)據(jù)保存。</p><p> 選題后,我便開始復習單片機方面的知識,也查閱、搜索了很多相關(guān)資料,進行總體設(shè)計與具體設(shè)計,同時也學習仿真軟件Protues和編程軟件KeiC。由于以前都采用匯編語言實現(xiàn)編程,對用C語言來實現(xiàn)單片機的編程不太習慣,花費了一些時間來熟悉C語言的編程。在設(shè)計開
87、始,要形成流程圖,它可以使設(shè)計有一定的邏輯性與嚴密性,使得設(shè)計思路明確。采用模塊化的設(shè)計思想很重要,它方便編寫、修改與調(diào)試,另外加上必要的注釋,便于交流與理解。</p><p> 這次畢業(yè)設(shè)計完成后,體會頗多,在學與做的過程中,取長補短,不斷學習新的知識,吸取經(jīng)驗,達到進步的目的。通過自身的努力以及相關(guān)圖書資料的幫助,逐漸熟悉了KEIL、PROTEUS和C語言等軟件的使用以及硬件調(diào)試與檢測過程中的一些小技巧。本
88、次設(shè)計我學習到不少單片機的知識,但由于自己的理論知識水平有限,實踐知識和設(shè)計經(jīng)驗不足,在設(shè)計過程中難免存在一些問題。懇請各位老師批評指正,以使我在以后的學習和實踐中加以改進和提高。</p><p><b> 致 謝</b></p><p> 本論文是在我的指導老師*老師的悉心指導下完成的。徐老師作為一名優(yōu)秀的、經(jīng)驗豐富的教師,具有豐富的知識和教學經(jīng)驗,在整個論文
89、實驗和論文寫作過程中,對我進行了耐心的指導和幫助,提出嚴格要求,引導我不斷開闊思路,為我答疑解惑,鼓勵我大膽創(chuàng)新,使我在這一段寶貴的時光中,既增長了知識、開闊了視野、鍛煉了心態(tài),又培養(yǎng)了良好的實驗習慣和科研精神。在此,我向我的指導老師表示最誠摯的謝意! 在論文即將完成之際,我的心情久久無法平靜,本次畢業(yè)設(shè)計培養(yǎng)了我們獨立思考問題,分析問題與解決問題的能力,在指導老師的指導下,加上同組同學的討論與分析,使所遇到的問題逐步得到解決。
90、本次畢業(yè)設(shè)計所得到的經(jīng)驗也并將繼續(xù)影響我今后的學習和工作。</p><p> 我們的大學即將結(jié)束,今天所取得的成績也一直以來關(guān)心、教導我的父母、老師密不可分,在此祝愿他們身體健康、工作順利、萬事如意!</p><p> 我再次感謝學校和老師給了我這次實踐鍛煉的機會,以及很多同學對我的幫助,為此我將盡最大的努力,并以最好的心態(tài)來回報社會,服務(wù)祖國。</p><p>
91、;<b> 參 考 文 獻</b></p><p> [1]. 吳承琦,孫培生. 出租汽車計價器發(fā)展歷程回顧、感悟及展望[R].北京.《中國計量》 2008年03期 </p><p> [2].秦浩華 具有區(qū)域識別功能出租車計價器車載定位模塊的研制[J].遼寧技術(shù)工程學院工學報,2005.</p><p> [3].陳偉宏、肖衛(wèi)初、邱飚
92、 基于PROTEUS的多功能出租車計價器設(shè)計[J].重慶工學院學報,2009.</p><p> [4]胡泉、謝芳.C語言程序設(shè)計.華中科技大學出版社,2009</p><p> [5]戴 佳.51單片機C語言應用程序設(shè)計實例精講.電子工業(yè)出版社,2007</p><p> [6]張毅剛.單片機原理及應用.高等教育出版社,2004</p>&l
93、t;p> [7].陳偉宏、肖衛(wèi)初、楊明 基于單片機的多功能出租車計價器的設(shè)計[J].現(xiàn)代電子技術(shù),2008.</p><p> [8].楊世品、陳林 基于PROTEUS的單片機出租車計價器的設(shè)計[J].《微計算機信息》期刊,2007.</p><p> [9]. 邱淑賢.霍爾式汽車車速傳感器檢測系統(tǒng)[J]. 長春工業(yè)大學學報(自然科學版), 2010, 31(3).
94、</p><p> [10]馬忠梅.單片機的C語言應用程序設(shè)計(第三版).北京航空航天大學出版社,2004</p><p> [11]胡漢才.單片機原理及其接口技術(shù).北京:清華大學出版社,1995</p><p> [12]潘永雄.新編單片機原理與應用.西安電子科技大學出版社,2003</p><p> [13]肖玲妮、袁增貴.Pro
95、tel 99 SE印刷電路板設(shè)計教程.清華大學出版社,2003 </p><p> [14]戴梅萼 史嘉權(quán).微型計算機技術(shù)與應用.清華大學出版社,2003</p><p> [15] 譚浩強C語言程序設(shè)計[M]。清華大學出版社。2005 </p><p><b> 附 錄</b></p><p><b>
96、; 程序清單</b></p><p> #include<reg52.h></p><p> #include<stdlib.h> //包含隨機函數(shù)rand()的定義文件</p><p> #include<intrins.h> //包含_nop_()函數(shù)定義的頭文件</p><p&g
97、t; #defineOP_READ0xa1// 器件地址以及讀取操作,0xa1即為1010 0001B</p><p> #defineOP_WRITE 0xa0// 器件地址以及寫入操作,0xa1即為1010 0000B</p><p> #define uchar unsigned char</p><p> #define uint un
98、signed int</p><p> sbit K5=P3^2;</p><p> sbit RS=P2^0; //寄存器選擇位,將RS位定義為P2.0引腳</p><p> sbit RW=P2^1; //讀寫選擇位,將RW位定義為P2.1引腳</p><p> sbit E=P2^2; //使能信號位,將E位
99、定義為P2.2引腳</p><p> sbit BF=P0^7; //忙碌標志位,,將BF位定義為P0.7引腳</p><p> sbit SCL=P3^4; //將串行時鐘總線SCL位定義在為P3.4引腳</p><p> sbit SDA=P3^5;</p><p> uint data T0_cnt,D_
100、cnt;</p><p> uchar data cnt_3,cnt_distance,cnt_cost,begin;</p><p> uchar data lose_power=1;</p><p> uchar data state_val,flag=0; </p><p> uchar data key_va
101、l,key_val_old; //定義新舊鍵值</p><p> uchar code cost_val[3]={1,2,1}; //收費標準 cost_val[0]白天 cost_val[1]黑夜 cost_val[2]等待</p><p> uchar code digit[ ]={"0123456789"}; //定義字符數(shù)組顯示數(shù)字</p&g
102、t;<p> uchar code string1[ ]={"price:"}; //定義字符數(shù)組顯示提示信息</p><p> uchar code string2[ ]={"/km"};</p><p> uchar code string3[ ]={"total:"};</p><p&
103、gt; uint h,d,t;</p><p> void delay(uint i) //1ms延時基準函數(shù)</p><p><b> {</b></p><p><b> uchar j;</b></p><p> while(i--)</p><p><
104、b> {</b></p><p> for(j=0;j<115;j++);</p><p><b> }</b></p><p><b> }</b></p><p> void delaynms(uint n)</p><p><b&
105、gt; {</b></p><p><b> delay(n);</b></p><p><b> }</b></p><p> void init_variant()//初始化一些變量的內(nèi)容</p><p><b> {</b></p>&
106、lt;p> cnt_3=0; //3分鐘的計時</p><p> D_cnt=0; //脈沖的個數(shù)</p><p> cnt_distance=0;//距離的計數(shù)</p><p> cnt_cost=0; //保存總價格</p><p><b> }</b></p><p> u
107、char scan_key()</p><p><b> { </b></p><p> uchar i,k;</p><p><b> i=P1;</b></p><p> if(i==0xff)</p><p><b> {</b><
108、/p><p><b> k=255;</b></p><p><b> } //無鍵按下</b></p><p> else //有鍵按下</p><p><b> {</b></p><p> delay(10);//延時去抖動</p>
109、;<p><b> if(i!=P1)</b></p><p><b> {</b></p><p><b> k=255;</b></p><p><b> }</b></p><p><b> else</b&g
110、t;</p><p><b> {</b></p><p> switch (i)</p><p><b> {</b></p><p> case 0xef:k=0;</p><p> break;//P1.4按下,啟動鍵</p><p>
111、 case 0xdf:k=1;</p><p> break;//P1.5按下,清除鍵</p><p> case 0xbf:k=2;</p><p> break;//P1.6按下,切換鍵</p><p><b> }</b></p><p><b> }</b>
112、;</p><p><b> }</b></p><p><b> return k;</b></p><p><b> }</b></p><p> /***************************************************</p&
113、gt;<p> 函數(shù)功能:開始數(shù)據(jù)傳送</p><p> ***************************************************/</p><p> void start()</p><p><b> // 開始位</b></p><p><b> {&l
114、t;/b></p><p> SDA = 1; //SDA初始化為高電平“1”</p><p> SCL = 1; //開始數(shù)據(jù)傳送時,要求SCL為高電平“1”</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p>&
115、lt;p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p> SDA = 0; //SDA的下降沿被認為是開始信號</p><p> _nop_(); //等待一個機
116、器周期</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p> SCL = 0;
117、 //SCL為低電平時,SDA上數(shù)據(jù)才允許變化(即允許以后的數(shù)據(jù)傳遞) </p><p><b> }</b></p><p> /***************************************************</p><p> 函數(shù)功能:結(jié)束數(shù)據(jù)傳送</p><p> *******
118、********************************************/</p><p> void stop()// 停止位</p><p><b> {</b></p><p> SDA = 0; //SDA初始化為低電平“0”_n</p><p> SCL = 1; //
119、結(jié)束數(shù)據(jù)傳送時,要求SCL為高電平“1”</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><
120、p> _nop_(); //等待一個機器周期</p><p> SDA = 1; //SDA的上升沿被認為是結(jié)束信號</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期
121、</p><p> _nop_(); //等待一個機器周期</p><p> _nop_(); //等待一個機器周期</p><p><b> SDA=0;</b></p><p><b> SCL=0;</b></p><p><b>
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機的出租車計價器畢業(yè)設(shè)計
- 基于單片機的出租車計價器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機的出租車計價器系統(tǒng)
- 基于單片機的出租車計價器設(shè)計
- 基于單片機的出租車計價器
- 基于單片機的出租車計價器的設(shè)計【畢業(yè)設(shè)計】
- 畢業(yè)設(shè)計---基于單片機的出租車計價器的設(shè)計
- 畢業(yè)設(shè)計----多功能單片機出租車計價器
- 基于單片機的出租車計價器設(shè)計畢業(yè)設(shè)計論文
- 基于單片機的出租車計價器設(shè)計畢業(yè)設(shè)計論文
- 基于51單片機的出租車計價器畢業(yè)設(shè)計論文
- 基于單片機出租車多功能計價器設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計(論文)基于單片機的出租車計價器的設(shè)計
- 基于51單片機的出租車計價器設(shè)計
- 畢業(yè)設(shè)計---基于單片機控制的出租車計價器的畢業(yè)設(shè)計
- 基于單片機的出租車計價器設(shè)計畢業(yè)論文
- 基于單片機的出租車計價器設(shè)計【畢業(yè)論文】
- 畢業(yè)論文--基于單片機的出租車計價器設(shè)計
- 單片機課程設(shè)計--出租車計價器
- 單片機課程設(shè)計--出租車計價器
評論
0/150
提交評論