版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 本科生畢業(yè)設計</b></p><p> 基于單片機的多功能出租車計價器設計</p><p> Design of Digital Frequency </p><p> Meter Based on SCM</p><p> 學生姓名陳展智</p><p> 所在專
2、業(yè)電氣工程及其自動化</p><p> 所在班級12級電氣工程及其自動化1班</p><p> 申請學位工學學士</p><p> 指導教師黃小容職稱</p><p> 答辯時間2016年 05 月 28 日</p><p><b> 學位論文原創(chuàng)性聲明</b></p><
3、;p> 本人鄭重聲明:所呈交的學位論文(畢業(yè)設計),是本人在導師的指導下,獨立進行研究工作所取得的成果。所有數(shù)據(jù)、圖片資料均真實可靠。除文中已經(jīng)注明引用的內(nèi)容外,本論文不含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品或成果。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式標明。本畢業(yè)論文的知識產(chǎn)權(quán)歸屬于培養(yǎng)單位。</p><p> 本聲明的法律結(jié)果由本人承擔。</p><p&g
4、t; 論文作者簽名: 日期: 年 月 日</p><p><b> 目 錄</b></p><p><b> 摘 要II</b></p><p> AbstractIII</p><p> 1 多功能出租車計價器的設計內(nèi)容1</p>
5、<p> 1.1多功能出租車計價器設計目的1</p><p> 1.2系統(tǒng)主要功能1</p><p> 1.3方案論證與比較1</p><p> 2 出租車計價系統(tǒng)的硬件設計3</p><p> 2.1晶振電路部分3</p><p> 2.2按鍵復位電路3</p>&l
6、t;p> 2.3蜂鳴器電路4</p><p> 2.4獨立式鍵盤接口電路5</p><p> 2.5 1602LCD液晶顯示電路5</p><p> 2.5.1 1602LCD的基本參數(shù)及引腳功能5</p><p> 2.5.2 1602液晶顯示接口電路7</p><p> 2.6路程測量設
7、計部分7</p><p> 2.7單片機各引腳功能說明9</p><p> 3 出租車計價系統(tǒng)的軟件設計12</p><p> 3.1中斷子函數(shù)13</p><p> 3.2判鍵子函數(shù)15</p><p> 3.3顯示子程序16</p><p> 3.4總程序流程框圖1
8、6</p><p><b> 4 系統(tǒng)調(diào)試17</b></p><p> 4.1 單片機仿真軟件在線調(diào)試—PROTEUS17</p><p> 4.2出租車計價器硬件調(diào)試18</p><p> 5 設計體會與展望21</p><p><b> 鳴 謝22</b
9、></p><p><b> 參考文獻23</b></p><p><b> 附 錄24</b></p><p><b> 源程序26</b></p><p><b> 摘 要</b></p><p> 隨
10、著時間推移,出租車行業(yè)的發(fā)展勢頭已十分突出,出租車計價器的功能從剛開始的只顯示路程,配合司機自己定價,計算后四舍五入,到現(xiàn)在不僅能夠自主計費,還能實現(xiàn)一些人性化的附加功能。現(xiàn)在各大中城市出租車行業(yè)都已普及自動計價器,所以計價器技術(shù)的發(fā)展、計價器的普及也是非常迅速的。</p><p> 本設計的是一個基于單片機STC89C52的出租車自動計費設計,附有復位電路,時鐘電路,鍵盤電路等。復位電路是單片機的初始化操作,
11、除了正常的初始化外,為擺脫困境,通過復位電路可以重新開始。時鐘電路采用12MHz的晶振,作為系統(tǒng)的時鐘源,具有較高的準確性。</p><p> 在上電時字符型液晶1602顯示最初的起步價,里程收費,等待時間收費三種收費,通過按鍵可以調(diào)整起步價,里程收費,等待時間收費。通過按鍵模擬出租車的運行,暫停,停止。在1602液晶上可以顯示運行的時間,運行時暫停的時間,通過計算可以得出總共的費用和總的路程。</p&g
12、t;<p> 關(guān)鍵字: STC89C52;1602液晶;出租車計費器;里程收費 </p><p><b> Abstract</b></p><p> Over time, the development momentum of the taxi industry has been very prominent, taxi meter functi
13、on from the beginning of the show only walk, with drivers themselves pricing, calculated after rounding, and now not only self-billing, but also to achieve some humane additional features. Major cities in the taxi indust
14、ry now have universal automatic meter, the meter so the development of technology, the popularity meter is very rapid. </p><p> This design is a taxi billing design based on single chip AT89S51, a reset cir
15、cuit, clock circuit, keyboard circuit. The reset circuit is a single chip initialization operation, in addition to the normal initialization, to shake off the dilemma, the reset circuit can start again. The clock circuit
16、 using a 12MHz crystal, as the system clock source, with higher accuracy.</p><p> In power in character type liquid crystal display 1602 starting price, the initial mileage, waiting time charge three fee, b
17、uttons can be adjusted by the starting price, mileage, waiting time charge. Through the simulation of the taxi operation button, pause, stop. In the 1602 LCD can display the running time, run time pause time, can be obta
18、ined by the computation of the total cost and the total distance.</p><p> Key words: single chip microcomputer At89c51 devices,1602 liquid crystal display (LCD),The taxi fare register,the initial mileage<
19、;/p><p> 基于單片機的多功能出租車計價器設計</p><p> 電氣工程及其自動化,2012103120108 陳展智</p><p><b> 指導老師:黃小容</b></p><p> 1 多功能出租車計價器的設計內(nèi)容</p><p> 1.1多功能出租車計價器設計目的<
20、/p><p> 多功能出租車計價器設計的主要目的有兩點:</p><p> 1.對客戶計算路程費用;2.對出租車司機計算稅費。</p><p> 在我們看來,出租車計價器只是完成了計算乘車費用這一功能,可是實際上并不是這么簡單,除了完成對乘車費用的計算與顯示外,它還有五大功能,分別如下:功能之一是其具有自檢功能,在剛剛開機時所有可顯示的字符及狀態(tài)指示燈均顯示3s以
21、上以證明其自身處于“健康”狀態(tài);功能之二是其具有數(shù)據(jù)存儲功能,可存儲至少100次的營業(yè)數(shù)據(jù);功能之三是其具有失電保護功能,無供電情況下也可對數(shù)據(jù)起到保護作用;功能之四是其具有打印功能,用于打印乘車票據(jù);功能之五是其可通過對“空車”車牌的翻動來開始或終止計費。</p><p><b> 1.2系統(tǒng)主要功能</b></p><p> 本出租車自動計費,上電后顯示最初的
22、起步價,里程計費單價,等待時間計費單價,通過按鍵可以調(diào)節(jié)起步價,里程計費單價,等待時間計費單價。同時具有運行,暫停,停止等狀態(tài),可以顯示運行的時間,同時可以顯示暫停的時間,具有累加功能,暫停和運行時間在暫停和運行前一次的狀態(tài)上計時。出租車停止后能夠顯示行駛的總費用。</p><p> 1.3方案論證與比較</p><p> 方案一:采用數(shù)字電子技術(shù),利用555定時芯片構(gòu)成多諧振蕩器,或
23、采用外圍的晶振電路作為時鐘脈沖信號,采用計數(shù)芯片對脈沖盡心脈沖的計數(shù)和分頻,最后通過譯碼電路對數(shù)據(jù)進行譯碼,將譯碼所得的數(shù)據(jù)送給數(shù)碼管顯示,一下是該方案的流程框圖,方案一如圖1-1所示:</p><p><b> 圖1-1方案一</b></p><p> 方案二:采用EDA技術(shù),根據(jù)層次化設計理論,該設計問題自頂向下可分為分頻模塊,控制模塊 計量模塊、譯碼和動態(tài)掃
24、描顯示模塊,其系統(tǒng)框圖如圖1-2所示:</p><p><b> 圖1-2方案二</b></p><p><b> 圖1-2方案二</b></p><p> 方案三:采用MCU技術(shù),通過單片機作為主控器,利用1602字符液晶作為顯示電路,采用外部晶振作為時鐘脈沖,通過按鍵可以方便調(diào)節(jié),以下是方案三的系統(tǒng)流程圖,本方案
25、成本不高。方案圖如圖1-3所示:</p><p><b> 圖1-3方案三</b></p><p> 方案總結(jié):通過各個方案的比較,本次采用方案三,不但控制簡單,而且成本低廉,設計電路簡單。</p><p> 2 出租車計價系統(tǒng)的硬件設計</p><p><b> 2.1晶振電路部分</b>
26、</p><p> 本設計中使用的振蕩電路,由12MHZ晶體振蕩器和兩個約20PF的電容組成,在XTAL1和XTAL2兩端跨接晶體,電容的大小不會影響振蕩頻率的高低。在整個系統(tǒng)中為系統(tǒng)各個部分提供基準頻率,以防因其工作頻率不穩(wěn)定而造成相關(guān)設備的工作頻率不穩(wěn)定,晶振可以在電路中產(chǎn)生振蕩電流,發(fā)出時鐘信號。晶振電路如圖2-1所示:</p><p><b> 圖2-1 晶振電路&l
27、t;/b></p><p><b> 2.2按鍵復位電路</b></p><p> 單片機的復位是由外部的復位電路實現(xiàn)的, 復位電路通常采用上電自動復位和按鈕復位兩種方式。上電自動復位是通過外部復位電路的電容充電來實現(xiàn)的。除了上電復位外還需要按鍵手動復位(圖2-2)。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST端經(jīng)電阻與電源VCC接通而實現(xiàn)
28、的。單片機的復位速度比外圍I/O接口電路快為能夠保證系統(tǒng)可靠的復位,在初始化程序中應安排一定的復位延遲時間。</p><p> 按鍵復位電路圖如圖2-2所示。</p><p> 圖2-2 按鍵復位電路</p><p><b> 2.3蜂鳴器電路</b></p><p> 本次設計采用蜂鳴器。蜂鳴器俗稱喇叭,是一種
29、一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產(chǎn)品中作發(fā)聲器件。</p><p> 是廣泛運用于各種電子產(chǎn)品的一種元器件,它用于提示、報警、音樂等許多運用場合。其結(jié)構(gòu)圖如圖2-3所示:</p><p> 圖2-3蜂鳴器結(jié)構(gòu)圖</p><p> 蜂鳴器與家用電氣上的喇叭在用法上也有
30、相似的地方,通常工作電流比較大,電路上的TTL點評基本上驅(qū)動不了蜂鳴器,需要增加一個電流放大的電路才可以,即此一個管腳很難驅(qū)動蜂鳴器發(fā)出聲音,所以增加了一個三極管來增加通過蜂鳴器的電流。</p><p> 三極管主要是做驅(qū)動用的。因為單片機的IO口驅(qū)動能力不夠讓蜂鳴器發(fā)出聲音,所以我們通過三極管放大驅(qū)動電流,從而可以讓蜂鳴器發(fā)出聲音,你要是輸出高電平,三極管導通,集電極電流通過蜂鳴器讓蜂鳴器發(fā)出聲音,當輸出低電
31、平時,三極管截止,沒有電流流過蜂鳴器,所以就不會發(fā)出聲音。 </p><p> 2.4獨立式鍵盤接口電路</p><p> 獨立式鍵盤:獨立式鍵盤中,每個按鍵占用一根I/O口線,每個按鍵電路相對獨立。I/O口通過按鍵與地相連,I/O口有上拉電阻,無鍵按下時,引腳端為高電平,有鍵按下時,引腳電平被拉低。I/O口內(nèi)部有上拉電阻時,外部可不接上拉電阻。鍵盤接口電路如圖2-3所示:</p
32、><p> 圖2-4 鍵盤接口電路</p><p> 2.5 1602LCD液晶顯示電路</p><p> 2.5.1 1602LCD的基本參數(shù)及引腳功能</p><p> 1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如圖2-5.1所示。</
33、p><p> 圖2-5 LM016L結(jié)構(gòu)圖</p><p> LCD1602主要技術(shù)參數(shù): </p><p> 容量:16×2個字符</p><p> 芯片工作電壓:4.5—5.5V</p><p> 工作電流:2.0mA(5.0V)</p><p> 模塊最佳工作電
34、壓:5.0V</p><p> 字符尺寸:2.95×4.35(W×H)mm</p><p><b> 引腳功能說明:</b></p><p> 1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表1所示:</p><p><b> 表1引腳接口說明表&l
35、t;/b></p><p> 第1腳:VSS為地電源。</p><p> 第2腳:VDD接5V正電源。</p><p> 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。</p><p> 第4腳:RS為寄存器選擇,高電平時選擇
36、數(shù)據(jù)寄存器、低電平時選擇指令寄存器。</p><p> 第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。</p><p> 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><
37、p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p> 第15腳:背光源正極。</p><p> 第16腳:背光源負極。 </p><p> 2.5.2 1602液晶顯示接口電路</p><p><b> 圖2-6顯示電路 </b></p><p> 2.6路程測量設
38、計部分</p><p> 出租車中需要一個能準確的獲得車輪轉(zhuǎn)動即路量信號的裝置,以得到標準的脈沖信號送入單片機的定時/ 計數(shù)器T1 即P3. 5 引腳,利用單片機的T1 的計數(shù)功能完成100 次的計數(shù)后產(chǎn)生一中斷來完成路程的測量。(設車輪周長為1 m ,則霍爾傳感器每產(chǎn)生100 個脈沖便表示車已行程0. 1 km ,為了演示方便本設計中采用按鍵了模擬增加里程。每按一個按鍵增加0.5公里的里程。如果按兩次就是1公
39、里,以此類推不斷的增加來模擬車的不斷前進。</p><p> 圖2-7 路程測量系統(tǒng)圖</p><p> 2.7單片機各引腳功能說明</p><p> 下面對AT89C51各引腳的功能進行較為詳細的介紹:</p><p> 1)電源引腳Vcc和Vss</p><p> Vcc(40腳):電源端為+5V
40、 Vss(20腳):接地端。 </p><p> 2)時鐘電路引腳XTAL1和XTAL2</p><p> XTAL2(18腳):接外部晶體和微調(diào)電容的一端。在單片機內(nèi)部它是振蕩電路反向放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時針電路時,該引腳輸入外時鐘脈沖。要檢查89C51的振蕩電路是否正常工作,可用示波器查看XTAL
41、2端是否有脈沖信號輸出。</p><p> XTAL1(19腳):接外部晶體和微調(diào)電容的另一端。在片內(nèi),它是振蕩電路反向放大器的輸入端。在采用外部時鐘時,該引腳必須接地。 </p><p> 3)控制信號腳 RST ALE PSEN 和EA。</p><p> RST(9腳):RST是復位信號輸入端,高電平有效。在此輸入端保持兩個機器周期(24個時鐘振蕩周
42、期)的高電平時,就可以完成復位操作。</p><p> ALE/PROG(30引腳):地址鎖存允許信號端。當AT89C51上電正常工作后,ALE引腳不斷向外輸出正脈沖信號。此頻率為振蕩器頻率fosc的1/6,當CPU訪問片外存儲器時,ALE輸出信號作為鎖存低8位地址的控制信號。在CPU訪問片外數(shù)據(jù)存儲時,每取值一次(一個機器周期)會丟失一個脈沖。平時不訪問片外存儲時,ALE端也以1/6的振蕩頻率固定輸出正脈沖,
43、因而ALE信號可以用作對外輸出時鐘或定時信號。如果你想看一下AT89C51芯片的好壞,可用示波器查看ALE端是否有脈沖信號輸出,如有脈沖信號輸出,則AT89C51基本上是好的。ALE的負載驅(qū)動能力為8個LS型TTL(低功耗高速TTL)。</p><p> PSEN(29腳);程序存儲允許輸出信號引腳,在訪問片外程序存儲器時,此端定時輸出負脈沖作為讀片外存儲器的選通信號。此引腳接ERROM的OE端。PSEN端有效
44、,即允許讀出ERROM/ROM中的指令碼。CPU在從外部ERROM/ROM取指令期間,每個周期PSEN兩次有效。不過,在訪問片外RAM時,要少產(chǎn)生兩次PSEN負脈沖信號。要檢查一個AT89C51小系統(tǒng)上電后CPU能否正常到ERROM/ROM中讀取指令碼,也可用于示波器看PSEN端有無脈沖輸出。如有,說明基本上工作正常。</p><p> EA/VPP(31腳):外部程序存儲器地址允許輸入端/固化編程電壓輸入端。
45、當EA引腳接高電平時,CPU只訪問片內(nèi)ERROM/ROM并執(zhí)行內(nèi)部程序存儲器中的指令。但在PC(程序計數(shù)器)的值超過OFFFH(對8751/8051為4k)時,將自動轉(zhuǎn)向執(zhí)行片外存儲器的程序。當出入信號EA引腳接低電平(接地)時,CPU只訪問外部ERROM/ROM并執(zhí)行外部程序存儲器中的指令,而不管是否有片內(nèi)程序存儲器。對于無芯片內(nèi)的ROM的8031或8032,須外擴ERROM,此時必須將EA引腳接地。如果使用有片內(nèi)ROM的STC89C
46、52,外擴ERROM也是可以的,但也要使EA接地。</p><p> 4)I/O(輸入/輸出端口,P0,P1,P2,P3)</p><p> P0口:P0口是一個漏極開路的8位準雙向I/O端口。</p><p> P1口:8位準雙向I/O端口。</p><p> P2口:即可以做地址總線輸出地址高8位,也可以做普通I/O用,(此時為準
47、雙向口)。</p><p> P3口:雙功能口,即可以做普通I/O口用(此時為準向口,也可以按每位定義實現(xiàn)第二功能操作)。見表2-1。</p><p> 表2-1 P3口的第二功能表</p><p> 控制器接口說明(HD44780及兼容芯片)</p><p><b> 1、 基本操作時序</b></p&
48、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
49、 輸出: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-2所示:</p><p> 表2-2狀態(tài)字說明(a)</p><p&
50、gt; 表2-3 狀態(tài)字說明(b)</p><p> 注:對控制器進行讀寫操作之前,都必須進行讀寫檢測,確保STA7為0</p><p><b> RAM地址映射圖</b></p><p> 控制器內(nèi)部帶有80*8位的RAM緩沖區(qū),對應關(guān)系如下圖2-5所示:</p><p> 表2-4 RAM地址映射圖LCD1
51、6字*2行</p><p> 顯示模式設置如表2-5所示:</p><p> 表2-5 顯示模式設置</p><p> 顯示開關(guān)及光標設置如表2-6所示:</p><p> 表2-6 顯示開關(guān)及光標設置</p><p><b> 數(shù)據(jù)控制</b></p><p>
52、 控制器內(nèi)部沒有一個數(shù)據(jù)地址指針,用戶可通過它們來訪問內(nèi)部的全部80字節(jié)RAM。</p><p> 3 出租車計價系統(tǒng)的軟件設計</p><p> 在設計中采用單片機的P1口控制鍵盤在本次設計中像電路鍵盤,其中P1.0到P1.4口作為鍵盤的輸入,直流電機電路的控制線用了P2口線,P3.0、P3.1、P3.2分別為led信號控制腳。顯示電路用到了P0和P2口,P0口為液晶的數(shù)據(jù)口。&l
53、t;/p><p><b> 3.1中斷子函數(shù)</b></p><p> 對于中斷程序,只要定時器計數(shù)滿就會產(chǎn)生中斷50ms中斷一次,共計20次,秒鐘加1,秒鐘計滿再分鐘加,當分鐘加到99時全部清零。以下是中斷子函數(shù)的流程圖如圖3-1所示:</p><p> 圖3-1 中斷子程序流程圖</p><p><b>
54、 中斷子程序如下:</b></p><p> void time0_int() interrupt 1</p><p> static uchar value;</p><p> TH0 = 0x3c;</p><p> TL0 = 0xb0; // 50ms</p><p><b&
55、gt; value ++;</b></p><p> if(value % 6 == 0)</p><p> flag_300ms = 1;</p><p> if(value >= 20)</p><p> flag_1s = 1;</p><p> value = 0;</p&g
56、t;<p> 3.2判鍵子函數(shù)(按鍵子程序)</p><p> 對于獨立式鍵盤判鍵,首先看有鍵按下不,如果有鍵按下則延時一會兒,在判斷是否真的有鍵按下,如果確實有鍵按下,在判鍵釋放,最后執(zhí)行鍵功能程序。判鍵子函數(shù)的流程框圖如圖3-2所示: </p><p><b> 圖3-2判鍵子程序</b></p><p>
57、 流程圖判鍵子程序如下:</p><p> void key()</p><p> static uchar key_new = 0,key_old = 0,key_value = 0;</p><p> key_io |= 0x3f;</p><p> if(key_new == 0) //按鍵松開</p><
58、;p> if((key_io & 0x3f) == 0x3f)</p><p> key_value ++;</p><p><b> else </b></p><p> if((key_io & 0x3f) != 0x3f) //按鍵按下</p><p> key_value ++;
59、</p><p><b> else </b></p><p> key_value =0;</p><p> if(key_value >= 5)//按鍵按下消抖key_value = 0;</p><p> key_new = 0; //按鍵松開后進入等待松開按鍵狀態(tài)</p>&l
60、t;p><b> 3.4顯示子程序</b></p><p> 1602液晶是字符型液晶,它的內(nèi)部自帶字符庫,它可以寫兩行的字符,同時每行可以寫40個字符,在寫顯示程序的時候,我們先寫命令,再設定字符顯示,最后寫數(shù)據(jù),在每寫一次命令或數(shù)據(jù)都需要判斷液晶是否忙。液晶顯示程序流程圖如圖3-3所示:</p><p> 圖3-3 液晶顯示程序流程圖</p>
61、;<p><b> 液晶顯示程序如下:</b></p><p> void jishu_chashu()</p><p> if((flag_1s == 1) && (flag_time_en == 1))</p><p> flag_1s = 0; miao++ if(miao >= 60)miao
62、 = 0;fen ++;</p><p> if(fen >= 60)fen = 0;</p><p> shi++;if(shi >= 24)shi = 0;</p><p> 3.5總程序流程框圖</p><p> 圖3-4整體程序流程圖</p><p> 具體程序見附錄 源程序</p
63、><p><b> 4 系統(tǒng)調(diào)試</b></p><p> 4.1 單片機仿真軟件在線調(diào)試—PROTEUS </p><p> 1.打開Proteus軟件。</p><p> 2.選擇file菜單下的open design選項,找到所需的元器件,元器件上單擊右鍵選中,再單擊左鍵對其進行命名和賦值,接著在編輯器左邊的一
64、欄中,找出并繪制設計所要的各種元器件,按照電路圖連接后并保存。</p><p> 3.將用keil編譯產(chǎn)生的hex文件下載到單片機中:雙擊51單片機,在對話框中把保存過的hex文件打開,再單擊確定。</p><p> 4.單擊左下角運行按鈕,進行軟件仿真調(diào)試,直到出現(xiàn)正確的結(jié)果。下圖3-4是在PROTEUS中仿真通過的整體硬件原理圖。 </p>
65、;<p> 圖4-1 PROTEUS 仿真原理圖</p><p> 4.2出租車計價器硬件調(diào)試</p><p><b> 功能介紹:</b></p><p> 出租車計價器采用at89c51存儲芯片+LCD1602液晶顯示等設計而成。3公里內(nèi)為起步價,3公里以外為每公里多少錢1公里,白天默認是1.8元,晚上默認是2.2元,
66、這個價格用戶可以設定,等待3分鐘以內(nèi)不計價,3分鐘以外每分鐘多少元,白天默認是0.5元,晚上默認是1元,這個價格用戶可以設定。能進行白天/晚上轉(zhuǎn)換、途中等待時間和單價、總金額和單價所有數(shù)據(jù)輸出采用LCD1602顯示。設置好的參數(shù)保存在AT24C02存儲芯片內(nèi),掉電不需要重新再設置。</p><p> 總價=3公里內(nèi)路程的價+3公里外的路程*單價+等待的時間*單價。</p><p><
67、;b> 按鍵說明:</b></p><p> 第一排:左邊第一個鍵,清零鍵,從新計價。</p><p> 第二個鍵,模擬里程數(shù)增加,按一下距離就加 0.1KM。</p><p> 第二排:左邊第一個鍵:確定鍵,進入菜單設計參數(shù)。</p><p> 第二個鍵:加鍵,在設置參數(shù)時加變量的。</p><
68、;p> 第三個鍵:減鍵/等待時間開始、暫停鍵</p><p> 第四個鍵:退出菜單設置鍵。 </p><p> 在正常顯示界面下 </p><p> 第二排第三個鍵為“等待時間開始和暫停鍵”按一下時間走,再按下時間暫停。</p><p><b> 在參數(shù)設置界面下</b></p><
69、;p> 第二排第三個鍵為“減鍵”。</p><p><b> 參數(shù)設置:</b></p><p> 按下“確定鍵”進入設計界面進行參數(shù)設置:會有3個不同的選項,在此界面按“加、減鍵”可選擇不再的選項并有光標會在對應的選項上閃爍,再按下“確定鍵”可進入相對應的參數(shù)設置界面。</p><p> 第1項:白天和晚上的模式設置</p
70、><p> 第2項:白天行駛的參數(shù)設置</p><p> 第3項:晚上行駛的參數(shù)設置</p><p> 按下“確定鍵”進入第1項白天和晚上模式設置:會有2個不同的選項,在此界面按“加、減鍵”可選擇白天模式和晚上模式并光標會在對應的選項上閃爍。設置好后按“退出鍵”可返回上一級設置菜單界面。</p><p> bai-t:表示是白天的模式&l
71、t;/p><p> wan-s:表示是晚上的模式</p><p> 按下“確定鍵”進入第2項白天行駛的參數(shù)設置:會有3個不同的選項,在此界面按“確定鍵”可選擇不同的選項并光標會在對應的選項上閃爍,再按“加、減鍵”對應該的單價會加、減。設置好后按“退出鍵”可返回上一級設置菜單界面。</p><p> 第1項3L: 白天3公里內(nèi)的單價設置(元) </p>
72、<p> 第2項3W:白天3公里外的單價設置(元/公里)</p><p> 第3項dd: 白天等待的時間單價設置(元/分鐘)</p><p> 按下“確定鍵”進入第3項晚上行駛的參數(shù)設置:會有3個不同的選項,在此界面按“確定鍵”可選擇不同的選項并光標會在對應的選項上閃爍,再按“加、減鍵”對應該的單價會加、減。設置好后按“退出鍵”可返回上一級設置菜單界面。</p>
73、;<p> 第1項3L: 晚上3公里內(nèi)的單價設置(元) </p><p> 第2項3W:晚上3公里外的單價設置(元/公里)</p><p> 第3項dd: 晚上等待的時間單價設置(元/分鐘)</p><p><b> 5 設計體會與展望</b></p><p> 出租車計費器系統(tǒng)的設計已經(jīng)全部完成
74、,能按預期的效果進行模擬汽車啟動,停止,暫停等功能,并能夠通過LCD顯示車費數(shù)目。本款出租車計價器包括單價輸出、單價調(diào)整、顯示當前的系統(tǒng)時間等功能。另外,多功能出租車計價器還具有性能可靠、電路簡單、成本低、實用性強等特點,加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。</p><p> 幾個月來,經(jīng)過自己努力,基本上完成了設計要求的內(nèi)容,在系統(tǒng)可行性分析、原理圖設計等方面都作了許多實際工作,取得了一些成績,同時也
75、遇到了一些問題,存在一些不足。經(jīng)過這幾個月的學習和工作,我覺得自己不論是在理論知識方面還是在動手能力方面都有了不小的進步,自己從中受益匪淺。這次設計很好的把以前學到的理論知識應用于實踐,使我認識到理論知識與實踐之間有一定的差距,只有通過不斷的努力學習和實踐才能很好的把理論知識應用到實踐當中,也只有通過不斷的實踐才能對理論知識的理解。</p><p> 通過這次設計不僅學會了如何去查找相關(guān)資料,更重要的是通過查找
76、資料和翻閱書籍學到了不少知識,擴大了知識面,提高了知識水平。經(jīng)過單元設計和系統(tǒng)設計鞏固了以前所學的專業(yè)知識,自己真正認識到理論聯(lián)系實際的重要性,為以后的學習和工作提供了很多有價值的經(jīng)驗。通過這次設計不僅增強了自己的動腦能力和動手能力,也提高了我思考問題、分析問題、解決問題的能力,更重要的是學會用工程化的思想來解決問題。這在以前的學習過程中是不曾學到的。在短短的三個月時間內(nèi)完成設計內(nèi)容,在很大程度上得益于老師的幫助。</p>
77、<p> 這次設計是我認真認識到完整、嚴謹、科學分析問題、解決問題的思想是多么的重要,只有擁有了科學的態(tài)度才能設計出有用的產(chǎn)品。另外通過本次設計,是我認識到自己理論知識的應用能力有很大的欠缺,需要在以后的學習中進一步提高。</p><p><b> 鳴 謝</b></p><p> 時間飛逝,轉(zhuǎn)瞬間為期數(shù)月的畢業(yè)設計結(jié)束了,在這個過程當中學到了很多
78、東西,能力得到了提升,不僅僅是知識方面,更重要的是為人處事,如何去面對壓力和挑戰(zhàn)。這最后的一年是是學到的最多,懂得的最多的一年。</p><p> 這次畢業(yè)設計能夠順利完成,首先我要感謝指導老師黃小容老師,黃小容老師治學嚴謹、學識淵博,在畢業(yè)設計的過程中,從各個方面給予我諸多幫助。黃小容老師嚴謹細致、一絲不茍的作風,精益求精、注重培養(yǎng)學生獨立自主精神態(tài)度,在這里向黃小容老師表示衷心的感謝。</p>
79、<p><b> 參考文獻</b></p><p> [1] 張毅剛, 劉杰. MCS-51單片機原理及應用[M]. 哈爾濱: 哈爾濱工業(yè)大學出版社, 2004.</p><p> [2] 李萍. AT89S51單片機原理、開發(fā)月應用實例[M]. 北京: 中國電力出版社, 2008.</p><p> [3] 魏宋揚.
80、 出租汽車計價器常見故障及分析處理[J]. 中國測試, 2009, 35(5): 126-127.</p><p> [4] 萬福君, 潘松峰, 劉芳. MCS-51單片機原理、系統(tǒng)設計及應用[M].北京:清華大學出版社, 2008.</p><p> [5] 馬忠梅, 籍順心等. 單片機的C語言應用程序設計[M]. 北京: 北京航空航天大學出版社, 2005.</p>
81、<p> [6] 黃遵熹. 單片機原理接口與應用[M]. 西安: 西北工業(yè)大學出版社, 2000.</p><p> [7] 楊世品, 陳林.基于proteus的單片機出租車計價器的設計[J]. 中文核心期, 2007, (23): 4-2.</p><p> [8] 張小虎, 劉潔. 基于單片機的出租車計價器編碼傳感器的設計[J]. 自動化技術(shù)與應用, 2005, (
82、24): 10.</p><p> [9] 張鑫, 華臻陳書謙. 單片機原理及應用[M]. 北京工業(yè)出版社. 2005.</p><p> [10] 張齊. 單片機原理與應用系統(tǒng)設計[M]. 北京: 電子工業(yè)出版社, 2010.</p><p> [11] 李廣弟,朱月秀,冷祖祁.單片機基礎(chǔ)[M].第3版.北京航空航天大學出版社,2007年1月</p
83、><p> [12]李華.MCS-51系列單片機實用接口技術(shù)[M].北京航空航天大學出版社,1996</p><p> [13]陳海宴.51單片機原理及應用[M].北京航空航天大學出版社,2010.</p><p> [14] 胡輝,單片機原理及應用設計—21世紀高等院校規(guī)劃教材[M],水利水電出版社,2005.7;</p><p> [
84、15] 劉守義,單片機應用技術(shù)[M],西安:西安電子科技大學出版社,1996.8;</p><p> [16]Chirs J.Georgopoulos.Interface Fundamentals In Microcessor--Controlled System[M].D.Reidel Publishing Company,1985<
85、/p><p><b> 附錄I:系統(tǒng)原理圖</b></p><p><b> 附錄II:實物圖</b></p><p><b> 附錄III:源程序</b></p><p> #include <reg52.h> //調(diào)用單片機頭文件</
86、p><p> #define uchar unsigned char //無符號字符型 宏定義變量范圍0~255</p><p> #define uint unsigned int //無符號整型 宏定義變量范圍0~65535</p><p> uchar miao,fen = 0,shi;</p><p> uchar fl
87、ag_bai_hei; //白天的晚上的標志位</p><p> uchar value;</p><p> uint bai_3l_price = 70; //白天3千米內(nèi)的單價 7元</p><p> uint bai_3w_price = 18; //白天3千米外的單價/千米 1.8元</p
88、><p> uint bai_wait_price = 5; //白天等待時的單價/分鐘 0.5元</p><p> uint wan_3l_price = 80; //晚上3千米內(nèi)的單價/千米 8元</p><p> uint wan_3w_price = 22; //晚上3千米外的單價/千米 2.2元</p&
89、gt;<p> uint wan_wait_price = 10; //晚上等待時的單價/分鐘 1元</p><p> uint distance = 0; //行使的距離</p><p> uint zong_jia; //總的價</p><p> bit flag_300ms = 0;</p><
90、;p> bit flag_1s ;</p><p> bit flag_time_en = 0;</p><p> #include "lcd1602.h"</p><p> /***********************1ms延時函數(shù)*****************************/</p><p&
91、gt; void delay_1ms(uint q)</p><p><b> uint i,j;</b></p><p> for(i=0;i<q;i++)</p><p> for(j=0;j<120;j++);</p><p> /****************自動初始化保存的數(shù)據(jù)*****
92、**************/ </p><p> void zidong_chushifa_iic()</p><p> value = read_24c02(200);</p><p> value = read_24c02(200);</p><p> if(value != 0x91)//新的單片機初始單片機內(nèi)
93、問EEPOM</p><p> value = 0x91;</p><p> write_iic_data();</p><p> write_24c02(200,value); //保存數(shù)據(jù)</p><p> delay_1ms(300);</p><p> /****************讀出來保
94、存的數(shù)據(jù)**********************/ </p><p> void read_iic_data()</p><p><b> {</b></p><p> flag_bai_hei = read_24c02(0);</p><p> bai_3l_price = read_24c02(2
95、);</p><p> bai_3l_price = bai_3l_price * 256 + read_24c02(1);</p><p> bai_3w_price = read_24c02(4);</p><p> bai_3w_price = bai_3w_price * 256 + read_24c02(3);</p><p>
96、; bai_wait_price = read_24c02(6);</p><p> bai_wait_price = bai_wait_price * 256 + read_24c02(5);</p><p> wan_3l_price = read_24c02(8);</p><p> wan_3l_price = wan_3l_price * 256
97、+ read_24c02(7);</p><p> wan_3w_price = read_24c02(10);</p><p> wan_3w_price = wan_3w_price * 256 + read_24c02(9);</p><p> wan_wait_price = read_24c02(12);</p><p>
98、wan_wait_price = wan_wait_price * 256 + read_24c02(11);</p><p><b> }</b></p><p> /****************獨立按鍵處理函數(shù)************************/ </p><p> #define key_io P2</
99、p><p> uchar key_can;</p><p> void key()</p><p> static uchar key_new = 0,key_old = 0,key_value = 0;</p><p> key_io |= 0x3f;</p><p> if(key_new == 0) /
100、/按鍵松開 </p><p> if((key_io & 0x3f) == 0x3f)</p><p> key_value ++;</p><p><b> else </b></p><p> key_value = 0;</p><p> if(key_value >
101、;= 5) //按鍵松開松手檢測</p><p> key_value = 0;</p><p> key_new = 1;//按鍵松開后進入等待按鍵狀態(tài)</p><p><b> else </b></p><p> if((key_io & 0x3f) != 0x3f) //按鍵按下</p
102、><p> key_value ++;</p><p><b> else </b></p><p> key_value =0;</p><p> if(key_value >= 5)//按鍵按下消抖</p><p> key_value = 0;</p><p
103、> key_new = 0; //按鍵松開后進入等待松開按鍵狀態(tài)</p><p> key_can = 20;</p><p> if((key_new == 0) && (key_old == 1))</p><p> switch(key_io & 0x3f)</p><p> case 0x
104、3e: key_can = 1; break; //得到按鍵值 </p><p> case 0x3d: key_can = 2; break; //得到按鍵值 </p><p> case 0x3b: key_can = 3; break; //得到按鍵值 </p><p> case 0x37: key_can = 4; break; //
105、得到按鍵值 </p><p> case 0x1f: key_can = 5; break; //得到按鍵值 </p><p> case 0x2f: key_can = 6; break; //得到按鍵值 </p><p> //write_sfm2(2,0,key_can); //按鍵按下顯示按鍵值</p><p>
106、 key_old = key_new; </p><p> #include "menu.h"</p><p> /*********************對應菜單內(nèi)的處理函數(shù)******************/</p><p> void menu_dis()</p><p> if(menu_1 ==
107、0)</p><p> if(key_can == 6)</p><p> distance ++;</p><p> write_sfm4(1,0,distance); </p><p> if(key_can == 5) //清零 從新計價</p><p> flag_time_en = 0;
108、</p><p><b> shi = 0;</b></p><p><b> fen = 0;</b></p><p><b> miao = 0;</b></p><p> zong_jia = 0;</p><p> distance =
109、 0;</p><p><b> }</b></p><p> if(key_can == 2)</p><p> flag_time_en = ~flag_time_en;</p><p> if(flag_300ms == 1)</p><p> flag_300ms = 0;<
110、;/p><p> if(distance <= 30)//3公里內(nèi)的價格</p><p> if(flag_bai_hei == 0)</p><p> if(fen <= 3)</p><p> zong_jia = bai_3l_price;</p><p><b> else <
111、/b></p><p> zong_jia = bai_3l_price + (shi * 60 + fen - 3) * bai_wait_price;</p><p><b> else </b></p><p> if(fen <= 3)</p><p> zong_jia = wan_3l
112、_price; </p><p><b> else </b></p><p> zong_jia = wan_3l_price + (shi * 60 + fen - 3) * bai_wait_price;</p><p> else //3公里外的價格</p><p> if(flag_bai_h
113、ei == 0)</p><p> if(fen <= 3)</p><p> zong_jia = bai_3l_price + bai_3w_price * (distance - 30) / 10 ;</p><p><b> else </b></p><p> zong_jia = bai_3l_
114、price + bai_3w_price * (distance - 30) / 10 + (shi * 60 + fen - 3) * bai_wait_price;</p><p><b> else </b></p><p> if(fen <= 3)</p><p> zong_jia = wan_3l_price + w
115、an_3w_price * (distance - 30) / 10 ;</p><p><b> else </b></p><p> zong_jia = wan_3l_price + wan_3w_price * (distance - 30) / 10 + (shi * 60 + fen - 3) * wan_wait_price;</p>
116、;<p> if(flag_bai_hei == 0)</p><p> write_sfm2_dian(2,9,bai_3w_price);</p><p><b> else </b></p><p> write_sfm2_dian(2,9,wan_3w_price);</p><p>
117、write_sfm2(2,0,shi); </p><p> write_sfm2(2,3,fen); </p><p> write_sfm2(2,6,miao); </p><p> write_sfm4(1,10,zong_jia); </p><p> write_sfm4(1,0,distance); </p>
118、<p> write_zifu(1,15,0x5c);//¥</p><p> write_zifu(2,12,0x5c);//¥</p><p> *********************顯示函數(shù)******************/</p><p> void jishu_chashu()</p><p>
119、; if((flag_1s == 1) && (flag_time_en == 1))</p><p> flag_1s = 0;</p><p><b> miao++;</b></p><p> if(miao >= 60)</p><p> miao = 0;fen ++;</
120、p><p> if(fen >= 60)fen = 0;shi++;</p><p> if(shi >= 24)shi = 0;</p><p> /*************定時器0初始化程序***************/</p><p> void time_init() </p><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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計----多功能單片機出租車計價器
- 基于單片機出租車多功能計價器設計畢業(yè)設計
- 畢業(yè)論文--基于單片機的出租車計價器設計
- 基于單片機的出租車計價器設計畢業(yè)論文
- 基于單片機的出租車計價器設計【畢業(yè)論文】
- 畢業(yè)論文--基于51單片機設計的多功能出租車計價器
- 畢業(yè)論文---基于單片機的出租車計價器的設計
- 畢業(yè)論文(設計)基于單片機的出租車計價器的設計
- 基于單片機的出租車計價器設計
- 基于單片機的出租車計價器
- 基于51單片機設計的多功能出租車計價器
- 畢業(yè)論文-- 基于單片機的出租車計價器軟件設計
- 基于單片機的出租車計價器畢業(yè)設計
- 基于單片機的出租車計價器畢業(yè)設計
- 基于單片機的出租車計價器畢業(yè)設計
- 基于單片機的出租車計價器設計畢業(yè)設計論文
- 基于單片機的出租車計價器設計畢業(yè)設計論文
- 多功能出租車計價器畢業(yè)設計論文
- 基于51單片機的出租車計價器畢業(yè)設計論文
- 基于51單片機的出租車計價器設計
評論
0/150
提交評論