課程設(shè)計(jì)--單片機(jī)設(shè)計(jì)實(shí)驗(yàn)報(bào)告簡單計(jì)算器的設(shè)計(jì)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  1.總體方案選擇</b></p><p><b>  1.1 實(shí)驗(yàn)要求:</b></p><p>  通過小鍵盤實(shí)現(xiàn)數(shù)據(jù)的輸入,并在LED數(shù)碼管上顯示</p><p>  實(shí)現(xiàn)+、-、*、/ </p><p>  在LED數(shù)碼管上顯示結(jié)果</p><

2、p><b>  并有清零,退出功能</b></p><p><b>  1.2方案設(shè)計(jì)</b></p><p>  本系統(tǒng)以STC89C52單片機(jī)為控制核心,對系統(tǒng)進(jìn)行初始化,主要完成對鍵盤的響應(yīng)、液晶顯示燈功能的控制,起到總控和協(xié)調(diào)各模塊之間工作的作用。單片機(jī)通過檢測鍵盤讀取使用者按下對用功能的按鍵,然后通過單片機(jī)內(nèi)部運(yùn)放把運(yùn)算的結(jié)果顯示

3、在液晶屏幕上。</p><p>  圖1-1系統(tǒng)結(jié)構(gòu)框圖</p><p>  本系統(tǒng)結(jié)構(gòu)如圖1-1所示,本設(shè)計(jì)可分為以下模塊:單片機(jī)主控模塊、鍵盤模塊、功率放大模塊、鬧鈴模塊、按鍵設(shè)置模塊。下面對各個(gè)模塊的設(shè)計(jì)方案逐一進(jìn)行論證分析。</p><p>  2.硬件原理電路圖的設(shè)計(jì)及分析</p><p><b>  2.1主控模塊<

4、;/b></p><p>  STC89C52有40個(gè)引腳,4個(gè)8位并行I/O口,1個(gè)全雙工異步串行口,同時(shí)內(nèi)含5個(gè)中斷源,2個(gè)優(yōu)先級(jí),2個(gè)16位定時(shí)/計(jì)數(shù)器。STC89C52的存儲(chǔ)器系統(tǒng)由4K的程序存儲(chǔ)器(掩膜ROM),和128B的數(shù)據(jù)存儲(chǔ)器(RAM)組成。</p><p>  STC89C52單片機(jī)的基本組成框圖見圖2-1。</p><p><b&g

5、t;  圖2-1 </b></p><p>  2.1.1 STC89C52單片機(jī)主要特性</p><p>  1. 一個(gè)8 位的微處理器(CPU)。</p><p>  2. 片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(128B),用以存放可以讀/寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等,SST89 系列單片機(jī)最多提供1K 的RAM。</p>&

6、lt;p>  3. 片內(nèi)程序存儲(chǔ)器ROM(4KB),用以存放程序、一些原始數(shù)據(jù)和表格。</p><p>  4. 四個(gè)8 位并行I/O 接口P0~P3,每個(gè)口既可以用作輸入,也可以用作輸出。</p><p>  5. 兩個(gè)定時(shí)器/計(jì)數(shù)器,每個(gè)定時(shí)器/計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制。</p>

7、<p>  6. 五個(gè)中斷源的中斷控制系統(tǒng)。</p><p>  7. 一個(gè)全雙工UART(通用異步接收發(fā)送器)的串行I/O 口,用于實(shí)現(xiàn)單片機(jī)之間或單機(jī)與微機(jī)之間的串行通信。</p><p>  8. 片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率為12MHz。</p><p>  2.1.2 STC89C52單片機(jī)管腳圖&

8、lt;/p><p>  圖2-2 89S52單片機(jī)管腳圖</p><p>  時(shí)鐘電路引腳XTAL1 和XTAL2:</p><p>  控制信號(hào)引腳RST,ALE,PSEN 和EA:</p><p>  輸入/輸出端口P0/P1/P2/P3:</p><p>  2.1.3 STC89C52單片機(jī)的中斷系統(tǒng)</p&

9、gt;<p>  STC89C52系列單片機(jī)的中斷系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可以實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。由片內(nèi)特殊功能寄存器中的中斷允許寄存器IE控制CPU是否響應(yīng)中斷請求;由中斷優(yōu)先級(jí)寄存器IP安排各中斷源的優(yōu)先級(jí);同一優(yōu)先級(jí)內(nèi)各中斷同時(shí)提出中斷請求時(shí),由內(nèi)部的查詢邏輯確定其響應(yīng)次序。</p><p>  2.1.4 STC89C52單片機(jī)的定時(shí)/計(jì)數(shù)器</p><p>

10、  在單片機(jī)應(yīng)用系統(tǒng)中,常常會(huì)有定時(shí)控制需求,如定時(shí)輸出、定時(shí)檢測、定時(shí)掃描等;也經(jīng)常要對外部事件進(jìn)行計(jì)數(shù)。89C52單片機(jī)內(nèi)集成有兩個(gè)可編程的定時(shí)/計(jì)數(shù)器:T0和T1,它們既可以工作于定時(shí)模式,也可以工作于外部事件計(jì)數(shù)模式,此外,T1還可以作為串行口的波特率發(fā)生器。</p><p>  2.2矩陣鍵盤模塊設(shè)計(jì):</p><p>  2.2.1矩陣鍵盤原理介紹</p><

11、;p>  在鍵盤中按鍵數(shù)量較多時(shí),為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個(gè)按鍵加以連接。這樣,一個(gè)端口(如P1口)就可以構(gòu)成4*4=16個(gè)按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時(shí),采用矩陣法來做鍵盤是合理的。</p&

12、gt;<p>  矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時(shí),所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會(huì)被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。</p><p>  2.2.2矩陣鍵盤電路設(shè)計(jì)</

13、p><p>  圖2-3矩陣鍵盤硬件連接圖</p><p>  首先辨別鍵盤中有無鍵按下,有單片機(jī)I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判斷。方法是:向行線輸出全掃描字00H,把全部列線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵按下,總會(huì)有一根行線電平被拉至低電平從而使行線不全為1。</p><p>  判斷鍵盤中哪一個(gè)鍵被按下使通過將列線逐列置低

14、電平后,檢查行輸入狀態(tài)來實(shí)現(xiàn)的。方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點(diǎn)上的那個(gè)鍵。</p><p>  2.3 LCD液晶顯示器簡介</p><p>  液晶是一種既具有液體的流動(dòng)性又具有光學(xué)特性的有機(jī)化合物,它的透明程度和呈現(xiàn)的顏色受外加電場的影響,利用這特點(diǎn)便可做成字符顯示器。

15、</p><p>  液晶顯示器(LCD)英文全稱為Liquid Crystal Display,它一種是采用了液晶控制透光度技術(shù)來實(shí)現(xiàn)色彩的顯示器。</p><p>  顯示接口用來顯示系統(tǒng)的狀態(tài),命令或采集的電壓數(shù)據(jù)。本系統(tǒng)顯示部分用的是LCD液晶模塊,采用一個(gè)16×1的字符型液晶顯示模塊。 </p><p>  2.3.1液晶模塊簡介</p&g

16、t;<p>  LCD1602液晶模塊采用HD44780控制器,hd44780具有簡單而功能較強(qiáng)的指令集,可以實(shí)現(xiàn)字符移動(dòng),閃爍等功能,LM016L與單片機(jī)MCU通訊可采用8位或4位并行傳輸兩種方式,hd44780控制器由兩個(gè)8位寄存器,指令寄存器(IR)和數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF),顯示數(shù)RAM(DDRAM),字符發(fā)生器ROMA(CGOROM)字符發(fā)生器RAM(CGRAM),地址計(jì)數(shù)器RAM(AC)。IR用于寄存指

17、令碼,只能寫入不能讀出,DR用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫入DDRAM和CGRAM,或者暫存從DDRAM和CGRAM讀出的數(shù)據(jù),BF為1時(shí),液晶模塊處于內(nèi)部模式,不響應(yīng)外部操作指令和接受數(shù)據(jù),DDTAM用來存儲(chǔ)顯示的字符,能存儲(chǔ)80個(gè)字符碼,CGROM由8位字符碼生成5*7點(diǎn)陣字符160中和5*10點(diǎn)陣字符32種.8位字符編碼和字符的對應(yīng)關(guān)系,可以查看參考文獻(xiàn)(30)中的表4.CGRAM是為用戶編寫特殊字符留用的,它的容量僅64

18、字節(jié),可以自定義8個(gè)5*7點(diǎn)陣字符或者4個(gè)5*10點(diǎn)陣字符,AC可以存儲(chǔ)DDRAM和CGRAM的地址,如果地址碼隨指令寫入IR,則IR自動(dòng)把地址碼裝入</p><p>  圖2-4 LCD1601引腳圖 </p><p>  寄存器選擇控制如表2-1。</p><p>  表2-1寄存器選擇控制</p><p>  2.3.2液晶顯示部分

19、與89S52的接口 </p><p>  如圖2-5所示。用89C51的P2口作為數(shù)據(jù)線,用P3.2、P3.1、P3.0分別作為LCD的E、R/W、RS。其中E是下降沿觸發(fā)的片選信號(hào),R/W是讀寫信號(hào),RS是寄存器選擇信號(hào)本模塊設(shè)計(jì)要點(diǎn)如下:顯示模塊初始化:首先清屏,再設(shè)置接口數(shù)據(jù)位為8位,顯示行數(shù)為1行,字型為5×7點(diǎn)陣,然后設(shè)置為整體顯示,取消光標(biāo)和字體閃爍,最后設(shè)置為正向增量方式且不移位。向LCD

20、的顯示緩沖區(qū)中送字符,程序中采用2個(gè)字符數(shù)組,一個(gè)顯示字符,另一個(gè)顯示電壓數(shù)據(jù),要顯示的字符或數(shù)據(jù)被送到相應(yīng)的數(shù)組中,完成后再統(tǒng)一顯示.首先取一個(gè)要顯示的字符或數(shù)據(jù)送到LCD的顯示緩沖區(qū),程序延時(shí)2.5ms,判斷是否夠顯示的個(gè)數(shù),不夠則地址加一取下一個(gè)要顯示的字符或數(shù)據(jù)。</p><p>  圖2-5 LCD1602與STC89C52的接口</p><p><b>  3系統(tǒng)軟件

21、設(shè)計(jì)</b></p><p>  3.1系統(tǒng)軟件流程圖</p><p>  圖3-1 軟件流程圖</p><p>  3.2系統(tǒng)整體原理圖</p><p><b>  4.系統(tǒng)調(diào)試</b></p><p><b>  4.1硬件調(diào)試</b></p>

22、<p>  計(jì)算器的電路系統(tǒng)較大,對于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯(cuò)誤,則會(huì)對檢測造成很大的不便,而且電路的交線較多,對于各種鋒利的引腳要注意處理,否則會(huì)刺破帶有包皮的導(dǎo)線,則會(huì)對電路造成短路現(xiàn)象。</p><p>  在本計(jì)算器的設(shè)計(jì)調(diào)試中遇到了很多的問題?;叵脒@些問題只要認(rèn)真多思考都是可以避免的,以下為主要的問題:</p><p> ?。?)程序調(diào)試初

23、期液晶一直沒有正常顯示,總在第一行顯示黑條。</p><p>  解決:經(jīng)調(diào)查發(fā)現(xiàn)液晶對比度沒有調(diào)好,旋轉(zhuǎn)液晶調(diào)節(jié)對比度用的電位器直到液晶顯示正常。</p><p> ?。?)開始時(shí)程序一直不能往單片機(jī)下載。</p><p>  解決:檢查復(fù)位電路,時(shí)鐘電路,以及單片機(jī)的供電系統(tǒng),后來發(fā)現(xiàn)晶振沒有起振,最終把晶振的起振電容換了就能夠下載程序。</p>

24、<p><b>  4.2軟件調(diào)試</b></p><p>  計(jì)算器是多功能的數(shù)字型設(shè)備,可以根據(jù)用戶按下的按鍵記錄要計(jì)算的數(shù)值。并通過單片機(jī)內(nèi)部運(yùn)算計(jì)算出結(jié)果并在屏幕上顯示。計(jì)算器的功能很多,所以對于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時(shí)出現(xiàn)了相對較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:</p&

25、gt;<p>  1.每次計(jì)算一次數(shù)值運(yùn)算后,屏幕上會(huì)殘留以前換算的結(jié)果,進(jìn)行下一次運(yùn)算的時(shí)候也沒有消除。</p><p>  解決:經(jīng)過分析初步確認(rèn)是液晶在進(jìn)行下一次運(yùn)算的時(shí)候沒有進(jìn)行清屏,在上一次運(yùn)算完成后,進(jìn)行新一次運(yùn)算的時(shí)候單片機(jī)對液晶進(jìn)行處理使其進(jìn)行清屏處理,最后解決了此問題。</p><p>  2.當(dāng)用戶按下按鍵的時(shí)候,單片機(jī)讀取的數(shù)值跟設(shè)定的數(shù)值不對。<

26、/p><p>  解決:重新檢查矩陣鍵盤電路的連接,重新建立一個(gè)新的對應(yīng)關(guān)系。</p><p><b>  4.3調(diào)試結(jié)果</b></p><p>  經(jīng)過一系列的問題查找后系統(tǒng)最終能正常工作,并完成所有的功能。</p><p>  以下為系統(tǒng)仿真圖: </p><p><b>  圖4-1

27、系統(tǒng)仿真圖</b></p><p><b>  5. 心得體會(huì)</b></p><p>  通過這次課程設(shè)計(jì),我學(xué)到了不少課本上沒有的知識(shí),也鍛煉了自己的動(dòng)手能力,將以前學(xué)過的零散的知識(shí)串到一起。經(jīng)過我長時(shí)間的設(shè)計(jì)及調(diào)試,本系統(tǒng)基本能實(shí)現(xiàn)設(shè)定的要求。通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作?;菊?/p>

28、握了Protel99SE原理圖的方法,并設(shè)計(jì)了一個(gè)單片機(jī)最小系統(tǒng)。通過開發(fā)板的設(shè)計(jì)和硬件搭建的過程,使我對51系單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路引腳和連接方法,如LED數(shù)碼管,鍵盤等。并且我學(xué)會(huì)了分析問題解決問題的能力,加深了對所學(xué)理論知識(shí)的理解和運(yùn)用。我的動(dòng)手能力得到了很大的提高,創(chuàng)新意識(shí)得到了鍛煉。</p><p>  在整個(gè)設(shè)計(jì)過程中,雖然忙碌勞累,但也充實(shí)快樂,老師每天都會(huì)不

29、厭其煩的陪著我們在機(jī)房,有任何問題都會(huì)對我們傾囊相授,在這我想向陪伴我們?nèi)甑睦蠋熣f聲謝謝,你們辛苦了!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 彭偉.單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例.電子工業(yè)出版社.2009年</p><p>  [2] 吳運(yùn)昌.模擬電子線路基礎(chǔ).廣州:華南理工大學(xué)出版社,2004年<

30、/p><p>  [3] 閻石.?dāng)?shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社,1997年</p><p>  [4] 張曉麗等.?dāng)?shù)據(jù)結(jié)構(gòu)與算法.北京:機(jī)械工業(yè)出版社,2002年</p><p>  [5] 馬忠梅等. ARM&Linux嵌入式系統(tǒng)教程.北京:北京航空航天大學(xué)出版社,</p><p>  [6] 李建忠.單片機(jī)原理及應(yīng)用.西安:西

31、安電子科技大學(xué),2002年</p><p>  [7] 韓志軍等.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].機(jī)械工業(yè)出版社,2004</p><p>  [8] 周潤景等. Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例[M].電子工業(yè)出版社,</p><p>  [9] 馬忠梅等.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2006</p>

32、;<p>  [10] 劉樹中,孫書膺,王春平.單片機(jī)和液晶顯示驅(qū)動(dòng)器串行接口的實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007</p><p><b>  系統(tǒng)源程序</b></p><p>  #include <reg52.h></p><p>  #include"LCD1602.h"</p>

33、<p>  #include"math.h"</p><p>  //端口及函數(shù)說明----------------------------------------------------------------------------</p><p>  #define Key_port P2 /

34、/按鍵 </p><p>  unsigned char key_scan(void); //鍵盤掃描函數(shù) </p><p>  bit FlagN = 0; //是否有數(shù)字按下 ,按下后置1</p><p>  bit FlagO = 0;

35、 //是否有操作符按下,按下后置1</p><p>  bit FlagD = 0; //是否按下小數(shù)點(diǎn),按下后置1</p><p>  bit FlagNegX=0;</p><p>  bit FlagNegY=0;</p>

36、;<p>  double X = 0.0,Y = 0.0,RES = 0.0; //X為第一個(gè)操作數(shù) Y為第二個(gè)操作數(shù) </p><p>  unsigned char OPER = 0; //操作符號(hào) </p><p>  int Num[16]={0}; //存

37、放結(jié)果位</p><p>  //-------------------------------------------------------------------------------</p><p>  void delay(unsigned int i)</p><p><b>  {</b></p><p>

38、;  unsigned int x,y;</p><p>  for(x= 0;x<i;x++)</p><p>  for(y = 0;y<110;y++);</p><p><b>  }</b></p><p>  while(Num[i]==0)//判斷第一個(gè)不為0的數(shù)</p><

39、p><b>  {</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p><b>  k = 4-i;</b></p><p>  if(i > 3) //RES<1時(shí)</p

40、><p><b>  {</b></p><p>  LCDDispChar(2,2,'0');</p><p>  LCDDispChar(3,2,'.');</p><p>  for(l=0;l<4;l++)</p><p><b>  {<

41、;/b></p><p>  LCDDispNum(4+l,2,Num[l+4]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b> 

42、 {</b></p><p>  for(j = 0;j<k;j++) //顯示所有的整數(shù)部分</p><p><b>  {</b></p><p>  LCDDispNum(2+j,2,Num[i++]);</p><p><b>  }</b></p>&l

43、t;p>  LCDDispChar(2+j,2,'.');j++;</p><p>  for(l=0;l<4;l++)</p><p><b>  {</b></p><p>  LCDDispNum(2+j,2,Num[l+4]);</p><p><b>  j++;<

44、/b></p><p><b>  }</b></p><p>  } </p><p><b>  }</b></p><p><b>  //計(jì)算部分的函數(shù)</b></p><p>  //傳入?yún)?shù):x-運(yùn)算數(shù)1,y運(yùn)算數(shù)2

45、,oper運(yùn)算符號(hào)</p><p>  //返回值:運(yùn)算結(jié)果 </p><p>  void Calculate(void)</p><p><b>  {</b></p><p>  switch (OPER)</p><p><b>  {</b></p>

46、<p>  case 11:RES = (double)X*1.0+Y;break;</p><p>  case 12:RES = (double)X*1.0-Y;break;</p><p>  case 13:RES = (double)X*1.0*Y;break;</p><p>  case 14:RES = (double)X*1.0/Y;b

47、reak;</p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //主函數(shù) </b></p><p>  void main()</p>

48、;<p><b>  { </b></p><p>  unsigned char i=0;</p><p>  unsigned int temp = 0;</p><p>  unsigned char location = 0;//當(dāng)前顯示指針位置</p><p>  FlagN = 0;</p

49、><p>  FlagO = 0;</p><p>  FlagD = 0;</p><p>  FlagNegX=0;FlagNegY=0;</p><p>  LCDInit();</p><p>  while(FlagO)</p><p><b>  {</b><

50、;/p><p>  LCDCursor();</p><p>  while(FlagN) //輸入X的過程中 沒有按下操作符建 按下后跳出 </p><p><b>  { </b></p><p>  i = key_scan();OPER = i;

51、 //取得操作符 </p><p>  if((i>=0) && (i<10)) </p><p><b>  {</b></p><p>  if(FlagD) //當(dāng)沒有按下小數(shù)點(diǎn)時(shí) </p><p>

52、<b>  {</b></p><p>  X=X*10+i;</p><p><b>  }</b></p><p>  else //按下小數(shù)點(diǎn)后的情況, </p><p>  { //儲(chǔ)存值以便顯示 </p><p>  Num

53、[temp+4] = i; //更新X值以便計(jì)算 </p><p>  if(temp == 0)</p><p>  X = X + (double)i/10;</p><p>  if(temp == 1)</p><p>  X = X + (double)i/100;</p><p>  if(tem

54、p == 2)</p><p>  X = X + (double)i/1000;</p><p>  if(temp == 3)</p><p>  X = X + (double)i/10000;</p><p>  if(temp == 4)</p><p>  X = X + (double)i/100000;

55、</p><p><b>  temp++;</b></p><p><b>  } </b></p><p>  LCDDispNum(location++,1,i);</p><p><b>  }</b></p><p>  else if

56、(i == 10) //顯示小數(shù)點(diǎn)</p><p><b>  {</b></p><p>  LCDDispChar(location++,1,'.');</p><p><b>  } </b></p><p>  else if(i == 12 && X==

57、0) //按下‘-’號(hào)</p><p><b>  {</b></p><p><b>  FlagN=0;</b></p><p>  FlagNegX=1;</p><p>  LCDDispChar(location++,1,'-');</p><p&g

58、t;<b>  } </b></p><p><b>  }//輸入X</b></p><p>  if(FlagNegX)</p><p><b>  {</b></p><p><b>  X=0-X;</b></p><p>

59、<b>  }</b></p><p>  if(i == 11)//顯示操作符</p><p>  LCDDispChar(location++,1,'+');</p><p>  else if(i == 12)</p><p>  LCDDispChar(location++,1,'-&#

60、39;);</p><p>  else if(i == 13)</p><p>  LCDDispChar(location++,1,'X');</p><p>  else if (i == 14)</p><p>  LCDDispChar(location++,1,'/');</p>&l

61、t;p><b>  else </b></p><p>  LCDDispChar(location++,1,'?');</p><p>  temp = 0;FlagD = 0; FlagN = 0; FlagO = 0; //所有標(biāo)志位清零</p><p>  while(FlagO) //沒有按下=時(shí)<

62、/p><p><b>  {</b></p><p>  i = key_scan();</p><p>  if((i>=0) && (i<10))</p><p><b>  {</b></p><p>  if(!FlagD)

63、 //當(dāng)沒有按下小數(shù)點(diǎn)時(shí) </p><p><b>  {</b></p><p><b>  Y=Y*10+i;</b></p><p><b>  }</b></p><p><b>  else</b></p

64、><p><b>  {</b></p><p>  Num[temp+4] = i;</p><p>  if(temp == 0)</p><p>  Y = Y + (double)i/10;</p><p>  if(temp == 1)</p><p>  Y = Y

65、 + (double)i/100;</p><p>  if(temp == 2)</p><p>  Y = Y + (double)i/1000;</p><p>  if(temp == 3)</p><p>  Y = Y + (double)i/10000;</p><p>  if(temp == 4)&l

66、t;/p><p>  Y = Y + (double)i/100000;</p><p><b>  temp++;</b></p><p><b>  }</b></p><p>  LCDDispNum(location++,1,i);</p><p><b> 

67、 }</b></p><p>  else if(i == 12 && Y==0) //按下‘-’號(hào)</p><p><b>  {</b></p><p>  FlagNegY=1;</p><p>  LCDDispChar(location++,1,'(');</p

68、><p>  LCDDispChar(location++,1,'-');</p><p><b>  } </b></p><p>  if(i == 10) //顯示小數(shù)點(diǎn)</p><p><b>  {</b></p><p>  LCDDispCha

69、r(location++,1,'.');</p><p><b>  } </b></p><p><b>  }</b></p><p>  if(!FlagNegY)</p><p><b>  {</b></p><p><

70、b>  Y=0-Y;</b></p><p>  LCDDispChar(location++,1,')');</p><p><b>  }</b></p><p>  if (i == 15)</p><p>  LCDDispChar(location++,1,'='

71、;);</p><p><b>  }</b></p><p>  LCDNotCursor();</p><p>  Calculate();</p><p>  connum(RES);</p><p><b>  while(1);</b></p>&l

溫馨提示

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

評論

0/150

提交評論