版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于單片機(jī)的計(jì)算器設(shè)計(jì)</p><p> 學(xué)生:XX 指導(dǎo)教師:XXX </p><p> 摘 要:計(jì)算器一般是指“電子計(jì)算器”,該名詞由日文傳入中國(guó)。計(jì)算器是能進(jìn)行數(shù)學(xué)運(yùn)算的手持機(jī)器,擁有集成電路芯片,結(jié)構(gòu)簡(jiǎn)單,功能較弱,但由于它使用方便、操作簡(jiǎn)單、價(jià)格低廉,因而廣泛運(yùn)用于商業(yè)交易中,也是必備的辦公用品。</p><
2、;p> 近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,但僅單片機(jī)方面的知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)、軟硬件結(jié)合,來(lái)加以完善。因此,單片機(jī)的應(yīng)用已經(jīng)越來(lái)越貼近生活,用單片機(jī)來(lái)實(shí)現(xiàn)一些電子設(shè)計(jì)也變得容易起來(lái)。計(jì)算器在人們的日常中是比較的常見(jiàn)的電子產(chǎn)品之一。可是它還在發(fā)展之中,以后必將出現(xiàn)功能更加強(qiáng)大的計(jì)算器,基于這
3、樣的理念,本次設(shè)計(jì)是用單片機(jī)來(lái)設(shè)計(jì)的計(jì)算器。該設(shè)計(jì)系統(tǒng)是以 AT89C51 為單片機(jī), P0 口作為輸入端,外接 4X4 的鍵盤(pán)。通過(guò)鍵盤(pán)掃描來(lái)對(duì)輸入數(shù)的控制,在 P1 口、P2 口接了驅(qū)動(dòng)電路,用來(lái)保證 LED 的工作正常。計(jì)算器將完成的功能有加,減,乘,除等功能。</p><p> 關(guān)鍵詞: 計(jì)算器 單片機(jī) LCD 矩陣鍵盤(pán)</p><p> Calculator desig
4、n based on single chip microcomputer</p><p> Abstract:Calculator generally refers to the electronic calculator, and the term is introduced to China by the Japanese. The calculator with the IC chip, simple s
5、tructure, and weak function is able to perform mathematical operations on handheld machine. But it is easy using, simple operation and low price. So it is widely used in commercial transactions, and is also an essential
6、office supplies. </p><p> With the rapid development of science and technology in recent years, the application of SCM is the deepening and promote the traditional controlling detection technologies that ar
7、e increasingly updated. In real-time detection and automatic control of microcomputer application system, the microcontroller is often used as a core component to use, but only the knowledge of the microcontroller is not
8、 enough, and should be based on the specific hardware architecture, hardware and software combinatio</p><p> KEYWORDS: calculator MCU LCD Matrix keyboard</p><p><b> 目 錄</
9、b></p><p><b> 第1章 緒論1</b></p><p><b> 1.1研究背景1</b></p><p><b> 1.2設(shè)計(jì)概要3</b></p><p><b> 1.3設(shè)計(jì)思路3</b></p>
10、<p> 第2章 硬件設(shè)計(jì)4</p><p> 2.1鍵盤(pán)輸入模塊設(shè)計(jì)4</p><p> 2.2 LCD顯示模塊設(shè)計(jì)5</p><p> 2.3清零、音樂(lè)開(kāi)關(guān)、開(kāi)方和多次方運(yùn)算功能模塊設(shè)計(jì)6</p><p> 2.4電源模塊設(shè)計(jì)7</p><p> 2.5主控模塊設(shè)計(jì)7</p&
11、gt;<p> 第3章 軟件設(shè)計(jì)9</p><p> 3.1顯示程序設(shè)計(jì)9</p><p> 3.2鍵掃程序設(shè)計(jì)10</p><p> 3.3清零程序設(shè)計(jì)11</p><p> 3.4聲音開(kāi)關(guān)程序設(shè)計(jì)12</p><p> 3.5總體設(shè)計(jì)13</p><p>
12、; 第4章 系統(tǒng)仿真及原理圖15</p><p> 4.1 Proteus仿真15</p><p> 4.2 Protel原理圖20</p><p> 第5章 系統(tǒng)調(diào)試20</p><p> 5.1問(wèn)題與分析20</p><p> 5.2系統(tǒng)演示21</p><p>
13、第6章 總結(jié)與展望23</p><p><b> 6.1總結(jié)23</b></p><p><b> 6.2展望24</b></p><p><b> 參考文獻(xiàn)25</b></p><p><b> 附錄27</b></p>
14、<p><b> 第1章 緒論</b></p><p><b> 1.1研究背景</b></p><p> 1.1.1單片機(jī)發(fā)展現(xiàn)狀</p><p> 單片機(jī)的發(fā)展現(xiàn)狀:使用壽命長(zhǎng);低電壓與低功耗化;發(fā)展速度越來(lái)越快;從 8位、16位到32位,數(shù)不勝數(shù),應(yīng)有盡有,部分與主流C51系列兼容,部分與之不兼容,
15、它們各具特色,互補(bǔ)互成??v觀(guān)單片機(jī)的發(fā)展歷史,其有如下發(fā)展趨勢(shì):</p><p> 1.1.1.1大容量、高性能</p><p> 以往單片機(jī)內(nèi)的ROM為1KB~4KB,RAM 為64~128B。但在需要復(fù)雜控制的場(chǎng)合,該存儲(chǔ)容量是不夠的,必須進(jìn)行外接擴(kuò)充。為了適應(yīng)這種領(lǐng)域的要求,須運(yùn)用新的工藝,使片內(nèi)存儲(chǔ)器大容量化。目前,單片機(jī)內(nèi)ROM 最大可達(dá)64KB,RAM 最大為2KB。另外單
16、片機(jī)進(jìn)一步改變CPU的性能,加快指令運(yùn)算的速度和提高系統(tǒng)控制的可靠性。采用精簡(jiǎn)指令集(RISC)結(jié)構(gòu)和流水線(xiàn)技術(shù),可以大幅度提高運(yùn)行速度。現(xiàn)指令速度最高者已達(dá)100MIPS(Million Instruction Per Seconds,即兆指令每秒),并加強(qiáng)了位處理、中斷和定時(shí)控制功能。這類(lèi)單片機(jī)的運(yùn)算速度比標(biāo)準(zhǔn)的單片機(jī)高出10 倍以上。由于這類(lèi)單片機(jī)有極高的指令速度,可以使用軟件模擬其I/O 功能,由此引入了虛擬外設(shè)的新概念。<
17、;/p><p> 1.1.1.2串行擴(kuò)展技術(shù)</p><p> 在很長(zhǎng)一段時(shí)間里,通用型單片機(jī)通過(guò)三總線(xiàn)結(jié)構(gòu)擴(kuò)展外圍器件成為單片機(jī)應(yīng)用的主流結(jié)構(gòu)。隨著低價(jià)位OTP(One Time Programble)及各種特殊類(lèi)型片內(nèi)程序存儲(chǔ)器的發(fā)展,加之處圍接口不斷進(jìn)入片內(nèi),推動(dòng)了單片機(jī)“單片”應(yīng)用結(jié)構(gòu)的發(fā)展。特別是I2C、SPI 等串行總線(xiàn)的引入,可以使單片機(jī)的引腳設(shè)計(jì)得更少,單片機(jī)系統(tǒng)結(jié)構(gòu)更加簡(jiǎn)
18、化及規(guī)范化。</p><p> 1.1.1.3低功耗CMOS化</p><p> MCS-51系列的8031推出時(shí)的功耗達(dá)630mW,而現(xiàn)在的單片機(jī)普遍都在100mW左右,隨著對(duì)單片機(jī)功耗要求越來(lái)越低,現(xiàn)在的各個(gè)單片機(jī)制造商基本都采用了CMOS(互補(bǔ)金屬氧化物半導(dǎo)體工藝)。80C51就采用了HMOS(即高密度金屬氧化物半導(dǎo)體工藝)和CHMOS(互補(bǔ)高密度金屬氧化物半導(dǎo)體工藝)。CMOS
19、雖然功耗較低,但由于其物理特征決定其工作速度不夠高,而CHMOS則具備了高速和低功耗的特點(diǎn),這些特征,更適合于在要求低功耗,電池供電的應(yīng)用場(chǎng)合。所以這種工藝將是今后一段時(shí)期單片機(jī)發(fā)展的主要途徑。</p><p> 1.1.1.4微型單片化</p><p> 現(xiàn)在常規(guī)的單片機(jī)普遍都是將中央處理器(CPU)、隨機(jī)存取數(shù)據(jù)存儲(chǔ)(RAM)等集成在一塊單一的芯片上,增強(qiáng)型的單片機(jī)集成了如A/D轉(zhuǎn)
20、換器、PMW(脈寬調(diào)制電路)等都集成在單一的芯片上,這樣單片機(jī)包含的單元電路就更多,功能就越強(qiáng)大。甚至單片機(jī)廠(chǎng)商還可以根據(jù)用戶(hù)的要求量身定做,制造出具有自己特色的單片機(jī)芯片。 此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機(jī)除了功能強(qiáng)和功耗低外,還要求其體積要小?,F(xiàn)在的許多單片機(jī)都具有多種封裝形式,其中SMD(表面封裝)越來(lái)越受歡迎,使得由單片機(jī)構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。</p><p> 1.1.1
21、.5主流與多品種共存</p><p> 現(xiàn)在雖然單片機(jī)的品種繁多,各具特色,但仍以80C51為核心的單片機(jī)占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有PHILIPS公司的產(chǎn)品,ATMEL公司的產(chǎn)品和中國(guó)臺(tái)灣的Winbond系列單片機(jī)。所以C8051為核心的單片機(jī)占據(jù)了半壁江山。而Microchip公司的PIC精簡(jiǎn)指令集(RISC)也有著強(qiáng)勁的發(fā)展勢(shì)頭,中國(guó)臺(tái)灣的HOLTEK公司近年的單片機(jī)產(chǎn)量與日俱增,與其低價(jià)質(zhì)優(yōu)的優(yōu)勢(shì),
22、占據(jù)一定的市場(chǎng)分額。此外還有MOTOROLA公司的產(chǎn)品,日本幾大公司的專(zhuān)用單片機(jī)。在一定的時(shí)期內(nèi),這種情形將得以延續(xù),將不存在某個(gè)單片機(jī)一統(tǒng)天下的壟斷局面,走的是依存互補(bǔ),相輔相成、共同發(fā)展的道路。</p><p> 1.1.2計(jì)算器系統(tǒng)現(xiàn)狀</p><p> 計(jì)算器一般由存儲(chǔ)器、鍵盤(pán)和機(jī)器設(shè)備等組成。鍵盤(pán)是計(jì)算器的輸入部件,一般采用接觸式或傳感式。為減小計(jì)算器的尺寸,一鍵常常有多種功
23、能。顯示器是計(jì)算器的輸出部件,有發(fā)光二極管顯示器或液晶顯示器等。除顯示計(jì)算結(jié)果外,還常有溢出指示、錯(cuò)誤指示等。計(jì)算器電源采用交流轉(zhuǎn)換器或電池,電池可用交流轉(zhuǎn)換器或太陽(yáng)能轉(zhuǎn)換器再充電。為節(jié)省電能,計(jì)算器都采用CMOS工藝制作的大規(guī)模集成電路,并在內(nèi)部裝有定時(shí)不操作自動(dòng)斷電電路。</p><p> 1.1.3選題意義及現(xiàn)狀</p><p> 計(jì)算器(calculator;counter)一
24、般是指“電子計(jì)算器”,該名詞由日文傳入中國(guó)。計(jì)算器是能進(jìn)行數(shù)學(xué)運(yùn)算的手持機(jī)器,擁有集成電路芯片,結(jié)構(gòu)簡(jiǎn)單,功能較弱,但由于它使用方便、操作簡(jiǎn)單、價(jià)格低廉,因而廣泛運(yùn)用于商業(yè)交易中,也是必備的辦公用品之一。隨著科學(xué)技術(shù)的不斷發(fā)展及計(jì)算器應(yīng)用的普及,人們發(fā)現(xiàn)在工業(yè)控制中,有很多時(shí)候需要在惡劣的環(huán)境中進(jìn)行各種數(shù)據(jù)的采集、運(yùn)算和控制。</p><p><b> 1.2設(shè)計(jì)概要</b></p&
25、gt;<p><b> 1.2.1設(shè)計(jì)目的</b></p><p> 通過(guò)本次畢業(yè)設(shè)計(jì),應(yīng)用《單片機(jī)應(yīng)用基礎(chǔ)》《計(jì)算機(jī)應(yīng)用基礎(chǔ)》等所學(xué)相關(guān)知識(shí)及查閱資料,完成簡(jiǎn)易計(jì)算器的設(shè)計(jì),以達(dá)到理論與實(shí)踐更好的結(jié)合、進(jìn)一步綜合運(yùn)用所學(xué)知識(shí)設(shè)計(jì)的能力的目的。</p><p> 通過(guò)本次設(shè)計(jì)的訓(xùn)練,可以使我在基本思路和基本方法上對(duì)基于MCS-51單片機(jī)的嵌入式系統(tǒng)
26、設(shè)計(jì)有一個(gè)比較感性的認(rèn)識(shí),并具備一定程度的設(shè)計(jì)能力。</p><p><b> 1.2.2設(shè)計(jì)任務(wù)</b></p><p> 1.了解單片機(jī)的基本原理。</p><p> 2.學(xué)習(xí)電子計(jì)算機(jī)制作基本原理及方法。</p><p> 3.熟練掌握PROTEL軟件。</p><p> 4.會(huì)用
27、KEIL編程,具有一定的編程能力。</p><p> 5.設(shè)計(jì)制作電子計(jì)算器硬件及軟件系統(tǒng)。</p><p><b> 6.撰寫(xiě)畢業(yè)論文。</b></p><p><b> 1.3設(shè)計(jì)思路</b></p><p> 1.3.1系統(tǒng)總體模塊圖</p><p><b
28、> 圖1-1總體模塊圖</b></p><p> 整個(gè)系統(tǒng)由電源給51單片機(jī)和LCD液晶顯示提供電源使其工作,當(dāng)外接按鍵輸入有效數(shù)值和運(yùn)算模式時(shí),通過(guò)主控芯片實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。</p><p><b> 1.3.2系統(tǒng)方案</b></p><p> 經(jīng)過(guò)反復(fù)推敲最終確定系統(tǒng)采用以下方案:</p><
29、;p> ?。?)采用AT89S52作為主控芯片;</p><p> ?。?)顯示模塊使用LCD1602液晶顯示屏;</p><p> ?。?)輸入模塊使用4*4矩陣鍵盤(pán);</p><p> ?。?)AC清零按鍵使用獨(dú)立按鍵并接入單片機(jī)外部中斷引腳;</p><p> ?。?)聲音提示開(kāi)關(guān)按鍵使用獨(dú)立按鍵并接入單片機(jī)外部中斷引腳;<
30、/p><p> ?。?)平方和開(kāi)方按鍵由開(kāi)發(fā)板上的獨(dú)立按鍵實(shí)現(xiàn);</p><p> ?。?)電源采用LM7805穩(wěn)壓電路。</p><p><b> 第2章 硬件設(shè)計(jì)</b></p><p> 2.1鍵盤(pán)輸入模塊設(shè)計(jì)</p><p> 計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵
31、的方式,在這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤(pán)的方案。矩陣鍵盤(pán)采用四條I/O 線(xiàn)作為行線(xiàn),四條I/O 線(xiàn)作為列線(xiàn)組成鍵盤(pán),在行線(xiàn)和列線(xiàn)的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這種行列式鍵盤(pán)結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O 口的利用率。</p><p><b> 矩陣鍵盤(pán)的設(shè)計(jì):</b></p><p>&
32、lt;b> 圖2-1矩陣鍵盤(pán)</b></p><p> 圖2-1矩陣鍵盤(pán)鍵值與其功能對(duì)應(yīng)表如下:</p><p> 表2-1按鍵功能對(duì)照</p><p> 對(duì)照 </p><p> 鍵值 0 1 2 3 4 5 6
33、 7 8 9 + - / = . </p><p> 功能 0 1 2 3 4 5 6 7 8 9 + - / = 點(diǎn) </p><p> 2.2 LCD顯示模塊設(shè)計(jì)</p><p> LCD1602,工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32
34、個(gè)字符(16列2行),故簡(jiǎn)稱(chēng)1602。1602LCD 液晶具有功耗低、顯示內(nèi)容豐富、清晰,顯示信息量大,顯示速度較快,界面友好等而得到廣泛應(yīng)用,因此使用1602液晶顯示屏,可以方便的顯示多種字符,特別適用于單片機(jī)計(jì)算器的雙行顯示。</p><p> 液晶顯示模塊的設(shè)計(jì):</p><p><b> 圖2-2液晶顯示</b></p><p>
35、 2.3清零、音樂(lè)開(kāi)關(guān)、開(kāi)方和多次方運(yùn)算功能模塊設(shè)計(jì)</p><p> 本設(shè)計(jì)要求在任何時(shí)候按下AC清零鍵,都必須退出當(dāng)前操作,數(shù)據(jù)清零,準(zhǔn)備下一次的運(yùn)算,故應(yīng)采用獨(dú)立鍵盤(pán)產(chǎn)生下降沿輸入給單片機(jī)外部中斷處理。</p><p> 對(duì)于聲音開(kāi)關(guān)按鍵,由于要求隨時(shí)關(guān)閉或打開(kāi)聲音提示,本設(shè)計(jì)也采用獨(dú)立按鍵產(chǎn)生下降沿輸入給單片機(jī)的外部中斷處理。</p><p> 而開(kāi)方
36、或多次方運(yùn)算,則可與矩陣鍵盤(pán)一起檢測(cè),也當(dāng)做一個(gè)運(yùn)算符處理。具體功能按鍵設(shè)計(jì)如下圖:</p><p><b> 圖2-3功能按鍵設(shè)</b></p><p> 圖中,AC為清零按鍵、KeyBeep為聲音開(kāi)關(guān)按鍵、KeySqrt為開(kāi)方按鍵、KeyPow為多次方按鍵。</p><p><b> 2.4電源模塊設(shè)計(jì)</b>&
37、lt;/p><p> 由于AT89S52和LCD1602都是采用5V供電,而且其他模塊功能也采用5V電平,本系統(tǒng)采用LM7805作為穩(wěn)壓芯片,經(jīng)過(guò)初級(jí)和次級(jí)的電容濾波,最終得到穩(wěn)定的5V電壓供給系統(tǒng)使用。</p><p><b> 圖2-4電源</b></p><p><b> 2.5主控模塊設(shè)計(jì)</b></p&g
38、t;<p> 2.5.1 MSC-51芯片簡(jiǎn)介</p><p> MCS-51單片機(jī)內(nèi)部結(jié)構(gòu):</p><p> 圖2-5單片機(jī)內(nèi)部結(jié)構(gòu)圖</p><p> 8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位。其復(fù)位電路圖如下:</p><p><b> 圖2-6復(fù)位電路</b></p>
39、;<p> 2.5.2 AT89S52</p><p> AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程 DIP封裝Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT
40、89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。</p><p> AT89S52的最大優(yōu)點(diǎn)是可以在線(xiàn)編程,在調(diào)試程序的時(shí)候,可直接帶電燒錄程序,燒錄完成即可自動(dòng)復(fù)位運(yùn)行,非常適合調(diào)試程序。而且AT89S52可編程一千多次以上,的確是一種價(jià)格低廉的開(kāi)發(fā)芯片。</p><p> 單片機(jī)的最小系統(tǒng)設(shè)計(jì):</p><p><b> 圖2-
41、7最小系統(tǒng)</b></p><p><b> 第3章 軟件設(shè)計(jì)</b></p><p><b> 3.1顯示程序設(shè)計(jì)</b></p><p> LCD1602在上電以后,應(yīng)該先等待50毫秒左右,讓其內(nèi)部芯片初始化后再對(duì)其進(jìn)行操作。在對(duì)其操作時(shí),應(yīng)參考其時(shí)序圖,先把命令寫(xiě)入其內(nèi)部寄存器設(shè)置它的工作方式和狀態(tài)
42、。要顯示數(shù)據(jù)的時(shí)候,先設(shè)置好顯示坐標(biāo),再往里面寫(xiě)入要顯示的ASCII碼,LCD則通過(guò)刷新和替換來(lái)顯示新的數(shù)據(jù)。其程序流程圖如下圖所示:</p><p> 圖3-1顯示程序流程圖</p><p> 其程序位于后面附錄 </p><p><b> 3.2鍵掃程序設(shè)計(jì)</b></p><p> 由于矩陣鍵盤(pán)采用4行4列
43、的結(jié)構(gòu),每一行每一列各對(duì)應(yīng)一個(gè)I/O口,故程序應(yīng)該逐行查詢(xún),一旦查詢(xún)到有某一行的按鍵被按下了,則根據(jù)讀取到的I/O總線(xiàn)口的數(shù)據(jù)即可查詢(xún)到是哪一列的按鍵被按下了,最后對(duì)應(yīng)行列返回一個(gè)按鍵值回主函數(shù)。</p><p><b> 其程序流程圖如下:</b></p><p><b> 否</b></p><p><b&g
44、t; 否</b></p><p><b> 否</b></p><p><b> 否</b></p><p> 圖3-2 矩陣鍵盤(pán)程序流程圖</p><p><b> 其程序位于后面附錄</b></p><p><b>
45、 3.3清零程序設(shè)計(jì)</b></p><p> 根據(jù)系統(tǒng)要求以及硬件結(jié)構(gòu),AC按鍵直接接入單片機(jī)外部中段0,則程序應(yīng)使用中斷來(lái)清除各數(shù)據(jù)存儲(chǔ)變量達(dá)到清零的目的,并把清零標(biāo)志位至1,在主程序中不斷查詢(xún)標(biāo)志位,若為1,則清零后。其程序框圖如下圖:</p><p> 圖3-3清零程序流程圖</p><p><b> 其程序如下:</b&g
46、t;</p><p> /***清零中斷程序******/</p><p> void EX0_int() interrupt 0</p><p><b> {</b></p><p> if(beepflag==1)//若開(kāi)聲音則每一次按鍵均鳴叫</p><p><b>
47、{</b></p><p><b> beep=0;</b></p><p> delayms(100);</p><p><b> beep=1;</b></p><p><b> }</b></p><p> lcdwrite_
48、com(0x01); //顯示清屏</p><p> lcd_setxy(0,0);</p><p> lcdwrite_data('0');</p><p> lcd_setxy(0,0);</p><p> num='N'; //數(shù)字初始化</p><p> key
49、num1=0,keynum2=0,sign=0;</p><p> ans1=0,ans2=0,ans=0,point=0;</p><p> conflag=0,newcalc=0;</p><p><b> ac=1;</b></p><p><b> }</b></p>
50、<p> 3.4聲音開(kāi)關(guān)程序設(shè)計(jì)</p><p> 根據(jù)要求,聲音開(kāi)關(guān)使用外部中斷1來(lái)處理,當(dāng)按下聲音開(kāi)關(guān)時(shí),觸發(fā)單片機(jī)進(jìn)入外部中斷1,在中斷程序里,通過(guò)對(duì)聲音開(kāi)關(guān)標(biāo)志位取反,在按鍵掃描過(guò)程中,加入對(duì)聲音標(biāo)志位的判斷,若為1,則發(fā)出聲音,即可實(shí)現(xiàn)聲音提示功能。其程序框圖如下圖:</p><p><b> 否</b></p><p&g
51、t; 圖3-4聲音開(kāi)關(guān)程序流程圖</p><p><b> 其程序如下:</b></p><p> /***聲音中斷程序******/</p><p> void EX1_int() interrupt 2</p><p><b> {</b></p><p>
52、beepflag=~beepflag;</p><p> if(beepflag==1) //若開(kāi)聲音則每一次按鍵均鳴叫</p><p><b> {</b></p><p><b> beep=0;</b></p><p> delayms(100);</p><p&
53、gt;<b> beep=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 3.5總體設(shè)計(jì)</b></p><p> 整體程序包括:電子計(jì)算器.C、lcd1602.C和lcd160
54、2_8.h</p><p> 本系統(tǒng)采用大小循環(huán)嵌套方式的軟件設(shè)計(jì)思想,大循環(huán)則一直在運(yùn)行,使計(jì)算器一直處于工作狀態(tài),并不斷掃描按鍵,小循環(huán)用于識(shí)別數(shù)字是否輸入完,一旦檢測(cè)到輸入的是運(yùn)算符,則轉(zhuǎn)換輸入數(shù)值并儲(chǔ)存起來(lái),最后按下等于號(hào)以后則根據(jù)運(yùn)算符計(jì)算兩個(gè)數(shù)值的大小,并通過(guò)LCD顯示。</p><p> 軟件系統(tǒng)總框圖如下:</p><p><b>
55、是</b></p><p><b> 是</b></p><p><b> 否</b></p><p><b> 是</b></p><p><b> 是</b></p><p><b> 是<
56、/b></p><p><b> 否 </b></p><p><b> 是</b></p><p><b> 否</b></p><p> 圖3-5 總程序流程圖</p><p><b> 其程序位于后面附錄</b>
57、;</p><p> 第4章 系統(tǒng)仿真及原理圖</p><p> 4.1 Proteus仿真</p><p><b> 系統(tǒng)仿真圖見(jiàn)下圖:</b></p><p><b> 圖4-1系統(tǒng)仿真圖</b></p><p><b> 圖4-2加法運(yùn)算</b
58、></p><p><b> 圖4-3減法運(yùn)算</b></p><p><b> 圖4-4乘法運(yùn)算</b></p><p><b> 圖4-5除法運(yùn)算</b></p><p><b> 圖4-6開(kāi)根號(hào)運(yùn)算</b></p><
59、;p><b> 圖4-7冪運(yùn)算</b></p><p><b> 圖4-8錯(cuò)誤提示1</b></p><p><b> 圖4-9錯(cuò)誤提示2</b></p><p> 4.2 Protel原理圖 </p><p><b> 系統(tǒng)原理圖見(jiàn)下圖:</b
60、></p><p> 圖4-10系統(tǒng)原理圖</p><p><b> 第5章 系統(tǒng)調(diào)試</b></p><p><b> 5.1問(wèn)題與分析</b></p><p> 5.1.1硬件常見(jiàn)故障</p><p> 1、邏輯錯(cuò)誤:它是由設(shè)計(jì)錯(cuò)誤或加工過(guò)程中的工藝性錯(cuò)誤
61、所造成的。這類(lèi)錯(cuò)誤包括錯(cuò)線(xiàn)、開(kāi)路、短路等。</p><p> 2、元器件失效:有兩方面的原因:一是器件本身已損壞或性能不符合要求;二是組裝錯(cuò)誤造成元件失效,如電解電容、集成電路安裝方向錯(cuò)誤等。</p><p> 3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會(huì)造成系統(tǒng)時(shí)好時(shí)壞,經(jīng)不起振動(dòng);走線(xiàn)和布局不合理也會(huì)引起系統(tǒng)可靠性差。</p><p>
62、 4、電源故障:若樣機(jī)由電源故障,則加電后很容易造成器件損壞。電源故障包括電壓值不符合設(shè)計(jì)要求,電源引線(xiàn)和插座不對(duì),功率不足,負(fù)載能力差等。</p><p><b> 5.1.2軟件調(diào)試</b></p><p> 軟件調(diào)試一般分為以下四個(gè)階段:</p><p> 1、編寫(xiě)程序并查錯(cuò);</p><p> 2、在
63、C 語(yǔ)言的編譯系統(tǒng)中編譯源程序</p><p> 3、對(duì)程序進(jìn)行編譯連接,并及時(shí)發(fā)現(xiàn)程序中存在的錯(cuò)誤;</p><p><b> 4、改正錯(cuò)誤。</b></p><p> 在本次調(diào)試中出現(xiàn)的問(wèn)題有:</p><p> 1、在程序中有的函數(shù)名未定義;</p><p> 2、在抄錄程序時(shí),少
64、錄入一些字符,如: ”“{”“-”“;、 、等符號(hào),而出現(xiàn)錯(cuò)誤;</p><p> 3、有一些函數(shù)名錄入時(shí)少寫(xiě)一個(gè)字母或順序顛倒;</p><p> 4、沒(méi)有注意函數(shù)名的調(diào)用及定義;</p><p> 5、芯片引腳定義出錯(cuò)而導(dǎo)致沒(méi)有實(shí)驗(yàn)現(xiàn)象。</p><p><b> 5.2系統(tǒng)演示</b></p>
65、<p><b> 整體圖的照片:</b></p><p> 圖5-1未工作時(shí)系統(tǒng)</p><p><b> 各項(xiàng)功能測(cè)試:</b></p><p><b> 表5-1功能測(cè)試</b></p><p> 加法測(cè)試
66、 減法測(cè)試</p><p><b> 表5-2功能測(cè)試</b></p><p> 乘法測(cè)試 除法測(cè)試</p><p><b> 表5-3功能測(cè)試</b></p><p> 開(kāi)方測(cè)試
67、 多次方運(yùn)算測(cè)試</p><p><b> 表5-4功能測(cè)試</b></p><p> 錯(cuò)誤提示測(cè)試1 錯(cuò)誤提示測(cè)試2</p><p> 由以上測(cè)試結(jié)果可知,計(jì)算器的各項(xiàng)功能正常,基本能達(dá)到設(shè)計(jì)要求。下面將進(jìn)行多次測(cè)試,以檢驗(yàn)計(jì)算器的性
68、能指標(biāo)。</p><p> 本次對(duì)計(jì)算器的功能進(jìn)行多次測(cè)量,其測(cè)試結(jié)果如下表:</p><p> 表5-5功能多次測(cè)量</p><p> 次數(shù) 第一運(yùn)算數(shù) 運(yùn)算符號(hào) 第二運(yùn)算數(shù) 運(yùn)算結(jié)果 實(shí)際結(jié)果</p><p> 1 524 + 5624.563
69、 6148.5629882 6148.563 </p><p> 2 55914 - 264.51 55649.4882811 55649.49</p><p> 3 562 * 2 1124 1124</p>
70、<p> 4 67 / 7.5 8.933334 8.93333333</p><p> 5 8 (無(wú)輸入) 2.828427 2.28427125</p><p> 6 9 ^
71、 2 81 81</p><p> 7 (無(wú)輸入) + 19 100 100</p><p> 8 (無(wú)輸入) (無(wú)輸入) 10 10</p><p> 9
72、 42 / 0 math error 錯(cuò)誤</p><p> 10 -64 (無(wú)輸入) math error 錯(cuò)誤</p><p> 結(jié)果分析:對(duì)比運(yùn)算結(jié)果和實(shí)際結(jié)果可知,進(jìn)行一般的整形運(yùn)算計(jì)算器能準(zhǔn)確無(wú)誤計(jì)算出來(lái),但是當(dāng)進(jìn)行浮點(diǎn)運(yùn)算時(shí)候,會(huì)產(chǎn)
73、生精度丟失或者是有尾數(shù)產(chǎn)生,這是因?yàn)閱纹瑱C(jī)對(duì)的浮點(diǎn)運(yùn)算功能差,而且在keil開(kāi)發(fā)環(huán)境中,float型和double型浮點(diǎn)數(shù)的精度都是一樣的,其小數(shù)點(diǎn)的有效數(shù)字位數(shù)都是6~7位,這就決定了本設(shè)計(jì)的計(jì)算器的浮點(diǎn)數(shù)精度有限,只能通過(guò)小數(shù)點(diǎn)補(bǔ)償來(lái)減少浮點(diǎn)數(shù)運(yùn)算誤差。另外,由連續(xù)運(yùn)算、新一輪運(yùn)算測(cè)試、錯(cuò)誤提示測(cè)試的結(jié)果以及運(yùn)算過(guò)程中的AC清零、聲音開(kāi)關(guān)設(shè)置可見(jiàn),本設(shè)計(jì)的計(jì)算器的功能基本能實(shí)現(xiàn)。但是,由實(shí)際操作可發(fā)現(xiàn)本設(shè)計(jì)存在以下不足:</p
74、><p> ?。?)某些按鍵不夠靈敏,導(dǎo)致需要按很多次才能輸入;</p><p> ?。?)當(dāng)運(yùn)算式子超過(guò)屏幕范圍時(shí),不能通過(guò)移動(dòng)屏幕來(lái)完全顯示式子;</p><p> (3)當(dāng)連續(xù)出現(xiàn)錯(cuò)誤操作時(shí),如連續(xù)輸入減號(hào),程序不能自動(dòng)復(fù)位,會(huì)產(chǎn)生連續(xù)錯(cuò)誤;</p><p> ?。?)沒(méi)有刪除輸入功能,當(dāng)輸入出錯(cuò)時(shí),只能通過(guò)清零后重新輸入;</p&
75、gt;<p> ?。?)沒(méi)有數(shù)據(jù)溢出提示功能。</p><p><b> 第6章 總結(jié)與展望</b></p><p><b> 6.1總結(jié)</b></p><p> 經(jīng)過(guò)多次測(cè)量與調(diào)試,本計(jì)算器基本能實(shí)現(xiàn)設(shè)計(jì)要求中的功能。在設(shè)計(jì)的過(guò)程中,也遇到了不少的困難,例如在LCD上顯示任意位整數(shù),顯示任意位小數(shù),
76、在輸入小數(shù)的時(shí)候小數(shù)點(diǎn)的處理問(wèn)題,連續(xù)運(yùn)算的結(jié)果保存與清空問(wèn)題等等。最后通過(guò)不斷的查閱資料,請(qǐng)教別人,修改程序,下載調(diào)試等過(guò)程,終于把遇到的問(wèn)題逐一解決了。雖然某些問(wèn)題解決得不夠完美,但是都是經(jīng)過(guò)自己的思考和努力解決的,在此過(guò)程自己也學(xué)到了很多東西,例如學(xué)會(huì)了矩陣鍵盤(pán)的掃描技術(shù)、LCD接口技術(shù)、LCD的顯示技術(shù)、中斷技術(shù)等等,這些技術(shù)對(duì)熟練單片機(jī)的使用以及單片機(jī)項(xiàng)目開(kāi)發(fā)是非常有幫助的。在設(shè)計(jì)的過(guò)程中的思考解決問(wèn)題的思路和方法對(duì)以后的工作
77、和生活都是非常有幫助的。</p><p><b> 6.2展望</b></p><p> 單片機(jī)程序運(yùn)行可靠,并且可以修改,通過(guò)不同的程序?qū)崿F(xiàn)不同的功能,尤其是一些獨(dú)特的功能。通過(guò)使用單片機(jī)編寫(xiě)的程序?qū)崿F(xiàn)高智能、高效率和更高的可靠性。</p><p> 本設(shè)計(jì)是由單片機(jī)實(shí)現(xiàn)的模擬計(jì)算器,它不僅能實(shí)現(xiàn)數(shù)據(jù)的加減乘除運(yùn)算,而且還能使數(shù)據(jù)及其計(jì)
78、算結(jié)果在數(shù)碼管上顯示出來(lái),能夠?qū)崿F(xiàn)0-256的數(shù)字四則運(yùn)算。本設(shè)計(jì)是用單片機(jī)AT89C51來(lái)控制,采用LCD1602液晶顯示讀取數(shù)據(jù),軟件部分是由C語(yǔ)言來(lái)編寫(xiě)的。利用鍵盤(pán)和LCD1602設(shè)計(jì)一個(gè)簡(jiǎn)單的數(shù)學(xué)計(jì)算器,可以完成簡(jiǎn)單的如加,減,乘,除的四則運(yùn)算,并將運(yùn)算結(jié)果在LCD1602上顯示出來(lái)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]馬
79、忠梅等編著.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì),北京:北京航空航天大學(xué)出版社,2007</p><p> [2]李云剛等編著.單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì),北京:中國(guó)水利水電出社,2008</p><p> [3]張軍編著.AVR單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)典型實(shí)例,西安:中國(guó)電力出版社,2005</p><p> [4]李建忠編著.單片機(jī)原理及應(yīng)用,西安:西安電子科技大學(xué)出版社,
80、2011</p><p> [5] 吳寧.80X86/Pentium 微型計(jì)算機(jī)原理及應(yīng)用[M], 北京:電子社,2004</p><p> [6] 蔡美琴.MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用[M],北京:高等教社,2003</p><p> [7] 肖金球.單片機(jī)原理與接口技術(shù)[M],北京: 清華大學(xué)出版社2004</p><p>
81、 [8] 郭天祥.新概念51單片機(jī)C語(yǔ)言教程:入門(mén)、提高、開(kāi)發(fā)、拓展全攻 略,北京:電子工業(yè)出版社,2009</p><p> [9] 譚浩強(qiáng).從語(yǔ)言程序設(shè)計(jì),第三版,北京:清華大學(xué)出版社,2005</p><p> [10]徐愛(ài)鈞.智能化測(cè)量控制儀表原理與設(shè)計(jì),第二版,北京:北京航天航空大學(xué)出版社,2004.9</p><
82、p> [11]孫育才等.MCS-51 系列單片微型計(jì)算機(jī)及其應(yīng)用,第四版:東南大學(xué)出版社,2004.3</p><p> [12]李萍等.智能儀器實(shí)驗(yàn)指導(dǎo)書(shū),大連:大連交通大學(xué),2007.9</p><p> [13]單片機(jī)應(yīng)用技術(shù)(C 語(yǔ)言):中國(guó)勞動(dòng)社會(huì)保障出版社,2006.6</p><p> [14]朱定華著.單片機(jī)原理與接口技術(shù):電子工業(yè)出版
83、社,2001.4</p><p> [15]王宜懷.劉曉升等著,嵌入式應(yīng)用技術(shù)基礎(chǔ)教程,北京:清華大學(xué)出版社,2005.7</p><p> [16]王威著.HCS12 微控制器原理及應(yīng)用,北京:北京航空航天大學(xué)出版社,2007.10</p><p> [17]周立功.單片機(jī)實(shí)驗(yàn)與實(shí)踐,北京:北京航空航天大學(xué)出版社,2004.3.26</p>&
84、lt;p> [18]孫育才等.MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用,第四版:東南大學(xué)出版社.2004.3</p><p> [19] Behzad Razavi,Design of Analog CMOS Integrated Circuits[M],2001</p><p> [20]V. Yu. Teplov,A. V. Anisimov.Thermostatting S
85、ystem Using a Single-ChipMicrocomputer and Thermoelectric Modules Based on the Peltier Effect[J] ,2002 </p><p> [21] Yeager Brent.How to troubleshoot your electronic scale[J]. Powder and Bulk Engineering,1
86、995 </p><p> [22]Meehan Joanne,Muir Lindsey.SCM in Merseyside SMEs:Benefits and barriers[J],TQM Journal. 2008 </p><p> [23] Lee Jri.High-Speed Circuit Designs for Transmittersin Broad-band D
87、ata Links: IEEE Journal of Solid-State Circuits[J]. 2006 </p><p><b> 附錄</b></p><p><b> 1、電子計(jì)算器.C</b></p><p> #include<reg52.h></p><p>
88、 #include<math.h></p><p> #include "lcd1602_8.h"</p><p> uint temp,num;//鍵盤(pán)掃描數(shù)值</p><p> uchar keynum1=0,keynum2=0,sign=0,i=0,j=0; //按鍵計(jì)數(shù),符號(hào)標(biāo)示</p><p>
89、; uchar num1[8]={0},num2[8]={0}; //按鍵存儲(chǔ)數(shù)組</p><p> float ans1=0,ans2=0,ans=0,point=0; //運(yùn)算數(shù)據(jù)</p><p> bit conflag=0; //繼續(xù)運(yùn)算標(biāo)志位</p><p> bit newcalc=0;//新運(yùn)算標(biāo)志</p><p>
90、; bit ac=0;//清零標(biāo)志,1為清零</p><p> bit beepflag=0; //蜂鳴器標(biāo)志位</p><p> bit sqrtflag1=0;//開(kāi)方1標(biāo)志位</p><p> bit sqrtflag2=0;//開(kāi)方2標(biāo)志位</p><p> bitpowflag=0;</p>&l
91、t;p> sbit keybeep=P3^3;//蜂鳴器開(kāi)關(guān)按鍵</p><p> sbit beep=P3^7; //蜂鳴器控制口</p><p> sbit keysqrt=P3^4;//開(kāi)方按鍵</p><p> sbit keypow=P3^5;//任意次方按鍵</p><p> uchar keyscan();&l
92、t;/p><p> void maininit(void);</p><p> /****主程序***/</p><p> void main(void)</p><p><b> {</b></p><p> maininit();//初始化</p><p> w
93、hile(1)//整個(gè)系統(tǒng)大循環(huán),讓計(jì)算器一直處于工作狀態(tài)</p><p><b> {</b></p><p> while(1)//第一運(yùn)算數(shù)掃描</p><p><b> {</b></p><p><b> if(ac==1)</b></p>
94、<p> break; //若清零,則退出輸入</p><p> if((keyscan()!='N')&&((num>=0&&num<=9)||num=='.')) //記錄按下的數(shù)字</p><p><b> {</b></p><p> if(
95、newcalc==1) //新一次運(yùn)算開(kāi)始</p><p><b> {</b></p><p> lcdwrite_com(0x01);//清屏</p><p> newcalc=0;</p><p> lcd_setxy(0,0);</p><p><b> }<
96、/b></p><p> if(keynum1<=7) //限制輸入位數(shù)</p><p><b> {</b></p><p> if(num=='.')</p><p><b> {</b></p><p> lcdwri
97、te_data('.');//顯示小數(shù)點(diǎn)</p><p><b> }</b></p><p><b> else</b></p><p> lcdwrite_num1(num);</p><p> num1[keynum1]=num;</p><p&g
98、t; keynum1++;</p><p><b> }</b></p><p><b> }</b></p><p> else if(num=='+'||num=='-'||num=='*'||num=='/'||num=='='|
99、|num=='^'||keysqrt==0) </p><p><b> {</b></p><p> if(keynum1==0&&num1[0]==0) //若直接輸入運(yùn)算符而沒(méi)有輸入數(shù)字則執(zhí)行連續(xù)運(yùn)算</p><p><b> {</b></p><p
100、> here:ans1=ans;</p><p><b> sign=num;</b></p><p> lcdwrite_com(0x01);</p><p> delayms(5);</p><p> lcd_setxy(0,0);</p><p> lcdwrite_fl
101、oat(ans1);</p><p> if(sqrtflag2!=1&&num!='N')</p><p> lcdwrite_data(num);</p><p><b> break; </b></p><p><b> }</b></p>
102、<p> for(i=0;keynum1>0;i++) //計(jì)算按下的數(shù)字的大小</p><p><b> {</b></p><p> if(num1[i]!='.')</p><p> ans1=ans1*10+num1[i];</p><p> else if(nu
103、m1[i]=='.')</p><p><b> break;</b></p><p> keynum1--;</p><p><b> }</b></p><p> for(keynum1--,i++,j=0;keynum1>0;j++,i++,keynum1--)&
104、lt;/p><p> point=point*10+num1[i];</p><p> for(;j>0;j--)</p><p> point*=0.1;</p><p> ans1=ans1+point;</p><p> sqrtflag1=0; //清除開(kāi)方標(biāo)志</p><p&g
105、t; sqrtflag2=0;//清除開(kāi)方標(biāo)志</p><p> if(keysqrt==0) //計(jì)算開(kāi)方</p><p><b> {</b></p><p> delayms(5);</p><p> if(keysqrt==0)</p><p><b> {&l
106、t;/b></p><p> if(beepflag==1) //若開(kāi)聲音則每一次按鍵均鳴叫</p><p><b> {</b></p><p><b> beep=0;</b></p><p> delayms(100);</p><p><b>
107、 beep=1;</b></p><p><b> }</b></p><p> ans=sqrt(ans1);</p><p> sqrtflag1=1;</p><p> lcdwrite_data(0xe8);</p><p> while(keysqrt==0);&
108、lt;/p><p> delayms(10);</p><p> while(keysqrt==0);</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p>
109、<p> sign=num; //記住運(yùn)算符號(hào)</p><p> lcdwrite_data(num);</p><p> break; //輸入運(yùn)算符號(hào)則退出第一運(yùn)算數(shù)的輸入</p><p><b> }</b></p><p><b> }</b></
110、p><p><b> while(1)</b></p><p><b> {</b></p><p><b> if(ac==1)</b></p><p> break; //若清零,則退出輸入</p><p> if(sqrtflag1==1
111、) //若第一次按鍵為開(kāi)方,則直接顯示結(jié)果</p><p><b> {</b></p><p><b> break;</b></p><p><b> }</b></p><p> if((keyscan()!='N')&&((nu
112、m>=0&&num<=9)||num=='.')) //記錄按下的數(shù)字</p><p><b> {</b></p><p> if(keynum2<=7)</p><p><b> {</b></p><p> if(num=='
113、.')</p><p><b> {</b></p><p> lcdwrite_data('.');//顯示小數(shù)點(diǎn)</p><p><b> }</b></p><p><b> else</b></p><p>
114、lcdwrite_num1(num);</p><p> num2[keynum2]=num;</p><p> keynum2++;</p><p><b> }</b></p><p><b> }</b></p><p> else if(num=='
115、='||keysqrt==0)</p><p><b> {</b></p><p> sqrtflag2=0;//清除開(kāi)方標(biāo)志</p><p> if(keysqrt==0) //進(jìn)入開(kāi)方 </p><p><b> {</b></p><p> del
116、ayms(5);</p><p> if(keysqrt==0)</p><p><b> {</b></p><p> sqrtflag2=1; //開(kāi)方標(biāo)志</p><p> lcdwrite_data(0xe8); //寫(xiě)開(kāi)方符號(hào)</p><p> if(beepflag==
117、1)//若開(kāi)聲音則每一次按鍵均鳴叫</p><p><b> {</b></p><p><b> beep=0;</b></p><p> delayms(100);</p><p><b> beep=1;</b></p><p><
118、b> }</b></p><p> while(keysqrt==0);</p><p> delayms(10);</p><p> while(keysqrt==0);</p><p><b> }</b></p><p><b> }</b>
119、;</p><p><b> point=0;</b></p><p> for(i=0;keynum2>0;i++) //計(jì)算按下的數(shù)字的大小</p><p><b> {</b></p><p> if(num2[i]!='.')</p><
120、p> ans2=ans2*10+num2[i];</p><p> else if(num2[i]=='.')</p><p><b> break;</b></p><p> keynum2--;</p><p><b> }</b></p><
121、p> for(keynum2--,i++,j=0;keynum2>0;j++,i++,keynum2--)</p><p> point=point*10+num2[i];</p><p> for(;j>0;j--)</p><p> point*=0.1;</p><p> if(sqrtflag2!=1)&l
122、t;/p><p> lcdwrite_data(num);</p><p> ans2=ans2+point;</p><p> break;//輸入等于號(hào)則退出第二運(yùn)算數(shù)的輸入</p><p><b> }</b></p><p> else if(num=='+'||
123、num=='-'||num=='*'||num=='/'||num=='^')</p><p><b> {</b></p><p><b> point=0;</b></p><p> for(i=0;keynum2>0;i++) //計(jì)算按
124、下的數(shù)字的大小</p><p><b> {</b></p><p> if(num2[i]!='.')</p><p> ans2=ans2*10+num2[i];</p><p> else if(num2[i]=='.')</p><p><b&
125、gt; break;</b></p><p> keynum2--;</p><p><b> }</b></p><p> for(keynum2--,i++,j=0;keynum2>0;j++,i++,keynum2--)</p><p> point=point*10+num2[i];&
126、lt;/p><p> for(;j>0;j--)</p><p> point*=0.1;</p><p> lcdwrite_data(num);</p><p> ans2=ans2+point;</p><p> conflag=1;</p><p> break; /
127、/進(jìn)行連續(xù)計(jì)算</p><p><b> }</b></p><p><b> }</b></p><p><b> if(ac==1)</b></p><p><b> {</b></p><p><b>
128、ac=0;</b></p><p> continue; //清零后進(jìn)行下一次運(yùn)算</p><p><b> }</b></p><p> if(sign=='+') //計(jì)算結(jié)果</p><p> ans=ans1+ans2;</p><p>
129、 if(sign=='-')</p><p> ans=ans1-ans2;</p><p> if(sign=='*')</p><p> ans=ans1*ans2;</p><p> if(sign=='/')</p><p> ans=ans1/ans2
130、;</p><p> if(sign=='^') //計(jì)算多次方</p><p> ans=pow(ans1,ans2); </p><p> if(sqrtflag2==1)//計(jì)算開(kāi)方</p><p> ans=sqrt(ans1);</p><p> lcd_setxy(1,0);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的電子計(jì)算器設(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文(設(shè)計(jì))-基于單片機(jī)的電子計(jì)算器設(shè)計(jì)
- 畢業(yè)論文-開(kāi)題報(bào)告-文獻(xiàn)綜述基于單片機(jī)的電子計(jì)算器設(shè)計(jì)
- 基于單片機(jī)的電子計(jì)算器
- 基于單片機(jī)的電子計(jì)算器
- 畢業(yè)論文-開(kāi)題報(bào)告-文獻(xiàn)綜述基于單片機(jī)的電子計(jì)算器設(shè)計(jì)
- 基于單片機(jī)的電子計(jì)算器
- 基于單片機(jī)的電子計(jì)算器
- 基于單片機(jī)的電子計(jì)算器 (2)
- 基于單片機(jī)的電子計(jì)算器 (2)
- 計(jì)算器畢業(yè)論文_——基于單片機(jī)的計(jì)算器設(shè)計(jì)
- 基于單片機(jī)的電子計(jì)算器 (2)
- 單片機(jī)原理課程設(shè)計(jì)——oled電子計(jì)算器
- 單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)-畢業(yè)論文
- 基于51單片機(jī)的簡(jiǎn)易計(jì)算器設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文 基于51單片機(jī)簡(jiǎn)易計(jì)算器的設(shè)計(jì)
- 畢業(yè)論文--基于51單片機(jī)簡(jiǎn)易計(jì)算器的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)設(shè)計(jì)報(bào)告(多功能電子計(jì)算器設(shè)計(jì))
- 基于單片機(jī)的電子計(jì)算器設(shè)計(jì)(c51語(yǔ)言編程)【開(kāi)題報(bào)告】
- 基于單片機(jī)的簡(jiǎn)易計(jì)算器論文畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論