2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  單片機課程設計報告</b></p><p><b>  ——多功能計算器</b></p><p>  姓 名: </p><p>  學 號: </p><p><b>  專業(yè)班級: </b></p>

2、<p>  日 期: 2011年3月29日</p><p><b>  目 錄</b></p><p><b>  第一章 緒論2</b></p><p>  1.1 課題簡介2</p><p>  1.2 設計目的2</p><p>  1.

3、3 設計任務2</p><p>  1.4 設計方法3</p><p>  第二章 設計內(nèi)容及要求4</p><p>  第三章 方案論證與比較5</p><p>  3.1 控制部分的設計方案論證與選擇-----------------------------------------------------5</p>

4、<p>  3.2 鍵盤設計方案與選擇--------------------------------------------------------------------6</p><p>  第四章 硬件系統(tǒng)設計7</p><p>  4.1 鍵盤接口電路7</p><p>  4.2 7段LED數(shù)碼管8</p><p&g

5、t;  4.3 程序下載接口8</p><p>  4.4 數(shù)碼管驅(qū)動芯片8</p><p>  4.5、單片機時鐘電路8</p><p>  4.6、單片機復位電路9</p><p>  第五章 軟件設計10</p><p>  5.1 匯編語言和C語言的特點及選擇10</p><p&

6、gt;  5.2 鍵掃程序設計10</p><p>  5.3 算術運算程序設計11</p><p>  5.4 LED顯示原理12</p><p>  第六章 系統(tǒng)調(diào)試與存在的問題13</p><p>  6.1 硬件調(diào)試13</p><p>  6.2 軟件調(diào)試13</p><p&g

7、t;<b>  總 結14</b></p><p><b>  參考文獻15</b></p><p>  附錄------------------------------------------------------------------------------------16</p><p><b> 

8、 第一章 緒論</b></p><p><b>  1.1 課題簡介</b></p><p>  當今社會,隨著人們物質(zhì)生活的不斷提高,電子產(chǎn)品已經(jīng)走進了家家戶戶,無論是生活或?qū)W習,還是娛樂和消遣幾乎樣樣都離不開電子產(chǎn)品,大型復雜的計算能力是人腦所不能勝任的,而且比較容易出錯。計算器作為一種快速通用的計算工具方便了用戶的使用。計算器可謂是我們最親密的電子

9、伙伴之一。本設計著重在于分析計算器軟件和開發(fā)過程中的環(huán)節(jié)和步驟,并從實踐經(jīng)驗出發(fā)對計算器設計做了詳細的分析和研究。</p><p>  單片機由于其微小的體積和極低的成本,廣泛的應用于家用電器、工業(yè)控制等領域中。在工業(yè)生產(chǎn)中。單片微型計算機是微型計算機的一個重要分支,也是頗具生命力的機種。單片微型計算機簡稱單片機,特別適用于控制領域,故又稱為微控制器。</p><p>  本系統(tǒng)就是充分利

10、用了8051芯片的I/O引腳。系統(tǒng)以采用MCS-51系列單片機Intel8051為中心器件來設計計算器控制器,實現(xiàn)了能根據(jù)實際輸入值顯示并存儲的功能,計算程序則是參照教材。至于位數(shù)和功能,如果有需要可以通過設計擴充原系統(tǒng)來實現(xiàn) 。</p><p><b>  1.2 設計目的</b></p><p>  通過本次課題設計,應用《單片機原理及應用》等所學相關知識及查閱資

11、料,完成簡易計算器的設計,以達到理論與實踐更好的結合、進一步提高綜合運用所學知識和設計的能力的目的。</p><p>  通過本次設計的訓練,可以使我在基本思路和基本方法上對基于MCS-51單片機的嵌入式系統(tǒng)設計有一個比較感性的認識,并具備一定程度的設計能力。</p><p><b>  1.3 設計任務</b></p><p>  在本次課程

12、設計中,主要完成如下方面的設計任務:</p><p>  1、簡要闡述單片機技術發(fā)展的國內(nèi)外現(xiàn)狀及LED動態(tài)顯示和矩陣鍵盤基本原理;</p><p>  2、掌握MCS-51系列某種產(chǎn)品(例如8051)的最小電路及外圍擴展電路的設計方法;</p><p>  3、了解單片機數(shù)據(jù)轉換功能及工作過程;</p><p>  4、完成主要功能模塊的硬

13、件電路設計及必要的參數(shù)確定;</p><p>  5、用protel軟件完成原理電路圖的繪制;</p><p><b>  1.4 設計方法</b></p><p>  電路采用動態(tài)顯示,由八位共陽極數(shù)碼管通過P0口,P2口與單片機分別相連,且數(shù)碼管A,B,C,D,E,F,G分別依次與單片機的P0口相連,P0口做為字碼控制端,數(shù)碼管的1,2,3

14、,4,5,6,7,8各引腳分別與單片機的P2.0—P2.7相連,P2口做為數(shù)碼管的位控制端,動態(tài)顯示是每次數(shù)碼管只顯示一位,由于人的視覺停留是0.05到0.2秒之間,當數(shù)碼管依次點亮各個位時,使循環(huán)的頻率高于人的視覺停留時間,人們就會認為數(shù)碼管是同時點亮的,就可以達到動態(tài)顯示的效果。</p><p>  輸入鍵盤采用4*4鍵盤。采用軟件識別鍵值并執(zhí)行相應的操作,程序運行時依次掃描各行,查詢是否有鍵按下,如果有則進

15、入鍵盤識別處理程序,實現(xiàn)相應的運算,然后通過數(shù)碼管輸出結果,如果沒有按鍵就調(diào)用顯示程序顯示一個0,等待按鍵按下,在進入按鍵掃描程序。這樣循環(huán)執(zhí)行。</p><p>  第二章 設計內(nèi)容及要求</p><p><b>  基本功能:</b></p><p>  利用89c51作為主控器組成一個四則運算的計算器。</p><p&

16、gt;<b>  可選器件:</b></p><p>  51系列單片機、6264、7段LED數(shù)碼管、74LS244或74LS240、與非門等</p><p>  第三章 方案論證與比較</p><p>  3.1控制部分的設計方案論證與選擇</p><p>  根據(jù)設計要求,控制器主要用于紅外信號的接收和辨認、控制步

17、進電機的動作,控制顯示步進電機的轉速等。對于控制器的選擇有以下三種方案。</p><p>  方案一:采用計算器專用芯片實現(xiàn)。用計算器專用芯片進行設計并編程實現(xiàn)。這種設計方案計算效率高、速度快、而且成本也相對較低,是廠家做計算器的最佳方案。但是本人對計算器專用芯片掌握的不夠,還不足以實現(xiàn)設計計算器,所以這個方案不可去。</p><p>  方案二:采用FPGA(現(xiàn)場可編程門陣列)作為系統(tǒng)的

18、控制器。FPGA將所有器件集成到一塊芯片上,體積小,節(jié)省空間,提高了穩(wěn)定性;直接面向用戶,具有極大的靈活性和通用性,使用方便,硬件測試和實現(xiàn)快捷,開發(fā)效率高,工作可靠性好??梢詫崿F(xiàn)各種復雜的邏輯功能,規(guī)模大,密度高,采用并行的輸入輸出方式,系統(tǒng)處理速度高,適合作為大規(guī)模實時系統(tǒng)的控制核心。由FPGA內(nèi)部編程實現(xiàn)計算器功能,本設計對數(shù)據(jù)處理速度的要求不是很高,F(xiàn)PGA的高速處理的優(yōu)勢得不到充分的體現(xiàn),由于其集成度高,使其成本偏高,同時由于

19、芯片的引腳較多,實物電路板布線復雜,加重了電路設計和實際焊接的工作。并且FPGA的價格相對較高,性價比太低。</p><p>  方案三、用單片機實現(xiàn)。由于單片機集成了運算器電路、控制電路、存儲器、中斷系統(tǒng)、定時器/計數(shù)器以及輸入/輸出口電路等,所以用單片機設計控制電路省去了很多分立元器件。由于單片機是可編程芯片,并且它可以運用C語言編寫,對于一些復雜的計算功能,可以調(diào)用C語言庫函數(shù)。使編寫程序變得非常簡單。所以

20、該課題用單片機實現(xiàn),不僅功能易于實現(xiàn),而且精確度高,穩(wěn)定性好,抗干擾能力強。并且由于其成本低、體積小、技術成熟和功耗小等優(yōu)點,且技術比較成熟。性價比也相當高。更重要的是本人經(jīng)過幾年的學習,對單片機已有深刻的理解,并且可以靈活運用。</p><p>  綜上所述,并通過各個方面綜合比較為達到最佳效果。我們采用方案三利用單片機控制器。</p><p>  3.2鍵盤設計方案與選擇</p&

21、gt;<p>  方案一:獨立鍵盤。獨立鍵盤為一端接地,另一端接I/O口,并且要接上拉電阻。這種鍵盤的硬件都很容易實現(xiàn),但每一個按鍵就要用一個I/O口,非常的浪費單片機的I/O口資源,不適合本次設計。</p><p>  方案二:自制編碼鍵盤。編碼鍵盤的電路如圖1-9所示,這種鍵盤有編程簡單,占用資源少,但其硬件比較復雜,要用很多的二極管,不是很理想。</p><p>  圖

22、1-9、自制編碼鍵盤電路圖</p><p>  方案三:4*4矩陣式鍵盤。其電路圖如圖圖1-10所示,這種鍵盤的硬件簡單,使用的I/O口也不多,而且這種鍵盤的編程方法已很成熟。</p><p>  所以本次設計采用這種矩陣式鍵盤。</p><p>  第四章 硬件系統(tǒng)設計</p><p>  硬件系統(tǒng)是指構成微機系統(tǒng)的實體和裝置,通常由運算器

23、、控制器、存儲器、輸入接口電路和輸入設備、輸出接口電路和輸出設備等組成。單片機實質(zhì)上是一個硬件的芯片,在實際應用中,通常很難直接和被控對象進行電氣連接,必須外加各種擴展接口電路、外部設備、被控對象等硬件和軟件,才能構成一個單片機應用系統(tǒng)。本設計選用以AT89S51單片機為主控單元。顯示部分:采用7段LED動態(tài)顯示。按鍵部分,采用4*4鍵盤。 </p><p>  4.1 鍵盤接口電路</p><

24、;p>  計算機輸入數(shù)字和其他功能按鍵時要用到很多按鍵,在這種情況下,編程會很簡單,但是會占用大量的I/O口資源,因此在很多情況下都不采用這樣的方式,而是采用矩陣鍵盤的方式。矩陣鍵盤采用四條I/O線作為行線,四條I/O線作為列線組成鍵盤,在行線和列線的每個交叉點上設置一個按鍵。這樣鍵盤上按鍵的數(shù)量就為4*4個。這樣行列式鍵盤結構能有效的提高單片機系統(tǒng)中I/O口的利用率。</p><p>  計算器的鍵盤布局

25、如圖3.2所示:一般有16個鍵組成,在單片機中正好有一個P端口實現(xiàn)16個按鍵功能,這種形式在單片機系統(tǒng)中最常用。</p><p>  圖3.2 矩陣鍵盤內(nèi)部電路</p><p>  4.2 7段LED數(shù)碼管</p><p>  利用集成的LED數(shù)碼管(四位)</p><p>  4.3 程序下載接口</p><p> 

26、 利用串行口芯片232燒錄入程序</p><p>  4.4 數(shù)碼管驅(qū)動芯片</p><p>  利用244芯片驅(qū)動數(shù)碼管顯示</p><p>  4.5、單片機時鐘電路</p><p>  時鐘電路用于產(chǎn)生單片機工作所需要的時鐘信號,單片機本身就是一個復雜的同步時序電路,為了保證同步工作方式的實現(xiàn),電路應在唯一的時鐘信號控制下嚴格地按時序進

27、行工作。</p><p>  在MCS-51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳X1,輸出端為引腳X2,在芯片的外部跨接晶體振蕩器和微調(diào)電容,形成反饋電路,就構成了一個穩(wěn)定的自激振蕩器。 此電路采用12MHz的石英晶體。時鐘電路如下圖2-2:</p><p><b>  圖2.2時鐘電路</b></p><p>  4.6、單片

28、機復位電路</p><p>  復位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或操作錯誤是系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需要按復位鍵以重新啟動。</p><p>  RST引腳是單片機復位信號的輸入端,復位信號是高電平有效,其有效時間應持續(xù)24個振蕩周期(即2個機器周期)以上,若使用

29、頻率為12MHz的晶振,則復位信號持續(xù)時間應超過4s才能完成復位操作。復位操作有上電自動復位和按鍵手動復位兩種方式。上電自動復位是通過外部復位電路的電容充電來實現(xiàn)的。按鍵電平復位是通過使復位端經(jīng)電阻與Vcc電源接通而實現(xiàn)的。在本設計中采用了按鍵電平復位方式,其復位電路如下圖2-3。</p><p><b>  圖2-3、復位電路</b></p><p><b&g

30、t;  第五章 軟件設計</b></p><p>  5.1 匯編語言和C語言的特點及選擇</p><p>  本設計是硬件電路和軟件編程相結合的設計方案,選擇合適的編程語言是一個重要的環(huán)節(jié)。在單片機的應用系統(tǒng)程序設計時,常用的是匯編語言和C語言。機硬件,程序可讀性和可移植性比較差。而C語言雖然執(zhí)行效率沒有匯編語言高,但語言簡潔,使用方便,靈活,運算豐富,表達化類型多樣化,數(shù)據(jù)

31、結構類型豐富,具有結構化的控制語句,程序設計自由度大,有很好的可重用性,可移植性等特點。在本設計中采用C語言編寫軟件程序。主程序的設計詳見附錄三。 </p><p>  5.2 鍵掃程序設計</p><p>  鍵掃程序的過程為:開始時,先判斷是否有鍵閉合,無鍵閉合時,返回繼續(xù)判斷,有鍵閉合時,先去抖動,然后確定是否有鍵按下,若無鍵按下,則返回繼續(xù)判斷是否有鍵閉合,若有鍵按下,則判斷鍵號,

32、然后釋放,若釋放按鍵完畢,則返回,若沒有釋放按鍵,則返回繼續(xù)釋放。其流程圖如圖4.1所示。</p><p>  圖4.1 鍵掃程序流程圖</p><p>  5.3 算術運算程序設計</p><p>  算術運算程序的過程為:先判斷輸入的運算符是+、-、*、/ 中的哪一個,若是+或-,則要判斷運算結果是否溢出,溢出則顯示錯誤信息,沒溢出就顯示運算結果,若是/,則要先

33、判斷除數(shù)是否為零,為零就顯示錯誤信息,不為零則顯示運算結果,若是-,則直接顯示運算結果。其流程圖如圖4.2所示。</p><p>  圖4.2 算術運算程序設計流程圖</p><p>  5.4 LED顯示原理</p><p>  LED 點陣顯示器亦稱LED 矩陣板,具有亮度高、發(fā)光均勻、可靠性好、接線簡單、拼裝方便等優(yōu)點,能構成各種尺寸的大屏幕顯示器。因此,它被

34、廣泛應用于大型LED 智能顯示屏、智能儀器儀表和機電一體化設備的顯示單元中,取得了較好的效果。由于它經(jīng)濟、小型的顯示系統(tǒng),同時要求使用方便靈活,方便地組成了由多塊大屏幕LED 顯示器構成的顯示系統(tǒng),該系統(tǒng)可廣泛用于商場、車站、碼頭及其它公共場合。LED 顯示屏由 ED 點陣顯示器(常見型號為P2158A) 構成。它是以發(fā)光二極管為像素,按照行與列的順序排列而成的顯示器件,采用逐行(或逐列) 掃描方式工作,由峰值較大的窄脈沖驅(qū)動,從上到下

35、逐次不斷地對顯示屏的各行進行選通,同時又向各列送出表示圖形或文字信息的脈沖信號,反復循環(huán)以上操作,就可顯示各種圖形或文字信息</p><p>  此設計中LED數(shù)碼管的顯示為動態(tài)顯示。各數(shù)碼管在顯示過程中輪流得到送顯信號,與各數(shù)碼管接口的I/O口線是共用的。動態(tài)顯示優(yōu)點是用元器件少,占I/O線少。但缺點是 有閃爍,必須掃描,花費CPU時間,編程復雜。LED多數(shù)情況用于顯示十進制數(shù)字,要將0~9的數(shù)字用7段顯示,必

36、須將數(shù)字轉換為LED對應七段碼的信息,比如,要顯示“0”,就是讓a、b、c、d、e和f段發(fā)光,顯示“1”,讓b和c段發(fā)光,等等如表所示。然后根據(jù)LED是共陰極還是共陽極接法確定LED各輸入端應接邏輯1還是邏輯0,我選用的是共陰接法,要顯示“0” 時,a、b、c、d、e和f段就要輸入邏輯1,即其段碼為3F, 將待顯示內(nèi)容“翻譯”為LED段碼的過程,可以由軟件查表方法實現(xiàn)譯碼。</p><p>  第六章

37、系統(tǒng)調(diào)試與存在的問題</p><p><b>  6.1 硬件調(diào)試</b></p><p><b>  常見故障:</b></p><p>  1、邏輯錯誤:它是由設計錯誤或加工過程中的工藝性錯誤所造成的。這類錯誤包括錯線、開路、短路等。</p><p>  2、元器件失效:有兩方面的原因:一是器件

38、本身已損壞或性能不符合要求;二是組裝錯誤造成元件失效,如電解電容、集成電路安裝方向錯誤等。</p><p>  3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會造成系統(tǒng)時好時壞,經(jīng)不起振動;走線和布局不合理也會引起系統(tǒng)可靠性差。</p><p>  4、電源故障:若樣機由電源故障,則加電后很容易造成器件損壞。電源故障包括電壓值不符合設計要求,電源引線和插座不對,功率不足,

39、負載能力差等。</p><p>  調(diào)試方法:包括多級調(diào)試和聯(lián)機調(diào)試。在調(diào)試過程中要針對可能出現(xiàn)的故障認真分析,直至檢查出原因并排除。</p><p>  本次硬件調(diào)試過程中,對所出現(xiàn)的問題進行了認真的分析和改正,最后能夠很好的達到設計要求的效果。</p><p><b>  6.2 軟件調(diào)試</b></p><p> 

40、 軟件調(diào)試一般分為以下四個階段:1、 編寫程序并查錯;2、在C語言的編譯系統(tǒng)中編譯源程序3、對程序進行編譯連接,并及時發(fā)現(xiàn)程序中存在的錯誤;4、改正錯誤。</p><p>  在軟件調(diào)試過程中,對出現(xiàn)的錯誤進行了認真的分析和修改,多次調(diào)試成功后,能夠很好的達到既定的設計效果。</p><p>  此系統(tǒng)可以改進為增加小數(shù)點和負數(shù)以及一種科學計算功能,這是一個比較難的挑戰(zhàn)。</p>

41、;<p><b>  總 結</b></p><p>  這次單片機課程設計不僅鞏固了以前所學過的知識,而且學到了很多在書本上沒有學到過的知識,掌握了一種系統(tǒng)的研究方法,可以進行一些簡單的編程。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,從而提高自己的實際動手能力和獨立思考的能力。同時在

42、設計的過程中發(fā)現(xiàn)了自己的不足之處,例如對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,學習了單片機C語言。</p><p>  經(jīng)過一周的努力,順利的完成了單片機課設。這是一個磨練意志的過程。從課題的選擇開始,計算器的設計、硬件和軟件系統(tǒng)的設計、到最后的Proteus軟件仿真完成,這其中經(jīng)歷了很多困難,但是更重要的是在這個過程中我得到了很大的鍛煉。一方面通過C51單片機等一些器件的設計讓我學習和掌握了單片機技術

43、的基礎知識和技術要點,也使以前學的很多知識都得到了運用;另一方面在用Proteus軟件畫電路圖時,然后再轉換成一維的WORD中進行編輯,這個過程中讓我掌握了計算機輔助的設計技術。當然,這是一個需要不斷的嘗試,不斷的校核,不斷的修改,最后完成一個合理的設計的過程。需要的是細心和耐心。在很大程度上培養(yǎng)了我拼搏的工作精神。使我受益匪淺,更加明確了自己專業(yè)的方向。</p><p>  通過本次課設,我不僅學到了關于單片機

44、技術方面的許多專業(yè)知識,同時也讓我感覺到團隊合作的重要性。其實如何有效和快速的找到資料也是課設給我的啟發(fā),利用好圖書館和網(wǎng)絡,是資源的到最好的利用。與他人交流思想是取得成功的關鍵,在交流中,不僅強化了自己原有的知識體系,也擴展了自己的思維。課設是一個通過思考、發(fā)問、自己解惑并動手、提高的過程。我會在以后的學習中不斷學習,積累經(jīng)驗,完善自己。</p><p>  這里我要感謝實驗室的指導老師,沒有老師的細致講解和耐

45、心的檢查,也就沒有我的計算器出來,非常感謝!</p><p><b>  參考文獻</b></p><p>  [1]徐愛鈞.智能化測量控制儀表原理與設計(第二版).北京航天航空大學出版社,2004.9 </p><p>  [2]楊恢先 黃輝先著.單片機原理與應用.人民郵電出版,2009.7</p><p>  [3]

46、朱定華著.單片機原理與接口技術.電子工業(yè)出版社,2001.4 </p><p>  [4]王威著.HCS12微控制器原理及應用.北京航空航天大學出版社,2007.10 </p><p>  [5]龔運新著.單片機C語言開發(fā)技術.北京清華大學出版社,2006.10 </p><p>  [6]胡洪波著.單片機原理與應用實驗教程.湘潭大學出版社,2009.7</p

47、><p><b>  附 錄</b></p><p>  附錄一:計算器硬件連線圖</p><p><b>  附錄二:源程序</b></p><p>  #include "reg51.h"</p><p>  sbit P3_0=P3^0;</p&g

48、t;<p>  sbit P3_1=P3^1;</p><p>  sbit P3_2=P3^2;</p><p>  sbit P3_3=P3^3;</p><p>  sbit P3_4=P3^4;</p><p>  sbit P3_5=P3^5;</p><p>  sbit P3_6=P3^6;

49、</p><p>  sbit P3_7=P3^7;</p><p>  unsigned char sz[11],xs1[4],xs2[4],sj;</p><p>  int i,j,cs,bb,t1,t2,fh,s1,s2;</p><p>  void chushihua() //初始化</p><p>

50、<b>  {</b></p><p>  bb=1; //bb是標志為第一或者第二個操作數(shù)</p><p>  xs1[0]=10;xs1[1]=10;xs1[2]=10;xs1[3]=10; //xs數(shù)組是要顯示的數(shù)</p><p>  xs2[0]=10;xs2[1]=10;xs2[2]=10;xs2[3]=10;</p

51、><p>  t1=0;t2=0;s1=s2=0;</p><p>  fh=0; //符號</p><p><b>  cs=1;</b></p><p><b>  }</b></p><p>  void xianshi(unsigned char xs[4])

52、 //顯示子程序</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p>  unsigned char zy;</p><p>  zy=0x08; //位選信號</p><p>  for (i=0;i<4

53、;i++)</p><p><b>  {</b></p><p><b>  P2=zy;</b></p><p>  P1=sz[xs[i]]; //查表得到顯示的代碼</p><p>  zy=(zy>>1); //右移一位</p><p&g

54、t;  for (j=0;j<100;j++); //顯示延時</p><p><b>  }</b></p><p>  //for (i=0;i<100;i++);</p><p><b>  return;</b></p><p><b>  }</b>

55、</p><p>  unsigned char saomiao() //掃描子程序</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  unsigned char pp;</p><p>  for (i=0;

56、i<1000;i++);</p><p><b>  P0=0xfe;</b></p><p><b>  P3=0x0f;</b></p><p><b>  pp=P3;</b></p><p>  if (P3_0==0) {P3=0x0f;pp=P3;while

57、 (P3_0==0);for (i=0;i<1000;i++);return 7;} //判斷按鍵,含消抖過程。下同</p><p>  if (P3_1==0) {P3=0x0f;pp=P3;while (P3_1==0);for (i=0;i<1000;i++);return 8;}</p><p>  if (P3_2==0) {P3=0x0f;pp=P3;wh

58、ile (P3_2==0);for (i=0;i<1000;i++);return 9;}</p><p>  if (P3_3==0) {P3=0x0f;pp=P3;while (P3_3==0);for (i=0;i<1000;i++);return 11;}</p><p>  //==========1</p><p><b>  P

59、0=0xfd;</b></p><p><b>  P3=0x0f;</b></p><p><b>  pp=P3;</b></p><p>  if (P3_0==0) {P3=0x0f;pp=P3;while (P3_0==0);for (i=0;i<1000;i++);return 4;}<

60、;/p><p>  if (P3_1==0) {P3=0x0f;pp=P3;while (P3_1==0);for (i=0;i<1000;i++);return 5;}</p><p>  if (P3_2==0) {P3=0x0f;pp=P3;while (P3_2==0);for (i=0;i<1000;i++);return 6;}</p><p&g

61、t;  if (P3_3==0) {P3=0x0f;pp=P3;while (P3_3==0);for (i=0;i<1000;i++);return 12;}</p><p>  //==========2</p><p><b>  P0=0xfb;</b></p><p><b>  P3=0x0f;</b>

62、</p><p><b>  pp=P3;</b></p><p>  if (P3_0==0) {P3=0x0f;pp=P3;while (P3_0==0);for (i=0;i<1000;i++);return 1;}</p><p>  if (P3_1==0) {P3=0x0f;pp=P3;while (P3_1==0);fo

63、r (i=0;i<1000;i++);return 2;}</p><p>  if (P3_2==0) {P3=0x0f;pp=P3;while (P3_2==0);for (i=0;i<1000;i++);return 3;}</p><p>  if (P3_3==0) {P3=0x0f;pp=P3;while (P3_3==0);for (i=0;i<1000

64、;i++);return 13;}</p><p>  //==========3</p><p><b>  P0=0xf7;</b></p><p><b>  P3=0x0f;</b></p><p><b>  pp=P3;</b></p><p&g

65、t;  if (P3_0==0) {P3=0x0f;pp=P3;while (P3_0==0);for (i=0;i<1000;i++);return 16;}</p><p>  if (P3_1==0) {P3=0x0f;pp=P3;while (P3_1==0);for (i=0;i<1000;i++);return 0;}</p><p>  if (P3_2==0

66、) {P3=0x0f;pp=P3;while (P3_2==0);for (i=0;i<1000;i++);return 15;}</p><p>  if (P3_3==0) {P3=0x0f;pp=P3;while (P3_3==0);for (i=0;i<1000;i++);return 14;}</p><p>  //===========4</p>

67、<p>  return 10; //沒按鍵,返回10</p><p><b>  }</b></p><p>  void chuli(unsigned char x) //處理程序</p><p><b>  {</b></p><p><b>  int i;

68、</b></p><p>  if (x==16)</p><p><b>  {</b></p><p><b>  cs=0;</b></p><p><b>  return ;</b></p><p><b>  }<

69、/b></p><p>  if (x>=0 && x<10) //輸入為數(shù)字</p><p><b>  {</b></p><p>  if (bb==1) //為第一個操作數(shù)</p><p><b>  {</b></p><p

70、>  if (s1==4) {cs=0;return ;}</p><p>  else //輸入數(shù)字沒有四位,則左移一位</p><p><b>  {</b></p><p>  for (i=3;i>0;i--)</p><p>  xs1[i]=xs1[i-1];</p><

71、p><b>  xs1[0]=x;</b></p><p><b>  s1++;</b></p><p>  t1=t1*10+x;</p><p><b>  }</b></p><p><b>  }</b></p><p&

72、gt;  if (bb==2) //與上同</p><p><b>  {</b></p><p>  if (s2==4) {cs=0;return ;}</p><p><b>  else</b></p><p><b>  {</b></p><p

73、>  for (i=3;i>0;i--)</p><p>  xs2[i]=xs2[i-1];</p><p><b>  xs2[0]=x;</b></p><p><b>  s2++;</b></p><p>  t2=t2*10+x;</p><p>&l

74、t;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if (x>10) //輸入為符號</p><p><b>  {</b></p><p>  i

75、f (bb==1) {fh=x;bb=2;return;}</p><p>  if (bb==2)</p><p><b>  {</b></p><p>  if (fh==11) t1=t1/t2;</p><p>  if (fh==12) t1=t1*t2;</p><p>  if (

76、fh==13) t1=t1-t2;</p><p>  if (fh==14) t1=t1+t2;</p><p>  if (t1>=10000) {cs=0;return;}</p><p><b>  else</b></p><p><b>  {</b></p><

77、;p>  if (t1>=0 && t1<10) {xs1[0]=t1;xs1[1]=10;xs1[2]=10;xs1[3]=10;} //取顯示的數(shù)的各位,下同</p><p>  if (t1>=10 && t1<100) {xs1[0]=t1%10;xs1[1]=t1/10;xs1[2]=10;xs1[3]=10;}</p>

78、<p>  if (t1>=100 && t1<1000) {xs1[0]=t1%10;xs1[1]=(t1-(t1/100)*100)/10;xs1[2]=t1/100;xs1[3]=10;}</p><p>  if (t1>=1000 && t1<10000) {xs1[0]=t1%10;xs1[1]=t1%100/10;xs1[2]

79、=(t1-(t1/1000)*1000)/100;xs1[3]=t1/1000;}</p><p><b>  bb=2;</b></p><p><b>  s2=0;</b></p><p><b>  t2=0;</b></p><p>  xs2[0]=10;xs2[1

80、]=10;xs2[2]=10;xs2[3]=10;</p><p>  fh=x; //保存輸入符號</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b

81、>  }</b></p><p>  void main() //主程序</p><p><b>  {</b></p><p>  sz[0]=0xfc; //數(shù)碼管顯示代碼</p><p>  sz[1]=0x60;</p><p>  sz[2]=0xda;&l

82、t;/p><p>  sz[3]=0xf2;</p><p>  sz[4]=0x66;</p><p>  sz[5]=0xb6;</p><p>  sz[6]=0xbe;</p><p>  sz[7]=0xe0;</p><p>  sz[8]=0xfe;</p><p&

83、gt;  sz[9]=0xf6;</p><p>  sz[10]=0x00; </p><p><b>  cs=0;</b></p><p><b>  for (;;)</b></p><p><b>  {</b></p><p>  if (c

84、s==0) chushihua();</p><p>  if (cs==1) sj=saomiao(); //sj為鍵盤掃描到的值</p><p>  if (cs==1 && sj!=10) chuli(sj);</p><p>  if (cs==1 &&(bb==1 || bb==2 && s2==0))

溫馨提示

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

評論

0/150

提交評論