版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 封面—————————————————————P1</p><p> 目錄—————————————————————P2</p><p> 前言—————————————————————P3</p><p> 關(guān)鍵字——————————————————
2、——P3</p><p> 原理與總體方案————————————————P3</p><p> 硬件設(shè)計———————————————————P6</p><p> 調(diào)試—————————————————————P10</p><p> 測試與分析——————————————————P11</p><p>
3、 總結(jié)—————————————————————P13</p><p> 附件—————————————————————P14</p><p><b> 前言</b></p><p> 近幾年,隨著大規(guī)模集成電路的發(fā)展,各種便攜式嵌入式設(shè)備,具有十分廣闊的市場前景。嵌入式系統(tǒng)是一種專用的計算機系統(tǒng),作為裝置或設(shè)備的一部分。通常,嵌入式系統(tǒng)
4、是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數(shù)字接口的設(shè)備,如手表、微波爐、錄像機、汽車等,都使用嵌入式系統(tǒng),有些嵌入式系統(tǒng)還包含操作系統(tǒng),但大多數(shù)嵌入式系統(tǒng)都是是由單個程序?qū)崿F(xiàn)整個控制邏輯。在嵌入式系統(tǒng)中,數(shù)據(jù)和命令通過網(wǎng)絡(luò)接口或串行口經(jīng)過ARM程序處理后,或顯示在LCD上,或傳輸?shù)竭h(yuǎn)端PC上。</p><p> 本文通過周立功的LPC2106芯片完成的簡易計算器,正是對嵌入式應(yīng)用的學(xué)習(xí)
5、和探索。</p><p><b> 一、摘要:</b></p><p> 計算器一般是指“電子計算器”,是能進(jìn)行數(shù)學(xué)運算的手持機器,擁有集成電路芯片。對于嵌入式系統(tǒng),以其占用資源少、專用性強,在汽車電子、航空和工控領(lǐng)域得到了廣泛地應(yīng)用。本設(shè)計就是先通過C語言進(jìn)行相應(yīng)程序的編寫然后在ADS中進(jìn)行運行最后導(dǎo)入PROTUES進(jìn)行仿真。最后利用ARM中的LPC2106芯片
6、來控制液晶顯示器和4X4矩陣式鍵盤,從而實現(xiàn)簡單的加、減、乘、除等四則運算功能。 </p><p> 關(guān)鍵字:中斷,掃描,仿真,計算</p><p> 二、原理與總體方案:</p><p> 主程序在初始化后調(diào)用鍵盤程序,再判斷返回的值。若為數(shù)字0—9,則根據(jù)按鍵的次數(shù)進(jìn)行保存和顯示處理。若為功能鍵,則先判斷上次的功能鍵,根據(jù)代號執(zhí)行不同功能,并將按鍵次數(shù)清零
7、。程序中鍵盤部分使用行列式掃描原理,若無鍵按下則調(diào)用動態(tài)顯示程序,并繼續(xù)檢測鍵盤;若有鍵按下則得其鍵值,并通過查表轉(zhuǎn)換為數(shù)字0—9和功能鍵與清零鍵的代號。最后將計算結(jié)果拆分成個、十、百位,再返回主程序繼續(xù)檢測鍵盤并顯示;若為清零鍵,則返回主程序的最開始。</p><p> 電路設(shè)計與原理:通過LPC2106芯片進(jìn)行相應(yīng)的設(shè)置來控制LCD顯示器。而通過對鍵盤上的值進(jìn)行掃描,把相應(yīng)的鍵值通過MM74C922芯片進(jìn)行
8、運算從而讓ARM芯片接收。</p><p> 1.系統(tǒng)整體流程圖:</p><p><b> N</b></p><p><b> Y</b></p><p><b> 2.</b></p><p><b> 3.寄存器初始化:<
9、;/b></p><p> 2)仿真設(shè)計 </p><p><b> 仿真電路圖:</b></p><p><b> 仿真圖形:</b></p><
10、p> 計算加法2.計算減法(結(jié)果為負(fù)數(shù))</p><p> 3.計算減法(結(jié)果為正數(shù))4.計算乘法</p><p> 5.計算除法 (除法只能進(jìn)行整除,無小數(shù)) </p><p> 注:本設(shè)計不能進(jìn)行連續(xù)運算,只能進(jìn)行當(dāng)次運算,且只能進(jìn)行單行顯示。進(jìn)行除法時會自動取整,無小數(shù)。顯示器上不會顯示加減乘除等運算符號,只有操作數(shù)和操作結(jié)果。&l
11、t;/p><p><b> 三、硬件設(shè)計:</b></p><p><b> 3.1元件清單:</b></p><p> 注:無實物,以電路設(shè)計圖為依準(zhǔn)。</p><p> 3.2鍵盤接口電路:</p><p> 計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立
12、按鍵的方式,在這種情況下,編程會很簡單,但是會占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條I/O 線作為行線,四條I/O 線作為列線組成鍵盤,在行線和列線的每個交叉點上設(shè)置一個按鍵。這樣鍵盤上按鍵的個數(shù)就為4×4個。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機系統(tǒng)中I/O 口的利用率。</p><p> 矩陣鍵盤的工作原理:</p><
13、;p> 計算器的鍵盤布局如圖2.1所示:一般有16個鍵組成,在單片機中正好可以用一個P口實現(xiàn)16個按鍵功能,這種形式在單片機系統(tǒng)中也最常用。</p><p> 圖2.1矩陣鍵盤布局圖</p><p> 電路中采用4*4鍵盤作為輸入電路模塊的話,電路連線會比較簡單,而且這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機系統(tǒng)中I/O 口的利用率。但是在硬件電路設(shè)計的過程中,實驗室沒有提供矩陣鍵盤
14、,所以我們將4*4的矩陣鍵盤換成了16個獨立按鍵。采用獨立按鍵的方式的話,會占用大量的I/O 口資源,但是在這種情況下,編程會很簡單。</p><p> 矩陣鍵盤內(nèi)部電路圖如圖2.2所示。</p><p> 圖2.2 矩陣鍵盤內(nèi)部電路圖</p><p><b> 3.3顯示模塊:</b></p><p> 本設(shè)計
15、采用LCD1液晶顯示屏來顯示輸出數(shù)據(jù)。通過D0-D7引腳向LCD1寫指令字或?qū)憯?shù)據(jù)以使LCD1實現(xiàn)不同的功能或顯示相應(yīng)數(shù)據(jù)。LCD1管腳圖如圖2.3所示。</p><p> 圖2.3 LCD1管腳圖</p><p> 3.4各模塊的特性與作用:</p><p> 3.4.1LPC2106的特性及引腳功能:</p><p> LPC2
16、106 是基于一個支持實時仿真和跟蹤的32 位ARM CPU 的微處理器,并帶有256kB 嵌入的高速Flash 存儲器。128 位寬度的存儲器接口和獨特的加速結(jié)構(gòu)使32 位代碼能夠最大時鐘速率下運行,并具有廣泛應(yīng)用。含向量中斷控制器,多個串行接口,兩個三十二位定時器,片內(nèi)晶振的操作頻率范圍:10MHZ-25MHZ,兩個低功耗模式:空閑和掉電.</p><p> CPU操作電壓范圍:1.65V-1.95V<
17、;/p><p> 圖2.4 LPC2106管腳圖</p><p><b> 管腳說明:</b></p><p> V3、V18:供電電壓</p><p> Vss、DBGSEL:接地</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 </p><
18、;p> XTAL2:來自反向振蕩器的輸出。</p><p> P0.0-P0.14作為GPIO接口,P0.15作為EINT2接口。</p><p> 3.4.2 LCD的特性:</p><p> LCD 顯示屏可以采用字符顯示,當(dāng)使用字符顯示方式時,可以直接用外碼作為輸入數(shù)據(jù),由顯示屏自動給出顯示字模數(shù)據(jù),而無需由微處理器提供字模。</p>
19、<p> 3.4.3 數(shù)字式鍵盤的特性:</p><p> 數(shù)字式鍵盤的實質(zhì)仍是行列式鍵盤,4 根行線和4 根列線通過下拉電阻接地,在其表面貼有標(biāo)示對應(yīng)按鍵的膜,使得易于觀察和操作,更加貼近使用者的需求。</p><p> 3.4.4 MM74C922的特性及其引腳功能:</p><p> MM74C922具有功耗低,電壓為3-5V,三態(tài)門輸出
20、,與LPTTL兼容,輸出鎖存按下最后的鍵,用一個電容器就可以消除鍵盤抖動,兩鍵輪回,行具有上拉功能,具有芯片內(nèi)或芯片外時鐘,最大開關(guān)電阻為管腳說明:</p><p> A-D為行鍵掃描電平輸出端,1-4為列鍵輸入讀取端;</p><p> OSC為振蕩器的外接引線端,可用外部的輸入脈沖或電容器;</p><p> OE為數(shù)據(jù)輸出端,低電平有效;DAV為數(shù)據(jù)輸出
21、有效,高電平有效;VCC為電源端,接3-5V;GND為接地端。</p><p> 本設(shè)計中選用LPC2106的P0.0~P0.10 與LCD 顯示屏相連,它們所輸出信號控制顯示屏上的顯示,其中P0.0~P0.7 分別接顯示屏的D0~D7,P0.8~P0.10分別接顯示屏的RS、RW、E 接口;選用LPC2106的P0.11~P0.14 連續(xù)4 個IO口與芯片MM74C922和計算器鍵盤相連,可通過反轉(zhuǎn)法檢測到按
22、下按鍵的鍵碼,再通過查鍵盤對應(yīng)的字符編碼使LCD 顯示,其中A~D依次接鍵盤的4 根行線,1~4依次接鍵盤的4 根列線。</p><p><b> 管腳說明:</b></p><p> A-D為行鍵掃描電平輸出端,1-4為列鍵輸入讀取端;</p><p> OSC為振蕩器的外接引線端,可用外部的輸入脈沖或電容器;</p>&
23、lt;p> OE為數(shù)據(jù)輸出端,低電平有效;DAV為數(shù)據(jù)輸出有效,高電平有效;VCC為電源端,接3-5V;GND為接地端。</p><p> 本設(shè)計中選用LPC2106的P0.0~P0.10 與LCD 顯示屏相連,它們所輸出信號控制顯示屏上的顯示,其中P0.0~P0.7 分別接顯示屏的D0~D7,P0.8~P0.10分別接顯示屏的RS、RW、E 接口;選用LPC2106的P0.11~P0.14 連續(xù)4 個
24、IO口與芯片MM74C922和計算器鍵盤相連,可通過反轉(zhuǎn)法檢測到按下按鍵的鍵碼,再通過查鍵盤對應(yīng)的字符編碼使LCD 顯示,其中A~D依次接鍵盤的4 根行線,1~4依次接鍵盤的4 根列線。</p><p><b> 四、調(diào)試:</b></p><p><b> 4.1 GPIO:</b></p><p> LPC200
25、0系列ARM的GPIO具有如下特性:</p><p> 可以獨立控制每個GPIO口的方向(輸入/輸出模式);</p><p> 可以獨立設(shè)置每個GPIO的輸出狀態(tài)(高/低電平);</p><p> 所有GPIO口在復(fù)位后默認(rèn)為輸入狀態(tài)。</p><p> 每個作為GPIO功能的引腳受到四個寄存器控制,分別為控制方向的IOxDIR、控制
26、輸出電平狀態(tài)的IOxSET和IOxCLR、反映引腳電平狀態(tài)的IOxPIN。這四個寄存器構(gòu)成一組,而一組寄存器控制著一個端口(P0、P1、P2或P3)。</p><p><b> 注意事項:</b></p><p> 引腳設(shè)置為輸出方式時,輸出狀態(tài)由IOxSET和IOxCLR中最后操作的寄存器決定。</p><p> LPC2000系列AR
27、M大部分的I/O引腳為推挽方式輸出,但是具有總線功能的I/O引腳為開漏輸出(P0.2/3和P0.11/14)。使用這些開漏輸出的引腳作為GPIO功能,并用于高電平輸出或者引腳狀態(tài)輸入時,要接上拉電阻才能正常使用。</p><p> 推挽輸出的I/O引腳正常拉出/灌入電流均為4mA,短時間極限值為40mA。</p><p> 復(fù)位后,大部分引腳默認(rèn)作為GPIO功能,并且均為輸入狀態(tài)。但是
28、,有部分引腳在復(fù)位后默認(rèn)作為第二功能(如:P0.27~P0.30在復(fù)位后默認(rèn)為A/D輸入引腳)。</p><p> 4.2硬件和程序原理:</p><p> 在鍵盤按鍵后,產(chǎn)生一個中斷,mcu對鍵盤進(jìn)行掃描,確定按下的鍵,如果不是等號,就把按下的字符依次存入數(shù)組,并在lcd顯示表達(dá)式,如果是等號,就計算出數(shù)組中存入的表達(dá)式的值,并顯示在lcd中。</p><p>
29、; 計算表達(dá)式值的方法:把表達(dá)式中的表示數(shù)值的字符轉(zhuǎn)成數(shù)值存入一個數(shù)值數(shù)組,把表達(dá)式中的表示運算符的字符存入運算符數(shù)組;</p><p> 關(guān)于四則運算優(yōu)先級算法:依次檢索運算符數(shù)組,當(dāng)遇到 * 號 或者 / 號的時候,就先計算乘法或除法,算出結(jié)果后存入數(shù)值數(shù)組相應(yīng)位置,然后刪除此運算符和多余的數(shù)值,再重復(fù)檢索,直到數(shù)值數(shù)組中只有一個數(shù)值為止,這個數(shù)值即是運算結(jié)果。</p><p>
30、 調(diào)用stdio.h庫里的sprintf函數(shù),把數(shù)值轉(zhuǎn)化成字符數(shù)組,然后顯示到lcd中。</p><p><b> 五、測試與分析:</b></p><p> 5.1 ADS1.2新建工程:</p><p> 5.2 Proteus實時仿真:</p><p><b> 六、總結(jié):</b>&l
31、t;/p><p> 對我們而言,知識上的收獲重要,精神上的豐收更加可喜。挫折是一份財富,經(jīng)歷是一份擁有。這次實習(xí)必將成為我人生旅途上一個非常美好的回憶!</p><p> 通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問
32、題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。</p><p><b> 附件:</b></p><p><b> 代碼:</b></p><p> #include "config.h&quo
33、t;</p><p> #include "math.h"</p><p><b> //宏定義</b></p><p> #define LCD_RS 1<<0</p><p> #define LCD_RW 1<<1</p>
34、<p> #define LCD_E 1<<2</p><p> #define D7 1<<10 //判斷LCD忙碌</p><p><b> //函數(shù)聲明</b></p><p> void system_init(void);</p>&l
35、t;p> void LCDInit(void);</p><p> void __irq IRQ_EINT2(void);</p><p> int ucKeyScan(void);</p><p> char translate();</p><p> void arithmetic(long x,long y);<
36、/p><p> char txt1[]="error!",</p><p> txt2[]="data overflow",</p><p> txt3[]="";</p><p><b> //全局變量定義</b></p><p>
37、 long add1=0,add2=0;</p><p> int operators=0,iny=0;</p><p> uint8 num=0,x,y,sign=0,count=0,k=0,repeat=0,flag=0;</p><p> unsigned int code[4]={0x0E00000,0x0D00000,0x0B00000,0x070
38、0000};//列線掃描電壓,分為第1,2,3,4根列線</p><p> unsigned int ucRow,ucLine; //行號,列號。</p><p> /***********************************************************************</p><p> * 名 稱:De
39、layNS()</p><p> * 功 能:長軟件延時</p><p> * 入口參數(shù):dly延時參數(shù),值越大,延時越久</p><p><b> * 出口參數(shù):無</b></p><p> *******************************************************
40、*****************</p><p> void DelayNS(uint32 dly)</p><p> { uint32 i;</p><p> for(; dly>0; dly--)</p><p><b> {</b></p><p> for(i=
41、0; i<500; i++);</p><p><b> }</b></p><p><b> }</b></p><p> /***********************************************************************</p><p>
42、 * 名 稱:Busy()</p><p> * 功 能:LCD是否忙碌</p><p> ************************************************************************</p><p> void Busy()</p><p><b> {&l
43、t;/b></p><p><b> while(1)</b></p><p><b> {</b></p><p> IOCLR = LCD_RS;</p><p> IOSET = LCD_RW;</p><p> if(!(IOPIN&D7))
44、break;</p><p><b> }</b></p><p><b> }</b></p><p> /***********************************************************************</p><p> * 名 稱:C
45、ommand()</p><p> * 功 能:LCD命令</p><p> ************************************************************************</p><p> void Command(char com)</p><p><b> {&l
46、t;/b></p><p><b> Busy();</b></p><p> IOCLR = 0x0FFF;</p><p> IOCLR = LCD_RS;</p><p> IOCLR = LCD_RW;</p><p> IOSET = LCD_E;</p>
47、<p> IOSET = com<<3;</p><p> IOCLR = LCD_E;</p><p><b> }</b></p><p> /***********************************************************************</p>&
48、lt;p> * 名 稱:LCDInit()</p><p> * 功 能:LCD初始化</p><p><b> * 入口參數(shù):</b></p><p><b> * 出口參數(shù):無</b></p><p> ********************************
49、****************************************</p><p> void LCDInit()</p><p><b> { </b></p><p> Command(0x0C); //顯示開/關(guān)控制命令</p><p> Command(0x38); //功能設(shè)置命
50、令:數(shù)據(jù)線長度為8位</p><p> // Command(0x80); //地址命令</p><p> Command(0x06); //輸入方式設(shè)置</p><p><b> }</b></p><p> /***********************************************
51、************************</p><p> * 名 稱:write()</p><p> * 功 能:LCD寫數(shù)據(jù)</p><p> ************************************************************************</p><p> v
52、oid write(char data)</p><p><b> {</b></p><p><b> Busy();</b></p><p> IOCLR = 0x0FFF;</p><p> IOSET = LCD_RS;</p><p> IOCLR = L
53、CD_RW;</p><p> IOSET = LCD_E;</p><p> IOSET = data<<3;</p><p> DelayNS(1);</p><p> IOCLR = LCD_E; </p><p><b> }</b></p&
54、gt;<p> /***********************************************************************</p><p> * 名 稱:display()</p><p> * 功 能:LCD顯示</p><p> *******************************
55、*****************************************</p><p> void display(long a)</p><p><b> {</b></p><p> long temp,b,c=-1;</p><p> uint8 lenth=1,i,j;</p>
56、<p> // Command(0x01);</p><p><b> if(a<0)</b></p><p><b> {</b></p><p><b> a=a*c;</b></p><p> write('-');</p
57、><p><b> }</b></p><p><b> temp=a;</b></p><p> while((temp=temp/10)!=0) lenth++;</p><p> for(i=lenth;i>0;i--)</p><p><b>
58、 {</b></p><p><b> b=1;</b></p><p> for(j=0;j<i-1;j++) b=b*10;</p><p> write(0x30+a/b);</p><p><b> a=a%b;</b></p><p>&l
59、t;b> }</b></p><p> }//為低電平,其他為高電平。 </p><p><b> //主函數(shù)</b></p><p> int main()</p><p><b> { </b></p><p> sy
60、stem_init();</p><p> LCDInit();</p><p><b> while(1) </b></p><p> ucKeyScan();</p><p> return(0);</p><p><b> }</b></p>&
61、lt;p> /***********************************************************************</p><p> * 名稱:system_init()</p><p> * 功能:system初始化函數(shù)</p><p> ***********************************
62、*************************************</p><p> void system_init()</p><p><b> {</b></p><p><b> //引腳功能選擇</b></p><p> PINSEL0 = 0x80000000; //
63、設(shè)置P0.15為EINT2,其余為GPIO</p><p> PINSEL1 = 0x00000000;//設(shè)置P0.15~P0.31為GPIO</p><p> IODIR = 0x0f007ff; //設(shè)置P0.0-P0.10,P0.20-P0.23為輸出,其余為輸入</p><p> IOCLR = 0x80000000; </p>
64、<p><b> //向量中斷初始化</b></p><p> VICIntSelect =0x00; //設(shè)置P0.15為IRQ中斷</p><p> VICVectAddr0 = (uint32)IRQ_EINT2;</p><p> VICVectCntl0 = 0x30;</p><
65、p> VICIntEnable = 1<<16; //使能EINT2</p><p><b> //外部中斷初始化</b></p><p> EXTMODE = 1<<2; //設(shè)置為EINT2下降沿觸發(fā)</p><p> EXTPOLAR = 0; </p><p&
66、gt; EXTINT = 1<<2; //清除EINT2中斷標(biāo)志</p><p><b> }</b></p><p> /***********************************************************************</p><p> * 名稱:ucKeyS
67、can()</p><p> * 功能:鍵盤掃描函數(shù)當(dāng)有外部中斷2時調(diào)用此函數(shù),使用列掃描的方式獲取鍵碼,鍵碼</p><p> 由2位數(shù)字組成。高位為行號低位為列號。</p><p> ************************************************************************&
68、lt;/p><p> int ucKeyScan()</p><p><b> {</b></p><p> unsigned int ucTemp=0; //掃描狀態(tài)暫存。</p><p> for(ucLine=0;ucLine<4;ucLine++)//行掃描</p><
69、p><b> {</b></p><p> IOSET=code[ucLine]; //輸出掃描電位。</p><p> IOCLR=(~code[ucLine])&0xF00000;</p><p> //ucTemp=IOPIN>>24;</p><p> if(ucTe
70、mp!=0x0F) //判斷該列是否有按鍵按下。</p><p> continue;</p><p> } //返回按鍵編碼。格式為2位數(shù),高位為列號,低位為行號。</p><p><b> }</b></p><p> /**************************************
71、*********************************</p><p> * 名稱:IRQ_EINT2()</p><p> * 功能:EINT2中斷服務(wù)程序</p><p> ************************************************************************</p>&l
72、t;p> void __irq IRQ_EINT2(void)</p><p><b> {</b></p><p> unsigned int ucTemp2=0,a;</p><p> ucTemp2=IOPIN>>24; </p><p> switch(uc
73、Temp2)</p><p><b> {</b></p><p> case 0x0E: ucRow=00;break; //判斷列號。</p><p> case 0x0D: ucRow=10;break;</p><p> case 0x0B: ucRow=20;break;</p>&
74、lt;p> case 0x07: ucRow=30;break;</p><p> default: ucRow=40;break;</p><p><b> }</b></p><p> num=ucRow+ucLine;</p><p> if(repeat==1&num!=23&
75、x!=3) //計算結(jié)束后,若輸入數(shù)字,在輸入前清屏</p><p><b> {</b></p><p> Command(0x01);</p><p> add1=add2=sign=0;</p><p><b> count=0;</b></p><p>&
76、lt;b> repeat=0;</b></p><p> DelayNS(10); //延時讓LCD反應(yīng)</p><p><b> }</b></p><p> switch(num)</p><p><b> {</b></p><p>
77、case 00:write('7');k=8;break;</p><p> case 01:write('4');k=5;break;</p><p> case 02:write('1');k=2;break;</p><p> case 03:Command(0x01);k=0;add1=add2=sign
78、=0;break;</p><p> case 10:write('8');k=9;break;</p><p> case 11:write('5');k=6;break;</p><p> case 12:write('2');k=3;break;</p><p> case 13:
79、write('0');k=1;break;</p><p> case 20:write('9');k=10;break;</p><p> case 21:write('6');k=7;break;</p><p> case 22:write('3');k=4;break;</p>
80、<p><b> case 23:</b></p><p> if(repeat==0) //是否重復(fù)</p><p><b> {</b></p><p> write('=');</p><p><b> count=1;</b&
81、gt;</p><p><b> repeat=1;</b></p><p> arithmetic(add1,add2);</p><p><b> }</b></p><p> else count=0;</p><p> break; </p&
82、gt;<p><b> case 30:</b></p><p> if(sign==0)</p><p><b> {</b></p><p> write('/');</p><p><b> sign=1;</b></p>
83、;<p><b> }</b></p><p><b> break;</b></p><p><b> case 31:</b></p><p> if(sign==0)</p><p><b> {</b></p>
84、<p> write('X');</p><p><b> sign=2;</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> case 32:</b>
85、;</p><p> if(sign==0)</p><p><b> {</b></p><p> write('-');</p><p><b> sign=3;</b></p><p><b> }</b></p&g
86、t;<p><b> break;</b></p><p><b> case 33:</b></p><p> if(sign==0)</p><p><b> {</b></p><p> write('+');</p>
87、<p><b> sign=4;</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p> if(sign==0)</p>&l
88、t;p> a=0; //第一個算數(shù)</p><p> else if(count==0)</p><p> a=1; //第二個算數(shù)</p><p><b> else </b></p><p><b> a=2;</b></p>
89、;<p> if(a==0&k!=0)</p><p> {add1=10*add1+k-1;flag=1;}</p><p> else if(a==1&k!=0)</p><p> {add2=10*add2+k-1;flag=2;}</p><p><b> k=0;</b>
90、</p><p> //arithmetic(add1,add2);</p><p> while((EXTINT&0x04)!=0)//等待外部中斷信號恢復(fù)為高電平</p><p><b> {</b></p><p> EXTINT=0x04;//清除EINT2中斷標(biāo)志</p>
91、;<p><b> }</b></p><p> VICVectAddr=0x00;//通知VIC向量中斷結(jié)束</p><p><b> }</b></p><p> /**********算術(shù)運算函數(shù)*************/</p><p> void arit
92、hmetic(long x,long y)</p><p><b> {</b></p><p> long result;</p><p> switch(sign)</p><p><b> {</b></p><p><b> case 0:<
93、/b></p><p> result=x; break;</p><p><b> case 1:</b></p><p> result=x/y;break;</p><p><b> case 2:</b></p><p> result=x*y;br
94、eak;</p><p><b> case 3:</b></p><p> result=x-y;break;</p><p><b> case 4:</b></p><p> result=x+y;break;</p><p><b> }</
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 簡易計算器課程設(shè)計
- 簡易計算器課程設(shè)計
- 簡易計算器課程設(shè)計
- 簡易計算器課程設(shè)計 (2)
- 簡易計算器課程設(shè)計報告
- java課程設(shè)計----簡易計算器
- vb課程設(shè)計簡易計算器
- 微機課程設(shè)計--簡易計算器
- 簡易計算器學(xué)生課程設(shè)計
- 簡易計算器的設(shè)計課程設(shè)計
- 高級語言課程設(shè)計--簡易計算器
- 微機原理簡易計算器課程設(shè)計
- 簡易計算器vb課程設(shè)計報告
- 數(shù)電課程設(shè)計--簡易計算器
- 微機原理課程設(shè)計--簡易計算器設(shè)計
- 8086簡易計算器的設(shè)計課程設(shè)計
- 單片機課程設(shè)計--簡易計算器
- 單片機課程設(shè)計簡易計算器
- 簡易計算器vb課程設(shè)計報告報告
- 單片機課程設(shè)計-簡易計算器
評論
0/150
提交評論