基于51單片機(jī)設(shè)計(jì)建議計(jì)算器畢業(yè)論文代碼已驗(yàn)證_第1頁
基于51單片機(jī)設(shè)計(jì)建議計(jì)算器畢業(yè)論文代碼已驗(yàn)證_第2頁
基于51單片機(jī)設(shè)計(jì)建議計(jì)算器畢業(yè)論文代碼已驗(yàn)證_第3頁
基于51單片機(jī)設(shè)計(jì)建議計(jì)算器畢業(yè)論文代碼已驗(yàn)證_第4頁
基于51單片機(jī)設(shè)計(jì)建議計(jì)算器畢業(yè)論文代碼已驗(yàn)證_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、簡易計(jì)算器的設(shè)計(jì)摘 要近幾年單片機(jī)技術(shù)的發(fā)展很快,其中,電子產(chǎn)品的更新速度迅猛。計(jì)算器是日常生活中比較常見的電子產(chǎn)品之一。如何才能使計(jì)算器技術(shù)更加的成熟,充分利用已有的硬件和軟件條件,設(shè)計(jì)出更出色的計(jì)算器。本文介紹的計(jì)算器是以單片機(jī)為核心設(shè)計(jì)的一個(gè)通用計(jì)算器。程序編寫采用keil軟件,把整個(gè)系統(tǒng)劃分成模塊,各個(gè)模塊分別仿真,最后添加到主程序中。該系統(tǒng)通過檢測(cè)矩陣鍵盤掃描,判斷是否按鍵,經(jīng)數(shù)據(jù)轉(zhuǎn)換把數(shù)值送入液晶顯示屏1602顯示,該計(jì)算器能實(shí)現(xiàn)加、減、乘除以及連加連減等功能;能顯示整個(gè)計(jì)算過程;操作的過程以及相應(yīng)的顯示和日常生活中所用的通用計(jì)算器一樣。主要內(nèi)容可以分為:基于單片機(jī)簡易計(jì)算器的基本

2、功能,同時(shí)對(duì)矩陣鍵盤及液晶顯示屏顯示原理進(jìn)行了簡單的闡述;介紹了系統(tǒng)的總體設(shè)計(jì)、給出了系統(tǒng)的整體流程框圖,并對(duì)其進(jìn)行了功能模塊劃分及所采用的元器件進(jìn)行了詳細(xì)說明;利用單片機(jī)來設(shè)計(jì)電子計(jì)算器比較簡單,而且單片機(jī)的計(jì)算速度完全能夠滿足本設(shè)計(jì)的要求。計(jì)算器的未來是小型化和輕便化,現(xiàn)在市面上出現(xiàn)的使用太陽能電池的計(jì)算器,使用ASIC設(shè)計(jì)的計(jì)算器,如使用純軟件實(shí)現(xiàn)的計(jì)算器等,智能化計(jì)算器將是未來的發(fā)展方向。 關(guān)鍵詞:計(jì)算器,單片機(jī),計(jì)算,鍵盤,液晶顯示屏,仿真 The Design of Simple CalculatorABSTRACTSocial development is very fast;

3、in aneraofrapidtechnologicalchange, Calculatorhas been in thousands of householdsfor decades,the calculator has a history of one hundred years.This paperintroduces thecalculatoris based on SCMas a general-purpose calculatorcore design.The program is written by keilsoftware,the wholeis divided intomo

4、dules,and simulation,finallyadded to themain program. The detection of matrix keyboard is scanned, the data conversion to put into 1602 LCD display, the calculator can be achieved, subtraction, multiplication and division, and even added a reduction function; can display the whole calculation proces

5、s; general calculator operation of the process and the corresponding display and in daily life. The main content can be divided into:Thebasicfunction of single chip microcomputerbased onsimple calculator,the matrix keyboard andLCD displayprinciple isdescribed;The systemgives the wholeprocessof the s

6、ystem diagram,and has carried on thedivision of function modulesand componentsusedin detail.To designcalculatoris simpleby using single chip microcomputer,and the speed of MCU can meets the requirements of the design, the calculatoris the future of theminiaturization andlightweight, the calculator a

7、ppeared on the marketusing cells,using ASIC to design thecalculator,such as the use ofpure software implementation of thecalculator.KEY WORD:Calculator, SCM,calculation, keyboard,LCD display,Simulation目 錄 TOC o 1-3 h z HYPERLINK l _Toc389826909 前 言 PAGEREF _Toc389826909 h 1 HYPERLINK l _Toc389826910

8、 第1章 緒論 PAGEREF _Toc389826910 h 2 HYPERLINK l _Toc389826911 研究背景 PAGEREF _Toc389826911 h 2 HYPERLINK l _Toc389826912 單片機(jī)發(fā)展現(xiàn)狀 PAGEREF _Toc389826912 h 2 HYPERLINK l _Toc389826913 計(jì)算器系統(tǒng)現(xiàn)狀 PAGEREF _Toc389826913 h 3 HYPERLINK l _Toc389826914 選題意義及現(xiàn)狀 PAGEREF _Toc389826914 h 4 HYPERLINK l _Toc389826915 設(shè)計(jì)概

9、要任務(wù)指標(biāo) PAGEREF _Toc389826915 h 4 HYPERLINK l _Toc389826916 一、設(shè)計(jì)目標(biāo) PAGEREF _Toc389826916 h 4 HYPERLINK l _Toc389826917 二、設(shè)計(jì)任務(wù)指標(biāo) PAGEREF _Toc389826917 h 4 HYPERLINK l _Toc389826918 系統(tǒng)總體設(shè)計(jì)方案 PAGEREF _Toc389826918 h 5 HYPERLINK l _Toc389826919 第2章 硬件設(shè)計(jì) PAGEREF _Toc389826919 h 6 HYPERLINK l _Toc389826920

10、元器件介紹 PAGEREF _Toc389826920 h 6 HYPERLINK l _Toc389826921 單片機(jī)簡介 PAGEREF _Toc389826921 h 6 HYPERLINK l _Toc389826922 2.2 LCD1602液晶顯示屏 PAGEREF _Toc389826922 h 9 HYPERLINK l _Toc389826923 設(shè)計(jì)方案比較及確定 PAGEREF _Toc389826923 h 11 HYPERLINK l _Toc389826924 模塊設(shè)計(jì) PAGEREF _Toc389826924 h 12 HYPERLINK l _Toc3898

11、26925 鍵盤輸入模塊的設(shè)計(jì)方案及確定 PAGEREF _Toc389826925 h 12 HYPERLINK l _Toc389826926 2.4.2 LCD顯示模塊設(shè)計(jì)方案比較及確定 PAGEREF _Toc389826926 h 13 HYPERLINK l _Toc389826927 清零、開平方、開立方功能模塊設(shè)計(jì) PAGEREF _Toc389826927 h 15 HYPERLINK l _Toc389826928 電源模塊設(shè)計(jì) PAGEREF _Toc389826928 h 16 HYPERLINK l _Toc389826929 第3章 軟件設(shè)計(jì) PAGEREF _To

12、c389826929 h 17 HYPERLINK l _Toc389826930 外圍程序模塊設(shè)計(jì) PAGEREF _Toc389826930 h 18 HYPERLINK l _Toc389826931 顯示程序設(shè)計(jì) PAGEREF _Toc389826931 h 18 HYPERLINK l _Toc389826932 鍵盤掃描程序設(shè)計(jì) PAGEREF _Toc389826932 h 18 HYPERLINK l _Toc389826933 清零程序設(shè)計(jì) PAGEREF _Toc389826933 h 19 HYPERLINK l _Toc389826934 開方、平方、立方程序設(shè)計(jì) P

13、AGEREF _Toc389826934 h 20 HYPERLINK l _Toc389826935 第4章 系統(tǒng)仿真及驗(yàn)證 PAGEREF _Toc389826935 h 21 HYPERLINK l _Toc389826936 結(jié)論 PAGEREF _Toc389826936 h 27 HYPERLINK l _Toc389826937 參考文獻(xiàn) PAGEREF _Toc389826937 h 28 HYPERLINK l _Toc389826938 致謝 PAGEREF _Toc389826938 h 30 HYPERLINK l _Toc389826939 附錄 PAGEREF _T

14、oc389826939 h 31前 言隨著社會(huì)的不斷發(fā)展科技的不斷創(chuàng)新。計(jì)算器已在數(shù)十年間遍布千家萬戶對(duì)于計(jì)算器的百年歷史,1946年2月15日在美國賓夕法尼亞大學(xué)世界上第一臺(tái)電子計(jì)算器ENIAC正式投入了運(yùn)行。在隆重的揭幕儀式上ENIAC表演了它的“絕招”在1秒鐘內(nèi)進(jìn)行5000次加法運(yùn)算,在1秒鐘內(nèi)進(jìn)行500次乘法運(yùn)算,這比當(dāng)時(shí)最快的電子計(jì)算器的運(yùn)算速度要快1000多倍。全場起立歡呼科學(xué)技術(shù)進(jìn)入了一個(gè)新的歷史發(fā)展時(shí)期。 數(shù)學(xué)家把聰明賦予了電子計(jì)算器,電子計(jì)算器將使數(shù)學(xué)家變得更加聰明。而且電子計(jì)算器不僅是一種工具,它與其它的工具都不相同,電子計(jì)算器是人腦的一個(gè)側(cè)面的延伸。因?yàn)殡娮佑?jì)算器不僅具有

15、非凡的計(jì)算能力,速度之快令人望塵莫及而且還能夠仿真人的某些思維功能按照一定的規(guī)則進(jìn)行邏輯判和邏輯推理代替人的部分腦力勞動(dòng)。1976年數(shù)學(xué)家憑借電子計(jì)算器去證明四色定理“依靠機(jī)器完成了人沒有能夠完成的事情”轟動(dòng)了整個(gè)國際數(shù)學(xué)界。 本次做的計(jì)算器是以單片機(jī)AT89S52為核心結(jié)合相關(guān)的元器件LCD1602液晶、74ls373鎖存、6264RAM、矩陣鍵盤等再配以相關(guān)的軟件達(dá)到制作計(jì)算器的目的。該系統(tǒng)通過單片機(jī)控制,實(shí)現(xiàn)對(duì)5*5鍵盤掃描進(jìn)行實(shí)時(shí)的按鍵檢測(cè),并把檢測(cè)數(shù)據(jù)存儲(chǔ)下來。整個(gè)計(jì)算器系統(tǒng)的工作過程為:首先存儲(chǔ)單元初始化,顯示初始值和鍵盤掃描,判斷按鍵位置,查表得出按鍵值,單片機(jī)則對(duì)數(shù)據(jù)進(jìn)行儲(chǔ)存與

16、相應(yīng)處理轉(zhuǎn)換,之后送入顯示屏顯示。整個(gè)系統(tǒng)可分為三個(gè)主要功能模塊:功能模塊一,實(shí)時(shí)鍵盤掃描;功能模塊二,數(shù)據(jù)轉(zhuǎn)換為了顯示屏顯示;功能模塊三,顯示屏顯示。電子計(jì)算器是日常生活中常用的電子計(jì)算儀器廣泛應(yīng)用于超市、大中型商場、大小企業(yè)。電子計(jì)算器具有精度高、體積小、應(yīng)用范圍廣、易于操作使用等優(yōu)點(diǎn)??萍嫉倪M(jìn)步使計(jì)算器告別了以前復(fù)雜的模擬電路,計(jì)算器的未來是小型化和輕便化,一塊幾厘米平方的單片機(jī)可以省去很多繁瑣的電路。未來的智能化計(jì)算器將是我們的發(fā)展方向,所以對(duì)計(jì)算器的研究十分有意義。緒論研究背景單片機(jī)發(fā)展現(xiàn)狀單片機(jī)的發(fā)展現(xiàn)狀:使用壽命長;低電壓與低功耗化;發(fā)展速度越來越快;從 8 位、16 位到 32

17、 位,數(shù)不勝數(shù),應(yīng)有盡有,部分與主流C51系列兼容,部分與之不兼容,它們各具特色,互補(bǔ)互成??v觀單片機(jī)的發(fā)展歷史,其有如下發(fā)展趨勢(shì):1. 大容量、高性能以往單片機(jī)內(nèi)的ROM為1KB4KB,RAM 為64128B。但在需要復(fù)雜控制的場合,該存儲(chǔ)容量是不夠的,必須進(jìn)行外接擴(kuò)充。為了適應(yīng)這種領(lǐng)域的要求,須運(yùn)用新的工藝,使片內(nèi)存儲(chǔ)器大容量化。目前,單片機(jī)內(nèi)ROM 最大可達(dá)64KB,RAM 最大為2KB。另外單片機(jī)進(jìn)一步改變CPU的性能,加快指令運(yùn)算的速度和提高系統(tǒng)控制的可靠性。采用精簡指令集(RISC)結(jié)構(gòu)和流水線技術(shù),可以大幅度提高運(yùn)行速度。現(xiàn)指令速度最高者已達(dá)100MIPS(Million Ins

18、truction Per Seconds,即兆指令每秒),并加強(qiáng)了位處理、中斷和定時(shí)控制功能。這類單片機(jī)的運(yùn)算速度比標(biāo)準(zhǔn)的單片機(jī)高出10 倍以上。由于這類單片機(jī)有極高的指令速度,可以使用軟件模擬其I/O 功能,由此引入了虛擬外設(shè)的新概念。2. 串行擴(kuò)展技術(shù)在很長一段時(shí)間里,通用型單片機(jī)通過三總線結(jié)構(gòu)擴(kuò)展外圍器件成為單片機(jī)應(yīng)用的主流結(jié)構(gòu)。隨著低價(jià)位OTP(One Time Programble)及各種特殊類型片內(nèi)程序存儲(chǔ)器的發(fā)展,加之處圍接口不斷進(jìn)入片內(nèi),推動(dòng)了單片機(jī)“單片”應(yīng)用結(jié)構(gòu)的發(fā)展。特別是I2C、SPI 等串行總線的引入,可以使單片機(jī)的引腳設(shè)計(jì)得更少,單片機(jī)系統(tǒng)結(jié)構(gòu)更加簡化及規(guī)范化。3.

19、 低功耗CMOS化MCS-51系列的8031推出時(shí)的功耗達(dá)630mW,而現(xiàn)在的單片機(jī)普遍都在100mW左右,隨著對(duì)單片機(jī)功耗要求越來越低,現(xiàn)在的各個(gè)單片機(jī)制造商基本都采用了CMOS(互補(bǔ)金屬氧化物半導(dǎo)體工藝)。80C51就采用了HMOS(即高密度金屬氧化物半導(dǎo)體工藝)和CHMOS(互補(bǔ)高密度金屬氧化物半導(dǎo)體工藝)。CMOS雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點(diǎn),這些特征,更適合于在要求低功耗,電池供電的應(yīng)用場合。所以這種工藝將是今后一段時(shí)期單片機(jī)發(fā)展的主要途徑。4. 微型單片化現(xiàn)在常規(guī)的單片機(jī)普遍都是將中央處理器(CPU)、隨機(jī)存取數(shù)據(jù)存儲(chǔ)(

20、RAM)等集成在一塊單一的芯片上,增強(qiáng)型的單片機(jī)集成了如A/D轉(zhuǎn)換器、PMW(脈寬調(diào)制電路)等都集成在單一的芯片上,這樣單片機(jī)包含的單元電路就更多,功能就越強(qiáng)大。甚至單片機(jī)廠商還可以根據(jù)用戶的要求量身定做,制造出具有自己特色的單片機(jī)芯片。 此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機(jī)除了功能強(qiáng)和功耗低外,還要求其體積要小?,F(xiàn)在的許多單片機(jī)都具有多種封裝形式,其中SMD(表面封裝)越來越受歡迎,使得由單片機(jī)構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。5. 主流與多品種共存現(xiàn)在雖然單片機(jī)的品種繁多,各具特色,但仍以80C51為核心的單片機(jī)占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATM

21、EL公司的產(chǎn)品和中國臺(tái)灣的Winbond系列單片機(jī)。所以C8051為核心的單片機(jī)占據(jù)了半壁江山。而Microchip公司的PIC精簡指令集(RISC)也有著強(qiáng)勁的發(fā)展勢(shì)頭,中國臺(tái)灣的HOLTEK公司近年的單片機(jī)產(chǎn)量與日俱增,與其低價(jià)質(zhì)優(yōu)的優(yōu)勢(shì),占據(jù)一定的市場分額。此外還有MOTOROLA公司的產(chǎn)品,日本幾大公司的專用單片機(jī)。在一定的時(shí)期內(nèi),這種情形將得以延續(xù),將不存在某個(gè)單片機(jī)一統(tǒng)天下的壟斷局面,走的是依存互補(bǔ),相輔相成、共同發(fā)展的道路。計(jì)算器系統(tǒng)現(xiàn)狀計(jì)算器一般由存儲(chǔ)器、鍵盤和機(jī)器設(shè)備等組成。鍵盤是計(jì)算器的輸入部件,一般采用接觸式或傳感式。為減小計(jì)算器的尺寸,一鍵常常有多種功能。顯示器是計(jì)算器

22、的輸出部件,有發(fā)光二極管顯示器或液晶顯示器等。除顯示計(jì)算結(jié)果外,還常有溢出指示、錯(cuò)誤指示等。計(jì)算器電源采用交流轉(zhuǎn)換器或電池,電池可用交流轉(zhuǎn)換器或太陽能轉(zhuǎn)換器再充電。為節(jié)省電能,計(jì)算器都采用CMOS工藝制作的大規(guī)模集成電路,并在內(nèi)部裝有定時(shí)不操作自動(dòng)斷電電路。選題意義及現(xiàn)狀計(jì)算器(calculator;counter)一般是指“電子計(jì)算器”,該名詞由日文傳入中國。計(jì)算器是能進(jìn)行數(shù)學(xué)運(yùn)算的手持機(jī)器,擁有集成電路芯片,結(jié)構(gòu)簡單,功能較弱,但由于它使用方便、操作簡單、價(jià)格低廉,因而廣泛運(yùn)用于商業(yè)交易中,也是必備的辦公用品之一。隨著科學(xué)技術(shù)的不斷發(fā)展及計(jì)算器應(yīng)用的普及,人們發(fā)現(xiàn)在工業(yè)控制中,有很多時(shí)候需

23、要在惡劣的環(huán)境中進(jìn)行各種數(shù)據(jù)的采集、運(yùn)算和控制。設(shè)計(jì)概要任務(wù)指標(biāo)設(shè)計(jì)目標(biāo)以單片機(jī)為核心完成一個(gè)通用計(jì)算器系統(tǒng)的設(shè)計(jì)。該計(jì)算器能實(shí)現(xiàn)加、減、乘除以及連加連減等功能;能顯示整個(gè)計(jì)算過程;操作的過程以及相應(yīng)的顯示和日常生活中所用的通用計(jì)算器一樣,計(jì)算結(jié)果要正確。設(shè)計(jì)任務(wù)指標(biāo)1. 計(jì)算器功能(包含:加、減、乘、除、開平方、開立方、開根號(hào)和倒數(shù))。 2. 正負(fù)切換功能。3. 可實(shí)現(xiàn)清除、歸零、后退等操作。4. 可進(jìn)行連續(xù)運(yùn)算。最高數(shù)據(jù)精度0.001,最后位可實(shí)現(xiàn)四舍五入。5. LCD顯示。系統(tǒng)總體設(shè)計(jì)方案整個(gè)系統(tǒng)由電源給51單片機(jī)和LCD液晶顯示提供電源使其工作,當(dāng)外接按鍵輸入有效數(shù)值和運(yùn)算模式時(shí),通過

24、主控芯片實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。系統(tǒng)總體方案框圖如圖1-1。顯示模塊輸入數(shù)據(jù)AT89S52單片機(jī)輸入運(yùn)算符電源模塊圖1-1總體模塊圖硬件設(shè)計(jì)元器件介紹單片機(jī)簡介圖2-1 單片機(jī)AT89S521. AT89S52的功能特性描述:AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非 易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活

25、、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。此外, AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形

26、式,以適應(yīng)不同產(chǎn)品的需求。2. AT89S52引腳功能AT89S52 單片機(jī)為40 引腳芯片見圖2-2。圖2-2 AT89S52引腳圖P1.0和P1.1分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。 在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 引腳號(hào)第二功能: P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制) P1.5 MOSI(在系統(tǒng)編程用) P1.6 MISO(在系統(tǒng)編程用) P1.7 SCK(在系統(tǒng)編程用)3. P2口:

27、P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL 邏輯電平。對(duì)P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX DPTR) 時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX RI)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。 4. 其他引腳說明:RST復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T狗計(jì)時(shí)完

28、成后,RST 腳輸出96 個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。 EA/VPP外部訪問允許,欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。 如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。 FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。XTAL1反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2來自反向振蕩

29、器的輸出。 XTAL1,XTAL2接石英晶體振蕩器。如圖2-3所示外接晶體引腳圖。圖2-3 外接晶體引腳圖XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時(shí),外部振蕩信號(hào)應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時(shí),時(shí)鐘發(fā)生器對(duì)振蕩脈沖二分頻,如晶振為12MHz,時(shí)鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇,在本設(shè)計(jì)電路中選用了12MHz。電容取20PF左右。機(jī)器周期12時(shí)間周期,如12MHz的機(jī)器周期為1微秒。5. 控制或復(fù)位引腳RESET 此腳為高電平時(shí)(約2個(gè)機(jī)器周期)可將單片機(jī)復(fù)位。RST/VPD當(dāng)出現(xiàn)兩個(gè)機(jī)器周期高電平時(shí),單片機(jī)

30、復(fù)位。復(fù)位后,P0P3輸出高電平;SP寄存器為07H;其它寄存器全部清0;不影響RAM狀態(tài)。如圖2-4所示。 圖2-4 按鍵電平復(fù)位 AT89SXX系列單片機(jī)實(shí)現(xiàn)了ISP下載功能,故而取代了89CXX系列的下載方式,也是因?yàn)檫@樣,ATMEL公司已經(jīng)停止生產(chǎn)89CXX系列的單片機(jī),現(xiàn)在市面上的AT89CXX多是停產(chǎn)前的庫存產(chǎn)品。 單片機(jī)是為了工業(yè)控制需要滿足而誕生的,是自動(dòng)控制系統(tǒng)的核心部件,因而也主要用于工業(yè)控制、智能化儀器儀表、家用電器中。它具有體積小,功能多、價(jià)格低、使用方便、系統(tǒng)設(shè)計(jì)靈活等優(yōu)點(diǎn),應(yīng)用領(lǐng)域不斷擴(kuò)大,除了工業(yè)控制,智能化儀表,通訊,家用電器外,在智能化高檔電子玩具產(chǎn)品中也大量

31、采用單片機(jī)芯片作為核心控制部件。由于單片機(jī)主要面向工業(yè)控制,工作環(huán)境比較惡劣,入高溫,強(qiáng)電磁干擾,甚至含有腐蝕性氣體,在太空中工作的單片機(jī)控制系統(tǒng),還必須具有抗輻射能力,這決定了單片機(jī)CPU于通用微機(jī)CPU具有不同的技術(shù)特征和發(fā)展方向。LCD1602液晶顯示屏1. 液晶顯示原理液晶顯示的原理是利用液晶的物理特性,通過電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動(dòng)、易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式計(jì)算機(jī)、數(shù)字?jǐn)z像機(jī)、PDA移動(dòng)通信工具等眾多領(lǐng)域。2. LCD1602的應(yīng)用簡介LCD1602液晶顯示器采用HD447

32、80及其兼容芯片作為點(diǎn)陣式LCD的控制器驅(qū)動(dòng)器,還采用HD44100進(jìn)行LCD的時(shí)分割驅(qū)動(dòng)。HD44780的內(nèi)部結(jié)構(gòu)主要包括顯示數(shù)據(jù)RAM(DDRAM)、字符發(fā)生器ROM(CGROM)、字符發(fā)生器RAM(CGRAM)、指令寄存器IR、數(shù)據(jù)寄存器DR、地址計(jì)數(shù)器AC(Address Counter)和忙標(biāo)志BF(Busy Flag)等邏輯電路。1602液晶模塊內(nèi)部的控制器共有11條控制指令,豐富的指令可以完成液晶的時(shí)序控制、工作方式設(shè)置和數(shù)據(jù)顯示等。采用的LCD1602液晶模塊是標(biāo)準(zhǔn)16針插座,接口電路如圖2-6所示,及各引腳說明如表2-5所示。圖2-5 LCD1602的引腳接口電路圖3. 其他

33、方面簡介DDRAM用來暫存顯示字符的代碼,共80個(gè)字節(jié),DDRAM的各個(gè)單元對(duì)應(yīng)著顯示屏上的各個(gè)字符位,如圖2-7所示。因此,DDRAM的地址也就意味著顯示字符的地址,顯示字符時(shí)首先要向LCD送顯示字符地址。見圖2-6。LCD16字*2行000102030405060708090A0B0C0DOEOF1027404142434445464748494A4B4C4D4E4F5067圖 2-6 DDRAM單元地址與顯示屏字符位的對(duì)應(yīng)關(guān)系設(shè)計(jì)方案比較及確定本設(shè) 計(jì)中的芯片可以采用兩種方案,一種是以FPGA為核心處理芯片;另一種是以AT89S52處理器。一、采用FPGA控制。FPGA是一種高密度的可編

34、程邏輯器件,自從Xilinx公司1985年推出第一片F(xiàn)PGA以來,F(xiàn)PGA的集成密度和性能提高很快,其集成密度最高達(dá)500萬門/片以上,系統(tǒng)性能可達(dá)200MHz。由于FPGA器件集成密度高,方便易用,開發(fā)和上市周期短,在數(shù)字設(shè)計(jì)和電子生產(chǎn)中得到迅速普及和應(yīng)用,并一度在高密度的可編程邏輯器件領(lǐng)域中獨(dú)占鰲頭。但是基于SRAM編程的FPGA,其編程信息需存放在外部存儲(chǔ)器上,需外部存儲(chǔ)器芯片,且使用方法復(fù)雜,保密性差,而其對(duì)于一個(gè)簡單的計(jì)算器而言,使用FPGA有點(diǎn)大材小用,成本太高。二、采用AT89S52。單片機(jī)是單片微型機(jī)的簡稱,故又稱為微控制器MCU(Micro Control Unit)。通常由

35、單塊集成電路芯片組成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器CPU,存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。單片機(jī)廣泛應(yīng)用于智能產(chǎn)品,智能儀表,測(cè)控技術(shù),智能接口等,具有操作簡單、實(shí)用方便、價(jià)格便宜等優(yōu)點(diǎn)。而其中AT89S52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低電壓,高性能COMOS8的微處理器。該器件與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容;且是單片機(jī)中最典型的代表,應(yīng)用于各種控制領(lǐng)域。通過以上兩種方

36、案的論證和比較,從設(shè)計(jì)的實(shí)用性、方便性和成本等諸多方面考慮,最終選擇了以AT89S52單片機(jī)作為中央處理單元進(jìn)行計(jì)算器的設(shè)計(jì),這樣設(shè)計(jì)能夠?qū)崿F(xiàn)對(duì)六位整數(shù)、兩位小數(shù)的加、減、乘、除的四則運(yùn)算。模塊設(shè)計(jì)鍵盤輸入模塊的設(shè)計(jì)方案及確定方案一,采用獨(dú)立式按鍵作為輸入模塊。獨(dú)立式按鍵輸入模塊,其直接用I/O口構(gòu)成單個(gè)按鍵電路,接口電路配置靈活、按鍵識(shí)別和軟件結(jié)構(gòu)簡單;但是當(dāng)鍵數(shù)較多時(shí),占用I/O口較多,比較浪費(fèi)資源。其原理圖如圖2-7所示。圖2-7獨(dú)立功能按鍵圖方案二,采用矩陣式鍵盤作為輸入模塊。矩陣式按鍵輸入模塊,其特點(diǎn)是:電路和軟件稍復(fù)雜,但相比之下,當(dāng)鍵數(shù)越多時(shí),越節(jié)約I/O口,比較節(jié)省資源。其原理

37、圖如圖2-8所示。圖 2-8矩陣鍵盤輸入圖計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會(huì)很簡單,但是會(huì)占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條I/O 線作為行線,四條I/O 線作為列線組成鍵盤,在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O 口的利用率,所以本次設(shè)計(jì)采用方案二。LCD顯示模塊設(shè)計(jì)方案比較及確定方案一,采用LED數(shù)碼管靜態(tài)顯示。其特點(diǎn)是:亮度較高,這種顯示方式接口,編程容易且管理簡單;不足的是,占用的I/O的線資源較多。如果采用單片機(jī)或C

38、PLD/FPGA來控制的話,勢(shì)必存在浪費(fèi)I/O口資源的問題。如圖2-9所示。圖 2-9矩陣鍵盤輸入圖方案二,采用LED數(shù)碼管動(dòng)態(tài)顯示。采用LED數(shù)碼管的動(dòng)態(tài)顯示,特點(diǎn)是:亮度比靜態(tài)顯示的亮度要差一些,但其電路比較簡單,適合于顯示位數(shù)較多的情況。如圖2-10所示。圖2-10矩陣鍵盤輸入圖方案三,采用LCD1602液晶顯示,本次設(shè)計(jì)采用方案三,如圖2-11。LCD1602,工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符(16列2行),故簡稱1602。1602LCD 液晶具有功耗低、顯示內(nèi)容豐富、清晰,顯示信息量大,顯示速度較快,界面友好等而得到廣泛應(yīng)用,因此使用1602液晶顯示屏,可以方便的顯

39、示多種字符,特別適用于單片機(jī)計(jì)算器的雙行顯示。圖2-11液晶顯示模塊圖表 2-1 LCD1602的引腳說明第1腳Vss為地電源第2腳VDD接5V正電源第3腳Vo為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度。第4腳Rs為寄存器選擇,高電平選擇數(shù)據(jù)寄存器、低電平選擇指令寄存器。第5腳Rw為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)選擇指令寄存器。第6腳E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7-14腳D0-D7為8位雙向數(shù)據(jù)線。第15-16腳背光陽極和背光陰極。清零、開平方、開立方

40、功能模塊設(shè)計(jì)本設(shè)計(jì)要求在任何時(shí)候按下AC清零鍵,都必須退出當(dāng)前操作,數(shù)據(jù)清零,準(zhǔn)備下一次的運(yùn)算,故應(yīng)采用獨(dú)立鍵盤產(chǎn)生下降沿輸入給單片機(jī)外部中斷處理。而開方或開立方運(yùn)算,則可與矩陣鍵盤一起檢測(cè),也當(dāng)做一個(gè)運(yùn)算符處理,具體功能按鍵設(shè)計(jì)如下圖2-12所示。圖2-12清零、開方、開立方模塊圖電源模塊設(shè)計(jì)由于AT89S52和LCD1602都是采用5V供電,而且其他模塊功能也采用5V電平,本系統(tǒng)采用LM7805作為穩(wěn)壓芯片,220V交流電經(jīng)過初級(jí)和次級(jí)的電容濾波,最終得到穩(wěn)定的5V電壓供給系統(tǒng)使用。圖2-13電源模塊圖軟件設(shè)計(jì)程序設(shè)計(jì)采用的是keil軟件,程序設(shè)計(jì)可以分為:顯示程序設(shè)計(jì)、鍵盤掃描程序設(shè)計(jì)、

41、計(jì)算程序設(shè)計(jì)、清零程序設(shè)計(jì),見圖3-1。圖 3-1總程序流程圖外圍程序模塊設(shè)計(jì)顯示程序設(shè)計(jì)LCD1602在上電以后,應(yīng)該先等待50毫秒左右,讓其內(nèi)部芯片初始化后再對(duì)其進(jìn)行操作。在對(duì)其操作時(shí),應(yīng)參考其時(shí)序圖,先把命令寫入其內(nèi)部寄存器設(shè)置它的工作方式和狀態(tài)。要顯示數(shù)據(jù)的時(shí)候,先設(shè)置好顯示坐標(biāo),再往里面寫入要顯示的ASCII碼,LCD則通過刷新和替換來顯示新的數(shù)據(jù),其程序流程圖如下圖3-2所示。開始初始化設(shè)置坐標(biāo)發(fā)送ASII顯示數(shù)據(jù)圖 3-2電源模塊圖鍵盤掃描程序設(shè)計(jì)由于矩陣鍵盤采用4行4列的結(jié)構(gòu),每一行每一列各對(duì)應(yīng)一個(gè)I/O口,故程序應(yīng)該逐行查詢,一旦查詢到有某一行的按鍵被按下了,則根據(jù)讀取到的I

42、/O總線口的數(shù)據(jù)即可查詢到是哪一列的按鍵被按下了,最后對(duì)應(yīng)行列返回一個(gè)按鍵值回主函數(shù),流程圖如下圖3-3所示。圖 3-3掃描鍵盤流程圖清零程序設(shè)計(jì)根據(jù)系統(tǒng)要求以及硬件結(jié)構(gòu),AC按鍵直接接入單片機(jī)外部中段0,則程序應(yīng)使用中斷來清除各數(shù)據(jù)存儲(chǔ)變量達(dá)到清零的目的,并把清零標(biāo)志位至1,在主程序中不斷查詢標(biāo)志位,若為1,則清零,程序框圖如下圖3-4所示。中斷0入口 LCD清屏顯示0 各數(shù)據(jù)存儲(chǔ)清零 清零標(biāo)志位置1 返回主程序圖 3-4清零程序流程圖開方、平方、立方程序設(shè)計(jì)在設(shè)計(jì)計(jì)算開方、平方、立方時(shí),采用直接調(diào)用math函數(shù)庫中的sqrt()函數(shù),pow()范例#include main()double

43、 answer;answer =pow(2,10);printf(210 = %fn, answer);執(zhí)行 210 = 1024.000000#includemain()double root;root = sqrt (200);printf(answer is %fn,root);執(zhí)行系統(tǒng)仿真及驗(yàn)證一、小數(shù)加法運(yùn)算,52.13+23=75.12,計(jì)算結(jié)果如下圖4-1所示。圖 4-1小數(shù)加法運(yùn)算仿真圖整數(shù)加法運(yùn)算,235+623=858,計(jì)算結(jié)果如下圖4-2所示。圖 4-2整數(shù)加法運(yùn)算仿真圖二、小數(shù)減法運(yùn)算,456.322-89=367.322,計(jì)算結(jié)果如下圖4-3所示。圖 4-3小數(shù)減法運(yùn)

44、算仿真圖整數(shù)減法運(yùn)算,89999-25563=64436,計(jì)算結(jié)果如下圖4-4所示。圖 4-4整數(shù)減法運(yùn)算仿真圖小數(shù)減法得數(shù)為負(fù)數(shù)運(yùn)算,56-89.3=-33.3,計(jì)算結(jié)果如下圖4-5所示。圖 4-5小數(shù)減法得數(shù)為負(fù)數(shù)運(yùn)算仿真圖三、2.5=213,計(jì)算結(jié)果如下圖4-6所示。圖 4-6小數(shù)乘法運(yùn)算仿真圖整數(shù)乘法運(yùn)算,56445=25300,計(jì)算結(jié)果如下圖4-7所示。圖 4-7整數(shù)乘法運(yùn)算仿真圖3=2.1667,最后一位實(shí)現(xiàn)四舍五入計(jì)算結(jié)果如下圖4-8所示。圖 4-8小數(shù)除法運(yùn)算仿真圖四、整數(shù)除法運(yùn)算,854=21.25,計(jì)算結(jié)果如下圖4-9所示。圖 4-9整數(shù)除法運(yùn)算仿真圖五、開根號(hào)運(yùn)算, =2

45、.2361,計(jì)算結(jié)果如下圖4-10所示。圖 4-10開根號(hào)運(yùn)算仿真圖六、平方運(yùn)算,=196,計(jì)算結(jié)果如下圖4-11所示。圖 4-11平方運(yùn)算仿真圖七、立方運(yùn)算,=512,計(jì)算結(jié)果如下圖4-12所示。圖 4-12立方運(yùn)算仿真圖結(jié)論在選擇畢業(yè)設(shè)計(jì)的時(shí)候,我感覺選擇這個(gè)題目比較容易,理論很簡單,但是到我實(shí)際去做這個(gè)東西的時(shí)候,我發(fā)現(xiàn)不是那么的容易,不是那么的順利,程序方面是我的弱項(xiàng),當(dāng)時(shí)學(xué)的時(shí)候沒有用心,程序方面我就請(qǐng)教我的同學(xué),他慢慢地教我,一點(diǎn)一點(diǎn)的把整個(gè)程序調(diào)試好,然后在電腦上我自己做硬件仿真,我把程序下載我做的硬件中,發(fā)現(xiàn)不對(duì),反復(fù)查找,原來是我把一根線連接錯(cuò),本來應(yīng)該連接中斷1的,結(jié)果連到

46、中斷0上了。第一次編寫的程序只能實(shí)現(xiàn)得數(shù)不比9大的運(yùn)算,而且小數(shù)點(diǎn)和負(fù)數(shù)的功能還不能實(shí)現(xiàn),經(jīng)過我自己的驗(yàn)證以及請(qǐng)教同學(xué)終于發(fā)現(xiàn)程序那兒錯(cuò)了,經(jīng)過修改程序,現(xiàn)在這個(gè)計(jì)算器可以實(shí)現(xiàn)計(jì)算器的加減乘除、開平方、開立方的功能了,得數(shù)可以是小數(shù)和負(fù)數(shù),小數(shù)的結(jié)果可以精確到0.001。也有可能是時(shí)間的關(guān)系,我還是沒能把老師要求的所有的功能實(shí)現(xiàn),但是最基本的功能差不多都實(shí)現(xiàn)了。這次的畢業(yè)設(shè)計(jì)深深地讓我體會(huì)到做一個(gè)設(shè)計(jì)人員的不易與艱辛。參考文獻(xiàn)1魏澤鼎等. 單片機(jī)應(yīng)用技術(shù)與實(shí)例. 北京:電子工業(yè)出版社,20052蔣輝平,周國雄. 基于PROTEUS 的單片機(jī)系統(tǒng)設(shè)計(jì)與仿真實(shí)例. 北京: 機(jī)械工業(yè)出版社, 200

47、93丁明亮,唐前輝. 51單片機(jī)應(yīng)用設(shè)計(jì)與仿真-基于Keil C和Proteus . 北京: 北京航空航天大學(xué)出版社, 20094胡漢才.單片機(jī)原理及接口技術(shù).清華大學(xué)出版社,19965Patterson D A & Hennessy J L. Computer organization and design: The hardware/software interface. 2nd Edition, San Francisco: Morgan Kaufmann, 1994 6Carreira J, Madeira H and Silva J G. Xception: A technique

48、for the experimental evaluation of dependability in modern computers. IEEE Transactions on Software Engineering, 1998, 24(2): 125-1367Koopman P and DeVale K. Comparing the robustness of POSIX operating systems. In: Proceedings of the IEEE 29th International Symposium on Fault-Tolerant Computing, Mad

49、ison, IEEE CS Press, June 1999, pp. 30-37 8譚浩強(qiáng). C語言程序設(shè)計(jì)M.北京:清華大學(xué)出版社,20009劉?;? C語言程序設(shè)計(jì)與實(shí)訓(xùn)教程M.北京:科學(xué)出版社,200410張磊. C語言程序設(shè)計(jì)M.北京:高等教育出版社,200511嚴(yán)桂蘭. C語言程序設(shè)計(jì)M.廈門:廈門大學(xué)出版社,200612張靖武,周靈杉.單片機(jī)系統(tǒng)的PROTEUS設(shè)計(jì)與仿真M.北京:北京電子工業(yè)出版社13靳達(dá).求是科技.單片機(jī)應(yīng)用系統(tǒng)開發(fā)實(shí)例導(dǎo)航M.:人民郵電出版社,200614劉守義. 單片機(jī)應(yīng)用技術(shù)M.:西安電子科技大學(xué)出版社,200115林志琦.基于PROTEUS的單片機(jī)可視

50、化軟硬件仿真M.北京:北京航空航天大學(xué)出版社,200616胡輝.單片機(jī)原理與應(yīng)用.北京:北京水利水電出版社,200717181920郭天祥.新概念51單片機(jī)C語言教程:入門、提高、開發(fā)、拓展全攻 略,北京:電子工業(yè)出版社,2009致謝感謝徐老師對(duì)我們的信任和關(guān)心,老師給我們開會(huì)時(shí)說,你們需要什么就跟我講,徐老師又是給我提供參考書籍又是提供單片機(jī)開發(fā)板的,老師特別的熱心。關(guān)于這次的畢業(yè)設(shè)計(jì),老師先是給我們分析一下我們各自題目的任務(wù),以及我這最后學(xué)期的進(jìn)度安排,每次開會(huì)徐老師都會(huì)關(guān)心的問我現(xiàn)在的設(shè)計(jì)進(jìn)度,然后給我解答我近階段所遇到的問題。徐老師還給我發(fā)一些參考資料,看看別人是怎么設(shè)計(jì)自己的硬件以及

51、編寫軟件的,的確給了我很大的啟發(fā)。徐老師待人平和、工作雷厲風(fēng)行、治學(xué)嚴(yán)謹(jǐn)?shù)乃o我留下了很深刻的印象。更重要的是,他善于與學(xué)生溝通,不僅在畢業(yè)設(shè)計(jì)上給了我及時(shí)的指導(dǎo),更為我大學(xué)最后階段的學(xué)習(xí)提出了許多寶貴的意見。這一切都在潛移默化地影響著我,為我以后進(jìn)入工作崗位樹立了良好的榜樣。附錄 一、電路原理圖二、Protuse硬件仿真圖三、PCB板圖四、軟件程序#include#include#include lcd1602_8.huint temp,num;/鍵盤掃描數(shù)值uchar keynum1=0,keynum2=0,sign=0,i=0,j=0; /按鍵計(jì)數(shù),符號(hào)標(biāo)示uchar num18=0,n

52、um28=0; /按鍵存儲(chǔ)數(shù)組float ans1=0,ans2=0,ans=0,point=0; /運(yùn)算數(shù)據(jù)bit conflag=0; /繼續(xù)運(yùn)算標(biāo)志位bit newcalc=0;/新運(yùn)算標(biāo)志bit ac=0;/清零標(biāo)志,1為清零bit sqrtflag1=0;/開方1標(biāo)志位bit sqrtflag2=0;/開方2標(biāo)志位bitpowflag=0;sbit keysqrt=P34;/開方按鍵sbit keypow=P35;/任意次方按鍵uchar keyscan();void maininit(void);/*主程序*/void main(void)maininit();/初始化while(

53、1)/整個(gè)系統(tǒng)大循環(huán),讓計(jì)算器一直處于工作狀態(tài)while(1)/第一運(yùn)算數(shù)掃描if(ac=1)break; /若清零,則退出輸入if(keyscan()!=N)&(num=0&num=9)|num=.) /記錄按下的數(shù)字if(newcalc=1) /新一次運(yùn)算開始lcdwrite_com(0 x01);/清屏newcalc=0;lcd_setxy(0,0);if(keynum10;i+) /計(jì)算按下的數(shù)字的大小if(num1i!=.)ans1=ans1*10+num1i;else if(num1i=.)break;keynum1-;for(keynum1-,i+,j=0;keynum10;j+

54、,i+,keynum1-)point=point*10+num1i;for(;j0;j-)point*=0.1;ans1=ans1+point;sqrtflag1=0; /清除開方標(biāo)志sqrtflag2=0;/清除開方標(biāo)志if(keysqrt=0) /計(jì)算開方delayms(5);if(keysqrt=0)beep=0;delayms(100);beep=1;ans=sqrt(ans1);sqrtflag1=1;lcdwrite_data(0 xe8);while(keysqrt=0);delayms(10);while(keysqrt=0);break;sign=num; /記住運(yùn)算符號(hào)lc

55、dwrite_data(num);break; /輸入運(yùn)算符號(hào)則退出第一運(yùn)算數(shù)的輸入while(1)if(ac=1)break; /若清零,則退出輸入if(sqrtflag1=1) /若第一次按鍵為開方,則直接顯示結(jié)果break;if(keyscan()!=N)&(num=0&num=9)|num=.) /記錄按下的數(shù)字if(keynum20;i+) /計(jì)算按下的數(shù)字的大小if(num2i!=.)ans2=ans2*10+num2i;else if(num2i=.)break;keynum2-;for(keynum2-,i+,j=0;keynum20;j+,i+,keynum2-)point=

56、point*10+num2i;for(;j0;j-)point*=0.1;if(sqrtflag2!=1)lcdwrite_data(num);ans2=ans2+point;break;/輸入等于號(hào)則退出第二運(yùn)算數(shù)的輸入else if(num=+|num=-|num=*|num=/|num=)point=0;for(i=0;keynum20;i+) /計(jì)算按下的數(shù)字的大小if(num2i!=.)ans2=ans2*10+num2i;else if(num2i=.)break;keynum2-;for(keynum2-,i+,j=0;keynum20;j+,i+,keynum2-)point=

57、point*10+num2i;for(;j0;j-)point*=0.1;lcdwrite_data(num);ans2=ans2+point;conflag=1;break; /進(jìn)行連續(xù)計(jì)算if(ac=1)ac=0;continue; /清零后進(jìn)行下一次運(yùn)算if(sign=+) /計(jì)算結(jié)果ans=ans1+ans2;if(sign=-)ans=ans1-ans2;if(sign=*)ans=ans1*ans2;if(sign=/)ans=ans1/ans2;if(sign=) /計(jì)算多次方ans=pow(ans1,ans2); if(sqrtflag2=1)/計(jì)算開方ans=sqrt(ans

58、1);lcd_setxy(1,0);if(ans2=0&sign=/)|(ans10&sqrtflag2=1)lcdwrite_string(math error);/ans2=0或被開方數(shù)小于0時(shí)提示錯(cuò)誤 else lcdwrite_float(ans);/顯示結(jié)果sqrtflag1=0,newcalc=1; /為新的一次運(yùn)算準(zhǔn)備ans1=0;ans2=0;for(i=0;i8;i+)/清除按鍵緩存num1i=0;for(i=0;i8;i+)num2i=0;if(conflag=1)conflag=0;goto here; /跳轉(zhuǎn)到連續(xù)運(yùn)算/*初始化程序*/void maininit(voi

59、d)delayms(100); /等待液晶初始化lcd_init();lcd_setxy(0,0);lcdwrite_data(0);lcd_setxy(0,0);IT0=1;/下降沿觸發(fā)EX0=1;/開外部中斷0IT1=1;/下降沿觸發(fā)EX1=1;/開外部中斷1EA=1; /開中斷l(xiāng)cdwrite_com(0 x01); /顯示清屏lcd_setxy(0,0);lcdwrite_data(0);lcd_setxy(0,0);num=N; /數(shù)字初始化keynum1=0,keynum2=0,sign=0; ans1=0,ans2=0,ans=0,point=0;conflag=0,newcal

60、c=0;ac=1;/*鍵盤掃描程序*/uchar keyscan()num=N;/若沒有按下任何按鍵,則返回N P1=0 xfe;/掃描第一行temp=P1;temp=temp&0 xf0;while(temp!=0 xf0) /掃描列delayms(10);temp=P1;temp=temp&0 xf0;while(temp!=0 xf0) temp=P1;switch(temp)case 0 xee:num=7;break;case 0 xde:num=8;break;case 0 xbe:num=9;break;case 0 x7e:num=/;break; while(temp!=0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論