版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
摘要在現(xiàn)代科技迅猛開展的當(dāng)今,計算器依然是人們?nèi)粘I钪胁豢苫蛉钡碾娮赢a(chǎn)品之一。計算器始終在不斷開展及完善之中,功能必將更加強大?;谶@樣的理念,本設(shè)計采用AT89C51單片機作為主控芯片,使用C語言為系統(tǒng)進行編程,采用4*4矩陣鍵盤作為輸入模塊,輸出模塊采用LCD1602液晶顯示,從而實現(xiàn)基于單片機的根本功能。本設(shè)計重點說明以下幾個方面內(nèi)容:基于單片機的計算器所具備哪些根本功能,對矩陣鍵盤輸入原理及液晶顯示原理進行簡單的闡述。介紹系統(tǒng)的整體設(shè)計理念,展示系統(tǒng)設(shè)計的流程框圖,并對功能模塊的劃分,及所選用的元器件性能參數(shù)進行詳細(xì)說明。對系統(tǒng)的每個功能模塊的軟硬件設(shè)計,進行詳細(xì)說明。關(guān)鍵詞單片機,AT89C52,LCD1602液晶,矩陣鍵盤,C語言ABSTRACTIntherapiddevelopmentofmodernscienceandtechnologytoday,thecalculatorisstilloneoftheelectronicproductsisanintegralpartofpeople'sdailylife.Thecalculatoralwaysamongthecontinuousdevelopmentandimprovement,thefunctionwillcertainlybemorepowerful.Basedonthisconcept,thedesignusesAT89C51microcontrollerasthemasterchip,usingtheCprogramminglanguageforthesystem,with4*4matrixkeyboardasaninputmodule,outputmoduleLCD1602LCDdisplay,inordertoachievethebasicfunctionsoftheMCU.
Thisdesignhighlightsthefollowingaspects:
1.microcontroller-basedcalculatorwithbasicfunctions,theprincipleofasimpleexpositionofprincipleandLCDmatrixkeyboardinput.
2.describesthesystem'soveralldesignconcept,showingtheflowdiagramofthesystemdesign,theandfunctionmoduleframing,andoptionalComponentperformanceparametersdescribedindetail.
3.ofeachfunctionalmoduleofthesystemhardwareandsoftwaredesignindetail.
KeywordsmicrocontrollerAT89C52,LCD1602LCD,matrixkeyboard,Clanguage目錄摘要IABSTRACTII1緒論11.1課題的研究背景及意義11.2本課題研究的主要內(nèi)容22設(shè)計任務(wù)及方案32.1設(shè)計任務(wù)32.2設(shè)計方案33系統(tǒng)硬件設(shè)計43.1單片機最小硬件系統(tǒng)4主控芯片AT89C52單片機簡介4復(fù)位電路9時鐘電路103.2鍵盤接口電路103.3液晶顯示電路114系統(tǒng)軟件設(shè)計154.1鍵盤掃描局部程序設(shè)計154.2運算局部程序設(shè)計154.3顯示局部程序設(shè)計164.4主函數(shù)程序設(shè)計175仿真和調(diào)試195.1keil系統(tǒng)概述195.2Keil使用步驟195.3proteus7.1介紹205.4Proteus對于本設(shè)計的仿真步驟205.5仿真結(jié)果216結(jié)論22參考文獻23附錄A:源程序24附錄B:系統(tǒng)總圖34致謝351緒論1.1課題的研究背景及意義計算器一般由運算器,存儲器,控制器,鍵盤,顯示器,電源和一些外圍設(shè)備及電子配件組成。低檔的計算器的運算器,控制器由數(shù)字邏輯電路實現(xiàn)簡單的串行運算。其隨機存儲器只有一到二個單元,供累加存儲用。高檔計算器由只讀存儲器和微處理器一同實現(xiàn)各種復(fù)雜的運算程序。且有較多的隨機存儲單元用來存放輸入程序和數(shù)據(jù)。鍵盤是計算器的輸入部件,采用接觸式或傳感式。顯示器是計算器的輸出部件,有發(fā)光二極管顯示器或液晶顯示器等。除顯示計算結(jié)果外,還常有溢出指示、錯誤指示等顯示。計算器電源采用電池或者交流轉(zhuǎn)換器池。為節(jié)省電能,計算器都采用CMOS工藝制作的大規(guī)模集成電路〔見互補金屬-氧化物-半導(dǎo)體集成電路〕,并在內(nèi)部裝有定時不操作自動斷電電路。計算器可選用的外圍設(shè)備有盒式磁帶機,微型打印機,磁卡機等等。計算器的根本類型:算術(shù)型計算器:可進行加、減、乘、除等簡單的四那么運算,又稱簡單計算器??茖W(xué)型計算器:可進行乘方、開方、指數(shù)、對數(shù)、三角函數(shù)、統(tǒng)計等方面的運算,又稱函數(shù)計算器。程序計算器:可以編程序,把較復(fù)雜的運算步驟貯存起來,進行屢次重復(fù)的運算。當(dāng)今社會,隨著人們物質(zhì)生活的不斷提高,電子產(chǎn)品已經(jīng)走進了家家戶戶,無論是生活或?qū)W習(xí),還是娛樂和消遣幾乎樣樣都離不開電子產(chǎn)品,大型復(fù)雜的計算能力是人腦所不能勝任的,而且比擬容易出錯。計算器作為一種快速通用的計算工具方便了用戶的使用。計算器這一程序機器實際上是從計算機中割裂出來的衍生品,但因其方便快捷的操作模式,已經(jīng)被廣泛應(yīng)用于商業(yè)等日常生活中,極大的方便了人們對于數(shù)字的整合運算。起源和開展最早的計算工具誕生在中國。籌策是中國古代最早采用的一種計算工具,又被稱之為做算籌。這種算籌的制作材料多是竹子,木頭,或獸骨.一束約二百七十枚,使用時可以放在布袋里面隨身攜帶。直到科技興旺的今天,中國群眾任然有很多在使用珠算盤,珠算盤是中國古代計算工具領(lǐng)域中的另一項創(chuàng)造,到明代時期。珠算盤的結(jié)構(gòu)已經(jīng)幾乎與現(xiàn)代的珠算盤相同。在17世紀(jì)初期,計算工具在西方國家的有了非常大的開展,英國數(shù)學(xué)家-納皮爾創(chuàng)造了納皮爾算籌,英國牧師-奧卻德創(chuàng)造了圓柱型對數(shù)計算尺,這種計算尺能夠?qū)崿F(xiàn)多種計算功能,不僅能夠?qū)崿F(xiàn)根本的四那么運算,也可以進行乘方和開方運算。更為強大的是,這種計算尺還可以計算三角函數(shù),指數(shù)函數(shù)和對數(shù)函數(shù)。這些計算工具積極推動了計算器的開展,為現(xiàn)代計算器的開展奠定了非常良好的根底,慢慢演變,成為現(xiàn)代社會中廣泛應(yīng)用的計算工具。在1642年,19歲的法國科學(xué)家-帕斯卡引用了算盤的原理,創(chuàng)造了世界上第一部機械式計算器,他的計算器裝置中有一些齒輪互相聯(lián)鎖,當(dāng)其中此輪轉(zhuǎn)過十位之后,就會使與其相連接的另一個齒輪轉(zhuǎn)過一位,使用者可以像使用號碼撥盤那樣,直接把數(shù)字撥進去,此后計算結(jié)果就可以出現(xiàn)在另一個窗口中,但是只可以做加減計算,不能做乘除運算。在1694年,德國的萊布尼茲將機械式計算器進行了改良,使其可以進行乘除運算。自此此后,一直等到20世紀(jì)50年代末,電子計算器才開始出現(xiàn)。1.2本課題研究的主要內(nèi)容本設(shè)計主要研究的是,基于單片機的簡易計算器,采用AT89C52單片機作為主控器件,矩陣鍵盤輸入,液晶顯示器講計算過程及結(jié)果顯示輸出,通過C語言編程,實現(xiàn)建議簡易計算器的功能。2設(shè)計任務(wù)及方案2.1設(shè)計任務(wù)1.對計算器硬件系統(tǒng)進行設(shè)計,利用AT89C52作為主控器件,組成一個能進行簡單四那么運算的計算器,能進行數(shù)據(jù)歸零,按鍵提示。2.運用keil進行計算器軟件系統(tǒng)的設(shè)計。3.在protues仿真平臺上,對軟件進行調(diào)試及仿真。2.2設(shè)計方案按照系統(tǒng)設(shè)計的功能的要求,確定設(shè)計系統(tǒng)由主控模塊、顯示模塊、鍵盤掃描接口電路、按鍵提示電路4個模塊組成。系統(tǒng)構(gòu)成框圖如圖2.1所示:圖2.1—系統(tǒng)構(gòu)成框圖3系統(tǒng)硬件設(shè)計3.1單片機最小硬件系統(tǒng)單片機最小系統(tǒng)就是支持主芯片正常工作的最小電路局部,包括主控芯片、復(fù)位電路和時鐘電路。3.1.1主控芯片AT89C52單片機簡介AT89C52引腳圖如圖3.1所示:圖3.1—AT89C52引腳圖AT89C52是ATMEL公司生產(chǎn)的51系列單片機,是一個低電壓,高性能CMOS8位單片機,片內(nèi)含8kbytes的可以反復(fù)擦寫的Flash只讀程序存儲器和256bytes的隨機存取數(shù)據(jù)存儲器〔RAM〕。AT89C52的主要功能特性:兼容MCS51指令系統(tǒng)8k可反復(fù)擦寫FlashROM32個雙向I/O口及256x8bit內(nèi)部RAM3個16位可編程定時/計數(shù)器中斷時鐘頻率0-24MHz2個串行中斷,可編程UART串行通道2個外部中斷源,共6個中斷源2個讀寫中斷口線,3級加密位低功耗空閑和掉電模式,軟件設(shè)置睡眠及喚醒功能AT89C52的主要管腳有:XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。外接12MHz晶振。VCC和VSS:為供電端口,分別接+5V電源的正負(fù)端。RST/Vpd:為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。P0口:8位漏極開路型雙向I/O口,地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位可以用吸收電流的方式來驅(qū)動8個TTL邏輯門電路,對端口P0寫“1〞時,可以作為高阻抗輸入端使用。在訪問外部數(shù)據(jù)存儲器或者程序存儲器的時候,分時轉(zhuǎn)換地址低8位,和數(shù)據(jù)總線復(fù)用。在訪問期間激活內(nèi)部的上拉電阻。P1口:帶有內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可以驅(qū)動〔吸收電流或輸出電流〕的4個TTL邏輯門電路。對端口寫“1〞時,通過內(nèi)部的上拉電阻可以把端口拉到高電平,可作輸入口使用。當(dāng)作為作輸入口使用時,因為內(nèi)部存在有上拉電阻,因此某個引腳被外部信號拉低,會輸出一個電流(IIL)。與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計數(shù)器2的外部計數(shù)輸入〔P1.0/T2〕和輸入〔P1.1/T2EX〕。參見表1:表1:引腳 功能特性P1.0T2時鐘輸出P2.0T2EX〔定時器/計數(shù)器2〕P2口:為帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可以驅(qū)動〔吸收電流或輸出電流〕4個TTL邏輯門電路。當(dāng)對端口P2寫“1〞時,通過內(nèi)部的上拉電阻可以把端口拉到高電平去,此時可作輸入口使用,當(dāng)作輸入口使用時,因為其內(nèi)部存在有上拉電阻,當(dāng)某個引腳被外部信號拉低的時候會輸出一個電流(IIL)。P3口:為帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動〔吸收電流或輸出電流〕4個TTL邏輯門電路。當(dāng)對P3口寫入“1〞時,它們會被內(nèi)部上拉電阻拉高并且可以作為輸入端口。此時,當(dāng)被外部拉低的P3口將用上拉電阻輸出電流〔IIL〕。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能P3口還可以接收一些用于Flash閃速存儲器編程及程序校驗的控制信號。ALE/PROG:當(dāng)訪問數(shù)據(jù)存儲器或者外部程序存儲器的時候,ALE〔地址鎖存〕允許輸出脈沖用在鎖存地址的低8位字節(jié)。一般情況之下,ALE仍然以時鐘振蕩頻率的六分之一來輸出固定的脈沖信號。因此它可以用來為外部輸出時鐘或者用來作為定時目的。值得大家注意的是:每當(dāng)來訪問外部的數(shù)據(jù)存儲器時,將會跳過一個ALE脈沖。在對Flash存儲器編程的期間,該引腳還可以用于輸入編程脈沖〔PROG〕。如果有必要,還可通過對特殊功能存放器〔SFR〕區(qū)域中的8EH單元的D0位置位,可以禁止ALE操作。在該位置位后,只有一條MOVX和MOVC指令才可以將ALE激活。此外,該引腳還會被微微拉高一些,當(dāng)單片機執(zhí)行外部程序時,應(yīng)該設(shè)置ALE禁止位無效。PSEN:程序存儲允許外部程序讀取內(nèi)存頻閃〔PSEN〕的方式,當(dāng)AT89C52取從外部程序存儲器讀取指令時〔或數(shù)據(jù)〕,每個機器周期兩次有效PSEN。作為外部數(shù)據(jù)存儲器的訪問,并在同一時間傳遞信號,跳過PSEN兩次。EA/VPP:允許外部訪問,意圖使CPU只訪問外部程序的存儲器〔地址范圍為0000H-FFFFH〕,EA端必須保持低電平〔接地〕。注意:如果當(dāng)加密位LB1被編程時,EA端狀態(tài)會在復(fù)位時被內(nèi)部鎖存。如果EA管腳接為高電平〔連接Vcc端〕時,CPU執(zhí)行內(nèi)部程序存儲器的指令。當(dāng)Flash存儲器編程時,此引腳和+12V的編程允許電源VPP,當(dāng)然,這必須是該設(shè)備使用12V編程電壓Vpp。特殊功能存放器:在AT89C52的芯片內(nèi)的存儲器中,一共有128個單元的的80H-FFH的特殊功能存放器〔SFE〕。不是所有的地址都能被定義,總共有128個字節(jié)從80H-FFH只有一局部會被定義,以及有相當(dāng)一局部還沒有被定義。針對該單位對沒有??提供的定義的局部讀寫將是無效的,讀出的數(shù)值將是不確定的,而寫的數(shù)據(jù)也將會喪失。不應(yīng)將數(shù)據(jù)“1〞被寫入沒有被定義的單位,因為可能會在未來中的產(chǎn)品,在這些單元中的賦予了新的功能,這而在樣的情況下,復(fù)位后,這些單位在數(shù)值始終為“0〞數(shù)據(jù)存儲器:AT89C52內(nèi)部RAM有256字節(jié)。80H-FFH,高128字節(jié)特殊功能存放器〔SFR〕地址重疊,也就是說,高128字節(jié)的RAM,與特殊功能存放器有相同的地址,它們是分開的,在物理上來說。當(dāng)一個指令訪問的7FH內(nèi)部地址單元以上的局部,指令尋址模式是不同的,該決定尋址訪問高位128字節(jié)的RAM或訪問特殊功能存放器。如果指令是直接尋址訪問,那么訪問的是特殊功能存放器。定時器2:定時器2是一個16位的定時器/計數(shù)器。它無論是作為一個計時器,還是作為外部事件計數(shù)器,都是可行的。它的工作原理所選擇的特殊功能存放器T2CONC/T2。定時器2的工作模式有三種:捕捉,自動重裝模式〔向上或向下計數(shù)〕和波特率發(fā)生器,工作T2CON控制位選擇。定時器2由兩個8位存放器TH2和TL2定時器工作,在定時器的工作方式中,每個機器周期TL2存放器的值加1,一個機器周期由12個振蕩器時鐘構(gòu)成,因此,計數(shù)率是振蕩頻率的1/12。在計數(shù)器工作的時候,當(dāng)T2引腳的外部輸入信號時,1-0下降沿產(chǎn)生,存放器的值加1,在這樣的工作之下,在每個機器周期5SP2期間,外部輸入進行采樣。通過在第一個機器周期所采樣到的值為1,下一個機器周期所采樣到的值是0,隨后的存放器中,就在下一個周期的S3P1期間加1。確定1-0過渡占用兩個機器周期〔24個振蕩周期〕,因此,最大計數(shù)率的振蕩頻率的1/24。是必需的,以確保正確的采樣的輸入電平的變化時刻之前保持至少一個完整的周期,以確保輸入信號被至少一次采樣。捕獲方式:在捕獲模式下,T2CON控制位EXEN2來選擇兩個不同的工作方式。當(dāng)EXEN2=0,定時器2就是是一個16位的定時器或者計數(shù)器。當(dāng)計數(shù)溢出的時候,溢出標(biāo)志TF2在T2CON中設(shè)置,此時中斷在同一時間激活。如果EXEN2=1,定時器2做同樣的操作,T2EX引腳的外部輸入信號1-0負(fù)跳變發(fā)生時,TH2和TL2中的值被捕獲到RCAP2H和RCAP2L中。此外,T2EX引腳信號跳變使T2CON的EXF2置位,TF2的類似,EXF2激活中斷。當(dāng)定時器處于自動重裝模式,可以通過編程來向上或向下計數(shù),這個功能可以DCEN位特殊功能存放器T2CON〔允許自動重裝〔向上或向下計數(shù)器〕倒計時〕選擇。復(fù)位的時候,DCEN位置“0〞,默認(rèn)設(shè)置定時器計數(shù)。當(dāng)DCEN設(shè)置,定時器2可以向上計數(shù),取決于T2EX引腳的值,,當(dāng)DCEN=0時,定時器2會自動設(shè)置為計數(shù)摸索,且向上,在此模式控制位EXEN2T2CON中有兩個選項,如果EXEN2=0,定時器2計數(shù)到0FFFFH溢出集,TF2激活中斷,而16位計數(shù)存放器RCAP2H和RCAP2L的重裝RCAP2H和RCAP2L的值由軟件預(yù)置。如果EXEN2=1,定時器2的16-位重載溢出或外部輸入端子的T2EX觸發(fā)從1-0的的的下降沿。這個脈沖信號使EXF2設(shè)置的中斷被啟用時,如果一個中斷被允許,同樣也會產(chǎn)生中斷。定時器2的中斷入口地址是:002BH-0032H。當(dāng)DCEN=1時的。并允許定時器2向上計數(shù)或者向下計數(shù),通過這種方式,用T2EX引腳來控制計數(shù)器的計數(shù)方向。該T2EX引腳到一個邏輯“1〞時,使得該定時器計數(shù)高達(dá)0FFFFH時,產(chǎn)生溢出,置位TF2,同時把16-位的的計數(shù)的存放器RCAP2H與RCAP2L重新-加載成TH2和TL2中。當(dāng)T2EX引腳到邏輯“0〞的時候,就將定時器2的向下計數(shù),當(dāng)TH2和TL2的值是等于到包含在RCAP2H和RCAP2L中的值的時候,計數(shù)溢出,把TF2置位,與此同時,在定時存放器中,重新裝入0FFFFH。中斷:AT89C52共有6個中斷源:兩個外部中斷〔INT0和INT1〕,三個定時中斷〔定時器0,1,2〕和串行端口中斷。通過設(shè)置特殊存放器IE設(shè)置或去除控制每個中斷源的允許或禁止。IE的總禁止位是EA,它用來控制所有中斷的允許或禁止。程序員不可以把1寫入保存位,它們是用來在未來AT89系列產(chǎn)品中被用作為擴展的。在定時器2中,受T2CON,TF2和EXF2的邏輯的影響來產(chǎn)生中斷,這些標(biāo)志不能被硬件去除,效勞程序被確定為TF2或EXF2產(chǎn)生中斷。并且是由軟件來去除所產(chǎn)生的中斷標(biāo)志。TF0和TF1定時器0和定時器1標(biāo)志S5P2機器周期定時器溢出狀態(tài)位設(shè)置,并在下一個機器周期的中斷標(biāo)志查詢之前查詢到該標(biāo)志。然而,定時器2標(biāo)志TF2S2P2機器周期定時器溢出狀態(tài)位被設(shè)置,并在同一個機器周期查詢標(biāo)志。時鐘振蕩器:AT89C52有一個高增益的反相放大器,用于構(gòu)成內(nèi)部振蕩器。引腳XTAL2和引腳XTAL1是放大器的輸出端和輸入端。此放大器的反應(yīng)元件芯片石英晶體或陶瓷諧振器一起構(gòu)成一個自激振蕩器的振蕩電路,一個外部晶體〔或陶瓷諧振器〕和電容器C1,C2構(gòu)成并聯(lián)連接到放大器的反應(yīng)回路中的振蕩電路。外部電容器C1,C2的選擇,雖然不是很嚴(yán)格的要求,但電容的大小由電平的振蕩頻率受到輕微影響,振蕩器的工作的穩(wěn)定性,啟動程序的難度和溫度穩(wěn)定性,并且如果我們使用石英晶體,那么電容選取30pF±10pF的范圍比擬適宜,如果是選擇陶瓷諧振器來使用,那么建議選擇40PF±10F的范圍比擬適宜。用戶也可以使用外部時鐘。在這種情況下,外部時鐘脈沖接到XTAL1端,也可稱之為,內(nèi)部時鐘產(chǎn)生電路的輸入端,此時,把XTAL2引腳懸空。外部時鐘信號通過2分頻路作為內(nèi)部時鐘信號的觸發(fā)器,因此對外部時鐘信號的占空比無特殊要求應(yīng)符合技術(shù)條件的要求低的最低高電平持續(xù)時間和最大持續(xù)時間。空閑節(jié)電模式:在空閑模式操作時,此時CPU處于睡眠狀態(tài),所有片上外設(shè)仍然活潑在軟件這種方式。在這種情況下,芯片上的RAM和特殊功能存放器的內(nèi)容凍結(jié)??臻e模式可以終止任何啟用的中斷請求或硬件復(fù)位。由硬件復(fù)位終止空閑,只需要短短兩個機器周期有效復(fù)位信號,在這種狀態(tài)下,片上硬件抑制訪問內(nèi)部RAM,但訪問的端口引腳,當(dāng)復(fù)位到終止空閑的端口,以防止可能產(chǎn)生無意的寫指令的指令后,進入空閑模式不應(yīng)該是單端口或外部存儲器寫指令。掉電模式:在掉電模式下,振蕩器停止,而進入掉電模式的指令是最后一條指令被執(zhí)行,片上RAM以及特殊功能存放器的內(nèi)容將會在終止掉電模式前被凍結(jié)住。只有采取硬件復(fù)位的方式,才能退出掉電模式是。一個硬件復(fù)位之后,所有的特殊功能存放器將被重新定義,但RAM中的內(nèi)容不會被改變,在VCC的正常工作電平被恢復(fù)之前,應(yīng)為無效復(fù)位,并必須保持目標(biāo)時間,才能使振蕩器重新啟動并穩(wěn)定工作。3.1.2復(fù)位電路復(fù)位電路如圖3.2圖3.2—復(fù)位電路采用按鍵方式,電阻分別選取100Ω和10K,電容選取0.1μF。上電復(fù)位是復(fù)位電路的第一功能。通用的微機電路正常的的工作電源電壓為5V±5%,即4.75V至5.2V。復(fù)位電路是用來讓微型計算機系統(tǒng)保持穩(wěn)定可靠的工作狀態(tài)的不能缺少的局部。總所周知,微型計算機電路是有時序的數(shù)字電路,它需要一個穩(wěn)定的時鐘信號,所以當(dāng)電源開啟時,只有當(dāng)VCC超過4.75V的時候或者VCC低于5.25V的時候,并且要晶體振蕩器工作狀態(tài)持續(xù)穩(wěn)定,復(fù)位信號才可以被撤銷,計算機電路才能開始正常工作。上電復(fù)位原理:當(dāng)VCC上電時,電容C充電,而在10K的電阻上出現(xiàn)電壓,使得單片機可以復(fù)位;幾個毫秒之后,電容C被充滿,10K的電阻上的電流被降為0,電壓此時也為0,從而使得單片機開始進入工作狀態(tài)。手動復(fù)位原理:工作期間,按下按鍵S,電容C放電。按鍵S松手,電容C又充電,此時在10K電阻上出現(xiàn)電壓,從而使得單片機復(fù)位。幾個毫秒后,單片機開始進入工作狀態(tài)。3.1.3時鐘電路時鐘電路如圖3.3:圖3.3—時鐘電路時鐘電路是計算機的心臟,它控制著計算機的工作節(jié)奏就是通過復(fù)雜的時序電路完成不同的指令功能的。單片機工作時,從取指令到譯碼再進行微操作,必須在時鐘信號控制下才能有序地進行,時鐘電路就是為單片機工作提供根本時鐘的。單片機的時鐘信號通常有兩種產(chǎn)生方式:內(nèi)部時鐘方式和外部時鐘方式。內(nèi)部時鐘方式:內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,引腳分別為此放大器的輸人端和輸出端,在單片機XTAL1和XTAL2引腳上跨接上一個晶振和兩個穩(wěn)頻電容,可以與單片機片內(nèi)的電路構(gòu)成一個穩(wěn)定的自激振蕩器。晶振的取值范圍一般為0~24MHz,常用的晶振頻率有6MHz、12MHz、11.0592MHz、24MHz等。一些新型的單片機還可以選擇更高的頻率。外接電容的作用是對振蕩器進行頻率微調(diào),使振蕩信號頻率與晶振頻率一致,同時起到穩(wěn)定頻率的作用,一般選用20~30pF的瓷片電容。外部時鐘方式:是在單片機XTAL1引腳上外接一個穩(wěn)定的時鐘信號源,它一般適用于多片單片機同時工作的情況,使用同一時鐘信號可以保證單片機的工作同步。3.2鍵盤接口電路鍵盤接口電路如圖3.4所示:圖3.4—鍵盤接口電路4*4矩陣鍵盤工作原理:矩陣鍵盤又稱為行列式鍵盤,它由4條I/O線為行線,4條I/O線做列線組成,在行線和列線的每個交叉點上設(shè)置一個按鍵。這樣鍵盤中的按鍵數(shù)為4*4個,所以稱之為4*4矩陣鍵盤,這種行列式的鍵盤結(jié)構(gòu)大大提高了I/O口的利用率。在本設(shè)計中:行線置高電平,接P1口的低四位P1.3-P1.0列線置低電平,接P1口的高四位P1.7-P1.4高四位為輸入,低四位為輸出1.檢測當(dāng)前是否有鍵按下,采用逐行掃描法,檢測方法為先將P1.7-P1.4依次置0,檢測P1.3-P1.0狀態(tài),假設(shè)全為1那么無鍵閉合,否那么有鍵閉合。2.取出鍵抖動,當(dāng)檢測到有鍵按下后,延時一段時間再做下一步判斷。3.假設(shè)有鍵按下,應(yīng)判斷究竟是哪一鍵按下。方法是對鍵盤的行線進行掃描將P1.7-P1.4依次置0時,P1.3-P1.0狀態(tài)表3.2:P1.31110P1.21101P1.11011P1.00111閉合狀態(tài)第一行閉合第二行閉合第三行閉合第四行閉合表3.2—P10-P13狀態(tài)表3.3液晶顯示電路本設(shè)計液晶顯示局部采用LCD1206電路如圖3.5:圖3.5—LCD1206電路液晶顯示原理:線段的顯示:圖象形式的液晶顯示裝置有M×N個根本的顯示單元,假設(shè)LCD顯示64行,每行有128列,一字節(jié)的8位對應(yīng)每8位,即組成方式是由每行16字節(jié),共16×8=128個點而組成的,64×16顯示單元與RAM的顯示區(qū)對應(yīng)于1024個字節(jié),以對應(yīng)于每一個顯示位置上的每個字節(jié)的顯示的亮暗程度。例如,屏幕亮和暗的第一行的內(nèi)容由16個字節(jié)的RAM區(qū)內(nèi)容來決定,而當(dāng)000H-00FH〔000H〕=FFH時顯示在屏幕左上角的短亮線,長度是8個小點,而當(dāng)〔3FFH〕=FFH,就在屏幕的右下角會顯示一個簡短的亮線;〔000H〕=FFH〔001H〕=00H〔002H〕=00H,〔00EH〕=00H〔00FH〕=00H,第8段亮線和8個暗線,在屏幕頂部顯示一條虛線。這是液晶顯示器〔LCD〕顯示的根本原理。字符的顯示:一個字符在液晶顯示中顯示是比擬復(fù)雜的,因為一個字符是由6×8或者8×8的點陣構(gòu)成的,不僅要找到和顯示在屏幕上的顯示RAM的8個字節(jié)的位置對應(yīng)的字節(jié),而且還要使每個字節(jié)不同的位是“1〞,另一個是“0〞,把“1〞點亮,而“0〞是不亮。用這樣的方法來組成一個字符。但是顯示字符對于內(nèi)帶有字符發(fā)生器的控制器,是比擬簡單的,可以允許控制器工作在文本模式中,根據(jù)液晶屏上開始顯示的行和列的號,和就可以找出RAM所對應(yīng)的地址,設(shè)置一個游標(biāo),發(fā)送這個字符所對應(yīng)的代碼就可以了。漢字的顯示:對于漢字的顯示一般是采用圖形的方式,將要顯示的中國漢字的點陣碼〔字模提取軟件〕從微機中提取,每個漢字占32B,分為左,右兩半,每半各16B,左邊是基數(shù)1,3,5……右邊是偶數(shù)2,4,6…..正確的顯示中文字符,根據(jù)在LCD上現(xiàn)實的行列號,及行列數(shù)可以找出在RAM上所對應(yīng)的的地址,在光標(biāo)的位置上加1,發(fā)送的第二個字節(jié),先換行再按列對齊,給第三個字節(jié)直到32B完全被顯示,就可以在液晶顯示屏上得到一個完整的中文字符。LCD1206引腳如圖3.6所示:圖3.6—LCD1206引腳圖LCD1602采用標(biāo)準(zhǔn)的16腳接口,但在proteus仿真中無字庫,故為14腳第1腳:VSS為電源接地第2腳:VCC接5V電源的正極第3腳:V0為液晶顯示器的比照度調(diào)整端,當(dāng)接正電源的時時候比照度最弱,而接地電源時比照度最高〔而當(dāng)比照度過高時會,就會產(chǎn)生“鬼影〞,使用時可以通過接一個10K的電位器來調(diào)整比照度〕。第4腳:RS為存放器選擇腳,當(dāng)高電平1時就選擇數(shù)據(jù)存放器,當(dāng)?shù)碗娖?時就選擇指令存放器。第5腳:RW是讀寫信號線,當(dāng)高電平時進行讀操作,當(dāng)?shù)碗娖綍r進行寫操作。第6腳:E(或EN)端為使能端,當(dāng)高電平1時讀取信息,當(dāng)負(fù)跳變時執(zhí)行指令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。在單片機系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點:1.顯示質(zhì)量高:液晶顯示器的每一個點從一收到信號那一刻后,就始終保持相同的色彩和亮度,保持恒定發(fā)光,而陰極射線管顯示器〔CRT〕卻需要不斷刷新來亮點。因而液晶顯示器的顯示畫質(zhì)更加清晰穩(wěn)定。液晶顯示器都是數(shù)字式的,當(dāng)其和單片機系統(tǒng)連接時,系統(tǒng)更加簡單可靠,操作更加的方便。2.體積小、重量輕:液晶顯示器主要是通過改變顯示屏上的電極控制液晶分子的狀態(tài)來到達(dá)顯示的目的,因此在重量上比相同顯示面積的傳統(tǒng)顯示器要輕很多。3.功耗低:液晶顯示器的功耗消耗最大的地方主要是在其內(nèi)部的電極和驅(qū)動IC上,因此液晶顯示器的耗電量比其它的顯示器要少得多。LCD1602的指令碼如表2所示:指令碼指令碼功能令RSR/WD7D6D5D4D3D2D1D0去除顯示0000000001將DDRAM填滿"20H",并且設(shè)定DDRAM的地址計數(shù)器(AC)到"00H"地址歸位000000001X設(shè)定DDRAM的地址計數(shù)器(AC)到"00H",并且將游標(biāo)移到開頭原點位置;這個指令不改變DDRAM的內(nèi)容顯示狀態(tài)開/關(guān)0000001DCBD=1:整體顯示ONC=1:游標(biāo)ONB=1:游標(biāo)位置反白允許進入點設(shè)定00000001I/DS指定在數(shù)據(jù)的讀取與寫入時,設(shè)定游標(biāo)的移動方向及指定顯示的移位游標(biāo)或顯示移位控制000001S/CR/LXX設(shè)定游標(biāo)的移動與顯示的移位控制位;這個指令不改變DDRAM的內(nèi)容功能設(shè)定00001DLXREXXDL=0/1:4/8位數(shù)據(jù)RE=1:擴充指令操作RE=0:根本指令操作設(shè)定CGRAM地址0001AC5AC4AC3AC2AC1AC0設(shè)定CGRAM地址設(shè)定DDRAM地址0010AC5AC5AC3AC2AC1AC0設(shè)定DDRAM地址〔顯示位址〕第一行:80H-87H第二行:90H-97H讀取忙標(biāo)志和地址01BFAC6AC5AC5AC3AC2AC1AC0讀取忙標(biāo)志(BF)可以確認(rèn)內(nèi)部動作是否完成,同時可以讀出地址計數(shù)器(AC)的值寫數(shù)據(jù)到RAM10將數(shù)據(jù)D7——D0寫入到內(nèi)部的RAM(DDRAM/CGRAM/IRAM/GRAM)讀出RAM的值11從內(nèi)部RAM讀取數(shù)據(jù)D7——D0(DDRAM/CGRAM/IRAM/GRAM)表2—LCD1602的指令碼4系統(tǒng)軟件設(shè)計4.1鍵盤掃描局部程序設(shè)計鍵掃程序的過程為:開始時,先判斷是否有鍵閉合,無鍵閉合時,返回繼續(xù)判斷,有鍵閉合時,先去抖動,然后確定是否有鍵按下,假設(shè)無鍵按下,那么返回繼續(xù)判斷是否有鍵閉合,假設(shè)有鍵按下,那么判斷鍵號,然后釋放,假設(shè)釋放按鍵完畢,那么返回,假設(shè)沒有釋放按鍵,那么返回繼續(xù)釋放。流程圖如圖4.1圖4.1-鍵盤掃描流程圖4.2運算局部程序設(shè)計算術(shù)運算程序的過程為:首先判斷當(dāng)前輸入的運算符是以下運算符中的哪一個+、-、*、/,如果是+或者是*,那么要先判斷運算結(jié)果是否會溢出,如果結(jié)果溢出那么不顯示運算結(jié)果,沒溢出就顯示運算結(jié)果,假設(shè)是/,那么要先判斷除數(shù)是否為零,為零就不顯示結(jié)果,不為零那么顯示運算結(jié)果,假設(shè)是-,那么直接顯示運算結(jié)果。其流程圖如圖4.1所示:圖4.2-運算流程圖4.3顯示局部程序設(shè)計顯示程序的過程為:顯示開始時,先進行LCD的初始化,判斷是否顯示漢字或ACSII碼或圖形,假設(shè)不顯示,那么返回,假設(shè)顯示的是漢字或ACSII碼,那么進行相應(yīng)功能的設(shè)置,然后送地址和數(shù)據(jù),再判斷是否顯示完,顯示完那么返回,沒有顯示完那么繼續(xù)送地址,假設(shè)顯示的是圖形,那么先進行相應(yīng)功能的設(shè)置,再送行地址和列地址,然后送數(shù)據(jù),最后判斷是否顯示完,顯示完那么返回,沒有顯示完那么繼續(xù)送行地址和列地址。其流程圖如圖4.3所示:圖4.3-顯示流程圖4.4主函數(shù)程序設(shè)計主函數(shù)流程圖如圖4.4所示圖4.4-主函數(shù)流程圖程序清單詳見附錄15仿真和調(diào)試5.1keil系統(tǒng)概述KeilC51是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到KeilC51生成的目標(biāo)代碼效率非常之高,其生成的匯編代碼結(jié)構(gòu)緊湊,讀者理解起來比擬容易。在開發(fā)大型軟件時由此更能表達(dá)高級語言的優(yōu)勢。KeilC51工具包的整體結(jié)構(gòu)中,其中uVision與Ishell分別是C51forWindows和forDos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)立生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目標(biāo)板進行調(diào)試,也可以直接寫入程序存貯器如EPROM中。5.2Keil使用步驟1.在windows下運行keil軟件,進入keil開發(fā)環(huán)境;2.在keiluVision選擇project/newproject建立一個新工程工程3.給工程工程取名為calculator,然后保存在文件夾下;3.緊接著自動彈出器件選擇框,選擇ATMEL公司的AT89C52;4.在keiluVision中選擇file/new,翻開程序編輯器,輸入程序檢查無誤后保存文件calculator.c在工程工程相同的目錄中;5.保存好后把文件參加到工程工程中,在projectworkspace窗口中,選擇sourceGroup1條目并單擊右鍵在彈出的菜單項選擇擇addfilestogroup‘sourcegroup1’;6.接著編譯工程工程;7.接下來生成HEX文件,在projectworkspace窗口中,選擇target1條目并單擊右鍵,在彈出的菜單中選擇optionfortarget1,準(zhǔn)備為target1配置編譯環(huán)境;8.在output頁為createdHEXfile項打勾,已便于輸出單片機燒寫用HEX格式文件;9.選項配置好后,在keil中選擇projectbuildtarget,再次編譯工程工程,編譯結(jié)果顯示在outputwindows,有錯返回修改,無措就進行軟件調(diào)試;10.在keil中選擇debug—startstopdebugsession進入軟仿真調(diào)試。5.3proteus7.1介紹Proteus的ISIS是一款Labcenter出品的電路分析實物仿真系統(tǒng),可對各種電路和IC進行仿真,能支持單片機,其元件庫齊全,使用起來方便,是不可多得的優(yōu)秀的專業(yè)單片機軟件仿真系統(tǒng)。該軟件具有如下的特點:1.能滿足我們所提出的對單片機軟件仿真系統(tǒng)的所有標(biāo)準(zhǔn),并且在同類產(chǎn)品中具有非常明顯的優(yōu)勢。2.具有數(shù)字電路仿真、模擬電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS一232動態(tài)仿真、1C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、如示波器、邏輯分析儀、信號發(fā)生器等。目前支持的單片機類型有:8051系列、AVR系列、68000系列、PIC12系列、PIC18系列、Z80系列、PIC16系列、HC11系列以及各種外圍芯片。支持大量的存儲器和外圍芯片。該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大,可仿真51、AVR、PIC。5.4Proteus對于本設(shè)計的仿真步驟1.進入proteusISIS集成環(huán)境,在工作前,在systerm菜單下設(shè)置界面的顏色、圖形界面大小等工程,我采用了系統(tǒng)默認(rèn)值。2.從庫中選擇元件命令,在pickdevices窗口中選擇電路所需的元件,放置元件到編輯區(qū)并調(diào)整其相對位置,進行元件參數(shù)設(shè)置。3.元器件間連線,連線并加上需要的說明,并完成仿真原理圖,加載程序,將編譯調(diào)試完成的簡易計算器機器碼程序〔hex文件〕加載到AT89C51單片機中。4.單擊仿真工具欄中的仿真鍵,觀察仿真結(jié)果??梢园磿和?、繼續(xù)、單步、等按鈕,查看效果如圖5.1圖5.1—proteus仿真圖5.5仿真結(jié)果圖5.2—仿真結(jié)果6結(jié)論隨著時代的開展,單片機控制的電子產(chǎn)品對人們的生產(chǎn)生活各個方面都有著重要的影響。本文設(shè)計的簡易計算器,基于AT89C52單片機,選用4*4矩陣鍵盤作為輸入模塊,LCD1602液晶顯示模塊能實現(xiàn)根本的四那么運算,通過這次設(shè)計的學(xué)習(xí),著重培養(yǎng)了我獨立思考、綜合運用所學(xué)有關(guān)知識的能力,能更好的穩(wěn)固單片機、C語言、模擬電路、數(shù)字電路學(xué)習(xí)的內(nèi)容。通過設(shè)計,不僅完成了一個作品,更重要的是在實際設(shè)計和試驗中形成了更加科學(xué)合理的認(rèn)識,不斷形成更為合理和具有科學(xué)性的思想方式。在這次設(shè)計中接住了互聯(lián)網(wǎng)等途徑查詢相關(guān)信息,并在圖書館查閱了大量單片機資料。這不但擴展了有關(guān)單片機領(lǐng)域的眼界,而且完善了以往的知識體系。提高了運用知識的綜合能力。參考文獻邱關(guān)源.電路(第四版)[M].北京:高等教育出版社,2006.9.康華光.電子技術(shù)根底模擬局部(第五版)[M].北京:高等教育出版社,2023.1.馬剛.用Proteus和Keil整合構(gòu)建單片機虛擬仿真平臺[J],現(xiàn)代電子技術(shù),2006.24:129-131張迎.單片微型計算機原理、應(yīng)用及接口技術(shù)[M].國防工業(yè)出版社.2007.1戴佳.單片機C語言應(yīng)用程序設(shè)計實例精講[M],電子工業(yè)出版社,2006.胡漢才.單片機原理及接口技術(shù)[M].清華大學(xué)出版社華成英.模擬電子技術(shù)根底[M].高等教育出版社凌志浩.AT89C52單片機原理與接口技術(shù)[M].高等教育出版社,2023.3閻石.數(shù)字電子技術(shù)根底.高等教育出版社[M]徐愛鈞.智能化測量控制儀表原理與設(shè)計〔第二版〕.北京航天航空大學(xué)出版社,2004.9孫育才等.MCS-51系列單片微型計算機及其應(yīng)用〔第4版〕.東南大學(xué)出版社,2004.3李萍等.智能儀器實驗指導(dǎo)書.大連交通大學(xué)出版社,2007.9周立功.單片機實驗與實踐.北京航天航空大學(xué)出版社,2004.3龔運新單片機C語言開發(fā)技術(shù).清華大學(xué)出版社,2006.10朱定華.單片機原理與接口技術(shù).電子工業(yè)出版社,2001.4李陪金.C語言程序設(shè)計案例教程.西安電子科技大學(xué)出版社,2023.1Hanna.E,TheroleofAntarcticseaiceinglobalclimatechange[J],OceanographicLiteratureReview,1997.Dallassemiconductctordatabook[M].DallasSemiconductorCorporation,1995.Chen,C,S.Networkbasedtemperaturemeasurementsystem[J].Proceedingsofthe51stInternationalInstrumentationSymposium,2005.附錄A:源程序//p1口接矩陣鍵盤#include<reg51.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedintsbitpinRS =P2^0;//數(shù)據(jù)命令選擇端sbitpinRW=P2^1;//讀寫數(shù)據(jù)端sbitpinE=P2^2; //使能端//#include"LCD1602.h"voidshortdelay(uchari)//短延時{for(;i>0;i--);}//長延時voidlongdelay(uinti){uintj;for(;i>0;i--){for(j=100;j>0;j--);}}//延時程序voiddelay(inti){intj;for(;i>0;i--)for(j=0;j<100;j++);}//初試狀態(tài)voidio_init(){P1=0xff;}//鍵盤掃描局部//unsignedcharkey_scan(){unsignedcharkey;unsignedchartemp;uintflag;io_init(); //初始化P1=0xf0; //高四位輸入行為高電平列為低電平flag=0;loop:temp=P1^0xf0; //屏蔽低四位while(temp){P1=0xfe;delay(1);if((P1&0xfe)!=0xfe)switch(P1){case0xee:key=0x11;flag=1;break;case0xde:key=0x12;flag=1;break;case0xbe:key=0x13;flag=1;break;case0x7e:key=0x14;flag=1;break;}if(flag)gotoexit;elseP1=0xfd;delay(1);if((P1&0xfd)!=0xfd)switch(P1){case0xed:key=0x21;flag=1;break;case0xdd:key=0x22;flag=1;break;case0xbd:key=0x23;flag=1;break;case0x7d:key=0x24;flag=1;break;}if(flag)gotoexit;elseP1=0xfb;delay(1);if((P1&0xfb)!=0xfb)switch(P1){case0xeb:key=0x31;flag=1;break;case0xdb:key=0x32;flag=1;break;case0xbb:key=0x33;flag=1;break;case0x7b:key=0x34;flag=1;break;}if(flag)gotoexit;elseP1=0xf7;delay(1);if((P1&0xf7)!=0xf7)switch(P1){case0xe7:key=0x41;flag=1;break;case0xd7:key=0x42;flag=1;break;case0xb7:key=0x43;flag=1;break;case0x77:key=0x44;flag=1;break;}exit:returnkey;}if(temp==0)gotoloop;}//鍵盤掃描完//顯示初始化//P0口初始化voidinitpindata(biti){//ucharpindata,pinRS,pinRW,pinE;if(i==1)P0=0xff;elseP0=0X00;}//數(shù)據(jù)命令選擇設(shè)置voidsetRS(biti){if(i==1)pinRS=1; //RS高電平選擇數(shù)據(jù)存放器elsepinRS=0; //RS低電平選擇指令存放器}//讀寫操作控制voidsetRW(biti){if(i==1)pinRW=1; //RW高電平選擇讀elsepinRW=0; //RW低電平選擇寫}//使能信號voidsetE(biti){if(i==1)pinE=1; elsepinE=0; // 下降沿執(zhí)行}//讀BF以及AC的值uintread_BF_AC() //忙標(biāo)志位和地址計數(shù)器AC命令BF為1表示忙{uinttemp;initpindata(1); //初始化setRS(0); //數(shù)據(jù)命令選擇設(shè)置setRW(1); //讀寫操作控制設(shè)置setE(1); //以上是忙標(biāo)志設(shè)置shortdelay(1);temp=P0;shortdelay(10);setE(0); //E下降沿開始執(zhí)行return(temp);}//判忙bitstatuscheck(){return((bit)(read_BF_AC()&0x80)); // 判最高位是否為1} //寫指令函數(shù)voidwriteinstruc(uintinstruc){while(statuscheck());initpindata(0);setRS(0);setRW(0); //00寫指令setE(0);P0=instruc;//shortdelay(1);setE(1);shortdelay(10);setE(0); //下降沿開始執(zhí)行}//寫數(shù)據(jù)到RAMvoidwritedata(uintdata1){initpindata(0);setRS(1);setRW(0); //10寫數(shù)據(jù)setE(0);P0=data1;setE(1);shortdelay(10);setE(0); //下降沿開始執(zhí)行}//從RAM中讀數(shù)據(jù)函數(shù)uintreaddata(void){uinttemp;initpindata(1);setRS(1);setRW(1); //數(shù)據(jù)存放器讀出setE(1);shortdelay(1);temp=P0;shortdelay(10);setE(0); //下降沿開始執(zhí)行return(temp);}//顯示程序X為行號,Y為列號,date為要顯示的數(shù)據(jù)voiddispcharacter(intx,uinty,uintdata1){uinttemp;while(statuscheck()); //判忙temp=y&0x0f; //不忙此語句執(zhí)行高四位被置0x&=0x01; //高七位被置0if(x)temp|=0x40;writedata(data1);//setDDRAM_Add(temp);}//LCD初始化voidinitLCD(){writeinstruc(0x01); //LCD復(fù)位函數(shù)writeinstruc(0x06);//增量方式,不移位writeinstruc(0x0c);//顯示開,光標(biāo)關(guān),閃爍關(guān)writeinstruc(0x38);//8位,2行,5*7}//準(zhǔn)備工作完成//計算器compute(charkey1,i){signedcharm,n,c,act;longintnum1,num2,result;signedcharstr[4][4]={{'7','8','9','/'},{'4','5','6','*'},{'1','2','3','-'},{'c','0','=','+'}}; signedcharstr1[11],string1[2];m=(key1&0xf0); //屏蔽低四位m=m/16;m=m-1;n=key1&0x0f; //屏蔽高四位n=n-1;c=str[m][n];sprintf(string1,"%c",c);strcat(str1,string1);if((c=='+')||(c=='-')||(c=='*')||(c=='/')){act=c;num1=atoi(str1);memset(str1,0,11);memset(string1,0,2);}if(c=='='){num2=atoi(str1);switch(act){case'+':result=num1+num2;break;case'-':result=num1-num2;break;case'*':result=num1*num2;break;case'/':result=num1/num2;break;}}if(c=='c'){act=0;num1=str1[0];num1=str1[8];memset(str1,0,11);memset(string1,0,2);num1=str1[0];num1=str1[8];}longdelay(350);switch(key1){case0x11:dispcharacter(0,i,'7');i++;break;case0x12:dispcharacter(0,i,'8');i++;break;case0x13:dispcharacter(0,i,'9');i++;break;case
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《分餾系統(tǒng)》課件
- 《媽媽的賬單課堂》課件
- 小學(xué)一年級20以內(nèi)100道口算題
- 電工安全培訓(xùn)資料(5篇)
- 石榴籽一家親民族團結(jié)心連心心得體會5篇
- 小學(xué)數(shù)學(xué)一二年級100以內(nèi)連加連減口算題
- 《用戶畫像業(yè)務(wù)討論》課件
- 小學(xué)數(shù)學(xué)三年級下冊《小數(shù)點加減法》口算練習(xí)題
- 《刑事訴訟法學(xué)教學(xué)》課件
- 小學(xué)三年級數(shù)學(xué)三位數(shù)加減法練習(xí)題-可直接打印
- 金工釩鈦科技有限公司-年處理600萬噸低品位釩鈦磁鐵礦選礦項目可行性研究報告
- ncv65系列安裝金盤5發(fā)版說明
- 國能神皖安慶發(fā)電有限責(zé)任公司廠內(nèi)108MW-108MWh儲能項目環(huán)境影響報告表
- 華中師大《線性代數(shù)》練習(xí)測試題庫及答案4096
- 鐵路試驗檢測技術(shù)
- 2023-2024人教版小學(xué)2二年級數(shù)學(xué)下冊(全冊)教案【新教材】
- 小學(xué)奧數(shù)基礎(chǔ)教程(附練習(xí)題和答案)
- 九年級語文上學(xué)期教學(xué)工作總結(jié)
- TWSJD 002-2019 醫(yī)用清洗劑衛(wèi)生要求
- GB/T 7324-2010通用鋰基潤滑脂
- 杭州地鐵一號線工程某盾構(gòu)區(qū)間實施施工組織設(shè)計
評論
0/150
提交評論