出租車計價系統-浙理單片機課程設計_第1頁
出租車計價系統-浙理單片機課程設計_第2頁
出租車計價系統-浙理單片機課程設計_第3頁
出租車計價系統-浙理單片機課程設計_第4頁
出租車計價系統-浙理單片機課程設計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機系統設計及應用浙江理工大學單片機系統設計及應用實驗設計報告題 目: 出租車計價系統 專 業: 機械電子工程 班 級: 姓 名: 學 號: 0000000000000 指導教師: 張建義 機械與自動控制學院2016年 7月 3日摘 要隨著社會的進步,電子類產品也得到了廣泛的發展,尤其是單片機的發展異常迅速。由于單片機的特殊結構形式,在某些應用領域中,它承擔了一些通用的微型計算機無法完成的工作,它是一種高性能,低價格的處理器,集成度高,體積小,可靠性又高,控制功能強,電壓低。由于單片機具有這些特點,人類的生活應用中十分廣泛。本文以AT89C51單片機為中心,附加A44E霍爾傳感器測距(本電路

2、中用模擬開關替代),實現對出租車計價,采用AT24C512B實現在系統掉電的時候保存單價,輸出采用8段數碼顯示管,顯示行駛總里程和總金額。模擬出租車計價器設計:進行里程顯示,預設起步價和起步公里數;行程按全程收費,有復位功能和啟動功能,啟動后,開始計價。采用單片機進行設計,可以用較少的硬件和適當的軟件相互配合來實現設計要求,且靈活性強,可以通過軟件編程來完成更多的附加功能,應用前景廣闊。關鍵詞:出租車;計價器;AT89C5目 錄摘 要第1章、出租車計價系統的設計要求與設計方案11.1 出租車計價器概述11.2 系統主要功能11.3 方案論證與比較1第2 章、系統硬件設計22.1 設計方案與硬件

3、說明22.2 硬件設計說明22.3 硬件電路組成62.3.1 驅動電路62.3.2 顯示電路82.3.3 復位電路92.3.4 時鐘電路92.3.5 按鍵電路10第3章、系統軟件設計113.1 軟件總體設計113.2 系統程序設計11第4章、系統調試12第5章、設計小結18參考文獻19附錄一20附錄二21附錄三23附錄四26第1章、出租車計價系統的設計要求與設計方案1.1 出租車計價器概述計價器顯示的是單價、路程和總價。出租車計價器通過傳感器與行駛車輛連接,但在此次課程設計中,因沒有傳感器,所以用鍵盤取代,用按鍵的次數來代表里程數。該課程設計的出租車計價器功能主要有具有數據的復位功能、單價修改

4、功能、數據輸出功能、計價功能等。1.2 系統主要功能本課程設計所設計的出租車計價器的主要功能有:數據的復位、單價修改、數據輸出、計價、單價輸出及調整、路程輸出等功能。輸出采用8段數碼顯示管。本電路設計的計價器不但能實現基本的計價,而且還能手動來調整單價。1.3 方案論證與比較方案一:采用數字電路控制采用傳感器件,輸出脈沖信號,經過放大整形作為移位寄存器的脈沖,實現計價,但是考慮到這種電路過于簡單,性能不夠穩定,而且不能調節單價,電路不夠實用。方案二:采用單片機控制利用單片機豐富的I/O端口,及其控制的靈活性,實現基本的里程計價功能和價格調節、時鐘顯示功能。通過比較以上兩種方案,單片機方案有較大

5、的活動空間,不但能實現所要求的功能,而且能在很大的程度上擴展功能,而且還可以方便的對系統進行升級,所以采用后一種方案更好些。第2 章、系統硬件設計2.1 設計方案與硬件說明采用單片機進行的設計,相對來說功能強大,用較少的硬件和適當的軟件相互配合可以很容易地實現設計要求,且靈活性強,可以通過軟件編程來完成更多的附加功能。設計采用AT89C51單片機為主控器,以A44E霍爾傳感器測距(按鍵替代),實現對出租車的基本的計價設計,輸出采用8段數碼顯示管。利用單片機豐富的I/O端口,及其控制的靈活性,實現基本的計價功能。其系統結構圖如圖2-1所示:按鍵控制 AT89C51單片機復位電路時鐘電路顯示模塊顯

6、示單價、總里程和總金額圖2-1 系統結構圖本電路設計的計價器能實現基本的計價功能,單片機計算總價的公式為:總價起步價+單價×(總里程起步里程)。AT89C51作為一個單片微型計算系統,靈活性高,其強大的控制處理功能和可擴展功能設計電路提供了很好的選擇。2.2 硬件設計說明單片機是單片微型計算機的簡稱,單片機以其卓越的性能,得到廣泛的應用,已經深入到各個領域。在這次設計中,我們用到P0口和P2口,P0口為8位三態I/O口,此口為地址總線及數據總線分時復用;P2口為8位準雙向口,與地址總線高八位復用;P0口和P2口都有一定的驅動能力,P0口的驅動能力較強。 設計中,為了能夠讓數碼管更好的

7、正常顯示,我們采用了驅動電路來驅動。在本次硬件設計中,我們考慮采用芯片74LS245來驅動數碼管顯示。設計電路時,考慮到用里程(霍爾)傳感器價格昂貴,且不便于試驗檢測,在設計中采用一個模擬開關來代替。模擬開關一端接在P3.4口,另一端接地,通過來回高低電平的變化,每按兩次,對應的里程數加一。通過在程序中設置的里程和金額的信息,在加上驅動電路的設計,就可以在數碼管上分別顯示總金額和總里程。在顯示方面,可以用液晶顯示,也可以用數碼管進行顯示。由于在這次設計中只需要顯示里程和金額信息,我們采用數碼管進行顯示。這樣既節約了成本,又可以達到顯示的目的。同時為了減少硬件的復雜度,我們采用了動態顯示方式,選

8、用了共陰極數碼管。為了焊接方便,我們選用了集成在一起的數碼管。我們還設計了控制按鍵,能夠很好的對出租車計價器控制,如啟動/停止按鍵,清零按鍵等。AT89C51單片機簡介:AT89C51是美國ATMEL公司生產的低功耗,高性能CMOS 8位單片機,片內含4KB的可系統編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準8051指令系統及引腳。它集Flash程序存儲器既可在線編程(ISP)也可用傳統方法進行編程及通用 8位微處理器于單片芯片中,具有高性價比,其引腳配置如圖2-2所示。圖2.2 AT89C51引腳配置AT89C51芯片的40個引腳功能為:VC

9、C 電源電壓。GND 接地。RST 復位輸入。當RST變為高電平并保持2個機器周期時,將使單片機復位。WDT溢出將使該引腳輸出高電平,設置SFR AUXR的DISRTO位(地址8EH)可打開或關閉該功能。DISKRTO位缺省為RESET輸出高電平打開狀態。XTAL1 反向振蕩放大器的輸入及內部時鐘工作電路的輸入。XTAL2 來自反向振蕩放大器的輸出。P0口 一組8位漏極開路型雙向I/O口。也即地址/數據總線復用口。作為輸出口用時,每位能驅動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數據存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數據總線復用,在訪問期間激活內

10、部上拉電阻。在Flash編程時,P0口接收指令字節,而在程序校驗時,輸出指令字節,校驗時,要求外接上拉電阻。P1口 一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。Flash編程和程序校驗期間,P1接收低8位地址。P1口部分端口引腳及功能如表2-1所示。表2-1 P1口特殊功能P1口引腳特殊功能P1.5MOSI(用于ISP編程)P1.6MOSI(用于ISP編程)P1.7SCK(用于ISP編

11、程)P1口引腳特殊功能P1.5MOSI(用于ISP編程)P1.6MOSI(用于ISP編程)P1.7SCK(用于ISP編程)P2口 一個帶內部上拉電阻的8位雙向I/O口。P1的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數據存儲器時,P2口送出高8位地址數據。在訪問8位地址的外部數據存儲器時,P2口線上的內容在整個訪問期間不改變。Flash編程和程序校驗期間,P2亦接收低8位地址。P3口 一個

12、帶內部上拉電阻的8位雙向I/O口。P3的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫“1”時,它們被內部的上拉電阻把拉到高電并可作輸入端口。作輸入端口使用時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表2-2所示。P3口還接收一些用于Flash閃速存儲器編程和程序校驗期間的控制信號。表2-2 P3口特殊功能P3口引腳特殊功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(定時器0外部輸入)P3.5T1(定時器1外部輸入)P3.6(外部數

13、據存儲器寫選通)P3.7(外部數據存儲器讀選通)P3口引腳特殊功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2 (外部中斷0)P3.3 (外部中斷1)P3.4T0(定時器0外部輸入)P3.5T1(定時器1外部輸入)P3.6 (外部數據存儲器寫選通)P3.7 (外部數據存儲器讀選通)硬件系統設計說明: 按下計價按鍵時,顯示起步價和起步里程范圍,這些在程序中設置;當等于或超過三公里后,按計算總價的公式為:總價起步價單價×(總里程起步里程)進行計價。本設計中,起步價白天為8元,晚上位10元,起步里程為,3公里,白天晚上的切換可以通過(白/黑)鍵切換,以滿足不同時間段價格

14、調整的需要。 2.3 硬件電路組成硬件組成主要包括:驅動電路、顯示電路、復位電路、掉電保護電路、時鐘電路、按鍵電路。其整體電路圖2-3所示:圖2.3 計價器整體電路圖2.3.1 驅動電路74LS245是我們常用的芯片,用來驅動led或者其他的設備??偩€驅動器74LS244和74LS245經常用作三態數據緩沖器,74LS244為單向三態數據緩沖器,而74LS245為雙向三態數據緩沖器。本設計用74LS245作為驅動芯片,雙向總線發送器/接收器(3S),管腳圖如圖2-4所示。 圖2-4 驅動芯片管腳圖74LS245主要電器特性的典型值如下: A A總線端 B B總線端 三態允許端(低電平有效) D

15、IR 方向控制端 功能表如表2-3所示: 表 2-3 功能表Enable Direction Control DIR OperationL LL HH XB data to A busA data to B busIsolation利用74LS245來驅動數碼管顯示,單片機的P2.0到P2.7分別接A0到A7管腳,進行數據的傳送,其中AB/BA接高電平,控制數據從A到B進行傳送,B0到B7分別接數碼管的位選端,驅動數碼管依次顯示。P2.0到P2.7的數據通過A傳送到B中的數據送到數碼管,以達到顯示數據信息的目的。2.3.2 顯示電路 多數的應用系統都要配輸入和輸出,外設LED顯示器和LCD顯示

16、器,雖然LCD顯示效果比較好,已經成為了一種發展趨勢,但為了節約成本,我們選用了LED顯示器(圖2-5)。圖2-5 集成數碼管在顯示方面,我們選用了動態顯示。靜態顯示雖然亮度較高,接口編程容易,但是每位的段碼線分別與一個8位的鎖存器輸出相連。占用的I/O口線比較多,在顯示位數較多的情況下,一般都采用動態顯示方式。利用動態顯示的方法,由于LED顯示器的余輝和人眼的視覺暫留現象,只要每位顯示的時間間隔足夠短,就仍能感覺到所有的數碼管都在顯示。為了簡化硬件,通常將所有位的段碼線相應段并聯在一起,由一個8位I/O口控制,在同一時刻,只讓一位選通,如此循環,就可以使各位顯示出將要顯示的字符。LED數碼有

17、共陽和共陰兩種,把這些LED發光二極管的正極接到一塊(一般是拼成一個8字加一個小數點)而作為一個引腳,就叫共陽的,相反的,就叫共陰的,那么應用時這個腳就分別的接VCC和GND。再把多個這樣的8字裝在一起就成了多位的數碼管了。在本設計仿真中使用的是6個一組的共陰8位數碼管(圖2-6)。圖3-6 LED數碼管找公共共陰和公共共陽的方法:首先我們找個電源穩壓器(3到5伏)和1個1K(幾百歐的也行)的電阻,VCC串接1個電阻后和GND接在任意2個腳上,組合有很多,但總有一個LED會發光的,找到一個就夠了,然后用GND不動,VCC(串電阻)逐個碰剩下的腳,如果有多個LED(一般是8個),那它就是共陰的了

18、。共陰極數碼管,陰極接地,當某個發光二極管的陽極為高電平時,發光二極管點亮,對應的就顯示。2.3.3 復位電路單片機的復位是由外部的復位電路實現的,復位電路通常采用上電自動復位和按鈕復位兩種方式。上電自動復位是通過外部復位電路的電容充電來實現的。除了上電復位外還需要按鍵手動復位(圖2-7)。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST端經電阻與電源VCC接通而實現的。單片機的復位速度比外圍I/O接口電路快,為能夠保證系統可靠的復位,在初始化程序中應安排一定的復位延遲時間。圖2-7 復位電路2.3.4 時鐘電路MCS-51單片機的各功能部件都是以時鐘控制信號為基準,內部電路在時

19、鐘信號的控制下,嚴格地按時序執行指令進行工作,單片機本身如同一個復雜的同步時序電路,為了保證其各個部分同步工作,電路要在唯一的時鐘信號控制下,嚴格地按照時序進行工作。其實只需在時鐘引腳連接上外圍的定時控制元件,就可以構成一個穩定的自激振蕩器。為更好地保證振蕩器穩定可靠地工作,諧振器和電容應盡可能安裝得與單片機芯片靠近。本設計中使用的振蕩電路,由12MHZ晶體振蕩器和兩個約30PF的電容組成,在XTAL1和XTAL2兩端跨接晶體,電容的大小不會影響振蕩頻率的高低。在整個系統中為系統各個部分提供基準頻率,以防因其工作頻率不穩定而造成相關設備的工作頻率不穩定,晶振可以在電路中產生振蕩電流,發出時鐘信

20、號。如圖2-8所示。圖2-8時鐘電路2.3.5 按鍵電路當乘客上車之后按下開始鍵,方可開始計價?!昂诎邹D換”按鍵用于調節白天晚上的不同起步價“等待按鍵”設計成可閉合形式,在出租車正常行駛時,等待按鈕打開。當應乘客要求需等車等待時按下該按鍵,每隔一段時間總價顯示上增加一定金額,但是路程數并不改變。再次行走時打開此按鍵。“清零按鍵”用于上一乘客下車時,需將其數據清零結算,以備下一乘客再次計數。按鍵電路如圖2-9所示。 圖2-9 按鍵電路第3章、系統軟件設計3.1 軟件總體設計51單片機的程序設計語言主要有兩種:一是匯編程序設計;二是C語言編程設計,兩種程序設計語言都有各自的優點。用匯編語言編寫和高

21、級語言(C語言)比較起來節省空間,這樣對于存儲空間僅4Kb的芯片來說是極之有利的,51單片機能更高速的運行。C語言編寫的程序,雖然不象匯編那樣速度快、但程序簡單易行、并且需要較小的存儲空間。C語言作為一種編譯型程序設計語言,它兼顧了多種高級語言的特點,并具備匯編語言的功能。此外,C語言程序還具有完善的模塊程序結構,從而為軟件開發中采用模塊化程序設計方法提供了有力的保障。因此,使用C語言進行程序設計已成為軟件開發的主流。本設計就是采用C語言編寫的,由于采用模塊化操作,使得程序在修改,執行的時候顯得方便易行。3.2 系統程序設計本設計中,軟件設計采用模塊化操作,利用各個模塊之間的相互聯系,在設計中

22、采用主程序調用各個子程序的方法,使程序通俗易懂,我們設計了整體程序流程圖:在main函數編寫開始,要進行初始化,包括對系統初始化和對存儲器初始化,要對硬件設備進行初始化,并使硬件處于就緒狀態。通過判斷是否計費,調價,清零等狀態,來分別調用不同的子程序,使程序在設計之前,就有了很強的邏輯關系。這些對應于硬件就是通過按下各個控制開關,來分別進行不同的動作,最后數碼管根據輸入的信息,來顯示不同的數據信息,這就達到了軟件控制硬件,同時輸入信息控制輸出信息的目的。整個程序的流程圖如圖3-1所示:圖3-1系統程序流程圖第4章、系統調試系統調試包括軟件調試和硬件調試。硬件調試的任務是排除所焊接電路故障。軟件

23、調試是利用開發工具進行在線仿真調試。調試的一般過程如圖4-1所示:系統調試硬件調試軟件調試系統聯調現場調試調試結束圖4-1 系統調試流程圖系統調試的一般過程是上電運行后觀察其運行狀態,數碼管是否點亮等。軟件調試先是各個模塊、各個子程序分別調試,最后進行系統聯機調試。下圖是通過在Keil C中編譯通過,并生成Hex文件,在PROTEUS中仿真結果如下:通過按鍵輸入信號,8位數碼管從左到右分別顯示單價、里程數和總價。下圖為仿真初始狀態:1、按下開始按鈕:2、按下公里數加鍵:3、每按一次公里數加鍵,數碼管顯示的公里數加1,單價始終為1元,3公里內總價不變,下圖分別為1、2、3公里時的仿真結果:4、繼

24、續按公里數加鍵,以下為4、5、6公里時的仿真結果:5、按下清零鍵,使回到初始狀態,接下來進行黑白轉換模擬,按下黑白轉換鍵:6、按下黑白轉換鍵之后,單價有每公里8元調整為每公里10元,重復步驟3、4,結果如下:7、在第6步驟完成的情況下進行,接下來進行停車等待功能的仿真,停車等待功能是考慮到堵車情況每隔一段時間公里數不變而總價增加,按下停車等待使開關閉合:仿真中每過一秒鐘,公里數不變,總價加1,仿真結果如下:8、停車等待功能仿真結束后(即汽車重新起步后),再按一下停車等待按鈕使開關打開,接下來按公里數加鍵,回復正常計價,仿真結果如下:9、按下停止鍵仿真結束第5章、設計小結在本次設計中,我們采用A

25、T89C51芯片為核心器件,設計出了簡單的出租車計價器,能夠實現顯示總金額和總里程,按鍵控制清零、調價。選題后,我便開始復習單片機方面的知識,也查閱、搜索了很多相關資料,進行總體設計與具體設計,同時也學習仿真軟件Protues和編程軟件Keil。由于以前都采用匯編語言實現編程,對用C語言來實現單片機的編程不太習慣,花費了一些時間來熟悉C語言的編程。在設計開始,要形成流程圖,它可以使設計有一定的邏輯性與嚴密性,使得設計思路明確。采用模塊化的設計思想很重要,它方便編寫、修改與調試,另外加上必要的注釋,便于交流與理解。這次課程設計完成后,體會頗多,在學與做的過程中,取長補短,不斷學習新的知識,吸取經

26、驗,達到進步的目的。通過自身的努力以及相關圖書資料的幫助,逐漸熟悉了KEIL、PROTEUS和C語言等軟件的使用以及硬件檢測過程中的一些小技巧。本次設計我學習到不少單片機的知識,但由于自己的理論知識水平有限,實踐知識和設計經驗不足,在設計過程中難免存在一些問題。懇請各位老師批評指正,以使我在以后的學習和實踐中加以改進和提高。參考文獻:1何欽銘,顏輝.C語言程序設計(第2版)M.高等教育出版社,2012:3.2張俊謨.單片機中級教程(第2版)M.北京航空航天大學出版社,2006:10.3張靖武.單片機原理應用與PROTEUS仿真M.電子工業出版社,2009:130-132.4 陳明熒.8051單

27、片機課程設計實訓教材M.北京:清華大學出版社,2004:303-304.5 華成英.模擬電子技術基礎M.北京:高等教育出版社,2006202-203. 附錄一原理圖附錄二PCB圖附錄三原程序代碼#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define Delay4us() _nop_();_nop_();_nop_();_nop_();unsigned char Tempduan8; /存儲顯示值的全局變量int i=0;sbit KEY

28、_ADD=P34; sbit heibai=P11;sbit qingling=P13;sbit dengdai=P12; sbit SDA=P31;sbit SCL=P30;/定義按鍵輸入端口uchar code duanma=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/段碼表uchar code weima=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位碼表void xianshi(); /函數聲明 void Write_Random_Adress_Byte(uchar addr,uchar dat);void DelayMS(uint x) /延時uchar t;while(x-) for(t=0;t<120;t+);/主程序void main()uchar dd,k,qibu=8;unsigned int gl;unsigned int zj;while(1) /黑白計費模式轉換if(!heibai) /如果檢測到低電平,說明按鍵按下 xianshi(); /延時去抖,一般10-20ms if(!heibai) /再次確認按鍵是否按下,沒有按下則退出 while(!heibai)xianshi();/如果確認按下按鍵等待按鍵釋放

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論