版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告--簡單的計(jì)算器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)——簡單計(jì)算器的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---計(jì)算器實(shí)驗(yàn)
- 計(jì)算機(jī)單片機(jī)設(shè)計(jì)課程設(shè)計(jì)--簡易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)報(bào)告---計(jì)算器
- 單片機(jī)課程設(shè)計(jì)——計(jì)算器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告-- 簡易計(jì)算器設(shè)計(jì)
- 簡單計(jì)算器課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)-單片機(jī)計(jì)算器
- 單片機(jī)計(jì)算器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--計(jì)算器
- 單片機(jī)課程設(shè)計(jì)-計(jì)算器
- 單片機(jī)課程設(shè)計(jì)報(bào)告---簡易計(jì)算器
- 基于51單片機(jī)的計(jì)算器設(shè)計(jì)實(shí)驗(yàn)報(bào)告
- 簡單計(jì)算器課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告計(jì)算器2
- 單片機(jī)課程設(shè)計(jì)報(bào)告-簡易計(jì)算器
- 簡易計(jì)算器單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告計(jì)算器4
- 單片機(jī)系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)--計(jì)算器
評論
0/150
提交評論