




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、 畢業(yè)設計基于單片機的密碼鎖設計姓 名 系 別、 專 業(yè) 導 師 姓 名、職 稱 完 成 時 間 摘要近幾年單片機技術(shù)的發(fā)展很快,其中,電子產(chǎn)品的更新速度迅猛。計算器是日常生活中比較常見的電子產(chǎn)品之一。如何才能使計算器技術(shù)更加的成熟,充分利用已有的硬件和軟件條件,設計出更出色的計算器。本設計是以STC89C52單片機為核心的計算器模擬系統(tǒng)設計,輸入采用4*4矩陣鍵盤,可以進行加、減、乘、除帶符號數(shù)字運算(七位整數(shù)、六位小數(shù)),并在液晶顯示屏LCD1602上靜態(tài)顯示操作過程及結(jié)果。關鍵詞: 單片機; 液晶顯示屏; 計算器; 矩陣鍵盤1 緒論1.1 課題背景隨著社會的發(fā)展,科學的進步,人們的生活水
2、平在逐步地提高,尤其是微電子技術(shù)的發(fā)展猶如雨后春筍般的變化。電子產(chǎn)品的更新速度快就不足驚奇了。計算器在人們的日常中是比較常見的電子產(chǎn)品之一,如何使計算器技術(shù)更加的成熟,充分利用已有的軟件和硬件條件,設計出更出色的計算器,使其更好地為各個行業(yè)服務,成了如今電子領域重要的研究課題?,F(xiàn)如今,人們的日常生活中已經(jīng)離不開計算器了,社會的各個角落都有它的身影,比如商店、辦公室、學校因此設計一款簡單實用的計算器會有很大的實際意義。本設計旨在進一步掌握單片機理論知識,理解嵌入式單片機系統(tǒng)的硬軟件設計,加強對實際應用系統(tǒng)設計的能力。通過本設計的學習,使我掌握單片機程序設計和微機接口應用的基本方法,并能綜合運用本
3、科階段所學軟、硬件知識分析實際問題,提高解決畢業(yè)設計實際問題的能力,為單片機應用和開發(fā)打下良好的基礎。1、 對字符液晶顯示模塊的工作原理,如初始化、清屏、顯示、調(diào)用及外特性有較清楚的認識,并會使用LCD(液晶顯示模塊)實現(xiàn)計算結(jié)果的顯示;掌握液晶顯示模塊的驅(qū)動和編程,設計LCD和單片機的接口電路,以及利用單片機對液晶顯示模塊的驅(qū)動和操作;2、 在充分分析內(nèi)部邏輯的概念,進行軟件和調(diào)試,學會使用,并能夠以其為平臺設計出具有四則運算能力簡易計算器的硬件電路和軟件程序。1.2 設計目的通過本次工程實踐,運用智能化測量控制儀表原理與設計、MCS-51系列單片微型計算機及其應用所學知識及查閱相關資料,完
4、成簡易計算器的設計,達到理論知識與實踐更好結(jié)合、提高綜合運用所學知識和設計能力的目的。通過本次設計訓練,可以使我們在基本思路和基本方法上對基于MCS-51單片機的嵌入式系統(tǒng)設計有一個比較感性的認識,并具備一定程度的設計能力。2 總體方案設計2.1 簡易計算器設計基本原理根據(jù)功能和指示要求,本系統(tǒng)選用以MCS-51單片機為主控機。通過擴展必要的外圍接口電路,實現(xiàn)對計算器的設計。2.2 MCS-51系列單片機簡介8051是MCS-51系列單片機的典型產(chǎn)品,以這一代表性的機型進行系統(tǒng)的講解。8051單片機包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中
5、斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,其內(nèi)部結(jié)構(gòu)如圖1所示,現(xiàn)在分別加以說明: 圖1 8051內(nèi)部結(jié)構(gòu)圖中央處理器:中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼,CPU負責控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。數(shù)據(jù)存儲器(RAM):8051內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或用戶定義的字型表。程序存儲器(
6、ROM):8051共有4096個8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。定時/計數(shù)器:8051有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷,用于控制程序轉(zhuǎn)向。并行輸入輸出(I/O)口:8051共有4組8位I/O口(P0、 P1、P2和P3),用于對外部數(shù)據(jù)的傳輸。全雙工串行口:8051內(nèi)置一個全雙工串行通信口,用于與其它設備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當同步移位器使用。中斷系統(tǒng):8051具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。時鐘電路:8051內(nèi)置最高頻率達12
7、MHz的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但8051單片機需外置振蕩電容。下圖是MCS-51系列單片機的內(nèi)部結(jié)構(gòu)示意圖2。圖2 MCS-51內(nèi)部結(jié)構(gòu)圖2.3 單片機發(fā)展現(xiàn)狀單片機的發(fā)展趨勢:低功耗CMOS化;微型單片化;主流與多品種共存;單片機從8位、16位到32位,數(shù)不勝數(shù),應有盡有,有與主流C51系列兼容的,也有不兼容的,但它們各具特色,互成互補,為單片機的應用提供廣闊的天地。 縱觀單片機的發(fā)展過程,可以預示單片機的發(fā)展趨勢,大致有:(1) 低功耗CMOS化 MCS-51系列的8051推出時的功耗達630mW,而現(xiàn)在的單片機普遍都在100mW左右,隨著對單片機功耗要求越來越低,現(xiàn)
8、在的各個單片機制造商基本都采用了CMOS(互補金屬氧化物半導體工藝)。象80C51就采用了HMOS(即高密度金屬氧化物半導體工藝)和CHMOS(互補高密度金屬氧化物半導體工藝)。CMOS雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點,這些特征,更適合于在要求低功耗象電池供電的應用場合。所以這種工藝將是今后一段時期單片機發(fā)展的主要途徑。 (2)微型單片化現(xiàn)在常規(guī)的單片機普遍都是將中央處理器(CPU)、隨機存取數(shù)據(jù)存儲(RAM)、只讀程序存儲器(ROM)、并行和串行通信接口,中斷系統(tǒng)、定時電路、時鐘電路集成在一塊單一的芯片上,增強型的單片機集成了如A/D
9、轉(zhuǎn)換器、PMW(脈寬調(diào)制電路)、WDT(看門狗)、有些單片機將LCD(液晶)驅(qū)動電路都集成在單一的芯片上,這樣單片機包含的單元電路就更多,功能就越強大。甚至單片機廠商還可以根據(jù)用戶的要求量身定做,制造出具有自己特色的單片機芯片。 此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機除了功能強和功耗低外,還要求其體積要小?,F(xiàn)在的許多單片機都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。(3) 主流與多品種共存 現(xiàn)在雖然單片機的品種繁多,各具特色,但仍以80C51為核心的單片機占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATMEL公
10、司的產(chǎn)品和中國臺灣的Winbond系列單片機。所以C8051為核心的單片機占據(jù)了半壁江山。而Microchip公司的PIC精簡指令集(RISC)也有著強勁的發(fā)展勢頭,中國臺灣的HOLTEK公司近年的單片機產(chǎn)量與日俱增,與其低價質(zhì)優(yōu)的優(yōu)勢,占據(jù)一定的市場分額。此外還有MOTOROLA公司的產(chǎn)品,日本幾大公司的專用單片機。在一定的時 期內(nèi),這種情形將得以延續(xù),將不存在某個單片機一統(tǒng)天下的壟斷局面,走的是依存互補,相輔相成、共同發(fā)展的道路。2.4 計算器系統(tǒng)現(xiàn)狀計算器一般由運算器、控制器、存儲器、鍵盤、顯示器、電源和一些可選外圍設備及電子配件通過人工或機器設備組成。低檔計算器的運算器、控制器由數(shù)字邏
11、輯電路實現(xiàn)簡單的串行運算,其隨機存儲器只有一、二個單元,供累加存儲用。高檔計算器由微處理器和只讀存儲器實現(xiàn)各種復雜的運算程序,有較多的隨機存儲單元以存放輸入程序和數(shù)據(jù)。鍵盤是計算器的輸入部件,一般采用接觸式或傳感式。為減小計算器的尺寸,一鍵常常有多種功能。顯示器是計算器的輸出部件,有發(fā)光二極管顯示器或液晶顯示器等。除顯示計算結(jié)果外,還常有溢出指示、錯誤指示等。計算器電源采用交流轉(zhuǎn)換器或電池,電池可用交流轉(zhuǎn)換器或太陽能轉(zhuǎn)換器再充電。為節(jié)省電能,計算器都采用CMOS工藝制作的大規(guī)模集成電路(見互補金屬-氧化物-半導體集成電路),并在內(nèi)部裝有定時不操作自動斷電電路。計算器可選用的外圍設備有微型打印機
12、、盒式磁帶機和磁卡機等。2.5 簡易計算器系統(tǒng)簡介本計算器是以MCS-51系列8051單片機為核心構(gòu)成的簡易計算器系統(tǒng)。該系統(tǒng)通過單片機控制,實現(xiàn)對4*4鍵盤掃描進行實時的按鍵檢測。整個系統(tǒng)可分為2個主要功能模塊:功能模塊一,實時鍵盤掃描;功能模塊二,數(shù)據(jù)1602液晶顯示。3 硬件設計3.1.1 電源模塊 由于本系統(tǒng)采用電池供電,我們考慮了如下幾種方案為系統(tǒng)供電。方案1:采用5V蓄電池為系統(tǒng)供電。蓄電池具有較強的電流驅(qū)動能力以及穩(wěn)定的電壓輸出性能。但是蓄電池的體積過于龐大,在使用極為不方便。因此我們放棄了此方案。方案2:采用3節(jié)1.5 V干電池共4.5V做電源,經(jīng)過7805的電壓變換后為單片機
13、,傳感器供電。經(jīng)過實驗驗證系統(tǒng)工作時,單片機、傳感器的工作電壓穩(wěn)定能夠滿足系統(tǒng)的要求,而且電池更換方便。綜上所述采用方案23.1.2 主控制器模塊方案1: 采用可編程邏輯器件CPLD作為控制器。CPLD可以實現(xiàn)各種復雜的邏輯功能、規(guī)模大、密度高、體積小、穩(wěn)定性高、IO資源豐富、易于進行功能擴展。采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)??刂葡到y(tǒng)的控制核心。但本系統(tǒng)不需要復雜的邏輯功能,對數(shù)據(jù)的處理速度的要求也不是非常高。且從使用及經(jīng)濟的角度考慮我們放棄了此方案。方案2: 采用STC89C52單片機作為整個系統(tǒng)的核心,用其控制密碼鎖控制,以實現(xiàn)其既定的性能指標。充分分析我們的系
14、統(tǒng),其關鍵在于密碼鎖的控制,而在這一點上,單片機就顯現(xiàn)出來它的優(yōu)勢控制簡單、方便、快捷。這樣一來,單片機就可以充分發(fā)揮其資源豐富、有較為強大的控制功能及可位尋址操作功能、價格低廉等優(yōu)點。STC89C52單片機具有功能強大的位操作指令,I/O口均可按位尋址,程序空間多達8K,對于本設計也綽綽有余,更可貴的是STC89C52單片機價格非常低廉。因此,這種方案是一種較為理想的方案。從方便使用的角度考慮,我們選擇了方案2。4 硬件實現(xiàn)及單元電路設計4.1 主控制模塊主控制最小系統(tǒng)電路如圖3所示。 圖3 單片主控電路4.2 單片機的時鐘電路與復位電路設計本系統(tǒng)采用STC系統(tǒng)列單片機,相比其他系列單片機具
15、有很多優(yōu)點。一般STC單片機資源比其他單片機要多,而且執(zhí)行速度快;STC系列單片機使用串口對單片機進行燒寫,下載程序較為方便;STC51單片機內(nèi)部集成了看門狗電路;且具有很強抗干擾能力。本系統(tǒng)采用內(nèi)部方式的時鐘電路和加電自復位的復位電路,如下圖3圖4所示:圖3 時鐘電路圖4 復位電路由于單片機P0口內(nèi)部不含上拉電阻,為高阻態(tài),不能正常地輸出高/低電平,因而該組I/O口在使用時必須外接上拉電阻。4.3 單片機管腳說明VCC(40):供電電壓,其工作電壓為5V。GND(20):接地。P0端口(P0.0-P0.7):P0口為一個8位漏極開路雙向I/O口,每個引腳可吸收8TTL門電流。當P1口的管腳第
16、一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1端口(P1.0-P1.7):P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2端口(P2.0-P2.7):P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL
17、門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口,用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3端口(P3.0-P3.7):P3口管腳是一個帶有內(nèi)部上拉電阻的8位的雙向I/O端口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入端時,由于外
18、部下拉為低電平,P3口將輸出電流(ILL)。P3口同時為閃爍編程和編程校驗接收一些控制信號。復位RST(9):復位輸入。在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現(xiàn)在此引腳時,將使單片機復位,只要這個引腳保持高電平,51芯片便循環(huán)復位。復位后P3.0-P3.7口均置1,引腳表現(xiàn)為高電平,程序計數(shù)器和特殊功能寄存器SFR全部清零。當復位腳由高電平變?yōu)榈碗娖綍r,芯片為ROM的00H處開始運行程序。復位操作不會對內(nèi)部RAM有所影響。ALE/(30):當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以
19、不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如果想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,則置位無效。(29):外部程序存儲器的選通信號。在由外部程序存儲器取指令期間,每個機器周期兩次有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的信號將不出現(xiàn)。EA/VPP(31):當保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程
20、序存儲器。注意加密方式1時,將內(nèi)部鎖定為RESET;當端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V的編程電源(VPP)。XTAL1(19):來自反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2(18):來自反向振蕩器的輸出。4.4 鍵盤電路設計在單片機應用系統(tǒng)中,一般都會設置鍵盤,主要為了控制運行狀態(tài),輸入一些命令或數(shù)據(jù),以完成特定的人機交互。鍵盤是與單片機進行人機交互的最基本的途徑,其以按鍵的形式來設置控制功能或輸入數(shù)據(jù),按鍵的輸入狀態(tài)本質(zhì)上是一個開關量。對于簡單的開關量的輸入可以采用獨立式按鍵,這種方法接口簡單,但占用單片機I/O端口資源較多。對
21、于輸入?yún)?shù)較多、功能復雜的系統(tǒng),需要采用矩陣式鍵盤進行輸入控制。本系統(tǒng)采用4*4矩陣式鍵盤,鍵盤連接方式如圖5所示:圖5 鍵盤電路3.5 液晶顯示電路設計液晶顯示器(LCD)是一種功耗很低的顯示器,它的使用非常廣泛,比如電子表、計算器、數(shù)碼相機、計算機的顯示器和液晶電視等。電子密碼鎖中需要顯示的信息比較多,為了能直觀的看到結(jié)果,并且為了設計顯的美觀,使用總線和排阻進行簡化連接方式,本設計采用液晶顯示屏LCD進行顯示,具體連接方式如圖6所示。圖6 液晶顯示電路3.6 按鍵聲提醒電路如圖8所示。圖8 蜂鳴電路4 系統(tǒng)軟件設計方案4.1 主程序流圖 如圖10為主程序流程圖圖10 主程序流程圖4.2
22、運算程序設計STC89C52單片機是一塊芯片中集成了CPU、RAM、ROM、定時器、計數(shù)器、和多功能I/O等一臺計算器所需要的基本功能部分。如果按功能劃分,它由如下功能部分組成,即微處理器(CPU)、數(shù)據(jù)處理器(RAM)、程序處理器(ROM/CPROM)、并行I/O口、串行口、定時器、計數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機是靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊一些功能,通過使用單片機編寫的程序可以凸顯高智能、高效率以及高可靠性!因此我們采用單片機作為計算器的主要功能部件,可以很快實現(xiàn)運算功能。計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立按
23、鍵的方式,在這種情況下,編程會很簡單,但是會占用到很多的I/O資源,因此在很多情況下都不采用這種方式(如圖11)。但因為實體資源有限不得已而為之,但不會影響其功能。圖11 運算程序5 系統(tǒng)的安裝與調(diào)試5.1 安裝步驟1.檢查元件的好壞按電路圖買好元件后首先檢查買回元件的好壞,按各元件的檢測方法分別進行檢測,一定要仔細認真。而且要認真核對原理圖是否一致,在檢查好后才可上件、焊件,防止出現(xiàn)錯誤焊件后不便改正。2.放置、焊接各元件按原理圖的位置放置各元件,在放置過程中要先放置、焊接較低的元件,后焊較高的和要求較高的元件。特別是容易損壞的元件要后焊,在焊集成芯片時連續(xù)焊接時間不要超過10s,注意芯片的
24、安裝方向。結(jié)論課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握單片機的開發(fā)技術(shù)是十分重要的。回顧起此次單片機課程設計,我仍感慨頗多,的確,從選題到定稿,從理論到實踐,可以說得是苦多于甜,但是可以學到很多很多的的東西。通過這次課程設計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務,從而提
25、高自己的實際動手能力和獨立思考的能力。通過這次課程設計使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我們在單片機的基本原理、單片機應用系統(tǒng)開發(fā)過程,以及在常用編程設計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格的應用型人才打下良好的基礎。不足與展望 通過此次畢業(yè)設計我想學到了很多在課堂中無法學到的應用類知識,使我深刻的認識到自己知識范圍的狹窄和匱乏也真正讓我認識到實際操作的重要性。本次畢業(yè)設計在完成過程中我請教了輔導老師和很多在單片機方面優(yōu)秀的同學,我領會了我們之間存在的差距以及我在單片機方面的欠缺。同時,在翻閱輔導資料的過程中我驚嘆于作者思維的嚴
26、密性和知識的廣泛性,令我在感慨過程中也讓我堅定了學好這門學科的決心,校正了正確的方向。在以后的工作學習中定要向前輩和同事多學習、多發(fā)問,我相信經(jīng)過長期的努力和學習我也定能成為電氣方面的佼佼者。參考文獻1 王千. 實用電子電路大全M. 電子工業(yè)出版社, 2004, 28-362 彭為. 單片機典型系統(tǒng)設計實例精講M. 電子工業(yè)出版社,2 006, 69-883 張榮. 基于單片機的智能系統(tǒng)設計與實現(xiàn)M. 電子工業(yè)出版社, 2005, 35-384 朱勇. 單片機原理與應用技術(shù)M. 清華大學出版社, 2006, 14-165 潘永雄. 新編單片機原理與應用M. 西安電子科技大學出版社, 2003,
27、 78-86附錄1 整機電路原理圖附錄2 部分源程序#include<reg52.h>#include<stdio.h>#include<string.h>#include<lcd1602.h>#include<stdlib.h>#define uint unsigned int#define uchar unsigned charsbit batt = P35;float num1; / 保存第一個數(shù)float num2; / 保存第二個數(shù)uchar jjcc; / 加減乘除標志變量uchar idata Lcd_Str17; /
28、顯示區(qū)緩存uchar idata Num_str17; uchar Lcd_num2_add = 0;/ 第二個數(shù)據(jù)開始位的增量uchar Lcd_dis1_i = 0; / 記錄顯示第一行字符uchar Lcd_num1_i = 0; / 記錄num1 是幾位數(shù)uchar Lcd_num2_i = 0; / 記錄num2 是幾位數(shù)uchar Dian_i = 0; / 小數(shù)點位數(shù)/* *函數(shù)名稱:delayms;函數(shù)功能:延時z毫秒;形 參:z (延時時間參數(shù)) */void delayms(uchar z) uint x,y; for(x=z;x>0;x-) for(y=110;y&
29、gt;0;y-);uchar Key_io; / 暫存IO值uchar Key_jl; / 松手檢測自鎖變量uchar Key_value; / 返回鍵值uchar Key_D_bit;uchar saom(void) Key_value=18; P2=0xf0; / 拉低第四位 Key_io=P2; if(Key_io!=0xf0) / 查看搞四位是否有低電平 Key_io|=0x0f; / 保持高四位出現(xiàn)低電平的管腳,拉高第四位 P2=Key_io; / 重新復制IO口 Key_io=P2; / 讀取IO信息,確定鍵值 if(Key_jl=0) / 自鎖變量,松手檢測 Key_jl=1;
30、switch(Key_io) case 0x7e: Key_value=1; break ; case 0x7d: Key_value=2; break ; case 0x7b: Key_value=3; break ; case 0x77: Key_value=12; break ; case 0xbe: Key_value=4; break ; case 0xbd: Key_value=5; break ; case 0xbb: Key_value=6; break ; case 0xb7: Key_value=13; break ; case 0xde: Key_value=7; bre
31、ak ; case 0xdd: Key_value=8; break ; case 0xdb: Key_value=9; break ; case 0xd7: Key_value=14; break ; case 0xee: Key_value=10; break ; case 0xed: Key_value=0; break ; case 0xeb: Key_value=11; break ; case 0xe7: Key_value=15; break ; else Key_jl=0; Key_io = P3; / 獨立按鍵掃描 Key_io&=0xc0; if(Key_io!=0
32、xc0) if(Key_D_bit=0) Key_D_bit = 1;switch(Key_io) case 0x80: Key_value = 16; break; case 0x40: Key_value = 17; break; else Key_D_bit = 0; return Key_value;uchar XS_JG(uchar add,float n) uchar len,p=0; memset(Lcd_Str,0,16) ; sprintf(Lcd_Str,"%e",n) ; while(Lcd_Strp!='e') p+; if(Lcd_
33、Strp+2=0x30&&Lcd_Strp+3<0x37) sprintf(Lcd_Str,"%f",n); len = strlen(Lcd_Str) ; while(len) if(Lcd_Strlen-1='.') Lcd_Strlen-1 = 0; break; if(Lcd_Strlen-1='0') / 去除數(shù)據(jù)中多余的0與小數(shù)點 Lcd_Strlen-1 = 0; else break; len-; else while(p) if(Lcd_Strp-1='.') Lcd_Strp-1 =&
34、#39; ' break; if(Lcd_Strp-1='0') / 去除數(shù)據(jù)中多余的0與小數(shù)點 Lcd_Strp-1 = ' ' else break; p-; Dis_str(add," "); Dis_str(add,Lcd_Str); return len;void fuhao(uchar s) if(jjcc<5) if(Num_str0!='A') if(Num_str0<=0x39&&Num_str0>=0x30&&jjcc != 2) num1=atof
35、(Num_str); / 從數(shù)組中取第二個數(shù)字/ XS_JG(0x8a,num1); if(jjcc=0) Num_strLcd_dis1_i = s ; Lcd_dis1_i+;Lcd_num2_add = Lcd_dis1_i ; else if(Num_strLcd_num2_add=0) Num_strLcd_dis1_i-1 = s ; Dis_str(0x80,Num_str); if(jjcc=5) Lcd_dis1_i = 4 ; Lcd_num2_i = 0 ; Lcd_num2_add = 4; memset(Num_str,0,16); Num_str0 = 'A
36、' Num_str1 = 'n' Num_str2 = 's' Num_str3 = s; Dis_str(0x80," "); Dis_str(0x80,Num_str); void main(void) uchar num_key1; init_1602(); write_1602dat('0'); memset(Num_str,0,16); while(1) num_key1=saom();/讀按鍵值 delayms(10); if(num_key1<18)/是否有按鍵按下,小于16時有按鍵按下 batt
37、= 0; delayms(30);batt = 1; switch(num_key1) case 11: if(Num_strLcd_num2_add<=0x39&&Num_strLcd_num2_add>=0x30) num2=atof(Num_str+Lcd_num2_add); / 從數(shù)組中取第二個數(shù)字 else break; Lcd_num2_i=0 ;/ XS_JG(0x8a,num2); switch(jjcc) case 1: num1+=num2; / 加 break; case 2: num1-=num2; / 減 break; case 3: n
38、um1*=num2; / 乘 break; case 4: num1/=num2; / 除 break; XS_JG(0xc0,num1); Dis_str(0x80+Lcd_dis1_i,"="); jjcc=5; / 等號標志 break;case 12: if(Num_str0=0|Lcd_num2_i>0) break; fuhao('+'); jjcc=1;Dian_i=0 ; break; / 按下加號鍵case 13: if(Num_str0=0|Lcd_num2_i>0) break; fuhao('-'); jj
39、cc=2;Dian_i=0 ; break; / 按下減號鍵case 14: if(Num_str0=0|Lcd_num2_i>0) break; fuhao('*'); jjcc=3;Dian_i=0 ; break; / 按下乘號鍵case 15: if(Num_str0=0|Lcd_num2_i>0) break; fuhao('/'); jjcc=4;Dian_i=0 ; break; / 按下除號鍵case 10: if(Dian_i=0&&(Lcd_num1_i != 0|Lcd_num2_i != 0)/ 輸入小數(shù)點時前面必須
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人力資源管理顧問合同范本
- 度宣傳冊設計與加工合同
- 共有產(chǎn)權(quán)住房合同
- 房屋買賣合同范本:個人住宅版
- 農(nóng)村近郊租賃合同模板大全
- 10清新空氣是個寶 是什么污染了空氣(教學設計)-2023-2024學年道德與法治二年級下冊統(tǒng)編版
- 采購供應鏈管理合同
- 設備租賃合同示范合同范文
- Module 4 Unit 10 Wind (教學設計)-2024-2025學年滬教牛津版(深圳用) 英語五年級上冊
- 軟件開發(fā)合作合同(二)
- 園林聘用勞動合同
- 300畝文冠果樹栽培基地建設項目可行性研究報告
- 2025年菏澤職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年度企業(yè)安全生產(chǎn)與環(huán)保管理服務協(xié)議范本3篇
- 2025-2030年中國巧克力產(chǎn)品市場需求狀況及發(fā)展趨勢分析報告
- 上海市發(fā)展改革研究院工作人員招考聘用12人高頻重點提升(共500題)附帶答案詳解
- 2024年02月北京2024年中信銀行北京分行社會招考(0226)筆試歷年參考題庫附帶答案詳解
- 《社會服務機構(gòu)》課件
- 2025年研究生考試考研法律碩士專業(yè)基礎(法學397)試題及解答參考
- 《消費者行為分析》全套課件
- 焊接與熱切割作業(yè)實操培訓
評論
0/150
提交評論