版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p><b> ——多功能計(jì)算器</b></p><p> 姓 名: </p><p> 學(xué) 號(hào): </p><p><b> 專(zhuān)業(yè)班級(jí): </b></p>
2、<p> 日 期: 2011年3月29日</p><p><b> 目 錄</b></p><p><b> 第一章 緒論2</b></p><p> 1.1 課題簡(jiǎn)介2</p><p> 1.2 設(shè)計(jì)目的2</p><p> 1.
3、3 設(shè)計(jì)任務(wù)2</p><p> 1.4 設(shè)計(jì)方法3</p><p> 第二章 設(shè)計(jì)內(nèi)容及要求4</p><p> 第三章 方案論證與比較5</p><p> 3.1 控制部分的設(shè)計(jì)方案論證與選擇-----------------------------------------------------5</p>
4、<p> 3.2 鍵盤(pán)設(shè)計(jì)方案與選擇--------------------------------------------------------------------6</p><p> 第四章 硬件系統(tǒng)設(shè)計(jì)7</p><p> 4.1 鍵盤(pán)接口電路7</p><p> 4.2 7段LED數(shù)碼管8</p><p&g
5、t; 4.3 程序下載接口8</p><p> 4.4 數(shù)碼管驅(qū)動(dòng)芯片8</p><p> 4.5、單片機(jī)時(shí)鐘電路8</p><p> 4.6、單片機(jī)復(fù)位電路9</p><p> 第五章 軟件設(shè)計(jì)10</p><p> 5.1 匯編語(yǔ)言和C語(yǔ)言的特點(diǎn)及選擇10</p><p&
6、gt; 5.2 鍵掃程序設(shè)計(jì)10</p><p> 5.3 算術(shù)運(yùn)算程序設(shè)計(jì)11</p><p> 5.4 LED顯示原理12</p><p> 第六章 系統(tǒng)調(diào)試與存在的問(wèn)題13</p><p> 6.1 硬件調(diào)試13</p><p> 6.2 軟件調(diào)試13</p><p&g
7、t;<b> 總 結(jié)14</b></p><p><b> 參考文獻(xiàn)15</b></p><p> 附錄------------------------------------------------------------------------------------16</p><p><b>
8、 第一章 緒論</b></p><p><b> 1.1 課題簡(jiǎn)介</b></p><p> 當(dāng)今社會(huì),隨著人們物質(zhì)生活的不斷提高,電子產(chǎn)品已經(jīng)走進(jìn)了家家戶(hù)戶(hù),無(wú)論是生活或?qū)W習(xí),還是娛樂(lè)和消遣幾乎樣樣都離不開(kāi)電子產(chǎn)品,大型復(fù)雜的計(jì)算能力是人腦所不能勝任的,而且比較容易出錯(cuò)。計(jì)算器作為一種快速通用的計(jì)算工具方便了用戶(hù)的使用。計(jì)算器可謂是我們最親密的電子
9、伙伴之一。本設(shè)計(jì)著重在于分析計(jì)算器軟件和開(kāi)發(fā)過(guò)程中的環(huán)節(jié)和步驟,并從實(shí)踐經(jīng)驗(yàn)出發(fā)對(duì)計(jì)算器設(shè)計(jì)做了詳細(xì)的分析和研究。</p><p> 單片機(jī)由于其微小的體積和極低的成本,廣泛的應(yīng)用于家用電器、工業(yè)控制等領(lǐng)域中。在工業(yè)生產(chǎn)中。單片微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支,也是頗具生命力的機(jī)種。單片微型計(jì)算機(jī)簡(jiǎn)稱(chēng)單片機(jī),特別適用于控制領(lǐng)域,故又稱(chēng)為微控制器。</p><p> 本系統(tǒng)就是充分利
10、用了8051芯片的I/O引腳。系統(tǒng)以采用MCS-51系列單片機(jī)Intel8051為中心器件來(lái)設(shè)計(jì)計(jì)算器控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際輸入值顯示并存儲(chǔ)的功能,計(jì)算程序則是參照教材。至于位數(shù)和功能,如果有需要可以通過(guò)設(shè)計(jì)擴(kuò)充原系統(tǒng)來(lái)實(shí)現(xiàn) 。</p><p><b> 1.2 設(shè)計(jì)目的</b></p><p> 通過(guò)本次課題設(shè)計(jì),應(yīng)用《單片機(jī)原理及應(yīng)用》等所學(xué)相關(guān)知識(shí)及查閱資
11、料,完成簡(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)設(shè)計(jì)有一個(gè)比較感性的認(rèn)識(shí),并具備一定程度的設(shè)計(jì)能力。</p><p><b> 1.3 設(shè)計(jì)任務(wù)</b></p><p> 在本次課程
12、設(shè)計(jì)中,主要完成如下方面的設(shè)計(jì)任務(wù):</p><p> 1、簡(jiǎn)要闡述單片機(jī)技術(shù)發(fā)展的國(guó)內(nèi)外現(xiàn)狀及LED動(dòng)態(tài)顯示和矩陣鍵盤(pán)基本原理;</p><p> 2、掌握MCS-51系列某種產(chǎn)品(例如8051)的最小電路及外圍擴(kuò)展電路的設(shè)計(jì)方法;</p><p> 3、了解單片機(jī)數(shù)據(jù)轉(zhuǎn)換功能及工作過(guò)程;</p><p> 4、完成主要功能模塊的硬
13、件電路設(shè)計(jì)及必要的參數(shù)確定;</p><p> 5、用protel軟件完成原理電路圖的繪制;</p><p><b> 1.4 設(shè)計(jì)方法</b></p><p> 電路采用動(dòng)態(tài)顯示,由八位共陽(yáng)極數(shù)碼管通過(guò)P0口,P2口與單片機(jī)分別相連,且數(shù)碼管A,B,C,D,E,F,G分別依次與單片機(jī)的P0口相連,P0口做為字碼控制端,數(shù)碼管的1,2,3
14、,4,5,6,7,8各引腳分別與單片機(jī)的P2.0—P2.7相連,P2口做為數(shù)碼管的位控制端,動(dòng)態(tài)顯示是每次數(shù)碼管只顯示一位,由于人的視覺(jué)停留是0.05到0.2秒之間,當(dāng)數(shù)碼管依次點(diǎn)亮各個(gè)位時(shí),使循環(huán)的頻率高于人的視覺(jué)停留時(shí)間,人們就會(huì)認(rèn)為數(shù)碼管是同時(shí)點(diǎn)亮的,就可以達(dá)到動(dòng)態(tài)顯示的效果。</p><p> 輸入鍵盤(pán)采用4*4鍵盤(pán)。采用軟件識(shí)別鍵值并執(zhí)行相應(yīng)的操作,程序運(yùn)行時(shí)依次掃描各行,查詢(xún)是否有鍵按下,如果有則進(jìn)
15、入鍵盤(pán)識(shí)別處理程序,實(shí)現(xiàn)相應(yīng)的運(yùn)算,然后通過(guò)數(shù)碼管輸出結(jié)果,如果沒(méi)有按鍵就調(diào)用顯示程序顯示一個(gè)0,等待按鍵按下,在進(jìn)入按鍵掃描程序。這樣循環(huán)執(zhí)行。</p><p> 第二章 設(shè)計(jì)內(nèi)容及要求</p><p><b> 基本功能:</b></p><p> 利用89c51作為主控器組成一個(gè)四則運(yùn)算的計(jì)算器。</p><p&
16、gt;<b> 可選器件:</b></p><p> 51系列單片機(jī)、6264、7段LED數(shù)碼管、74LS244或74LS240、與非門(mén)等</p><p> 第三章 方案論證與比較</p><p> 3.1控制部分的設(shè)計(jì)方案論證與選擇</p><p> 根據(jù)設(shè)計(jì)要求,控制器主要用于紅外信號(hào)的接收和辨認(rèn)、控制步
17、進(jìn)電機(jī)的動(dòng)作,控制顯示步進(jìn)電機(jī)的轉(zhuǎn)速等。對(duì)于控制器的選擇有以下三種方案。</p><p> 方案一:采用計(jì)算器專(zhuān)用芯片實(shí)現(xiàn)。用計(jì)算器專(zhuān)用芯片進(jìn)行設(shè)計(jì)并編程實(shí)現(xiàn)。這種設(shè)計(jì)方案計(jì)算效率高、速度快、而且成本也相對(duì)較低,是廠家做計(jì)算器的最佳方案。但是本人對(duì)計(jì)算器專(zhuān)用芯片掌握的不夠,還不足以實(shí)現(xiàn)設(shè)計(jì)計(jì)算器,所以這個(gè)方案不可去。</p><p> 方案二:采用FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)作為系統(tǒng)的
18、控制器。FPGA將所有器件集成到一塊芯片上,體積小,節(jié)省空間,提高了穩(wěn)定性;直接面向用戶(hù),具有極大的靈活性和通用性,使用方便,硬件測(cè)試和實(shí)現(xiàn)快捷,開(kāi)發(fā)效率高,工作可靠性好??梢詫?shí)現(xiàn)各種復(fù)雜的邏輯功能,規(guī)模大,密度高,采用并行的輸入輸出方式,系統(tǒng)處理速度高,適合作為大規(guī)模實(shí)時(shí)系統(tǒng)的控制核心。由FPGA內(nèi)部編程實(shí)現(xiàn)計(jì)算器功能,本設(shè)計(jì)對(duì)數(shù)據(jù)處理速度的要求不是很高,F(xiàn)PGA的高速處理的優(yōu)勢(shì)得不到充分的體現(xiàn),由于其集成度高,使其成本偏高,同時(shí)由于
19、芯片的引腳較多,實(shí)物電路板布線復(fù)雜,加重了電路設(shè)計(jì)和實(shí)際焊接的工作。并且FPGA的價(jià)格相對(duì)較高,性?xún)r(jià)比太低。</p><p> 方案三、用單片機(jī)實(shí)現(xiàn)。由于單片機(jī)集成了運(yùn)算器電路、控制電路、存儲(chǔ)器、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器以及輸入/輸出口電路等,所以用單片機(jī)設(shè)計(jì)控制電路省去了很多分立元器件。由于單片機(jī)是可編程芯片,并且它可以運(yùn)用C語(yǔ)言編寫(xiě),對(duì)于一些復(fù)雜的計(jì)算功能,可以調(diào)用C語(yǔ)言庫(kù)函數(shù)。使編寫(xiě)程序變得非常簡(jiǎn)單。所以
20、該課題用單片機(jī)實(shí)現(xiàn),不僅功能易于實(shí)現(xiàn),而且精確度高,穩(wěn)定性好,抗干擾能力強(qiáng)。并且由于其成本低、體積小、技術(shù)成熟和功耗小等優(yōu)點(diǎn),且技術(shù)比較成熟。性?xún)r(jià)比也相當(dāng)高。更重要的是本人經(jīng)過(guò)幾年的學(xué)習(xí),對(duì)單片機(jī)已有深刻的理解,并且可以靈活運(yùn)用。</p><p> 綜上所述,并通過(guò)各個(gè)方面綜合比較為達(dá)到最佳效果。我們采用方案三利用單片機(jī)控制器。</p><p> 3.2鍵盤(pán)設(shè)計(jì)方案與選擇</p&
21、gt;<p> 方案一:獨(dú)立鍵盤(pán)。獨(dú)立鍵盤(pán)為一端接地,另一端接I/O口,并且要接上拉電阻。這種鍵盤(pán)的硬件都很容易實(shí)現(xiàn),但每一個(gè)按鍵就要用一個(gè)I/O口,非常的浪費(fèi)單片機(jī)的I/O口資源,不適合本次設(shè)計(jì)。</p><p> 方案二:自制編碼鍵盤(pán)。編碼鍵盤(pán)的電路如圖1-9所示,這種鍵盤(pán)有編程簡(jiǎn)單,占用資源少,但其硬件比較復(fù)雜,要用很多的二極管,不是很理想。</p><p> 圖
22、1-9、自制編碼鍵盤(pán)電路圖</p><p> 方案三:4*4矩陣式鍵盤(pán)。其電路圖如圖圖1-10所示,這種鍵盤(pán)的硬件簡(jiǎn)單,使用的I/O口也不多,而且這種鍵盤(pán)的編程方法已很成熟。</p><p> 所以本次設(shè)計(jì)采用這種矩陣式鍵盤(pán)。</p><p> 第四章 硬件系統(tǒng)設(shè)計(jì)</p><p> 硬件系統(tǒng)是指構(gòu)成微機(jī)系統(tǒng)的實(shí)體和裝置,通常由運(yùn)算器
23、、控制器、存儲(chǔ)器、輸入接口電路和輸入設(shè)備、輸出接口電路和輸出設(shè)備等組成。單片機(jī)實(shí)質(zhì)上是一個(gè)硬件的芯片,在實(shí)際應(yīng)用中,通常很難直接和被控對(duì)象進(jìn)行電氣連接,必須外加各種擴(kuò)展接口電路、外部設(shè)備、被控對(duì)象等硬件和軟件,才能構(gòu)成一個(gè)單片機(jī)應(yīng)用系統(tǒng)。本設(shè)計(jì)選用以AT89S51單片機(jī)為主控單元。顯示部分:采用7段LED動(dòng)態(tài)顯示。按鍵部分,采用4*4鍵盤(pán)。 </p><p> 4.1 鍵盤(pán)接口電路</p><
24、;p> 計(jì)算機(jī)輸入數(shù)字和其他功能按鍵時(shí)要用到很多按鍵,在這種情況下,編程會(huì)很簡(jiǎn)單,但是會(huì)占用大量的I/O口資源,因此在很多情況下都不采用這樣的方式,而是采用矩陣鍵盤(pán)的方式。矩陣鍵盤(pán)采用四條I/O線作為行線,四條I/O線作為列線組成鍵盤(pán),在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤(pán)上按鍵的數(shù)量就為4*4個(gè)。這樣行列式鍵盤(pán)結(jié)構(gòu)能有效的提高單片機(jī)系統(tǒng)中I/O口的利用率。</p><p> 計(jì)算器的鍵盤(pán)布局
25、如圖3.2所示:一般有16個(gè)鍵組成,在單片機(jī)中正好有一個(gè)P端口實(shí)現(xiàn)16個(gè)按鍵功能,這種形式在單片機(jī)系統(tǒng)中最常用。</p><p> 圖3.2 矩陣鍵盤(pán)內(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ū)動(dòng)芯片</p><p> 利用244芯片驅(qū)動(dòng)數(shù)碼管顯示</p><p> 4.5、單片機(jī)時(shí)鐘電路</p><p> 時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào),單片機(jī)本身就是一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下嚴(yán)格地按時(shí)序進(jìn)
27、行工作。</p><p> 在MCS-51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳X1,輸出端為引腳X2,在芯片的外部跨接晶體振蕩器和微調(diào)電容,形成反饋電路,就構(gòu)成了一個(gè)穩(wěn)定的自激振蕩器。 此電路采用12MHz的石英晶體。時(shí)鐘電路如下圖2-2:</p><p><b> 圖2.2時(shí)鐘電路</b></p><p> 4.6、單片
28、機(jī)復(fù)位電路</p><p> 復(fù)位是單片機(jī)的初始化操作,其主要功能是把PC初始化為0000H,使單片機(jī)從0000H單元開(kāi)始執(zhí)行程序。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤是系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需要按復(fù)位鍵以重新啟動(dòng)。</p><p> RST引腳是單片機(jī)復(fù)位信號(hào)的輸入端,復(fù)位信號(hào)是高電平有效,其有效時(shí)間應(yīng)持續(xù)24個(gè)振蕩周期(即2個(gè)機(jī)器周期)以上,若使用
29、頻率為12MHz的晶振,則復(fù)位信號(hào)持續(xù)時(shí)間應(yīng)超過(guò)4s才能完成復(fù)位操作。復(fù)位操作有上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位兩種方式。上電自動(dòng)復(fù)位是通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn)的。按鍵電平復(fù)位是通過(guò)使復(fù)位端經(jīng)電阻與Vcc電源接通而實(shí)現(xiàn)的。在本設(shè)計(jì)中采用了按鍵電平復(fù)位方式,其復(fù)位電路如下圖2-3。</p><p><b> 圖2-3、復(fù)位電路</b></p><p><b&g
30、t; 第五章 軟件設(shè)計(jì)</b></p><p> 5.1 匯編語(yǔ)言和C語(yǔ)言的特點(diǎn)及選擇</p><p> 本設(shè)計(jì)是硬件電路和軟件編程相結(jié)合的設(shè)計(jì)方案,選擇合適的編程語(yǔ)言是一個(gè)重要的環(huán)節(jié)。在單片機(jī)的應(yīng)用系統(tǒng)程序設(shè)計(jì)時(shí),常用的是匯編語(yǔ)言和C語(yǔ)言。機(jī)硬件,程序可讀性和可移植性比較差。而C語(yǔ)言雖然執(zhí)行效率沒(méi)有匯編語(yǔ)言高,但語(yǔ)言簡(jiǎn)潔,使用方便,靈活,運(yùn)算豐富,表達(dá)化類(lèi)型多樣化,數(shù)據(jù)
31、結(jié)構(gòu)類(lèi)型豐富,具有結(jié)構(gòu)化的控制語(yǔ)句,程序設(shè)計(jì)自由度大,有很好的可重用性,可移植性等特點(diǎn)。在本設(shè)計(jì)中采用C語(yǔ)言編寫(xiě)軟件程序。主程序的設(shè)計(jì)詳見(jiàn)附錄三。 </p><p> 5.2 鍵掃程序設(shè)計(jì)</p><p> 鍵掃程序的過(guò)程為:開(kāi)始時(shí),先判斷是否有鍵閉合,無(wú)鍵閉合時(shí),返回繼續(xù)判斷,有鍵閉合時(shí),先去抖動(dòng),然后確定是否有鍵按下,若無(wú)鍵按下,則返回繼續(xù)判斷是否有鍵閉合,若有鍵按下,則判斷鍵號(hào),
32、然后釋放,若釋放按鍵完畢,則返回,若沒(méi)有釋放按鍵,則返回繼續(xù)釋放。其流程圖如圖4.1所示。</p><p> 圖4.1 鍵掃程序流程圖</p><p> 5.3 算術(shù)運(yùn)算程序設(shè)計(jì)</p><p> 算術(shù)運(yùn)算程序的過(guò)程為:先判斷輸入的運(yùn)算符是+、-、*、/ 中的哪一個(gè),若是+或-,則要判斷運(yùn)算結(jié)果是否溢出,溢出則顯示錯(cuò)誤信息,沒(méi)溢出就顯示運(yùn)算結(jié)果,若是/,則要先
33、判斷除數(shù)是否為零,為零就顯示錯(cuò)誤信息,不為零則顯示運(yùn)算結(jié)果,若是-,則直接顯示運(yùn)算結(jié)果。其流程圖如圖4.2所示。</p><p> 圖4.2 算術(shù)運(yùn)算程序設(shè)計(jì)流程圖</p><p> 5.4 LED顯示原理</p><p> LED 點(diǎn)陣顯示器亦稱(chēng)LED 矩陣板,具有亮度高、發(fā)光均勻、可靠性好、接線簡(jiǎn)單、拼裝方便等優(yōu)點(diǎn),能構(gòu)成各種尺寸的大屏幕顯示器。因此,它被
34、廣泛應(yīng)用于大型LED 智能顯示屏、智能儀器儀表和機(jī)電一體化設(shè)備的顯示單元中,取得了較好的效果。由于它經(jīng)濟(jì)、小型的顯示系統(tǒng),同時(shí)要求使用方便靈活,方便地組成了由多塊大屏幕LED 顯示器構(gòu)成的顯示系統(tǒng),該系統(tǒng)可廣泛用于商場(chǎng)、車(chē)站、碼頭及其它公共場(chǎng)合。LED 顯示屏由 ED 點(diǎn)陣顯示器(常見(jiàn)型號(hào)為P2158A) 構(gòu)成。它是以發(fā)光二極管為像素,按照行與列的順序排列而成的顯示器件,采用逐行(或逐列) 掃描方式工作,由峰值較大的窄脈沖驅(qū)動(dòng),從上到下
35、逐次不斷地對(duì)顯示屏的各行進(jìn)行選通,同時(shí)又向各列送出表示圖形或文字信息的脈沖信號(hào),反復(fù)循環(huán)以上操作,就可顯示各種圖形或文字信息</p><p> 此設(shè)計(jì)中LED數(shù)碼管的顯示為動(dòng)態(tài)顯示。各數(shù)碼管在顯示過(guò)程中輪流得到送顯信號(hào),與各數(shù)碼管接口的I/O口線是共用的。動(dòng)態(tài)顯示優(yōu)點(diǎn)是用元器件少,占I/O線少。但缺點(diǎn)是 有閃爍,必須掃描,花費(fèi)CPU時(shí)間,編程復(fù)雜。LED多數(shù)情況用于顯示十進(jìn)制數(shù)字,要將0~9的數(shù)字用7段顯示,必
36、須將數(shù)字轉(zhuǎn)換為L(zhǎng)ED對(duì)應(yīng)七段碼的信息,比如,要顯示“0”,就是讓a、b、c、d、e和f段發(fā)光,顯示“1”,讓b和c段發(fā)光,等等如表所示。然后根據(jù)LED是共陰極還是共陽(yáng)極接法確定LED各輸入端應(yīng)接邏輯1還是邏輯0,我選用的是共陰接法,要顯示“0” 時(shí),a、b、c、d、e和f段就要輸入邏輯1,即其段碼為3F, 將待顯示內(nèi)容“翻譯”為L(zhǎng)ED段碼的過(guò)程,可以由軟件查表方法實(shí)現(xiàn)譯碼。</p><p> 第六章
37、系統(tǒng)調(diào)試與存在的問(wèn)題</p><p><b> 6.1 硬件調(diào)試</b></p><p><b> 常見(jiàn)故障:</b></p><p> 1、邏輯錯(cuò)誤:它是由設(shè)計(jì)錯(cuò)誤或加工過(guò)程中的工藝性錯(cuò)誤所造成的。這類(lèi)錯(cuò)誤包括錯(cuò)線、開(kāi)路、短路等。</p><p> 2、元器件失效:有兩方面的原因:一是器件
38、本身已損壞或性能不符合要求;二是組裝錯(cuò)誤造成元件失效,如電解電容、集成電路安裝方向錯(cuò)誤等。</p><p> 3、可靠性差:因其可靠性差的原因很多,如金屬化孔、接插件接觸不良會(huì)造成系統(tǒng)時(shí)好時(shí)壞,經(jīng)不起振動(dòng);走線和布局不合理也會(huì)引起系統(tǒng)可靠性差。</p><p> 4、電源故障:若樣機(jī)由電源故障,則加電后很容易造成器件損壞。電源故障包括電壓值不符合設(shè)計(jì)要求,電源引線和插座不對(duì),功率不足,
39、負(fù)載能力差等。</p><p> 調(diào)試方法:包括多級(jí)調(diào)試和聯(lián)機(jī)調(diào)試。在調(diào)試過(guò)程中要針對(duì)可能出現(xiàn)的故障認(rèn)真分析,直至檢查出原因并排除。</p><p> 本次硬件調(diào)試過(guò)程中,對(duì)所出現(xiàn)的問(wèn)題進(jìn)行了認(rèn)真的分析和改正,最后能夠很好的達(dá)到設(shè)計(jì)要求的效果。</p><p><b> 6.2 軟件調(diào)試</b></p><p>
40、 軟件調(diào)試一般分為以下四個(gè)階段:1、 編寫(xiě)程序并查錯(cuò);2、在C語(yǔ)言的編譯系統(tǒng)中編譯源程序3、對(duì)程序進(jìn)行編譯連接,并及時(shí)發(fā)現(xiàn)程序中存在的錯(cuò)誤;4、改正錯(cuò)誤。</p><p> 在軟件調(diào)試過(guò)程中,對(duì)出現(xiàn)的錯(cuò)誤進(jìn)行了認(rèn)真的分析和修改,多次調(diào)試成功后,能夠很好的達(dá)到既定的設(shè)計(jì)效果。</p><p> 此系統(tǒng)可以改進(jìn)為增加小數(shù)點(diǎn)和負(fù)數(shù)以及一種科學(xué)計(jì)算功能,這是一個(gè)比較難的挑戰(zhàn)。</p>
41、;<p><b> 總 結(jié)</b></p><p> 這次單片機(jī)課程設(shè)計(jì)不僅鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上沒(méi)有學(xué)到過(guò)的知識(shí),掌握了一種系統(tǒng)的研究方法,可以進(jìn)行一些簡(jiǎn)單的編程。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。同時(shí)在
42、設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,例如對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固,學(xué)習(xí)了單片機(jī)C語(yǔ)言。</p><p> 經(jīng)過(guò)一周的努力,順利的完成了單片機(jī)課設(shè)。這是一個(gè)磨練意志的過(guò)程。從課題的選擇開(kāi)始,計(jì)算器的設(shè)計(jì)、硬件和軟件系統(tǒng)的設(shè)計(jì)、到最后的Proteus軟件仿真完成,這其中經(jīng)歷了很多困難,但是更重要的是在這個(gè)過(guò)程中我得到了很大的鍛煉。一方面通過(guò)C51單片機(jī)等一些器件的設(shè)計(jì)讓我學(xué)習(xí)和掌握了單片機(jī)技術(shù)
43、的基礎(chǔ)知識(shí)和技術(shù)要點(diǎn),也使以前學(xué)的很多知識(shí)都得到了運(yùn)用;另一方面在用Proteus軟件畫(huà)電路圖時(shí),然后再轉(zhuǎn)換成一維的WORD中進(jìn)行編輯,這個(gè)過(guò)程中讓我掌握了計(jì)算機(jī)輔助的設(shè)計(jì)技術(shù)。當(dāng)然,這是一個(gè)需要不斷的嘗試,不斷的校核,不斷的修改,最后完成一個(gè)合理的設(shè)計(jì)的過(guò)程。需要的是細(xì)心和耐心。在很大程度上培養(yǎng)了我拼搏的工作精神。使我受益匪淺,更加明確了自己專(zhuān)業(yè)的方向。</p><p> 通過(guò)本次課設(shè),我不僅學(xué)到了關(guān)于單片機(jī)
44、技術(shù)方面的許多專(zhuān)業(yè)知識(shí),同時(shí)也讓我感覺(jué)到團(tuán)隊(duì)合作的重要性。其實(shí)如何有效和快速的找到資料也是課設(shè)給我的啟發(fā),利用好圖書(shū)館和網(wǎng)絡(luò),是資源的到最好的利用。與他人交流思想是取得成功的關(guān)鍵,在交流中,不僅強(qiáng)化了自己原有的知識(shí)體系,也擴(kuò)展了自己的思維。課設(shè)是一個(gè)通過(guò)思考、發(fā)問(wèn)、自己解惑并動(dòng)手、提高的過(guò)程。我會(huì)在以后的學(xué)習(xí)中不斷學(xué)習(xí),積累經(jīng)驗(yàn),完善自己。</p><p> 這里我要感謝實(shí)驗(yàn)室的指導(dǎo)老師,沒(méi)有老師的細(xì)致講解和耐
45、心的檢查,也就沒(méi)有我的計(jì)算器出來(lái),非常感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1]徐愛(ài)鈞.智能化測(cè)量控制儀表原理與設(shè)計(jì)(第二版).北京航天航空大學(xué)出版社,2004.9 </p><p> [2]楊恢先 黃輝先著.單片機(jī)原理與應(yīng)用.人民郵電出版,2009.7</p><p> [3]
46、朱定華著.單片機(jī)原理與接口技術(shù).電子工業(yè)出版社,2001.4 </p><p> [4]王威著.HCS12微控制器原理及應(yīng)用.北京航空航天大學(xué)出版社,2007.10 </p><p> [5]龔運(yùn)新著.單片機(jī)C語(yǔ)言開(kāi)發(fā)技術(shù).北京清華大學(xué)出版社,2006.10 </p><p> [6]胡洪波著.單片機(jī)原理與應(yīng)用實(shí)驗(yàn)教程.湘潭大學(xué)出版社,2009.7</p
47、><p><b> 附 錄</b></p><p> 附錄一:計(jì)算器硬件連線圖</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是標(biāo)志為第一或者第二個(gè)操作數(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; //符號(hào)</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; //位選信號(hào)</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++); //顯示延時(shí)</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;} //判斷按鍵,含消抖過(guò)程。下同</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; //沒(méi)按鍵,返回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) //為第一個(gè)操作數(shù)</p><p><b> {</b></p><p
70、> if (s1==4) {cs=0;return ;}</p><p> else //輸入數(shù)字沒(méi)有四位,則左移一位</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) //輸入為符號(hào)</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; //保存輸入符號(hào)</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án)掃描到的值</p><p> if (cs==1 && sj!=10) chuli(sj);</p><p> if (cs==1 &&(bb==1 || bb==2 && s2==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ī)課程設(shè)計(jì)設(shè)計(jì)報(bào)告(多功能電子計(jì)算器設(shè)計(jì))
- 單片機(jī)課程設(shè)計(jì)報(bào)告---計(jì)算器
- 單片機(jī)計(jì)算器課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--計(jì)算器
- 單片機(jī)課程設(shè)計(jì)-計(jì)算器
- 課程設(shè)計(jì)-單片機(jī)計(jì)算器
- 單片機(jī)課程設(shè)計(jì)報(bào)告---簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)報(bào)告計(jì)算器2
- 單片機(jī)課程設(shè)計(jì)報(bào)告-簡(jiǎn)易計(jì)算器
- 簡(jiǎn)易計(jì)算器單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告計(jì)算器4
- 單片機(jī)課程設(shè)計(jì)——計(jì)算器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告-- 簡(jiǎn)易計(jì)算器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)---計(jì)算器實(shí)驗(yàn)
- 單片機(jī)課程設(shè)計(jì)-簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易計(jì)算器
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易計(jì)算器
- 基于單片機(jī)的計(jì)算器設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論