單片機(jī)課程設(shè)計(jì)報(bào)告--基于stc89c52單片機(jī)的實(shí)驗(yàn)平臺(tái)開(kāi)發(fā)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì) 報(bào) 告 </p><p>  課程名稱 單片機(jī)原理與應(yīng)用 </p><p>  設(shè)計(jì)題目 基于STC89C52單片機(jī)的實(shí)驗(yàn)平臺(tái)開(kāi)發(fā)設(shè)計(jì)</p><p>  專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  班 級(jí)

2、 </p><p>  學(xué) 號(hào) </p><p>  姓 名 </p><p>  完成日期 2013年6月25日 </p><p>

3、  基于STC89C52單片機(jī)的實(shí)驗(yàn)平臺(tái)開(kāi)發(fā)設(shè)計(jì)</p><p><b>  摘 要</b></p><p>  近幾十年間單片機(jī)憑借其控制功能強(qiáng),集成度高、可靠性高、體積小,低電壓、低能耗等特點(diǎn)在工業(yè)自動(dòng)化控制、自動(dòng)檢測(cè)、智能儀器儀表、家用電器、電力電子、機(jī)電一體化設(shè)備等各個(gè)方面得到了廣泛的應(yīng)用。</p><p>  由于單片機(jī)技術(shù)在各個(gè)領(lǐng)域

4、正得到越來(lái)越廣泛的應(yīng)用,許多集成電路生產(chǎn)廠 家相繼推出了各種類型的單片機(jī),在單片機(jī)家族的眾多成員中,MCS.51系列單片機(jī)以其優(yōu)越的性能、成熟的技術(shù)及高可靠性和高性能價(jià)格比,迅速占領(lǐng)了市場(chǎng), 成為國(guó)內(nèi)單片機(jī)應(yīng)用領(lǐng)域中的主流。目前,可用于 MCS.51 系列單片機(jī)開(kāi)發(fā)的產(chǎn)品越來(lái)越多,與其配套的各類開(kāi)發(fā)系統(tǒng)、各種軟件也日趨完善,因此可以極方便 地利用現(xiàn)有資源,開(kāi)發(fā)出用于不同目的的各類應(yīng)用系統(tǒng)。 利用STC 系列單片機(jī)作為微控制器開(kāi)發(fā)一套軟、

5、硬件相結(jié)合的單片機(jī)實(shí)驗(yàn)平臺(tái),在Keil C 環(huán)境下進(jìn)行軟件設(shè)計(jì),主要包括流水燈、數(shù)碼管顯示以及LCD 顯示模塊,在Protues 中仿真成功,下載到電路板中驗(yàn)證成功。實(shí)現(xiàn)流水燈正反向流動(dòng), 應(yīng)用中斷實(shí)現(xiàn)數(shù)碼管計(jì)數(shù)以及LCD 顯示不同字符的功能。</p><p>  關(guān)鍵詞: STC單片機(jī),實(shí)驗(yàn)平臺(tái),數(shù)碼管,流水燈</p><p>  STC89C52 microcontroller

6、0;comprehensive experimental </p><p>  board development design</p><p><b>  ABSTRACT</b></p><p>  This curriculum design using STC series single chip

7、 microcomputer as micro controller develop a set of software and hardware combination of SCM experiment platform, mainly through the circuit schematic diagram of the circuit and welding.The principle diagram of the main

8、including set LCD display module, serial communication module, digital tube display module, LED light emitting diode, keyboard interface circuit design.</p><p>  By using their knowledge of the single chip m

9、icrocomputer in the Keil C environment for software design.SCM experiment platform mainly includes water lamp, counter, timer, LCD character display, keyboard control of functional programming.Aiming at the development o

10、f the plate, we combine device selection, principle diagram design, hardware welding, software programming, the hardware and software debugging alignment and test the program SCM experiment platform.</p><p>

11、  KEYWORDS: STC microcontroller, comprehensive experimental board, software and hardware combined with, and the program development design</p><p><b>  目 錄</b></p><p><b>  摘 要I

12、</b></p><p><b>  目 錄III</b></p><p><b>  前 言1</b></p><p>  第1章系統(tǒng)概述2</p><p>  1.1設(shè)計(jì)題目2</p><p>  1.2系統(tǒng)設(shè)計(jì)目的和內(nèi)容2</p>

13、<p>  1.2.1設(shè)計(jì)目的2</p><p>  1.2.2設(shè)計(jì)內(nèi)容2</p><p>  1.2.3設(shè)計(jì)要求2</p><p>  1.2.4設(shè)計(jì)步驟2</p><p>  第2章整體設(shè)計(jì)方案3</p><p>  2.1開(kāi)發(fā)板整體外觀3</p><p&g

14、t;  2.2整板電路PROTUES仿真電路4</p><p>  2.3軟件功能描述4</p><p>  2.4仿真軟件PROTUES中的效果圖5</p><p>  第3章硬件電路設(shè)計(jì)7</p><p>  3.1兩位一體共陰數(shù)碼管7</p><p>  3.1.1數(shù)碼管概述7</p&

15、gt;<p>  3.1.2數(shù)碼管內(nèi)部結(jié)構(gòu)7</p><p>  3.1.3兩位一體共陰數(shù)碼管和74LS374鎖存器接口電路8</p><p>  3.2LCD1602液晶9</p><p>  3.2.1LCD1602液晶簡(jiǎn)介9</p><p>  3.2.2LCD1602液晶引腳介紹10</p>

16、;<p>  3.2.3LCD1602液晶外圍接口電路10</p><p>  3.3 串口通信11</p><p>  3.3.1串口通訊概述11</p><p>  3.3.2MAX232接口電路11</p><p>  第4章軟件設(shè)計(jì)13</p><p>  4.1程序整體流程圖

17、13</p><p>  4.2程序清單13</p><p>  第5章調(diào)試及故障分析18</p><p>  5.1 焊接準(zhǔn)備階段元器件測(cè)試、電路原理圖故障分析18</p><p>  5.2 電路焊接過(guò)程中的故障分析18</p><p>  5.3 程序編寫過(guò)程中的故障分析18</p>&

18、lt;p>  5.4 實(shí)物演示效果19</p><p><b>  結(jié)論21</b></p><p><b>  謝辭22</b></p><p><b>  參考文獻(xiàn)23</b></p><p><b>  附 錄24</b></p

19、><p><b>  前 言</b></p><p>  1946 年第一臺(tái)電子計(jì)算機(jī)誕生至今,依靠微電子技術(shù)和半導(dǎo)體技術(shù) 的進(jìn)步, 從電子管——晶體管——集成電路——大規(guī)模集成電路, 使得計(jì)算機(jī)體積更小, 功能更強(qiáng)。特別是近20 年時(shí)間里,計(jì)算機(jī)技 術(shù)獲得飛速的發(fā)展,計(jì)算機(jī)在工農(nóng)業(yè), 科研,教育,國(guó)防和航空航 天領(lǐng)域獲得了廣泛的應(yīng)用,計(jì)算機(jī)技術(shù)已經(jīng)是一個(gè)國(guó) 家現(xiàn)代科技水

20、 平的重要標(biāo)志。 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難 找到哪個(gè)領(lǐng)域沒(méi)有單片機(jī) 的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀 表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳 輸,工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí) 控制和數(shù)據(jù)處理,廣泛使用的各種智能IC 卡,民用豪 華轎 車的安 全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具 、 電子寵物等等,這些都離不開(kāi)單片機(jī)。更不用說(shuō)自動(dòng)控制領(lǐng)域的 機(jī)器人、智能儀 表、醫(yī)療器械了。因此,單片機(jī)的學(xué)習(xí)、開(kāi)發(fā)與應(yīng)

21、用將造就一批計(jì)算機(jī)應(yīng)用 與智 能化控制的科學(xué)家、工程師。 單片 機(jī)應(yīng)用的意義不僅在于它的廣闊范圍及所帶來(lái)的經(jīng)濟(jì)效益,更重要的 意 義在于,單片機(jī)的應(yīng)用從根本上改變了控制系統(tǒng)傳統(tǒng)的設(shè)計(jì)思想 和設(shè)計(jì)方法。以 前采用硬件電路實(shí)現(xiàn)的大部分控制功能,正在</p><p><b>  系統(tǒng)概述</b></p><p><b>  設(shè)計(jì)題目</b></p

22、><p>  基于51系列單片機(jī)的實(shí)驗(yàn)平臺(tái)開(kāi)發(fā)設(shè)計(jì)</p><p><b>  系統(tǒng)設(shè)計(jì)目的和內(nèi)容</b></p><p><b>  設(shè)計(jì)目的</b></p><p>  通過(guò)這次課程設(shè)計(jì),掌握一定的焊接技巧,能夠提高學(xué)生們的動(dòng)手能力,學(xué)會(huì)軟硬件結(jié)合使用,同時(shí)提高獨(dú)立解決問(wèn)題的能力,增強(qiáng)對(duì)單片機(jī)的興趣

23、愛(ài)好。</p><p><b>  設(shè)計(jì)內(nèi)容</b></p><p>  利用STC系列單片機(jī)作為微控制器開(kāi)發(fā)一套軟、硬件相結(jié)合的單片機(jī)實(shí)驗(yàn)平臺(tái),設(shè)計(jì)內(nèi)容主要包括以下幾點(diǎn):</p><p>  1、 設(shè)計(jì)電路原理圖,本次實(shí)驗(yàn)中為 LCD 顯示模塊、數(shù)碼管顯示模塊、 LED 發(fā)光二極管的流水燈模塊三種模塊的設(shè)計(jì)。 </p><

24、p>  2、 在 keil 環(huán)境下,進(jìn)行軟件設(shè)計(jì),把 LCD 顯示、數(shù)碼管顯示、流水燈 的相關(guān)功能控制程序編寫出來(lái)。 把設(shè)計(jì)的原理圖在 Protus 中仿真出來(lái) 并用程序完成相關(guān)功能控制。 </p><p>  3、 由老師講解元器件的識(shí)別及焊接方法后學(xué)生自己按照原理圖進(jìn)行焊接。</p><p>  4、經(jīng)老師檢查通過(guò)后連接計(jì)算機(jī)輸入已編好的程序,并觀察實(shí)物的功能實(shí)現(xiàn)情況。</

25、p><p><b>  設(shè)計(jì)要求 </b></p><p><b>  要求主要如下幾點(diǎn):</b></p><p>  1、能夠自我識(shí)別元器件,說(shuō)出元器件名稱及功能,掌握電路工作原理, 明白設(shè)計(jì)的每一個(gè)程序并能解釋清楚。</p><p>  2、掌握一定的焊接技術(shù),掌握一定的技巧。能夠合作完成整個(gè)電路的

26、焊接,掌握故障排除方法,完成實(shí)驗(yàn)平臺(tái)的硬件設(shè)計(jì)及開(kāi)發(fā)。 </p><p>  3、能實(shí)現(xiàn)單片機(jī)板上要求實(shí)現(xiàn)的功能并知道如何調(diào)試,最好能夠做出花樣,完成最后的課程設(shè)計(jì)答辯。</p><p><b>  設(shè)計(jì)步驟</b></p><p>  先在 Protus 中仿真實(shí)驗(yàn)并成功通過(guò)測(cè)試,之后在老師的指導(dǎo)下根據(jù)三人分成的小組合作把 LCD 顯示器、數(shù)

27、碼管、LED 二極管及開(kāi)關(guān)電容等部分焊接到電路板上,最后把設(shè)計(jì)好的 keil 程序下載到電路板上。完成后根據(jù)要求寫出設(shè)計(jì)報(bào)告并完成課程設(shè)計(jì)的答辯。</p><p><b>  整體設(shè)計(jì)方案</b></p><p><b>  開(kāi)發(fā)板整體外觀</b></p><p>  圖2.1.1 開(kāi)發(fā)板正面外觀圖</p>

28、<p>  圖2.1.2 開(kāi)發(fā)板反面外觀圖</p><p>  整板電路PROTUES仿真電路</p><p>  圖2.2.1 電路板仿真圖</p><p><b>  軟件功能描述</b></p><p>  該電路可以通過(guò)第一個(gè)按鍵(P32, 即電路板上的中斷0)實(shí)現(xiàn)對(duì)流水燈的控制操作,逐次點(diǎn)亮各個(gè)

29、二極管;通過(guò)第二個(gè)按鍵(P33,即電路板上的中斷1)實(shí)現(xiàn)對(duì)LCD的控制;通過(guò)第三個(gè)按鍵(P34,即電路板上的定時(shí)0)實(shí)現(xiàn)對(duì)定時(shí)器的控制,定時(shí)器使用定時(shí)方式2實(shí)現(xiàn)每隔一秒數(shù)碼管顯示加1;通過(guò)第四個(gè)按鍵(P35, 即電路板上的定時(shí)1)實(shí)現(xiàn)對(duì)計(jì)數(shù)器的控制操作。</p><p>  仿真軟件PROTUES中的效果圖</p><p>  圖2.4.1 流水燈顯示</p><p&

30、gt;  圖2.4.2 計(jì)數(shù)器顯示</p><p>  圖2.4.3 計(jì)數(shù)器顯示</p><p>  圖2.4.4 LCD顯示</p><p><b>  硬件電路設(shè)計(jì)</b></p><p>  3.1兩位一體共陰數(shù)碼管</p><p><b>  數(shù)碼管概述</b>

31、</p><p>  數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管,共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某

32、一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。</p><p><b>  數(shù)碼管內(nèi)部結(jié)構(gòu)</b></p><p>  8段LED數(shù)碼管如圖所示:&l

33、t;/p><p>  圖3.1.1 8段LED數(shù)碼管結(jié)構(gòu)及外形</p><p>  LED數(shù)碼管通過(guò)7個(gè)發(fā)光二極管亮暗的不同組合可以顯示各種數(shù)字,另外一個(gè)圓的型發(fā)光二級(jí)管(圖3.1.1(a)中以dp顯示)顯示小數(shù)點(diǎn)。只要為L(zhǎng)ED數(shù)碼管提供了段碼就可以顯示不同的符號(hào)和數(shù)字。LED數(shù)碼管共計(jì)8段。正好是一個(gè)字節(jié)。習(xí)慣上是以“a”段對(duì)應(yīng)段碼字節(jié)的最低位。各段與字節(jié)中各位對(duì)應(yīng)關(guān)系如表3-1所示。

34、</p><p>  表3-1 段碼與字節(jié)中各位對(duì)應(yīng)關(guān)系</p><p>  按照表3-1中的格式,顯示各種字符的8段LED數(shù)碼管的段碼如表3-2所示(以共陰極為例)。</p><p>  表3-2 8段LED數(shù)碼管段碼</p><p>  兩位一體共陰數(shù)碼管和74LS374鎖存器接口電路</p><p>  圖

35、3.1.2 數(shù)碼管外部結(jié)構(gòu) 圖3.1.3 數(shù)碼管外部結(jié)構(gòu)</p><p>  圖3.1.4 數(shù)碼管與74LS374鎖存器接口仿真電路</p><p><b>  LCD1602液晶</b></p><p>  LCD1602液晶簡(jiǎn)介</p><p>  工業(yè)字符型液晶,能夠同時(shí)顯示16x0

36、2即32個(gè)字符。(16列2行)。1602液晶也叫1602字符型液晶,它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符

37、和數(shù)字)。</p><p>  圖3.2.1 LCD液晶顯示器外觀</p><p>  LCD1602液晶引腳介紹</p><p>  LCD1602液晶共有16個(gè)引腳:</p><p>  第1腳:VSS為地電源。</p><p>  第2腳:VDD接5V正電源。</p><p>  第3腳:

38、VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。</p><p>  第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。</p><p>  第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低

39、電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。</p><p>  第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p>  第15腳:背光源正極。</p><p>  第16腳:背光源負(fù)極。</p>

40、<p>  LCD1602液晶外圍接口電路 </p><p>  圖3.2.2 LCD1602液晶在仿真電路中的連接</p><p><b>  3.3 串口通信</b></p><p><b>  串口通訊概述</b></p><p>  隨著計(jì)算機(jī)系統(tǒng)的應(yīng)用和微機(jī)網(wǎng)絡(luò)的發(fā)展,通信功能

41、越來(lái)越顯得重要。這里所說(shuō)的通信是指計(jì)算機(jī)與外界的信息交換。因此,通信既包括計(jì)算機(jī)與外部設(shè)備之間,也包括計(jì)算機(jī)和計(jì)算機(jī)之間的信息交換。由于串行通信是在一根傳輸線上一位一位的傳送信息,所用的傳輸線少,并且可以借助現(xiàn)成的電話網(wǎng)進(jìn)行信息傳送。因此,特別適合于遠(yuǎn)距離傳輸。</p><p>  由于 CPU 與接口之間按并行方式傳輸,接口與外設(shè)之間按串行方式傳輸,因此,在串行接口中,必須要有 " 接收移位寄存器 &

42、quot; (串→并)和 " 發(fā)送移位寄存器 " (并→串)。 在數(shù)據(jù)輸入過(guò)程中,數(shù)據(jù) 1 位 1 位地從外設(shè)進(jìn)入接口的 " 接收移位寄存器 ",當(dāng) " 接收移位寄存器 " 中已接收完 1 個(gè)字符的各位后,數(shù)據(jù)就從 " 接收移位寄存器 " 進(jìn)入 " 數(shù)據(jù)輸入寄存器 " 。 CPU 從 " 數(shù)據(jù)輸入寄存器 " 中讀取接收

43、到的字符。(并行讀取,即 D7~D0 同時(shí)被讀至累加器中)。 " 接收移位寄存器 " 的移位速度由 " 接收時(shí)鐘 " 確定。</p><p>  在數(shù)據(jù)輸出過(guò)程中,CPU 把要輸出的字符(并行地)送入 " 數(shù)據(jù)輸出寄存器 "," 數(shù)據(jù)輸出寄存器 " 的內(nèi)容傳輸?shù)?" 發(fā)送移位寄存器 ",然后由 " 發(fā)送移

44、位寄存器 " 移位,把數(shù)據(jù) 1 位 1 位地送到外設(shè)" 發(fā)送移位寄存器 " 的移位速度由 " 發(fā)送時(shí)鐘 " 確定。</p><p>  接口中的 " 控制寄存器 " 用來(lái)容納 CPU 送給此接口的各種控制信息,這些控制信息決定接口的工作方式。</p><p>  " 狀態(tài)寄存器 " 的各位稱為 &qu

45、ot; 狀態(tài)位 ",每一個(gè)狀態(tài)位都可以用來(lái)指示數(shù)據(jù)傳輸過(guò)程中的狀態(tài)或某種錯(cuò)誤。例如,用狀態(tài)寄存器的 D5 位為 "1" 表示 " 數(shù)據(jù)輸出寄存器 " 空,用 D0 位表示 " 數(shù)據(jù)輸入寄存器滿 ",用 D2 位表示 " 奇偶檢驗(yàn)錯(cuò) " 等。</p><p>  MAX232接口電路</p><p> 

46、 如圖3.2.1為MAX232接口電路圖。下面是對(duì)引腳的介紹:第一部分是電荷泵電路。第二部分是數(shù)據(jù)轉(zhuǎn)換通道。第三部分是供電。15腳GND、16腳VCC(+5v)。</p><p>  圖3.2.1 MAX232接口電路圖</p><p><b>  軟件設(shè)計(jì)</b></p><p>  4.1程序整體流程圖</p><p

47、><b>  4.2程序清單 </b></p><p>  /*本程序可實(shí)現(xiàn):按下中斷0流水燈工作;按下中斷1,LCD工作;</p><p>  按下定時(shí)0定時(shí)器開(kāi)始工作;按下定時(shí)1計(jì)數(shù)器開(kāi)始工作*/</p><p>  #include <reg51.h></p><p>  char led[]={

48、0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //從0到F的字模</p><p>  0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};</p><p>  char led_key1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//控制流水燈</p><p

49、>  sbit P34=P3^4;//定義位變量</p><p>  sbit P32=P3^2;//定義位變量</p><p>  sbit P35=P3^5;//定義位變量</p><p>  int m,n,k=0,count1=0,count2=0;</p><p>  sbit RS=P1^6;//定義位變量</p>

50、;<p>  sbit RW=P1^7;//定義位變量</p><p>  sbit E=P1^5;//定義位變量</p><p>  unsigned char LCD_Status;</p><p>  unsigned char num[]="0123456789"; </p><p>  void d

51、elay(unsigned int count)//延時(shí)函數(shù)</p><p>  { unsigned char i;</p><p>  while(count--)</p><p>  for(i=0; i<120; i++);</p><p><b>  }</b></p><p>

52、  unsigned char Busy_Check() //檢查忙函數(shù)</p><p>  { RS = 0; RW = 1; //RS=0,控制寄存器,RW=1,讀</p><p><b>  E = 1;</b></p><p><b>  P2=0x50; </b></p><p&g

53、t;<b>  delay(2);</b></p><p>  LCD_Status = P0;</p><p><b>  delay(2);</b></p><p><b>  P2=0xe0;</b></p><p>  return LCD_Status;</p&

54、gt;<p><b>  }</b></p><p>  void wcmd(unsigned char cmd) //寫命令函數(shù), RS=0;RW=0</p><p>  { // & 0x80取出最高位D7,見(jiàn)命令9(讀忙標(biāo)志BF及光標(biāo)地址AC命令格式)</p><p>  while((Busy_Check()

55、&0x80) == 0x80); // 寫命令前,先檢查設(shè)備是否忙?</p><p>  RS=0;RW=0; // 指令寄存器寫入</p><p>  E=1; // E設(shè)置為高電平</p><p><b>  P2=0x50;</b></p><p>  P0=cmd;

56、// 命令由P1口送入LCD</p><p><b>  delay(2);</b></p><p>  P2=0xe0; // E由高電平到低電平跳變,液晶模塊執(zhí)行命令</p><p><b>  }</b></p><p>  void wdat(unsigned char

57、dat) //寫數(shù)據(jù)函數(shù), RS=1;RW=0</p><p><b>  {</b></p><p>  while ((Busy_Check() & 0x80) == 0x80); // 寫數(shù)據(jù)前,先檢查設(shè)備是否忙?</p><p>  RS=1;RW=0; </p><p>  E=1;

58、 // E由高電平到低電平跳變,液晶模塊執(zhí)行命令</p><p><b>  P2=0x50;</b></p><p>  P0=dat; // 數(shù)據(jù)由P1口送入LCD</p><p>  delay( 2); // 延時(shí)大約2ms</p><p><b&

59、gt;  P2=0xe0;</b></p><p><b>  }</b></p><p>  void init() // 初始化函數(shù),主要寫命令</p><p>  { wcmd(0x38); //38H=0011 1000,使用8位,用5×7的字型【命令6】</p><p>  dela

60、y(20); //改為0x3C=0011 1100,就用5×10字型</p><p>  wcmd(0x01); //01H=0000 0001,清屏【命令1】</p><p>  delay(20);</p><p>  wcmd(0x06); //06H=0000 0110,字符不動(dòng),光標(biāo)自動(dòng)右移一格【命令3】</p>

61、<p>  delay(20);</p><p>  wcmd(0x0e); //0eH=0000 1110,開(kāi)顯示,有光標(biāo),字符不閃爍【命令4】</p><p>  delay(20);</p><p><b>  }</b></p><p><b>  //定時(shí)器中斷</b><

62、;/p><p>  time_key3 () interrupt 1</p><p><b>  {</b></p><p><b>  count2++;</b></p><p>  if(count2%4000==0)//每次中斷250微秒,中斷4000次即一秒</p><p&

63、gt;<b>  {k++;</b></p><p>  m=k/10;//存儲(chǔ)十位數(shù)字</p><p>  n=k%10;//存儲(chǔ)個(gè)位數(shù)字</p><p><b>  P2=0x80;</b></p><p>  P0=led[m];delay(1); //顯示十位數(shù)字</p>&l

64、t;p><b>  P2=0x00;</b></p><p>  P0=led[n];delay(1);//顯示個(gè)位數(shù)字</p><p><b>  }</b></p><p>  if(k==20)k=0;//定時(shí)20秒,循環(huán)</p><p><b>  }</b>&l

65、t;/p><p><b>  //流水燈中斷</b></p><p>  light_key1() interrupt 0 </p><p><b>  {</b></p><p><b>  char i,j;</b></p><p>

66、  for(j=0;j<=1;j++)</p><p><b>  {</b></p><p>  for(i=0;i<=7;i++) //自上而下逐個(gè)點(diǎn)亮</p><p>  { P2=led_key1[i];delay(100);}</p><p>  for(i=7;i>=0;i--) /

67、/自下而上逐個(gè)點(diǎn)亮</p><p>  { P2=led_key1[i];delay(100);}</p><p><b>  }</b></p><p><b>  P2=0xff; </b></p><p><b>  }</b></p><p>

68、<b>  //計(jì)數(shù)器中斷</b></p><p>  counter_key4() interrupt 3</p><p>  { delay(10);</p><p>  if(P35==0) //用于消抖</p><p>  count1++;//每進(jìn)行一次中斷計(jì)數(shù)器加1</p><p>

69、  if(count1>0x0f) count1=0;//計(jì)數(shù)器到十五 之后從0重新開(kāi)始</p><p>  P0=led[count1];//P2口輸出顯示計(jì)數(shù)器對(duì)應(yīng)數(shù)值</p><p>  delay(200);</p><p><b>  }</b></p><p>  //LCD中斷 顯示1.light

70、2.LCD 3.time 4.count</p><p><b>  //</b></p><p>  LCD_key2() interrupt 2 //K1斷函數(shù) </p><p><b>  {</b></p><p>  init(); //0x80,見(jiàn)命令8(顯示緩沖區(qū)

71、DDRAM地址設(shè)置命令格式)</p><p>  wcmd(0x80+0x00); //寫入顯示緩沖區(qū)起始地址為第1行第1列</p><p>  wdat('1'); </p><p>  wdat('.'); </p><p>  wdat('l');

72、 </p><p>  wdat('i'); </p><p>  wdat('g');</p><p>  wdat('h');</p><p>  wdat('t');</p><p>  wdat(' '

73、;);</p><p>  wdat('2');</p><p>  wdat('.');</p><p>  wdat('L');</p><p>  wdat('C');</p><p>  wdat('D');</p>

74、<p>  //【80H+45H=C5H】</p><p>  wcmd(0x80+0x40); //寫入顯示緩沖區(qū)起始地址為第2行第1列</p><p>  wdat('3');</p><p>  wdat('.');</p><p>  wdat ('t'); &

75、lt;/p><p>  wdat ('i'); </p><p>  wdat ('m'); </p><p>  wdat('e');</p><p>  wdat(' ');</p><p>  wdat(' 

76、9;);</p><p>  wdat('4');</p><p>  wdat('.');</p><p>  wdat('c');</p><p>  wdat('o');</p><p>  wdat('u');</p>

77、<p>  wdat('n');</p><p>  wdat('t');</p><p><b>  ET1=0;</b></p><p><b>  TR1=0;</b></p><p><b>  }</b></p>

78、<p><b>  //主函數(shù)</b></p><p>  void main()</p><p><b>  {</b></p><p>  TMOD=0x22;</p><p>  TH0=0x06;//定時(shí)器計(jì)數(shù)初值為6</p><p><b>

79、  TL0=0x06;</b></p><p>  TH1=206; //計(jì)數(shù)器計(jì)數(shù)初值為206</p><p><b>  TL1=206;</b></p><p>  EA=1; //開(kāi)中斷</p><p>  ET0=1; //定時(shí)0中斷允許</p><p>  P0=

80、led[0];</p><p>  IT0=1; //脈沖觸發(fā)方式</p><p>  ET1=1; //定時(shí)1中斷允許</p><p>  IT1=1; //脈沖觸發(fā)方式</p><p>  EX1=1; //中斷1中斷允許</p><p>  P0=0x00;//開(kāi)機(jī)時(shí)LED1滅燈</p>&

81、lt;p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(P34==0) //定時(shí)</p><p><b>  TR0=1;</b></p><p>  if(P32==0)//流水燈</p>&l

82、t;p><b>  EX0=1;</b></p><p>  if(P35==0)//計(jì)數(shù)</p><p><b>  TR1=1;</b></p><p><b>  }</b></p><p><b>  }</b></p>&l

83、t;p><b>  調(diào)試及故障分析</b></p><p>  5.1 焊接準(zhǔn)備階段元器件測(cè)試、電路原理圖故障分析</p><p>  對(duì)元器件的測(cè)試,錯(cuò)誤主要在于我們對(duì)元器件的了解不是很全面很熟悉,無(wú)法進(jìn)行正確的測(cè)量,從而導(dǎo)致錯(cuò)誤。所以我們要在以后的學(xué)習(xí)中要多注意一些元器件的了解和掌握。</p><p>  在Proteus仿真軟件中畫

84、出電路原理圖,剛開(kāi)始總是提示有一些錯(cuò)誤,這時(shí)可以把程序下載到單片機(jī)中,但是卻無(wú)法運(yùn)行,仿真。這是因?yàn)橛行┒丝跊](méi)有連接好,或者端口的命名不對(duì),解決的辦法是先畫出最簡(jiǎn)單的基本原理圖,等基本的原理圖能夠下載運(yùn)行之后再進(jìn)行其它元器件的添加。</p><p>  5.2 電路焊接過(guò)程中的故障分析</p><p>  在這次焊接過(guò)程中,不需要做連線的工作,所以相對(duì)來(lái)說(shuō)還是難度小了很多,不過(guò)在焊接過(guò)程中

85、難免還是會(huì)遇到一些問(wèn)題,我們小組出現(xiàn)了下列一些現(xiàn)象:</p><p>  1.焊接出現(xiàn)錯(cuò)誤,這是因?yàn)楹附忧白龅臏?zhǔn)備工作不好,對(duì)電路原理圖的理解不夠深入,比如我們?cè)诤附訒r(shí)將5.1K的排阻與1K的排阻弄錯(cuò)位置了,還好沒(méi)有影響最終的實(shí)驗(yàn)效果。</p><p>  2.元器件擺放位置不是很清楚,比如各個(gè)按鍵和開(kāi)關(guān)的引腳應(yīng)該怎樣擺放不明白,元器件未經(jīng)過(guò)檢查是否能用或者是否合適,這是自己對(duì)元器件了解的

86、不全面,應(yīng)該多多積累經(jīng)驗(yàn),多多學(xué)習(xí)。</p><p>  3.電路出現(xiàn)虛焊,導(dǎo)致電路運(yùn)行效果不好,這是因?yàn)楹附蛹夹g(shù)沒(méi)有達(dá)到完美的標(biāo)準(zhǔn)。</p><p>  4.焊烙鐵的使用方法和對(duì)焊烙鐵的檢測(cè)。</p><p>  5.在焊接時(shí)可能是把焊盤弄壞了,最終調(diào)試時(shí)我們的一個(gè)二極管沒(méi)能正常工作,不過(guò)最終我們做了補(bǔ)救工作,將其連接到了其相應(yīng)的其他位置,使其仍能正常工作。<

87、;/p><p>  5.3 程序編寫過(guò)程中的故障分析</p><p>  在焊接電路板之前我們已經(jīng)進(jìn)行了仿真實(shí)驗(yàn),在焊接好電路板之后又進(jìn)一步做了一些修改,以下是編程序時(shí)遇到的一些小問(wèn)題:</p><p>  1.在編寫程序時(shí),我是將其分為了四個(gè)小模塊,編寫了四個(gè)小程序,都實(shí)現(xiàn)后在將其合到一塊,也是因?yàn)檫@樣,因?yàn)樽约旱目紤]不夠周密,在此過(guò)程中出現(xiàn)了一些問(wèn)題,不過(guò)最終細(xì)心地

88、檢查,最終逐步將各個(gè)錯(cuò)誤解決了。</p><p>  2.仿真與實(shí)際效果是有區(qū)別的,我在做好仿真程序后,將其下載到實(shí)物中時(shí)發(fā)現(xiàn)其計(jì)數(shù)功能不能正常使用,當(dāng)按下按鍵時(shí),其計(jì)數(shù)功能總是跳躍式的,而不是正常的加1,最終才想到我應(yīng)該使用消抖,而在消抖時(shí)又發(fā)現(xiàn)此功能實(shí)現(xiàn)我用的是中斷而非定時(shí),最終調(diào)整了按鍵P32和按鍵P34的功能實(shí)現(xiàn),又在計(jì)數(shù)時(shí)使用了消抖才解決此問(wèn)題。</p><p>  5.4 實(shí)物

89、演示效果</p><p>  圖5.4.1 流水燈功能實(shí)現(xiàn)</p><p>  圖5.4.2 LCD功能實(shí)現(xiàn)</p><p>  圖5.4.3 定時(shí)器功能實(shí)現(xiàn)</p><p>  圖5.4.4 計(jì)數(shù)器功能實(shí)現(xiàn)</p><p><b>  結(jié)論</b></p><p>

90、;  以前單片機(jī)課上曾經(jīng)做過(guò)幾次實(shí)驗(yàn),所以對(duì)一些簡(jiǎn)單的proteus和keil軟件已經(jīng)很熟悉了,對(duì)一些簡(jiǎn)單的電路能夠獨(dú)立編寫程序,設(shè)計(jì)出電路圖了,但跟這次課程設(shè)計(jì)相比,這次的課程設(shè)計(jì)才是更加讓體會(huì)到了硬件的實(shí)用,讓我們接觸到了實(shí)物,使我們從最初的原理到最終的產(chǎn)品完成制作有了更加深刻的認(rèn)識(shí)與了解,也因此我增加了單片機(jī)學(xué)習(xí)興趣。</p><p>  在這次單片機(jī)的課程設(shè)計(jì)過(guò)程中我可以說(shuō)還是收獲良多的。首先對(duì)于課堂上學(xué)

91、習(xí)的知識(shí)其實(shí)有很多都已經(jīng)不再熟悉,已經(jīng)忘記了很多相關(guān)知識(shí),通過(guò)實(shí)習(xí)對(duì)以往的知識(shí)起到了很好的復(fù)習(xí)作用。另外對(duì)于我的編程能力來(lái)說(shuō),也是有所進(jìn)步的,以往的實(shí)驗(yàn)課都是做一些功能單一的簡(jiǎn)單的電路,而這次則是可以實(shí)現(xiàn)多個(gè)功能,程序比以往的要復(fù)雜一些,也因此是我對(duì)中斷、定時(shí)等一些知識(shí)又復(fù)習(xí)了一次。</p><p>  在課程設(shè)計(jì)的焊接電路板環(huán)節(jié)我們是按照小組合作焊接電路板的,我們小組三個(gè)人都盡心為了我們共同的成功做了努力,還好

92、我們的電路板最終還算是理想的。在焊接過(guò)程中,我們都動(dòng)手嘗試了一下焊接操作,我的動(dòng)手能力還算可以吧,不過(guò)還是我們小組的廣帥焊接技術(shù)比較好,焊的又好又快。焊接的過(guò)程中我們還是出了一點(diǎn)小問(wèn)題的,比如我們不小心把兩個(gè)不同阻值的排阻焊接位置弄反了,不過(guò)最終并沒(méi)有影響調(diào)試效果,另外,我們的二極管在調(diào)試過(guò)程中有一個(gè)沒(méi)有正常點(diǎn)亮,可能是焊板被弄壞了,最終我們調(diào)整了此二極管的焊接位置,使其恢復(fù)了正常工作。總的來(lái)說(shuō),我們的合作還是很默契的,經(jīng)過(guò)我們的共同努

93、力,功夫不負(fù)有心人,電路板順利完成焊接。在這次課設(shè)焊接過(guò)程中我意識(shí)到團(tuán)隊(duì)合作還是很重要的,以后要多多注意與人的互動(dòng)能力。</p><p>  在以往的單片機(jī)實(shí)驗(yàn)課上每次都能獨(dú)立完成程序的編寫,所以這次程序的編寫相對(duì)來(lái)說(shuō)并不是很難,盡管在編程的過(guò)程中還是出現(xiàn)了諸多問(wèn)題。在實(shí)驗(yàn)過(guò)程中,發(fā)現(xiàn)仿真與實(shí)際效果真的是有區(qū)別的,為此,我在仿真程序運(yùn)行正常的情況下將程序下載到實(shí)物里沒(méi)能正常運(yùn)行,只好重新改寫了程序。</p&

94、gt;<p>  總之,在這次課程設(shè)計(jì)過(guò)程中學(xué)到了很多,每學(xué)期的課程設(shè)計(jì)還是很有必要的,所以,希望以后多多有類似的學(xué)習(xí)活動(dòng)。通過(guò)課設(shè),我對(duì)單片機(jī)更加感興趣了,更加助長(zhǎng)了我的學(xué)習(xí)欲望。</p><p><b>  謝辭</b></p><p>  這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多編程問(wèn)題,最后在老師的辛勤指導(dǎo)和同學(xué)的幫組下迎刃而解。同時(shí),在老

95、師那里我學(xué)得到很多實(shí)用的知識(shí)以及她的認(rèn)真嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,讓我終生受益!同時(shí),對(duì)給過(guò)我?guī)椭耐瑢W(xué)再次表示忠心的感謝!在這次課程設(shè)計(jì)中,我要向幫助我的指導(dǎo)老師xx老師表示衷心的感謝,感謝你們?cè)诎倜χ谐槌鰰r(shí)間指導(dǎo)我們的課程設(shè)計(jì),你們的淵博知識(shí),嚴(yán)謹(jǐn)?shù)闹螌W(xué)風(fēng)格,對(duì)學(xué)生無(wú)私的關(guān)愛(ài)將會(huì)對(duì)我未來(lái)產(chǎn)生深淵的影響。同時(shí)也要感謝我的同學(xué),雖然我們編的程序不一樣,但是當(dāng)我遇到問(wèn)題時(shí),他們總能認(rèn)真的幫我分析問(wèn)題并耐心的跟我講解;還要感謝我的隊(duì)友們,沒(méi)有你們的

96、積極配合和熱情幫助,這次課程設(shè)計(jì)不會(huì)完成的這么順利。感謝老師您為我們提供了這次動(dòng)手鍛煉的機(jī)會(huì),為同學(xué)們營(yíng)造的濃郁的學(xué)習(xí)氛圍以及在學(xué)習(xí)上提供的無(wú)私幫助!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]李蒙 毛建東編 單片機(jī)原理及應(yīng)用[M]. 北京:中國(guó)輕工業(yè)出版社, 2010</p><p>  [2]林立 張俊亮編

97、單片機(jī)原理及應(yīng)用——基于Proteus和Keil[M]. 電子工業(yè)出版社,2012</p><p>  [3]張靜,李海編 Proteus在單片機(jī)教學(xué)中的應(yīng)用[J]. 中國(guó)西部科技出版社,2008.</p><p>  [4]譚浩強(qiáng)編  C程序設(shè)計(jì)(第三版). 清華大學(xué)出版社, 2005.7.</p><p>  [5]侯增強(qiáng)編

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論