密碼鎖 (單片機設(shè)計)_第1頁
密碼鎖 (單片機設(shè)計)_第2頁
密碼鎖 (單片機設(shè)計)_第3頁
密碼鎖 (單片機設(shè)計)_第4頁
密碼鎖 (單片機設(shè)計)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第一章 出租車計價系統(tǒng)的設(shè)計要求與設(shè)計方案1.1 出租車計價器設(shè)計要求設(shè)計一個出租車自動計費器,計費包括起步價、單價、里程計費三部分,用LCD1602液晶 顯示總金額,起步價為6.0元,3km之內(nèi)起步價計費,超過3km,超過部分按1.6元/km。同時顯示起步價、單價和總里程。 計費功能:費用的計算是按行駛里程收費。設(shè)起步價為6.0元。 1、當(dāng)里程<3km時,按起價計算費用。 2、當(dāng)里程>3km時,超過部分每公里按1.6元計費。 顯示功能: 1、顯示行駛里程:用四位數(shù)字顯示,顯示方式為“XXX”,單位為km。計程范圍0-999km,精確到1km。 2、顯示單價:用兩位數(shù)字顯示,顯示方

2、式為“X.X”,單位為元。計時范圍0-9.9,精確到0.1元。 3、顯示總費用:用四位數(shù)字顯示,顯示方式為“XXX.X”,單位為元。計價范圍0-999.9元,精確到0.1元。1.2 系統(tǒng)主要功能本出租車計價器上電后顯示最初的起步價,起步價里程,單價,總里程,總金額。通過按鍵可以調(diào)節(jié)起步價,起步價里程,單價。同時具有運行,暫停,停止等狀態(tài)。出租車停止后能夠顯示行駛的總費用。1.3方案論證與比較方案一:采用數(shù)字電子技術(shù),利用555定時芯片構(gòu)成多諧振蕩器,或采用外圍的晶振電路作為時鐘脈沖信號,采用計數(shù)芯片對脈沖盡心脈沖的計數(shù)和分頻,最后通過2譯碼電路對數(shù)據(jù)進行譯碼,將譯碼所得的數(shù)據(jù)送給數(shù)碼管顯示,以

3、下是該方案的流程框圖,如圖1-1所示: 圖1.1 基于定時芯片的計價器方案二:采用EDA技術(shù),根據(jù)層次化設(shè)計理論,該設(shè)計問題自頂向下可分為分頻模塊,控制模塊 計量模塊、譯碼和動態(tài)掃描顯示模塊,其系統(tǒng)框圖如圖1.2所示: 圖1.2 基于EDA技術(shù)的計價器方案三:采用單片機技術(shù),通過單片機作為主控器,利用1602字符液晶作為顯示電路,采用外部晶振作為時鐘脈沖,通過按鍵可以方便調(diào)節(jié),以下是方案三的系統(tǒng)流程圖,如圖1.3所示:按鍵控制 STC89C52單片機復(fù)位電路電源電路時鐘電路顯示模塊顯示總里程和總金額圖1.3 基于單片機控制的計價器通過比較以上兩種方案,方案三設(shè)計符合人性化,性價比較高,我們采用

4、方案三實現(xiàn)出租車計價器的功能。本電路設(shè)計的計價器能夠?qū)崿F(xiàn)基本的計價功能,單片機計算總價的公式為:總價=起步價+單價*(總里程-起步里程)。STC89C52作為一個單片微型計算系統(tǒng),靈活性高,其強大的控制處理功能和可擴展功能設(shè)計電路提供了很好的選擇。第二章 出租車計價系統(tǒng)的硬件設(shè)計2.1 單片機的介紹STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為

5、眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運作頻率35MHz,6T/

6、12T可選。STC89C52的引腳如圖2.1所示: 圖2.1 STC89C52的引腳結(jié)構(gòu)其各自引腳功能如下:VCC:電源電壓。GND:地。P0口:P0口是一組8位漏極開路型雙向I/O接口,即地址/數(shù)據(jù)總線復(fù)用口。當(dāng)訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在FLASH編程時,P0口接受指令字節(jié),而在程序校驗時 ,輸出指令字節(jié),校驗時,要求外接上拉電阻。P1口:P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O接口,P1的輸出緩沖級可驅(qū)動4個TTL邏輯門電路。端口寫“l(fā)”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部

7、存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL),F(xiàn)LASH編程和程序校驗時,P1接收低8位地址。 P2口:P2 是一個帶有內(nèi)部上拉電阻的 8 位雙向 I/O口,P2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL 邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行 MOVXDPTR 指令)時,P2 口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行 MOVXRi 指令)時,P2口線上的內(nèi)容(也

8、即特殊功能寄存器(SFR)區(qū)中 P2 寄存器的內(nèi)容),在整個訪問期間不改變。Flash 編程或校驗時,P2 亦接收高位地址和其它控制信號。P3口:P3口是一組帶有內(nèi)部上拉電阻的 8 位雙向 I/O口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對 P3口寫入“l(fā)”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。作輸入端時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的 I/O口線外,P3口還接收一些用于 Flash 閃速存儲器編程和程序校驗的控制信號,更重要是它的第二功能,如下表所示:表2.1 P3口的引腳及功能端口引腳第二功能P3.0RXD(串行輸入口)

9、P3.1TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(定時器0的外部輸入)P3.5T1(定時器1的外部輸入)P3.6(外部數(shù)據(jù)存儲器寫選通)P3.7 (外部數(shù)據(jù)存儲器讀選通)RST:復(fù)位輸入。當(dāng)振蕩器工作時,RST 引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。WDT 溢出將使該引腳輸出高電平,設(shè)置 SFR AUXR 的 DISRT0 位(地址 8EH)可打開或關(guān)閉該功能。DISRT0 位缺省為 RESET 輸出高電平打開狀態(tài)。ALE/ :當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節(jié)。即使不訪問外部存儲器,ALE

10、 仍以時鐘振蕩頻率的 1/6 輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個 ALE 脈沖。對 F1ash 存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的 8EH 單元的 D0 位置位,可禁止 ALE 操作。該位置位后,只有一條 MOVX 和 MOVC 指令 ALE 才會被激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置 ALE 無效。/VPP:外部訪問允許。欲使 CPU 僅訪問外部程序存儲器(地址為 0000HFFFFH),EA 端必須保持低電平(接地)。需注意的是:

11、如果加密位 LB1 被編程,復(fù)位時內(nèi)部會鎖存 EA 端狀態(tài)。如 EA 端為高電平(接 VCC 端),CPU 則執(zhí)行內(nèi)部程序存儲器中的指令。F1ash 存儲器編程時,該引腳加上+12V 的編程電壓 VPP。:程序儲存允許。輸出是外部程序存儲器的度選通信號。XTAL1:振蕩器反相放大及內(nèi)部是鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。在本次設(shè)計中像顯示電路用到了P0口,P2口,其中P0.0到P0.7口作為LCD1602的數(shù)據(jù)輸入端,P2.4到P2.6作為LCD1602的控制線,P2.0到P2.3作為鍵盤接口電路的輸入端,P3.2 口作為路程測量信號的輸入端。2.2振蕩電路設(shè)計單片機內(nèi)部

12、有一個高增益、反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容(電容一般取30pF)。這樣就構(gòu)成一個穩(wěn)定的自激振蕩器。振蕩電路脈沖經(jīng)過二分頻后作為系統(tǒng)的時鐘信號,再在二分頻的基礎(chǔ)上三分頻產(chǎn)生ALE信號,此時得到的信號是機器周期信號。晶振電路如圖2.2所示: 圖2.2 晶振振蕩電路2.3復(fù)位電路設(shè)計復(fù)位操作有兩種基本形式:一種是上電復(fù)位,另一種是按鍵復(fù)位。按鍵復(fù)位具有上電復(fù)位功能外,若要復(fù)位,只要按圖中的RESET鍵,電源VCC經(jīng)電阻R3、R4分壓,在RESET端產(chǎn)生一個復(fù)位高電平。上電復(fù)位電路要求接通電源后,通過外部電容充電

13、來實現(xiàn)單片機自動復(fù)位操作。上電瞬間RESET引腳獲得高電平,隨著電容的充電,RESET引腳的高電平將逐漸下降。RESET引腳的高電平只要能保持足夠的時間(2個機器周期),單片機就可以進行復(fù)位操作。按鍵復(fù)位電路原理:在單片機啟動后,電容C兩端的電壓持續(xù)充電為5V,這是時候10K電阻兩端的電壓接近于0V,RESET處于低電平所以系統(tǒng)正常工作。當(dāng)按鍵按下的時候,開關(guān)導(dǎo)通,這個時候電容兩端形成了一個回路,電容被短路,所以在按鍵按下的這個過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚

14、至更大,所以RESET引腳又接收到高電平。單片機系統(tǒng)自動復(fù)位。按鍵復(fù)位電路圖如圖2.3所示: 圖2.3 復(fù)位電路2.4鍵盤接口電路 按鍵的設(shè)置是為了能夠手動更改起步價和單價,另外還可以更改起步里程數(shù)。按鍵采用的是脈沖按鍵。獨立式鍵盤:獨立式鍵盤中,每個按鍵占用一根I/O口線,每個按鍵電路相對獨立。I/O口通過按鍵與地相連,I/O口有上拉電阻,無鍵按下時,引腳端為高電平,有鍵按下時,引腳電平被拉低。I/O口內(nèi)部有上拉電阻時,外部可不接上拉電阻。 圖2.4 鍵盤接口電路2.5顯示模塊設(shè)計 顯示部分要求顯示單價、起步價、總里程、總金額等各種信息 在應(yīng)用系統(tǒng)中,使用的顯示器主要有LED(發(fā)光二極管)和

15、LCD(液晶顯示器)。這兩種顯示器成本低廉,配置靈活。LED是發(fā)光二極管的英文縮寫,是由發(fā)光二極管顯示字段的顯示器件。LCD顯示器的工作原理就是利用液晶的物理特性:通電時排列變得有序,使光線容易通過;不通電時排列混亂,阻止光線通過,說簡單點就是讓液晶如閘門般地阻隔或讓光線穿透。液晶屏功能強大,可顯示各種字體的數(shù)字、漢字、圖像,還可以自定義顯示內(nèi)容,顯示內(nèi)容也較豐富;方便操作者讀取信息及一些擴展功能的實現(xiàn)。占用系統(tǒng)I/O口較少,有效地節(jié)約系統(tǒng)資源,使整個系統(tǒng)更加人性化。針對出租車計價器,只需顯示簡單的字符和數(shù)字,因此選擇LCD1602就能滿足要求,且成本較低。LCD1602的基本參數(shù)如下:LCD

16、1602顯示容量:16*2個符;芯片工作電壓:4.55.5V;工作電流:2.0mA(5V);最佳工作電壓:5V;字符尺寸:2.95*4.35(W*H)mm。LCD1602的各個引腳的功能如表表2.1 LCD1602引腳說明編號符號引腳說明編號符號引腳說明1VSS電源地9D2DATAI/O2VDD電源正極10D3DATAI/O3VL液晶顯示偏壓信號11D4DATAI/O4RS數(shù)據(jù)命令選擇端(H/L)12D5DATAI/O5R/W讀寫數(shù)據(jù)端(H/L)13D6DATAI/O6E使能信號14D7DATAI/O7D0DATAI/O15BLA背光源正極8D1DATAI/O16BLK背光源負(fù)極顯示模塊的硬件

17、電路設(shè)計:根據(jù)LCD1602的基本工作參數(shù)和引腳接口信號的介紹,設(shè)計出顯示電路如圖2.5所示。 圖2.5顯示電路此模塊電路電源電壓為5V,由接口VCC引入,上電后芯片開始工作。數(shù)據(jù)端8位接分別由單片機的P0 I/O口與其線連接,3個控制端口分別有P2.4P2.6端口來控制,8位雙向數(shù)據(jù)線714與單片機的P0端口相連,實現(xiàn)液晶與單片機的通信。液晶對比度通過1602的第三腳接可調(diào)電阻來調(diào)。2.6路程測量部分設(shè)計 出租車中需要一個能準(zhǔn)確獲得車輪轉(zhuǎn)動即路量信號的裝置,以得到標(biāo)準(zhǔn)的脈沖信號送入單片機霍爾傳感器是利用霍爾效應(yīng)實現(xiàn)磁電轉(zhuǎn)換的一種傳感器,它具有靈敏度高,線性度好,穩(wěn)定性高、體積小和耐高溫等特點

18、,在機車控制系統(tǒng)中占有非常重要的地位?;魻杺鞲衅鰽44E工作原理,A44E集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E 五個基本部分組成。在輸入端輸入電壓,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍耳電勢發(fā)生器的兩端,根據(jù)霍耳效應(yīng)原理,當(dāng)霍耳片處在磁場中時,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產(chǎn)生霍耳電勢差HV輸出,該HV信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當(dāng)施加的磁場達到工作點時,觸發(fā)器輸出高電壓(相對于地電位)使三極管導(dǎo)通,此時OC門輸出端輸出低電壓,通常稱這種狀態(tài)為“開”。當(dāng)施加的磁場達到釋放點時,觸發(fā)

19、器輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為“關(guān)”。這樣兩次電壓變換,使霍耳開關(guān)完成了一次開關(guān)動作。鑒于實驗室器材有限以及課設(shè)時間有限,在此次課程設(shè)計中,我們采用獨立按鍵替代霍爾元件來模擬路程測量。我們選擇了P3.2 口作為信號的輸入端,內(nèi)部采用外部中斷0(這樣可以減少程序設(shè)計的麻煩),車輪每轉(zhuǎn)一圈(為方便模擬以及觀察效果,再次假設(shè)按鍵按下一次,行駛1km),檢測到低電平并送入單片機,從而引起單片機的中斷,對脈沖計數(shù),單片機就控制將金額自動的增加。計算公式如下:3公里以內(nèi),總金額=起步價;3公里以外,金額=起步價+(公里數(shù)-3)*單價。例如:設(shè)行駛里程為5里,起步價為6元,超出3公

20、里后按每公里1.6元收費,則金額=6+(5-3)*1.6=9.2(元)。第三章 出租車計價系統(tǒng)的軟件設(shè)計3.1 主程序設(shè)計本設(shè)計中,軟件設(shè)計采用模塊化操作,利用各個模塊之間的相互聯(lián)系,在設(shè)計中采用主程序調(diào)用各個子程序的方法,使程序通俗易懂,我們設(shè)計了整體程序流程圖。在main函數(shù)編寫開始,要進行初始化,包括對系統(tǒng)初始化和對存儲器初始化,要對硬件設(shè)備進行初始化,并使硬件處于就緒狀態(tài)。通過判斷是否計費,調(diào)價,清零等狀態(tài),來分別調(diào)用不同的子程序,使程序在設(shè)計之前,就有了很強的邏輯關(guān)系。這些對應(yīng)于硬件就是通過按下各個控制開關(guān),來分別進行不同的動作,最后LCD1602根據(jù)輸入的信息,來顯示不同的數(shù)據(jù)信息

21、,這就達到了軟件控制硬件,同時輸入信息控制輸出信息的目的。主程序流程圖如圖3.1所示: NNY 顯示結(jié)果判斷是否進入調(diào)價模式判斷是否開始計費進入調(diào)價模式調(diào)用計費子程序判斷是否停止鍵按下NY 顯示N 初始化 清顯示單價復(fù)位Y圖3.1主程序流程圖3.2顯示服務(wù)子程序1602液晶是字符型液晶,它的內(nèi)部自帶字符庫,它可以寫兩行的字符,同時每行可以寫40個字符,在寫顯示程序的時候,我們先寫命令,再設(shè)定字符顯示,最后寫數(shù)據(jù),在每寫一次命令或數(shù)據(jù)都需要判斷液晶是否忙。液晶顯示程序流程圖如圖3.2所示: 圖3.2顯示服務(wù)程序流程圖3.3鍵盤服務(wù)子程序 對于獨立式鍵盤判鍵,首先看有鍵按下不,如果有鍵按下則延時一

22、會兒,在判斷是否真的有鍵按下,如果確實有鍵按下,在判鍵釋放,最后執(zhí)行鍵功能程序。判鍵子函數(shù)的流程框圖如圖3.3所示: 圖3.3鍵盤服務(wù)程序流程圖3.4中斷服務(wù)子程序在中斷服務(wù)程序中,每當(dāng)外部中斷0管腳為低電平時,就 產(chǎn)生一次中斷,送數(shù)據(jù)到相應(yīng)的顯示緩沖單元,并調(diào)用顯示子程序?qū)崟r顯示。中斷服務(wù)子程序流程圖如圖3.4所示: 圖3.4中斷服務(wù)子程序流程圖第四章 系統(tǒng)調(diào)試4.1硬件調(diào)試 錯誤一:LCD1602無法顯示。 解決方法:待確認(rèn)程序無誤后,調(diào)節(jié)對比度后,能夠正常顯示。 錯誤二:無法下載程序。 解決方法:晶振振蕩電路管腳松動。4.2軟件調(diào)試本設(shè)計的軟件都是在 Keil Vision 4上進行編寫

23、,編譯,調(diào)試以及運行操作。 在軟件編程時,應(yīng)充分利用原理圖,不然會在編程時導(dǎo)致硬件與軟件不能對應(yīng)起來,使程序無法實現(xiàn)功能,還有在編程時子程序的名稱應(yīng)與其功能對應(yīng),否則會使別人在讀程序的時候不能及時理解程序含義,而且在軟件調(diào)試時邏輯一定要清晰,不然在找錯時會浪費很多時間,4.3功能測試由于試驗條件有限,我們采用獨立按鍵替代附帶霍爾元件的車輪,我們設(shè)定按鍵每按下一次,就表示已經(jīng)到達了一公里,系統(tǒng)自動計算并顯示當(dāng)前的總金額。 表4.1 的測試條件是:設(shè)定起步價是6 元,超出3公里的部分按每公里1.6元計費,分別行駛不同里程測得數(shù)據(jù)如下表。表4.1功能測試公里123456總金額理論6667.69.21

24、0.8實際66行駛路程理論123456實際123456通過表4.1 的數(shù)據(jù),我們可以看到系統(tǒng)的計價功能很穩(wěn)定,誤差很小,符合設(shè)計要求。第五章 設(shè)計體會與小結(jié) 本次設(shè)計采用STC89C52芯片為核心器件,設(shè)計出了簡單的出租車計價器,能夠?qū)崿F(xiàn)顯示總金額和總里程,按鍵控制清零,調(diào)價。在這段時間里,經(jīng)過自己努力,基本上完成了設(shè)計要求的內(nèi)容,在系統(tǒng)可行性分析、原理圖設(shè)計等方面都作了許多實際工作,取得了一些成績,同時也遇到了一些問題,存在一些不足。經(jīng)過這段時間的學(xué)習(xí)和工作,自己不論是在理論知識方面還是在動手能力方面都有了不小的進步,自己從中受益匪淺。這次設(shè)計很好的把以前學(xué)到的理論知識

25、應(yīng)用于實踐,從而認(rèn)識到理論知識與實踐之間有一定的差距,只有通過不斷的努力學(xué)習(xí)和實踐才能很好的把理論知識應(yīng)用到實踐當(dāng)中,也只有通過不斷的實踐才能對理論知識的理解。通過這次設(shè)計不僅學(xué)會了如何去查找相關(guān)資料,更重要的是通過查找資料和翻閱書籍學(xué)到了不少知識,擴大了知識面,提高了知識水平。經(jīng)過單元設(shè)計和系統(tǒng)設(shè)計鞏固了以前所學(xué)的專業(yè)知識,自己真正認(rèn)識到理論聯(lián)系實際的重要性,為以后的學(xué)習(xí)和工作提供了很多有價值的經(jīng)驗。通過這次設(shè)計不僅增強了自己的動腦能力和動手能力,也提高了思考問題、分析問題、解決問題的能力,更重要的是學(xué)會用工程化的思想來解決問題。這在以前的學(xué)習(xí)過程中是不曾學(xué)到的。這次設(shè)計是我認(rèn)真認(rèn)識到完整、

26、嚴(yán)謹(jǐn)、科學(xué)分析問題、解決問題的思想是多么的重要,只有擁有了科學(xué)的態(tài)度才能設(shè)計出有用的產(chǎn)品。另外通過本次設(shè)計,使我認(rèn)識到自己理論知識的應(yīng)用能力有很大的欠缺,需要在以后的學(xué)習(xí)中進一步提高。參考文獻1譚浩強.C程序設(shè)計(第二版).北京:清華大學(xué)出版社,2003 2胡泉、謝芳.C語言程序設(shè)計.湖北:華中科技大學(xué)出版社,20093肖玲妮、袁增貴.Protel 99 SE印刷電路板設(shè)計教程.清華大學(xué)出版社,20034張毅剛.單片機原理及應(yīng)用.北京:高等教育出版社,20045馬忠梅.單片機的C語言應(yīng)用程序設(shè)計(第三版).北京:北京航空航天大學(xué)出版社,2004附錄附錄一:源程序 #include <re

27、g52.h> #define uchar unsigned char #define uint unsigned int sbit key1=P20; sbit key2=P21; sbit key3=P22; sbit key4=P23; sbit rs=P24; sbit rw=P25; sbit en=P26; uint num,m,n; uint t=2,t1=6; uint bai=0,shi=0,ge=0,x1=0; uint d1=0,d2=0,d3=0,money=6; uint pb=0,ps=0,pg=0,px1=0,px2=0; float d=1.6,money1

28、=6; /*函數(shù)定義*/ void delay(uint i) uint j,x; for(x=0;x<i;x+); for(j=0;j<113;j+); void init()/LCD1602初始化 en=0;rw=0; write_com(0x38); write_com(0x06); write_com(0x0c); write_com(0x80); write_com(0x01); void write_com(uint com) /寫命令 rs=0; P0=com; delay(5); en=1; delay(5); en=0; void write_data(uint

29、data) /寫數(shù)據(jù) rs=1; P0=data; delay(5); en=1; delay(5); en=0; void xs()/顯示服務(wù)子程序 write_com(0x80); write_data(0x30+t);write_data(k);write_data(/); write_com(0x80+4); write_data(0x30+t1); write_data('y'); write_com(0x80+8); write_data('$'); write_data(':'); d3=d*10; d1=d3/10; d2=d3%

30、10; write_data(0x30+d1); write_data('.'); write_data(0x30+d2); write_data('y'); write_data('/'); write_data('k'); write_com(0x80+0x40); write_data(0x30+bai); write_data(0x30+shi); write_data(0x30+ge); write_data('.'); write_data(0x30+x1); write_data(0x30+x2); write_data('k'); pb=money/1000; ps=money%1000/100; pg=money%1000%100/10; px1=money%1000%100%10; write_data('$'); write_

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論