![畢業(yè)論文(出租車計價器設(shè)計)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/6624a524-fa9b-4737-88e6-5a89c5b5fc13/6624a524-fa9b-4737-88e6-5a89c5b5fc131.gif)
![畢業(yè)論文(出租車計價器設(shè)計)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/6624a524-fa9b-4737-88e6-5a89c5b5fc13/6624a524-fa9b-4737-88e6-5a89c5b5fc132.gif)
![畢業(yè)論文(出租車計價器設(shè)計)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/6624a524-fa9b-4737-88e6-5a89c5b5fc13/6624a524-fa9b-4737-88e6-5a89c5b5fc133.gif)
![畢業(yè)論文(出租車計價器設(shè)計)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/6624a524-fa9b-4737-88e6-5a89c5b5fc13/6624a524-fa9b-4737-88e6-5a89c5b5fc134.gif)
![畢業(yè)論文(出租車計價器設(shè)計)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/24/6624a524-fa9b-4737-88e6-5a89c5b5fc13/6624a524-fa9b-4737-88e6-5a89c5b5fc135.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、河北機(jī)電職業(yè)技術(shù)學(xué)院畢業(yè)論文河北機(jī)電職業(yè)技術(shù)學(xué)院 姓名:陸大鵬 系別:電氣工程系 班級:應(yīng)用電子技術(shù)基于51單片機(jī)設(shè)計的多功能出租車計價器河北機(jī)電職業(yè)技術(shù)學(xué)院畢業(yè)論文目 錄第1章 引 言·11. 1 出租車計價器概述11. 2 本設(shè)計任務(wù)11.2.1 設(shè)計任務(wù) 11.2.2 設(shè)計要求11. 3 系統(tǒng)主要功能2第2章 出租車計價器硬件設(shè)計 22.1 系統(tǒng)的硬件構(gòu)成及功能22. 2 AT89S51單片機(jī)及其引腳說明22.3 AT24C02引腳圖及其引腳功能42. 4 AT24C02 掉電存儲單元的設(shè)計52.5 里程計算、計價單元的設(shè)計62.6 數(shù)據(jù)顯示單元設(shè)計·6第3章 系統(tǒng)軟
2、件設(shè)計83. 1 系統(tǒng)主程序設(shè)計83. 2 定時中斷程序設(shè)計· 103. 3 里程計數(shù)中斷服務(wù)程序設(shè)計103.4 中途等待中斷服務(wù)程序設(shè)計103. 5 鍵盤服務(wù)程序設(shè)計103. 6 顯示子程序服務(wù)程序設(shè)計10第4章系統(tǒng)調(diào)試與測試結(jié)果分析114. 1 使用的儀器儀表114.2 系統(tǒng)調(diào)試11結(jié) 束 語121、計價表使用說明122、全部源程序12 第1章 引 言本次課程設(shè)計利用單片機(jī)技術(shù)來實(shí)現(xiàn)一臺多功能出租車計價器,具有性能可靠、電路簡單、成本低等特點(diǎn)。1.1 出租車計價器概述計價器顯示的營運(yùn)金額是營運(yùn)里程與價格的函數(shù)(等候時間一般折算成一定比例的里程來計算)。出租車計價器通過傳感器與行駛
3、車輛連接。出租汽車的實(shí)際里程通過傳感器的脈沖信號在計價器里折算成一定的計價營運(yùn)里程。目前市場上出租車計價器功能主要有具有數(shù)據(jù)的復(fù)位功能、白天/晚上轉(zhuǎn)換功能、數(shù)據(jù)輸出功能、計時計價功能等等,但能夠進(jìn)行語音播報數(shù)據(jù)信息的出租車計價器還是比較少見的,針對這一點(diǎn)我們來設(shè)計一款多功能出租車計價器,在原有功能的基礎(chǔ)上增加單價輸出、單價調(diào)整、路程輸出、顯示當(dāng)前的系統(tǒng)時間、語音播報數(shù)據(jù)信息等功能。1.2 本設(shè)計任務(wù)1.2.1 設(shè)計任務(wù)設(shè)計一款基于AT89S51單片機(jī)的出租車計價器。1.2.2 設(shè)計要求1.基本要求(1)不同情況具有不同的收費(fèi)標(biāo)準(zhǔn)。l 白天l 晚上l 途中等待(>10min 開始收費(fèi))(1
4、) 能進(jìn)行手動修改單價。(2) 具有數(shù)據(jù)的復(fù)位功能。(3) IO 口分配的簡易要求。l 距離檢測使用霍爾開關(guān)A44El 白天/晚上收費(fèi)標(biāo)準(zhǔn)的轉(zhuǎn)換開關(guān)l 數(shù)據(jù)的清零開關(guān)l 單價的調(diào)整(最好使用和按鍵)(4) 數(shù)據(jù)輸出(采用LCM103)。l 單價輸出 2 位l 路程輸出 2 位l 總金額輸出 3 位(5) 按鍵。l 啟動計時開關(guān)l 數(shù)據(jù)復(fù)位(清零)l 白天/晚上轉(zhuǎn)換2.發(fā)揮部分(1) 能夠在掉電的情況下存儲單價等數(shù)據(jù)。(2) 能夠顯示當(dāng)前的系統(tǒng)時間。(3) 語音播報數(shù)據(jù)信息。1.3 系統(tǒng)主要功能 本課程設(shè)計所設(shè)計的出租車計價器的主要功能有:數(shù)據(jù)的復(fù)位、白天/晚上轉(zhuǎn)換、數(shù)據(jù)輸出、計時計價、單價輸出
5、及調(diào)整、路程輸出、語音播報數(shù)據(jù)信息、實(shí)現(xiàn)在系統(tǒng)掉電的時候保存單價和系統(tǒng)時間等信息等功能。輸出采用8 段數(shù)碼顯示管。本電路設(shè)計的計價器不但能實(shí)現(xiàn)基本的計價,而且還能根據(jù)白天、黑夜、中途等待來調(diào)節(jié)單價,同時在不計價的時候還能作為時鐘為司機(jī)同志提供方便。第2章 計價器硬件設(shè)計本系統(tǒng)的硬件設(shè)計主要包括單片機(jī)AT89S51、數(shù)據(jù)顯示部件、A44E霍爾傳感器電路、AT24C02 掉電存儲單元的設(shè)計、里程計算及計價單元的設(shè)計。在硬件設(shè)計過程中,充分利用各部件的功能,實(shí)現(xiàn)多功能的出租車計價器設(shè)計。2.1 系統(tǒng)的硬件構(gòu)成及功能計價器的單片機(jī)控制方案圖如圖1 單片機(jī)控制方案圖所示。它由以下幾個部件組成:單片機(jī)AT
6、89S51、總金額及單價顯示部件、鍵盤控制部件,AT24C02 掉電存儲控制、里程計算單元、串中顯示驅(qū)動電路等。利用單片機(jī)豐富的IO端口,及其控制的靈活性,實(shí)現(xiàn)基本的里程計價功能和價格調(diào)節(jié)、時鐘顯示功能。不但能實(shí)現(xiàn)所要求的功能而且能在很大的程度上擴(kuò)展功能,而且還可以方便的對系統(tǒng)進(jìn)行升級。具體電路參見附錄中“多功能出租車計價器總體電路圖”如圖1 單片機(jī)控制方案圖。圖1 單片機(jī)控制方案圖2.2 AT89S51單片機(jī)及其引腳說明AT89S51是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4KB的可系統(tǒng)編程的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技
7、術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序存儲器既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用 8位微處理器于單片芯片中,具有高性價比。AT89S51是一個有40個引腳的芯片,引腳配置如圖2 AT89S51引腳配置所示。圖2 AT89S51引腳配置AT89S51芯片的40個引腳功能為:VCC 電源電壓。GND 接地。RST 復(fù)位輸入。當(dāng)RST變?yōu)楦唠娖讲⒈3?個機(jī)器周期時,將使單片機(jī)復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFR AUXR的DISRTO位(地址8EH)可打開或關(guān)閉該功能。DISKRTO位缺省為RESET輸出高電平打開狀態(tài)。XTAL1 反向振蕩放大器的輸入及
8、內(nèi)部時鐘工作電路的輸入。XTAL2 來自反向振蕩放大器的輸出。P0口 一組8位漏極開路型雙向I/O口。也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能驅(qū)動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時,P0口接收指令字節(jié),而在程序校驗(yàn)時,輸出指令字節(jié),校驗(yàn)時,要求外接上拉電阻。P1口 一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入
9、口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。Flash編程和程序校驗(yàn)期間,P1接收低8位地址。P1口部分端口引腳及功能如表1 P1口特殊功能所示。表1 P1口特殊功能P1口引腳特殊功能P1.5MOSI(用于ISP編程)P1.6MOSI(用于ISP編程)P1.7SCK(用于ISP編程)P2口 一個帶內(nèi)部上拉電阻的8位雙向I/O口。P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序
10、存儲器或16位地址的外部數(shù)據(jù)存儲器時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器時,P2口線上的內(nèi)容在整個訪問期間不改變。Flash編程和程序校驗(yàn)期間,P2亦接收低8位地址。P3口 一個帶內(nèi)部上拉電阻的8位雙向I/O口。P3的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫“1”時,它們被內(nèi)部的上拉電阻把拉到高電并可作輸入端口。作輸入端口使用時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表2 P3口特殊功能所示。P3口還接收一些用于Flash閃速存儲器編程和程序校驗(yàn)期間的控制信號。表2 P3
11、口特殊功能P3口引腳特殊功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(定時器0外部輸入)P3.5T1(定時器1外部輸入)P3.6 (外部數(shù)據(jù)存儲器寫選通)P3.7 (外部數(shù)據(jù)存儲器讀選通)PSEN/ 程序儲存允許輸出是外部程序存儲器的讀先通信號,當(dāng)AT89S51由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次PSEN/有效,即輸出兩個脈沖。當(dāng)訪問外部數(shù)據(jù)存儲器,沒有兩次有效的PSEN/信號。EA/VPP 外部訪問允許。欲使CPU僅訪問外部程序存儲器,EA端必須保持低電平,需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會
12、鎖存EA端狀態(tài)。Flash存儲器編程時,該引腳加上+12V的編程電壓VPP。2.3 AT24C02引腳圖及其引腳功能AT24C02芯片引腳配置如圖3 AT24C02引腳配置圖所示。圖3 AT24C02引腳配置圖AT24C02芯片DIP封裝,共有8個引腳,其中:A2A0 地址引腳;SDA、SCL I2C總線接口;WP 寫保護(hù)引腳,WP接VSS時,禁止寫入高位地址,WP接VDD時,允許寫入任何地址;VCC 電源端GND 接地端2.4 AT24C02 掉電存儲單元的設(shè)計掉電存儲單元的作用是在電源斷開的時候,存儲當(dāng)前設(shè)定的單價信息。AT24C02是ATMEL公司的2KB 字節(jié)的電可擦除存儲芯片,采用兩
13、線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40 年以上,而且采用8 腳的DIP 封裝,使用方便。其電路如圖 4 掉電存儲電路原理圖所示。圖 4 掉電存儲電路原理圖圖中R8、R10 是上拉電阻,其作用是減少AT24C02 的靜態(tài)功耗,由于AT24C02 的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(移位脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)傳送數(shù)據(jù)。每當(dāng)設(shè)定一次單價,系統(tǒng)就自動調(diào)用存儲程序,將單價信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電的時候,自動調(diào)用讀存儲器程序,將存儲器內(nèi)的單價等信息,讀
14、到緩存單元中,供主程序使用。2.5 里程計算、計價單元的設(shè)計里程計算是通過安裝在車輪上的霍爾傳感器A44E檢測到的信號,送到單片機(jī),經(jīng)處理計算,送給顯示單元的。其原理如圖 5 傳感器測距示意圖所示。圖 5 傳感器測距示意圖由于A44E 屬于開關(guān)型的霍爾器件,其工作電壓范圍比較寬(4.518V),其輸出的信號符合TTL 電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的IO 端口上,而且其最高檢測頻率可達(dá)到1MHZ。A44E 集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D 和OC 門輸出E 五個基本部分組成。在輸入端輸入電壓CC V ,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍耳電勢發(fā)生器的兩端,根
15、據(jù)霍耳效應(yīng)原理,當(dāng)霍耳片處在磁場中時,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產(chǎn)生霍耳電勢差H V 輸出,該H V 信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC 門輸出。當(dāng)施加的磁場達(dá)到工作點(diǎn)(即OP B )時,觸發(fā)器輸出高電壓(相對于地電位),使三極管導(dǎo)通,此時OC 門輸出端輸出低電壓,通常稱這種狀態(tài)為開。當(dāng)施加的磁場達(dá)到釋放點(diǎn)(即rP B )時,觸發(fā)器輸出低電壓,三極管截止,使OC 門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍耳開關(guān)完成了一次開關(guān)動作。 我們選擇了P3.2 口作為信號的輸入端,內(nèi)部采用外部中斷0(這樣可以減少程序設(shè)計的麻煩),車輪每轉(zhuǎn)
16、一圈(我們設(shè)車輪的周長是1 米),霍爾開關(guān)就檢測并輸出信號,引起單片機(jī)的中斷,對脈計數(shù),當(dāng)計數(shù)達(dá)到1000 次時,也就是1 公里,單片機(jī)就控制將金額自動的加增加,其計算公式:當(dāng)前單價×公里數(shù)=金額。2.6 數(shù)據(jù)顯示單元設(shè)計由于設(shè)計要求有單價(2 位)、路程(2 位)、總金額(3 位)顯示輸出,加上我們另外擴(kuò)展了時鐘顯示(包含時分秒的顯示),采用LCD 液晶段碼顯示,在距離屏幕1 米之外就無法看清數(shù)據(jù),不能滿足要求,而且在白天其對比度也不能夠滿足要求,因此我們采用6 位LED數(shù)碼管的分屏顯示,如圖 6 采用6 位LED數(shù)碼管的分屏顯示所示:時鐘顯示(圖中顯示為12 點(diǎn)0 分46 秒)圖
17、 6 采用6 位LED數(shù)碼管的分屏顯示數(shù)據(jù)的分屏的顯示是通過按鍵S1 來實(shí)現(xiàn)切換的,如圖 7 S1切換顯示屏所示。圖 7 S1切換顯示屏在出租車不走的時候,按下S1,可以實(shí)現(xiàn)數(shù)據(jù)的分屏顯示;車在行走的時候只有總金額和單價顯示屏在顯示,當(dāng)?shù)竭_(dá)目的地的時候,客戶要求查看總的里程的時候,就可以按下S1 切換到里程和單價顯示屏,供客戶查詢。顯示電路的電路原理圖如圖 8 顯示器原理圖所示。圖 8 顯示器原理圖從單片機(jī)串口輸出的信號先送到左邊的移位寄存器(74HC164),由于移位脈沖的作用,使數(shù)據(jù)向右移,達(dá)到顯示的目的。移位寄存器74HC164還兼作數(shù)碼管的驅(qū)動,插頭1(header1)接電源,插頭2(
18、header2)接數(shù)據(jù)和脈沖輸出端。電路中的三個整流管D1D3 的作用是降低數(shù)碼管的工作電壓,增加其使用壽命。第3章 系統(tǒng)的軟件設(shè)計本系統(tǒng)的軟件設(shè)計主要可分為主程序模塊、定時計數(shù)中斷程序、里程計數(shù)中斷服務(wù)程序、中途等待中斷服務(wù)程序、顯示子程序服務(wù)程序、鍵盤服務(wù)程序六大模塊。下面對各部分模塊作介紹。3.1 系統(tǒng)主程序設(shè)計在主程序模塊中,需要完成對各接口芯片的初始化、出租車起價和單價的初始化、中斷向量的設(shè)計以及開中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設(shè)置啟動/清除標(biāo)志寄存器、里程寄存器和價格寄存器,并對它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等
19、不同的操作。主程序流程圖如圖9 所示。當(dāng)按下S1時,就啟動計價,將根據(jù)里程寄存器中的內(nèi)容計算和判斷出行駛里程是否已超過起價公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價數(shù)和起價數(shù)來計算出當(dāng)前的累計價格,并將結(jié)果存于價格寄存器中,然后將時間和當(dāng)前累計價格送顯示電路顯示出來。當(dāng)?shù)竭_(dá)目的地的時候,由于霍爾開關(guān)沒有送來脈沖信號,就停止計價,顯示當(dāng)前所應(yīng)該付的金額和對應(yīng)的單價,到下次啟動計價時,系統(tǒng)自動對顯示清零,并重新進(jìn)行初始化過程。開始初始化數(shù)據(jù)否S1按下?是S4按下?是否設(shè)定默認(rèn) 單價(白天)設(shè)定晚上單價否按下S4?是啟動計價器設(shè)定中途等待單價圖9 主程序流程圖總路程加1總金額加1里程中斷?S4按下
20、?S3按下?到一公里?停止計價和里程計數(shù)S3按下?否是是否否是顯示金額及單價顯示路程和單價是是否返回時間顯示是否傳感有信號? 3.2 定時中斷服務(wù)程序在定時中斷服務(wù)程序中,每100ms 產(chǎn)生一次中斷,當(dāng)產(chǎn)生10 次中斷的時候,也就到了一秒,送數(shù)據(jù)到相應(yīng)的顯示緩沖單元,并調(diào)用顯示子程序?qū)崟r顯示。其程序流程如圖10 所示。3.3 里程計數(shù)中斷服務(wù)程序每當(dāng)霍爾傳感器輸出一個低電平信號就使單片機(jī)中斷一次,當(dāng)里程計數(shù)器對里程脈沖計滿1000 次時,使微機(jī)進(jìn)入里程計數(shù)中斷服務(wù)程序中。在該程序中,需要完成當(dāng)前行駛里程數(shù)和總額的累加操作,并將結(jié)果存入里程和總額寄存器中。3.4 中途等待中斷服務(wù)程序當(dāng)在計數(shù)狀態(tài)
21、下霍爾開關(guān)沒有輸出信號,片內(nèi)的T1 定時器便被啟動,每當(dāng)計時到達(dá)10分鐘,就對當(dāng)前金額加上中途等待的單價,以后每十分鐘都自動加上中途等待的單價。當(dāng)中途等待結(jié)束的時候,也就自動切換到正常的計價。3.5 顯示子程序服務(wù)程序由于是分屏顯示數(shù)據(jù),所以就要用到4 個顯示子程序,分別是:時分秒顯示子程序(HMS_DIS)、金額單價顯示子程序(CP_DIS)、路程單價顯示子程序(DP_DIS)、單價調(diào)節(jié)子程序(PA_DIS)。3.6 鍵盤服務(wù)程序鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。如圖9 主程序流程圖,圖10 定時
22、中斷服務(wù)程序。開始保護(hù)現(xiàn)場重置計數(shù)初值否中斷10次?是數(shù)據(jù)送顯示緩沖單元調(diào)用顯示子程序恢復(fù)現(xiàn)場并中斷返回第4章 系統(tǒng)調(diào)試與測試結(jié)果分析根據(jù)系統(tǒng)設(shè)計方案,本系統(tǒng)的調(diào)試共分為三大部分:硬件調(diào)試,軟件調(diào)試和軟硬件聯(lián)調(diào)。測試包括里程計價測試、掉電存儲測試測試。4.1 使用的儀器儀表 數(shù)字萬用表DT9203單片機(jī)仿真器WAVE6000燒寫器 GF2100雙蹤穩(wěn)壓穩(wěn)流電源DH1718E-5數(shù)字示波器 TDS10024.2 系統(tǒng)調(diào)試根據(jù)系統(tǒng)設(shè)計方案,本系統(tǒng)的調(diào)試共分為三大部分:硬件調(diào)試,軟件調(diào)試和軟硬件聯(lián)調(diào)。由于在系統(tǒng)設(shè)計中采用模塊設(shè)計法,所以方便對各電路模塊功能進(jìn)行逐級測試。結(jié) 束 語通過本次課程設(shè)計,又
23、使我學(xué)到了許多書本上無法學(xué)到的知識,也使也深該體會到單片機(jī)技術(shù)應(yīng)用領(lǐng)域的廣泛,不僅使我對學(xué)過的單片機(jī)知識有了很多的鞏固,同時也對單片機(jī)這一門課程產(chǎn)生了更大的興趣。在本次課程設(shè)計過程中,我學(xué)會了在網(wǎng)絡(luò)上查找有關(guān)本設(shè)計的各硬件的資源,其中包括:AT89S51單片機(jī)及其引腳說明、AT24C02引腳圖及其引腳功能等,為本次課程設(shè)計提供了一定的資料。由于平時很少進(jìn)行課程設(shè)計,所以對于課程設(shè)計報告的格式也是近期才接觸到,經(jīng)過這兩次的設(shè)計,為我們以后畢業(yè)設(shè)計的制作也奠定了一定的基礎(chǔ)。1計價表使用說明 (1)S1按鍵的功能在出租車不走的時候,按下S1,可以實(shí)現(xiàn)數(shù)據(jù)的分屏顯示;車在行走的時候只有總金額
24、和單價顯示屏在顯示,當(dāng)?shù)竭_(dá)目的地的時候,客戶要求查看總的里程的時候,就可以按下S1 切換到里程和單價顯示屏,供客戶查詢。(2)S2按鍵的功能在按下S1按鍵之后,若接著按下S2鍵則進(jìn)行單價調(diào)整(默認(rèn)為調(diào)整白天單價),當(dāng)接著按下S1時,則進(jìn)行晚上單價調(diào),再次按下S1可進(jìn)行中途等待單價調(diào)整。當(dāng)單價調(diào)整結(jié)束后,可以通過過按下S2按鍵進(jìn)行時間調(diào)整,默認(rèn)為調(diào)整時,接著按下S1可進(jìn)行調(diào)整分,分調(diào)整后再接下S1可進(jìn)行秒調(diào)整。當(dāng)時調(diào)整完成后,若接著按下S2則又可進(jìn)行單價調(diào)整。(3)S3按鍵的功能在顯示金額及單價時,若按下S3鍵則顯示路程和單價,再次按下S3,可返回顯示金額及單價。(4)S4按鍵的功能在按下S1按
25、鍵之后,若接著按下S4按鍵,則進(jìn)行設(shè)定默認(rèn)晚上單價,并啟動計價器,若沒有按下S4則可設(shè)定默認(rèn)單價(白天),并啟動計價器。當(dāng)設(shè)定默認(rèn)晚上單價結(jié)束后,再次接下S4按鍵,則可設(shè)定默認(rèn)中途等待單價,并啟動計價器。當(dāng)設(shè)定默認(rèn)中途等待單價后,若還按一次S4,則返回系統(tǒng)時間的顯示。2.全部源程序/12864(帶字庫) (漢字及字母的顯示,漢字不能錯位)#include <stdio.h>#include <reg52.h>#include <absacc.h>#define lcd_bus P0 / 數(shù)據(jù)總線sbit rs =P32; /數(shù)據(jù)&指令選擇,H:寫數(shù)據(jù)
26、,L:寫指令sbit rw =P33; /讀&寫選擇,H:read,L:writesbit e =P34; /讀寫使能sbit psb=P30; /psb=H,并口模式, psb=L,串口模式sbit rst=P35; /LCD復(fù)位,低有效sbit bf =P07; /忙閑狀態(tài)標(biāo)志位,H:內(nèi)部正執(zhí)行操作,L:空閑sbit P20=P20; /進(jìn)入單價調(diào)節(jié)sbit P21=P21; /計價開始按鍵sbit P23=P23; /時間調(diào)節(jié)按鍵sbit P26=P26; /停車鎖定屏顯按鍵sbit P27=P27; /確認(rèn)按鍵sbit P16=P16; /光電開關(guān)檢測sbit P14=P14;
27、 /373片選void delayus(unsigned char us);/延時子程序usvoid delayms(unsigned int ms);/延時子程序msvoid init_lcd(void);/初始化void chk_busy(void);/檢測忙閑void wr_data(unsigned char dat);/寫數(shù)據(jù)到LCDvoid wr_comm(unsigned char comm);/寫命令到LCDvoid wr_str(unsigned char *s);/向LCD寫字符串,長度64字符之內(nèi)(32個漢字)void wendu();sbit DS18B20=P17;
28、/ ds18b20數(shù)據(jù)線void leddisplay(); / 數(shù)碼管顯示void shijian();bit ResetDS1820(void); /復(fù)位子程序void WRDS18B20(unsigned char); / 寫1個字節(jié)子程序unsigned char RDDS18B20(void); / 讀1個字節(jié)子程序unsigned int GetTempDS18B20(void); /讀取溫度子程序void delay1s(); /延時子程序 1s/*-DS1302程序開始- -*/sbit SCLK1302=P13; / 時鐘sbit DATA1302=P12; / 數(shù)據(jù)sbit
29、 RST1302=P11; / 復(fù)位sbit BIT0=ACC0; / 累加器A 最低位sbit BIT7=ACC7; / 累加器A 最高位void wr1302(unsigned char dat); /向1302寫1個字節(jié)unsigned char rd1302(void); /從1302讀1個字節(jié)void v_wr1302(unsigned char add,unsigned char dat); /先寫地址,后寫1字節(jié)數(shù)據(jù)unsigned char v_rd1302(unsigned char add); /先寫地址,后讀1字節(jié)數(shù)據(jù)void v_set1302(unsigned cha
30、r *p2); /設(shè)置初始時間void v_get1302(void); /讀取DS1302當(dāng)前時間/* -DS1302程序結(jié)束- */unsigned char RcvData8; / 1302接收緩沖區(qū)unsigned char SendData8=0,0,0,0,0,0,0,0; / 1302發(fā)送緩沖區(qū)unsigned char time7; /當(dāng)前時間,格式: 秒 分 時 日 月 星期 年unsigned char settime7=0x20,0x55,0x14,0x20,0x07,0x03,0x09; /時間初始值: 秒 分 時 日 月 星期 年unsigned char ledxs
31、08; / 時-分-秒 LED顯示unsigned char ledxs3; / 數(shù)碼管顯示緩沖區(qū)unsigned char ledxs28; / 時-分-秒 LED顯示unsigned char xs16; /顯示緩沖區(qū)年 月 日 時 分 秒unsigned char aa5=0x30,0x30,0x30,0x30,0; /距離數(shù)組unsigned char bb5=0x30,0x30,0x30,0x30,0; /費(fèi)用數(shù)組unsigned char cc2=0x31,0x35;/單價數(shù)組unsigned char dd4=0,0,0,0; /語音芯片報價數(shù)組void zongkong();v
32、oid tiaojie();void jijia();void baojia();void danjia();unsigned int x=15;/單價main() delayms(200); v_set1302(settime); / 設(shè)置初始時間 zongkong();void zongkong() P14=1; init_lcd();/LCD初始化,并清屏 while(1) shijian(); wendu(); if(P20=0) danjia();/進(jìn)入單價調(diào)節(jié)函數(shù) if(P21=0) init_lcd();/LCD初始化,并清屏 jijia(); /進(jìn)入計價頁面 if(P23=0)
33、 tiaojie(); /調(diào)節(jié)時間 wr_comm(0x80); wr_str("泰山學(xué)院出租車行"); wr_comm(0x90); wr_str(" 歡 迎 您"); wr_comm(0x88); wr_str(" "); wr_data(ledxs20); wr_data(ledxs21); wr_data(ledxs22); wr_data(ledxs23); wr_data(ledxs24); wr_data(ledxs25); wr_data(ledxs26); wr_data(ledxs27); wr_comm(0x98
34、); wr_data(ledxs00); wr_data(ledxs01); wr_data(ledxs02); wr_data(ledxs03); wr_data(ledxs04); wr_data(ledxs05); wr_data(ledxs06); wr_data(ledxs07); wr_comm(0x9d); wr_data(ledxs0); wr_data(ledxs1); wr_str("."); wr_data(ledxs2); wr_str("度"); void shijian() unsigned char i,j; v_get13
35、02(); /取得當(dāng)前時間 j=2; for(i=7;i>0;i-) xsj=(timei-1>>4)+0x30; xsj+1=(timei-1&0x0f)+0x30; /BCD碼拆成2字節(jié) j=j+2; ledxs00=xs2; ledxs01=xs3; / 年 ledxs02=0x2d; / - ledxs03=xs6; ledxs04=xs7; / 月 ledxs05=0x2d; / - ledxs06=xs8; ledxs07=xs9; / 日 ledxs20=xs10; ledxs21=xs11; / 時 ledxs22=0x2d; / - ledxs23=
36、xs12; ledxs24=xs13; / 分 ledxs25=0x2d; / - ledxs26=xs14; ledxs27=xs15; / 秒void wr1302(unsigned char dat) /向1302寫1個字節(jié) unsigned char i; for(i=0;i<8;i+) /從最低位開始發(fā)送 ACC=dat; DATA1302=BIT0;/位傳送至數(shù)據(jù)總線 ; SCLK1302=0; /清時鐘總線 ; SCLK1302=1; /時鐘上升沿,發(fā)送數(shù)據(jù)有效 dat=dat>>1; /數(shù)據(jù)右移 ; unsigned char rd1302(void) /從1
37、302讀1個字節(jié) unsigned char i; for(i=0;i<8;i+) /從最低位開始接收 ACC=ACC>>1; DATA1302=1; /讀數(shù)據(jù)之前,P1口輸出1 SCLK1302=1;/時鐘置高電平 ; SCLK1302=0;/時鐘下降沿,接收數(shù)據(jù)有效 ; BIT7=DATA1302;/接收1位數(shù)據(jù) ; return ACC;void v_wr1302(unsigned char add,unsigned char dat)/先寫地址,后寫1字節(jié)數(shù)據(jù) / 地址或命令 數(shù)據(jù) RST1302=0;/復(fù)位引腳低電平,所有數(shù)據(jù)傳送終止 ; SCLK1302=0;/清
38、時鐘總線 ; RST1302=1;/復(fù)位引腳高電平,控制邏輯有效 ; wr1302(add); /寫地址或命令 ; wr1302(dat); /寫1個數(shù)據(jù) ; SCLK1302=1; RST1302=0;unsigned char v_rd1302(unsigned char add) /先寫地址,后讀1字節(jié)數(shù)據(jù) / 地址 unsigned char i; RST1302=0;/復(fù)位引腳低電平,所有數(shù)據(jù)傳送終止 ; SCLK1302=0;/清時鐘總線 ; RST1302=1;/復(fù)位引腳高電平,控制邏輯有效 ; wr1302(add); /寫地址或命令 ; i=rd1302(); /讀取數(shù)據(jù) S
39、CLK1302=1; RST1302=0; return i; /返回讀取的數(shù)據(jù)/* 名稱: send_byte1302* 說明: 先寫地址,后寫數(shù)據(jù)(時鐘多字節(jié)方式)* 功能: 往DS1302寫入時鐘數(shù)據(jù)(多字節(jié)方式)* 調(diào)用: wr1302();v_wr1302();* 輸入: *p: 時鐘數(shù)據(jù)地址 格式為: 秒 分 時 日 月 星期 年 控制* 8Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B 1B* 返回值: 無*/void send_byte1302(unsigned char *p) unsigned char i; v_wr1302(0x8e,0x00); /
40、控制命令,WP=0,寫操作 RST1302=0;/復(fù)位引腳低電平,所有數(shù)據(jù)傳送終止 ; SCLK1302=0;/清時鐘總線 ; RST1302=1;/復(fù)位引腳高電平,控制邏輯有效 ; wr1302(0xbe); /0xbe:時鐘多字節(jié)寫命令 for(i=0;i<8;i+)/發(fā)送數(shù)據(jù)8字節(jié) wr1302(*p); p+; SCLK1302=1; RST1302=0;/* 名稱: rcv_byte1302* 說明: 先寫地址,后讀數(shù)據(jù)(時鐘多字節(jié)方式)* 功能: 讀取DS1302時鐘數(shù)據(jù)* 調(diào)用: wr1302() , rd1302()* 輸入: *p1: 時鐘數(shù)據(jù)地址 格式為: 秒 分 時
41、 日 月 星期 年* 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B* 返回值: ucDa :讀取的數(shù)據(jù)*/unsigned char rcv_byte1302(unsigned char *p1) unsigned char i; RST1302=0;/復(fù)位引腳低電平,所有數(shù)據(jù)傳送終止 ; SCLK1302=0;/清時鐘總線 ; RST1302=1;/復(fù)位引腳高電平,控制邏輯有效 ; wr1302(0xbf);/ 0xbf:時鐘多字節(jié)讀命令 for(i=0;i<8;i+)/接收數(shù)據(jù)8字節(jié) *p1=rd1302(); p1+; SCLK1302=1; RST1302=
42、0;/* 名稱: v_set1302* 說明:* 功能: 設(shè)置初始時間* 調(diào)用: v_wr1302()* 輸入: *p2: 初始時間地址。初始時間格式為: 秒 分 時 日 月 星期 年* 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B* 返回值: 無*/void v_set1302(unsigned char *p2) unsigned char i; unsigned char addr=0x80; v_wr1302(0x8e,0x00); /控制命令,WP=0,允許寫 for(i=0;i<7;i+) v_wr1302(addr,*p2); /* 秒 分 時 日 月
43、 星期 年 */ p2+; addr=addr+2; v_wr1302(0x8e,0x80); / 控制命令,WP=1,寫保護(hù)/* 名稱: v_get1302* 說明:* 功能: 讀取DS1302當(dāng)前時間* 調(diào)用: v_rd1302()* 輸入: time: 保存當(dāng)前時間地址。當(dāng)前時間格式為: 秒 分 時 日 月 星期 年* 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B* 返回值: 無*/void v_get1302(void) unsigned char i; unsigned char addr=0x81; for(i=0;i<7;i+) timei=v_rd1302(addr); /格式為: 秒 分 時 日 月 星期 年 addr=addr+2; void wendu() unsigned int wendu,temp,m; m=1; while(m-) wendu=GetTempDS18B20(); /讀取溫度 temp=wendu/100; led
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)口算練習(xí)題小數(shù)300道
- 2025年宜昌道路貨物運(yùn)輸從業(yè)資格證模擬考試
- 電子合同范本(2篇)
- 2024-2025學(xué)年高中物理第七章10能量守恒定律與能源練習(xí)含解析新人教版必修2
- 2024-2025學(xué)年高中生物專題2課題3分解纖維素的微生物的分離練習(xí)含解析新人教版選修1
- 蘇科版數(shù)學(xué)七年級上冊3.3《代數(shù)式的值1》聽評課記錄
- UI設(shè)計師年度總結(jié)
- 學(xué)校年終工作總結(jié)
- 室內(nèi)設(shè)計師年度總結(jié)
- 高中生物教師個人年終工作總結(jié)
- 高質(zhì)量社區(qū)建設(shè)的路徑與探索
- 數(shù)字化時代的酒店員工培訓(xùn):技能升級
- 足球守門員撲救技巧:撲救結(jié)合守護(hù)球門安全
- 《學(xué)術(shù)規(guī)范和論文寫作》課件全套 第1-10章 知:認(rèn)識研究與論文寫作 - 引文規(guī)范
- 帶式輸送機(jī)滾筒出廠檢驗(yàn)規(guī)范
- 起重機(jī)更換卷筒施工方案
- 《信息檢索基礎(chǔ)知識》課件
- 具有履行合同所必須的設(shè)備和專業(yè)技術(shù)能力的承諾函-設(shè)備和專業(yè)技術(shù)能力承諾
- 01智慧物流信息技術(shù)概述
- 茶多糖和茶多酚的降血糖作用研究
- 混床計算書(新)
評論
0/150
提交評論