畢業(yè)設(shè)計(論文)基于單片機的八路搶答器的設(shè)計_第1頁
畢業(yè)設(shè)計(論文)基于單片機的八路搶答器的設(shè)計_第2頁
畢業(yè)設(shè)計(論文)基于單片機的八路搶答器的設(shè)計_第3頁
畢業(yè)設(shè)計(論文)基于單片機的八路搶答器的設(shè)計_第4頁
畢業(yè)設(shè)計(論文)基于單片機的八路搶答器的設(shè)計_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、畢業(yè)設(shè)計(論文)課題: 基于單片機的搶答器設(shè)計學(xué)生: 系部: 電子信息系班級: 電信095 學(xué)號: 指導(dǎo)教師: 裝訂交卷日期:2012年4月23日裝訂順序: (1)封面(2)畢業(yè)設(shè)計(論文)成績評定記錄(3)標題、中文摘要及關(guān)鍵詞(4)正文(5)附錄(6)參考文獻畢業(yè)設(shè)計(論文)成績評定記錄表指導(dǎo)教師評語(包含學(xué)生在畢業(yè)實習(xí)期間的表現(xiàn)):成績(平時成績): 指導(dǎo)教師簽名:年 月 日評閱教師評語:成績(評閱成績): 指導(dǎo)教師簽名:年 月 日總評成績:注:1.此表適用于不參加畢業(yè)答辯學(xué)生的畢業(yè)設(shè)計(論文)成績評定;2.平時成績占40%、卷面評閱成績占60%,在上面的評分表中,可分別按40分、60分

2、來量化評分,二項相加所得總分即為總評成績,總評成績請轉(zhuǎn)換為優(yōu)秀、良好、中等、及格、不及格五等級計分。教務(wù)處制畢業(yè)設(shè)計(報告)成績評定記錄表指導(dǎo)教師評語(包含學(xué)生在畢業(yè)實習(xí)期間的表現(xiàn)):成績(平時成績): 指導(dǎo)教師簽名:年 月 日評閱教師評語:成績(評閱成績): 評閱教師簽名:年 月 日答辯情況記錄:答辯成績:答辯委員會主任(或答辯教師小組組長)簽名:年 月 日總評成績:注:1.此表適用于參加畢業(yè)答辯學(xué)生的畢業(yè)設(shè)計(報告)成績評定;2.平時成績占20%、卷面評閱成績占50%、答辯成績占30%,在上面的評分表中,可分別按20分、50分、30分來量化評分,三項相加所得總分即為總評成績,總評成績請轉(zhuǎn)換

3、為優(yōu)秀、良好、中等、及格、不及格五等級計分。教務(wù)處制鄭重申明本人呈交的畢業(yè)實習(xí)報告(設(shè)計),是在導(dǎo)師的指導(dǎo)下,獨立進行實習(xí)和研究工作所取得的成果,所有數(shù)據(jù)、圖片資料真實可靠。盡我所知,除文中已經(jīng)注明引用的內(nèi)容外,本畢業(yè)實習(xí)報告(設(shè)計)的成果不包含他人享有著作權(quán)的內(nèi)容。對本畢業(yè)實習(xí)報告(設(shè)計)所涉及的實習(xí)和研究工作做出貢獻的其他個人和集體,均已在文中以明確的方式標明。本畢業(yè)實習(xí)報告(設(shè)計)的知識產(chǎn)權(quán)歸屬于作者與培養(yǎng)單位。學(xué)生簽名日期2012.04摘要隨著計算機技術(shù)的高速發(fā)展,單片機以其自身的特點,已廣泛應(yīng)用于智能儀器、工業(yè)控制、家用電器、電子玩具等各個領(lǐng)域。在知識競賽中,特別是做搶答題目的時候,

4、同樣需要單片機來控制整個過程。在搶答過程中,為了知道哪一組或哪一位選手先答題,必須要設(shè)計一個系統(tǒng)來完成這個任務(wù)。如果在搶答中,靠視覺是很難判斷出哪組先答題。利用單片機系統(tǒng)來設(shè)計搶答器,使以上問題得以解決,即使兩組的搶答時間相差幾微秒,也可分辨出哪組優(yōu)先答題。這樣使得選手們都站在同一個起跑線上,體現(xiàn)了公平公正的原則。 本系統(tǒng)設(shè)計的8路搶答器主要是采用atmel公司的at89c52單片機作為核心,控制系統(tǒng)的四個模塊分別為:顯示模塊、存儲模塊、語音模塊、搶答開關(guān)模塊。搶答組數(shù)可以在八組以內(nèi)任意使用。通過本系統(tǒng)的設(shè)計后,主持人可以很快的判斷出是誰最快搶答成功,又是誰搶答過早,以及應(yīng)該給于的懲罰。關(guān)鍵詞

5、:單片機;at89c52;搶答器目錄第1章 緒論4第2章整體設(shè)計方案與論證5第3章系統(tǒng)硬件設(shè)計73.1單片機的選擇73.1.1單片機的概念7 3.1.2 at89c52單片機簡介73.1.3鎖存器93.2時鐘電路和復(fù)位電路113.2.1時鐘電路113.2.2 復(fù)位電路:113.3鍵盤掃描電路123.4顯示電路123.5 功能鍵及發(fā)聲系統(tǒng)設(shè)計133.6整機設(shè)計電路14第4章軟件設(shè)計15 4.1 搶答器流程圖154.2主程序174.3中斷程序204.3.1什么是中斷204.3.2 中斷所用到的寄存器214.3.3 為什么采用中斷方式23第5章系統(tǒng)的仿真255.1 proteus軟件的介紹及使用25

6、5.1.1什么是proteus軟件255.1.2 怎樣操作proteus仿真軟件255.2搶答器protenus軟件的仿真30第6章調(diào)試功能說明316.1系統(tǒng)的調(diào)試316.2系統(tǒng)調(diào)試的問題及解決316.3焊接的問題及解決33總 結(jié)34參考文獻35致謝36附錄1電路原理圖37附錄2元件明細表38第1章緒論二十世紀跨越了三個“電”的時代,即電氣時代、電子時代和現(xiàn)已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱pc機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數(shù)人卻不怎么熟悉。這種計算機就是把智能賦予各種機械的單片機(亦稱微控制器)。顧名思義,這種計算機的最小系統(tǒng)只用了一片集成電路

7、,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了?,F(xiàn)在,這種單片機的使用領(lǐng)域已十分廣泛,如智能儀表、實時工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機,就能起到使產(chǎn)品升級換代的功效,常在產(chǎn)品名稱前冠以形容詞“智能型”。隨著我國經(jīng)濟和文化事業(yè)的發(fā)展,在很多公開競爭場合要求有公正的競爭裁決,諸如證券、股票交易及各種智力競賽等,因此出現(xiàn)了搶答器。搶答器一般是由很多電路組成的,線路復(fù)雜,可靠性不高,功能也比較簡單,特別是當搶答路數(shù)很多時,實現(xiàn)起來就更為困難。因此我們設(shè)計了以單片機為核心的新型智能

8、的搶答器,在保留原始搶答器的基本功能的同時又增加了數(shù)碼管顯示電路實現(xiàn)了其它功能。搶答器又稱為第一信號鑒別器,其主要應(yīng)用于各種知識競賽、文藝活動等場合。本系統(tǒng)采用單片機作為整個控制核心??刂葡到y(tǒng)的四個模塊為:顯示模塊、存儲模塊、語音模塊、搶答開關(guān)模塊。該系統(tǒng)通過開關(guān)電路四個按鍵輸入搶答信號,利用一個數(shù)碼管來完成顯示功能,用按鍵來讓選手進行搶答,在數(shù)碼管上顯示哪一組先答題的,從而實現(xiàn)整個搶答過程。本文主要介紹了單片機搶答器設(shè)計及工作原理,以及它的實際用途。系統(tǒng)工作原理本系統(tǒng)采用89c52單片機作為核心。工作時,用按鍵通過開關(guān)電路輸入各路的搶答信號,經(jīng)單片機的處理, 輸出控制信號,單片機控制的智能搶

9、答器設(shè)計。 第2章 整體設(shè)計方案和論證方案一:系統(tǒng)各部分采用中小規(guī)模集成數(shù)字電路,用機械開關(guān)按鈕作為控制開關(guān),完成搶答輸入信號的觸發(fā)。該方案的特點是中小規(guī)模集成電路應(yīng)用技術(shù)成熟,性能可靠,能方便地完成選手搶答的基本功能,但是由于系統(tǒng)功能要求較高,所以電路連接集成電路相對較多,而且過于復(fù)雜,并且制作過程工序比較煩瑣,使用不太方便。方案二:該系統(tǒng)采用8051系列單片機89c52作為控制核心,該系統(tǒng)可以完成運算控制、信號識別以及顯示功能的實現(xiàn)。由于用了單片機,使其技術(shù)比較成熟,應(yīng)用起來方便、簡單并且單片機周圍的輔助電路也比較少,便于控制和實現(xiàn)。整個系統(tǒng)具有極其靈活的可編程性,能方便地對系統(tǒng)進行功能的

10、擴張和更改。mcs-51單片機特點如下: 可靠性好:單片機按照工業(yè)控制要求設(shè)計,抵抗工業(yè)噪聲干擾優(yōu)于一般的cpu,程序指令和數(shù)據(jù)都可以寫在rom里,許多信號通道都在同一芯片,因此可靠性高,易擴充。單片機有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴充為各種規(guī)模的微電腦系統(tǒng)。 控制功能強:單片機指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。方案比較及其選用依據(jù),顯然方案二比方案一簡單的多,不但從性能上優(yōu)于方案一,而且在使用上及其功能的實現(xiàn)上都較方案一簡潔,并且由于單片機具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。另外89c52單片機采用12mhz

11、的晶振,提高了信號的測量精度,并且使該系統(tǒng)可以通過軟件改進來擴張功能。而方案一采用了中小規(guī)模集成電路,有其復(fù)雜的電路性能,從而可能會使信號的輸入輸出產(chǎn)生延時及不必要的誤差。依此依據(jù)選擇方案二比較適合??傇韴D見附錄2。其原理框圖如下:搶答按扭優(yōu)先編碼電路鎖存器譯碼電路譯碼顯示主持人控制開關(guān)控制電路報警電路秒脈沖產(chǎn)生電路定時電路譯碼電路顯示電路 圖2-1 搶答器的原理框圖 第3章 系統(tǒng)硬件設(shè)計3.1 單片機的選擇3.1.1單片機的概念單片機是指一個集成在一塊芯片上的完整計算機系統(tǒng)。盡管它的大部分功能集成在一塊小芯片上,但是它具有一個完整計算機所需要的大部分部件:cpu 、內(nèi)存 、內(nèi)部和外部總線系

12、統(tǒng)。單片機是將中央處理器,隨機存儲器。只讀存儲器,定時器芯片和i/o接口電路集成于一個芯片上的微控制器。3.1.2 at89c52單片機簡介 at89c52是8位通用微處理器。采用標準的c51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會聚調(diào)整時的功能控制。功能包括對會聚主ic 內(nèi)部寄存器、數(shù)據(jù)ram及外部接口等功能部件的初始化,會聚調(diào)整控制,會聚測試圖控制,紅外遙控信號ir的接收解碼及與主板cpu通信等。主要管腳有:xtal1(19 腳)和xtal2(18 腳)為振蕩器輸入輸出端口,外接12mhz 晶振。rst/vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。

13、vcc(40 腳)和vss(20 腳)為供電端口,分別接+5v電源的正負端。p0p3 為可編程通用i/o 腳,其功能用途由軟件定義,在本設(shè)計中,p0 端口(3239 腳)被定義為n1 功能控制端口,分別與n1的相應(yīng)功能管腳相連接,13 腳定義為ir輸入端,10 腳和11腳定義為i2c總線控制端口,分別連接n1的sdas(18腳)和scls(19腳)端口,12 腳、27 腳及28 腳定義為握手信號功能端口,連接主板cpu 的相應(yīng)功能端,用于當前制式的檢測及會聚調(diào)整狀態(tài)進入的控制功能。p0 口:p0 口是一組8 位漏極開路型雙向i/o 口, 也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流

14、的方式驅(qū)動8 個ttl邏輯門電路,對端口p0 寫“1”時,可作為高阻抗輸入端用。 在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。 p1 口:p1 是一個帶內(nèi)部上拉電阻的8 位雙向i/o 口, p1 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個ttl 邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(iil)。 引腳號功能特性p1.0t2,時鐘輸出p1.1t2ex(定時/計數(shù)器2)與at89c51 不同之處是,p1.0 和p1

15、.1 還可分別作為定時/計數(shù)器2 的外部計數(shù)輸入(p1.0/t2)和輸入(p1.1/t2ex),參見表1。 flash 編程和程序校驗期間,p1 接收低8 位地址。 p2 口:p2 是一個帶有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個ttl 邏輯 門電路。對端口p2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(iil)。 在訪問外部程序存儲器或16 位地址的外部數(shù)據(jù)存表1 p1.0和p1.1的功能儲器(例如執(zhí)行movx dptr 指令)時,p2 口送出高8

16、位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行movx ri 指令)時,p2 口輸出p2 鎖存器的內(nèi)容。 p3 口:p3 口是一組帶有內(nèi)部上拉電阻的8 位雙向i/o 口。p3 口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個ttl邏輯門電路。對p3 口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的p3 口將用上拉電阻輸出電流(iil)。 p3 口除了作為一般的i/o 口線外,更重要的用途是它的第二功能 p3 口還接收一些用于flash 閃速存儲器編程和程序校驗的控制信號。 rst:復(fù)位輸入。當振蕩器工作時,rst引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。 ale/

17、prog:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ale 仍以時鐘振蕩頻率的1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ale 脈沖。 psen:程序儲存允許(psen)輸出是外部程序存儲器的讀選通信號,當at89c52 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次psen 有效,即輸出兩個脈沖。在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次psen信號。 ea/vpp:外部訪問允許。欲使cpu 僅訪問外部程序存儲器(地址為0000hffffh),ea 端必須

18、保持低電平(接地)。需注意的是:如果加密位lb1 被編程,復(fù)位時內(nèi)部會鎖存ea端狀態(tài)。 如ea端為高電平(接vcc端),cpu 則執(zhí)行內(nèi)部程序存儲器中的指令。 xtal1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。 xtal2 :振蕩器反相放大器的輸出端。 圖3-1pdip封裝的at89c52引腳圖3.13 鎖存器鎖存器是一種對脈沖電平敏感的存儲單元電路,它們可以在特定輸入脈沖電平作用下改變狀態(tài)。由若干個鐘控d觸發(fā)器構(gòu)成的一次能存儲多位二進制代碼的時序邏輯電路,叫鎖存器件。 邏輯結(jié)構(gòu)與功能表見圖2-4:圖3-2 鎖存器邏輯結(jié)構(gòu)與功能表8位鎖存器74hc373的邏輯圖如下圖所示。其中使能端g加

19、入cp信號,d為數(shù)據(jù)信號。輸出控制信號為0時,鎖存器的數(shù)據(jù)通過三態(tài)門進行輸出。 圖3-3 74hc373引腳(管腳)圖:圖3-4 74ls373內(nèi)部邏輯圖圖3-5 74ls373真值表3.2時鐘電路和復(fù)位電路3.2.1時鐘電路單片機必須在時鐘的驅(qū)動下才能工作.由之前所學(xué)的單片機原理最小系統(tǒng)內(nèi)容,在單片機內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,決定單片機的工作速度。晶振電路見圖3-6:圖3-6晶振電路3.2.2 復(fù)位電路:復(fù)位電路是必不可少的一部分,復(fù)位電路的第一功能是上電復(fù)位。一般電路正常工作需要供電電源為5v5%,即4.755.25v。rs

20、t端的外部復(fù)單片機的第9腳rst為硬件復(fù)位端,只要將該端持續(xù)4個機器周期的高電平即可實現(xiàn)復(fù)位,復(fù)位后單片機的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如下所示: 圖3-7復(fù)位電路3.3鍵盤掃描電路在單片機應(yīng)用中鍵盤用得最多的形式是獨立鍵盤及矩陣鍵盤。本實驗用的是獨立式鍵盤。鍵盤掃描電路圖見圖3-8: 圖3-8獨立鍵盤3.4顯示電路在單片機應(yīng)用系統(tǒng)中,對于系統(tǒng)的運行狀態(tài)和運行結(jié)果,通常都需要直觀交互顯示出來。單片機應(yīng)用系統(tǒng)中最常用的顯示器有l(wèi)ed和lcd兩種。這兩種顯示器都可以顯示數(shù)字、字符及系統(tǒng)的狀態(tài),led和lcd數(shù)碼顯示最為普遍,本設(shè)計采用的是更為環(huán)保的4位led顯示器。如圖39所示 圖3-9顯示

21、電路4位數(shù)碼管動態(tài)顯示原理與實現(xiàn):p0.0-p0.6端口接動態(tài)數(shù)碼管的字形碼筆段,p2.0-p2.3端口接動態(tài)數(shù)碼管的數(shù)位選擇端。4位數(shù)碼管的8個顯示筆劃a,b,c,d,e,f,g,dp 的同名端連在一起,另外為每個數(shù)碼管的公共極com增加位選端控制電路,位選端由獨立的i/o線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選端控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位元就顯示出字形,沒有選通的數(shù)碼管就不會亮。就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)顯示原理。在輪流顯示過程中,每位元數(shù)碼管的點亮?xí)r間為12ms,由于人的視覺

22、暫留現(xiàn)象及發(fā)光二極體的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示資料,不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的i/o埠,而且功耗更低。3.5功能鍵及發(fā)聲系統(tǒng)設(shè)計聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線的“高”電平或低電平,則在該口線上就能產(chǎn)生一定頻率的矩形波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使喇叭發(fā)出不同的聲音。通過添加一些具體的功能鍵可以使系統(tǒng)的功能更加完善。功能鍵及發(fā)聲系統(tǒng)結(jié)構(gòu)圖見圖3-10: 圖3-10功能鍵

23、及發(fā)聲系統(tǒng)結(jié)構(gòu)圖3.6整機設(shè)計電路圖3-11總體結(jié)構(gòu)圖第4章 軟件設(shè)計4.1 搶答器流程圖流程圖是使用圖形表示算法的思路是一種極好的方法,不論采用何種程序設(shè)計方法,程序總體結(jié)構(gòu)確定后,一般以程序流程圖的形式對其進行描述??傮w框圖中的各個子模塊或各個子任務(wù)也應(yīng)該結(jié)合具體的教學(xué)模型和算法畫出較詳細的程序流程圖,供后面編寫具體程序和閱讀程序使用。流程圖是由一些圖框和流程線組成的,其中圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。流程圖的基本結(jié)構(gòu)為順序結(jié)構(gòu),分支結(jié)構(gòu)(又稱選擇結(jié)構(gòu)),循環(huán)結(jié)構(gòu)。為便于識別,繪制流程圖的習(xí)慣做法是:方框表示:要執(zhí)行的處理(proces

24、s)平行四邊型表示:代表資料輸入(input)不規(guī)則圖形代表資料輸出(output)或報表輸出(print)菱形表示:決策或判斷(例如:if.then.else) 圖4-1 搶答器主程序流程圖圖4-2 搶答器定時器中斷流程圖 圖4-3 外部中斷程序圖4.2 主程序我們組所設(shè)計的搶答器的程序采用的是c程序設(shè)計,c語言的顯著特點是用二進制來編寫程序,程序的各個部分除了必要的信息交流外彼此之間相互獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦? 便于使用、維護以及調(diào)試。c語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。雖然c語言也是強類型語言,但

25、它的語法比較靈活,允許程序編寫者有較大的自由度。本次設(shè)計的主程序中包括時鐘設(shè)計程序,定時器中斷子程序,led顯示程序以及按鍵控制子程序,程序設(shè)計如下:#includesbit k0=p10;sbit k1=p11;sbit k2=p12;sbit k3=p13;sbit d0=p14;sbit d1=p15;sbit d2=p16;sbit d3=p17;sbit b0=p37;sbit l0=p20;sbit l1=p22;sbit l2=p23;sbit l3=p24;sbit kz=p30;unsigned char qiangdanum=0x3f;unsigned char code

26、table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char ge=0,shi=0;unsigned int num=0,time=0;void display(); /*顯示函數(shù)*/void delay(unsigned int);main()tmod=0x01; /*采用方式一,即十六位計數(shù)器*/th0=(65536-50000)/256; /*設(shè)置初始值*/tl0=(65536-50000)%256;it0=0;ea=1;et0=1; /*開啟總中斷源*/ex0=1; /*啟動外部中斷0*/while(1)di

27、splay();if(kz=0)tr0=1; /*開啟定時器0中斷*/if(num=20) num=0;time+;if(time=60) /*60秒的計時*/time=0;void exter0() interrupt 0 /*外部中斷程序*/ea=0;l0=0;if(k0=0) /*開關(guān)0按下*/d0=0;qiangdanum=1;b0=1; /* 1號選手搶答成功,數(shù)碼管顯示1,蜂鳴器響,第1個二極管亮*/if(k1=0) /*開關(guān)1按下*/d1=0;qiangdanum=2;b0=1; /* 2號選手搶答成功,數(shù)碼管顯示2,蜂鳴器響,第2個二極管亮*/if(k2=0) /*開關(guān)2按下*

28、/d2=0;qiangdanum=3;b0=1; /* 3號選手搶答成功,數(shù)碼管顯示3,蜂鳴器響,第3個二極管亮*/if(k3=0) /*開關(guān)3按下*/d3=0;qiangdanum=4;b0=1; /* 4號選手搶答成功,數(shù)碼管顯示4,蜂鳴器響,第4個二極管亮*/void time0() interrupt 1num+;th0=(65536-50000)/256;tl0=(65536-50000)%256; /*1秒定時函數(shù)*/void delay(unsigned int z)unsigned int x,y;for(x=z;x0;x-)for(y=110;y0;y-); /*延遲函數(shù)*/

29、void display(void)shi=time/10;ge=time%10;p2=0xef;p0=tablege;delay(5);p2=0xf7;p0=tableshi;delay(5);p2=0xfe;p0=tableqiangdanum;delay(5); /*顯示函數(shù):來顯示0-60的計數(shù)*/4.3 中斷程序4.3.1 什么是中斷中斷是指由于某種隨機事件的發(fā)生,計算機暫?,F(xiàn)行的程序的運行,轉(zhuǎn)去執(zhí)行另一個程序,以處理發(fā)生的事件,處理完畢后又自動返回原來的程序繼續(xù)運行。有五種中斷源:外部中斷0、外部中斷1、定時器中斷0、定時器中斷1、串行中斷。它們的描述如下圖所示:表4-4 五種中斷

30、源的表示中斷源符號名稱終端引起的原因中斷矢量地址int0外部中斷0由p3.2低電平或下降沿信號0003ht0定時器中斷0定時/計數(shù)器0回零溢出p3.40013hint1外部中斷1由p3.3低電平或下降沿信號000bht1定時器中斷1定時/計數(shù)器1回零溢出p3.5001bhti/ri串行中斷串行口接收或發(fā)送完幀數(shù)據(jù)引起的中斷0023h中斷源符號名稱終端引起的原因中斷矢量地址int0外部中斷0由p3.2低電平或下降沿信號0003ht0定時器中斷0定時/計數(shù)器0回零溢出p3.40013hint1外部中斷1由p3.3低電平或下降沿信號000bht1定時器中斷1定時/計數(shù)器1回零溢出p3.5001bht

31、i/ri串行中斷串行口接收或發(fā)送完幀數(shù)據(jù)引起的中斷0023h4.3.2 中斷所用到的寄存器介紹定時器/計數(shù)器中所介紹的寄存器:(1)定時器/計數(shù)器控制寄存器tcontcon的作用是控制定時器的啟動停止,標志定時器的溢出和中斷情況;(2)中斷允許控制寄存器ie對中斷源的開放或屏蔽是由中斷寄存器ie控制的,地址為0a8h,即可以按字節(jié)尋址,也可以按位尋址。當單片機復(fù)位時,ie被清零。(3)串行控制寄存器scon定時/計數(shù)器的控制方法:在啟動定時/計數(shù)器工作之前cpu必須將一些命令(稱為控制字)寫入定時/計數(shù)器中,這個過程稱為定時/計數(shù)的初始化。(定時/計數(shù)器的初始化通過定時/計數(shù)器的方式寄存器tm

32、od和控制寄存器tcon來完成。定時/計數(shù)器方式寄存器tmodgatec/tm1m0gatec/tm1m0 gatec/tm1m0gatec/tm1m0定時器1 定時器0m1m0工作方式功能說明00方式013位計數(shù)器01方式116位計數(shù)器10方式2自動再裝入8位計數(shù)器11方式3定時器0:分成兩個8位計數(shù)器;定時器1:停止計數(shù)表4-5 選擇定時方式表m1m0工作方式功能說明 00方式013位計數(shù)器01方式116位計數(shù)器10方式2自動再裝入8位計數(shù)器11方式3定時器0:分成兩個8位計數(shù)器;定時器1:停止計數(shù)中斷程序的編寫的步驟:(1)根據(jù)要求設(shè)置ie(中斷允許寄存器)的對應(yīng)位ea(ea-總中斷允許

33、位 ea=1開放所有的中斷;ea=0禁止所有的中斷),某個中斷源還有相應(yīng)的中斷允許位。、當=1時:允許相應(yīng)中斷源的中斷;、當=0時:禁止相應(yīng)中斷源的中斷;(2)int0、int1設(shè)定觸發(fā)方式it0(外部中斷觸發(fā)方式控制位)當為0時:低電平觸發(fā);當為1時:下降沿觸發(fā);(3)返回值是void中斷函數(shù)名() interrupt()4.3.3 為什么采用中斷控制方式cpu與外部設(shè)備的數(shù)據(jù)傳送方式:(1)無條件傳送方式cpu總認為外設(shè)處于準備好的狀態(tài),外設(shè)比較簡單(2)程序查詢傳送方式外設(shè)有一個狀態(tài)(狀態(tài)存儲在寄存器內(nèi))缺點:cpu工作效率低,cpu處于等待的狀態(tài),為解決此缺點便出現(xiàn)了第三種傳送方式。(

34、3)中斷傳送方式中斷是指由于某種隨機事件的發(fā)生,計算機暫?,F(xiàn)行的程序,轉(zhuǎn)去執(zhí)行另一程序以處理發(fā)生的 事件,處理完畢后又自動返回原來的程序繼續(xù)運行。優(yōu)點:(1)實現(xiàn)分時操作 cpu分為多個i/o設(shè)備服務(wù),提高計算機的利用率(提前安排好的函數(shù)而中斷不同);(2)實時響應(yīng) cpu能夠及時處理應(yīng)用系統(tǒng)的隨機事件,系統(tǒng)的實時性大大增強(3)可靠性高 cpu具有處理設(shè)備故障及掉電等突發(fā)性事件的能力,從而使系統(tǒng)的可靠性提高。定時器的初始化 (1)確定工作方式-對tmod賦值;(2)設(shè)置初始值-直接將初值寫入tho,tlo;(3)開啟定時器的中斷-eto=1 ea=1;(4)啟動定時器-將tr0或tri置“1

35、”。第5章 系統(tǒng)的仿真5.1 proteus軟件的介紹及使用5.1.1 什么是proteus軟件 proteus軟件是labcenter electronics公司的一款電路設(shè)計與仿真軟件,它包括isis、ares等軟件模塊,ares模塊主要用來完成pcb的設(shè)計,而isis模塊用來完成電路原理圖的布圖與仿真。proteus的軟件仿真基于vsm技術(shù),它與其他軟件最大的不同也是最大的優(yōu)勢就在于它能仿真大量的單片機芯片,比如mcs-51系列、pic系列等等,以及單片機外圍電路,比如按鍵、led、數(shù)碼管等等。通過proteus仿真軟件的使用我們能夠輕易地獲得一個功能齊全、實用方便的單片機實驗室。5.1

36、.2 怎樣操作proteus仿真軟件 在進行下面的操作前,我先說明一點:我的proteus版本是7.1,如果你使用的是6.9以前的版本,可能你發(fā)現(xiàn)在鼠標操作上會略有不同。這主要表現(xiàn)在6.9以前的版本鼠標左右鍵的作用與一般軟件剛好相反,而7.0后已經(jīng)完全改過。首先我們把壓縮文件解壓到d盤,然后找到isis manage找到find key 然后再安裝即可使用,雙擊打開桌面是上的那個軟件即可使用。下面我們首先來熟悉一下proteus的界面。proteus是一個標準的windows窗口程序,和大多數(shù)程序一樣,沒有太大區(qū)別,其啟動界面如下圖所示:圖5-1 proteus 啟動界面圖如圖中所示,區(qū)域為菜

37、單及工具欄,區(qū)域為預(yù)覽區(qū),區(qū)域為元器件瀏覽區(qū),區(qū)域為編輯窗口,區(qū)域為對象拾取區(qū),區(qū)域為元器件調(diào)整工具欄,區(qū)域為運行工具條。下面我們就以建立一個和我們在keil簡介中所講的工程項目相配套的proteus工程為例來詳細講述proteus的操作方法以及注意事項。首先點擊啟動界面區(qū)域中的“p”按鈕(pick devices,拾取元器件)來打開“pick devices”(拾取元器件)對話框從元件庫中拾取所需的元器件。對話框如下圖所示: 圖5-2 用proteus軟件查找元器件在對話框中的“keywords”里面輸入我們要檢索的元器件的關(guān)鍵詞,比如我們要選擇項目中使用的at89c51,就可以直接輸入。輸

38、入以后我們能夠在中間的“results”結(jié)果欄里面看到我們搜索的元器件的結(jié)果。在對話框的右側(cè),我們還能夠看到我們選擇的元器件的仿真模型、引腳以及pcb參數(shù)。搜索到所需的元器件以后,我們可以雙擊元器件名來將相應(yīng)的元器件加入到我們的文檔中,那么接著我們還可以用相同的方法來搜索并加入其他的元器件。當我們已經(jīng)將所需的元器件全部加入到文檔中時,我們可以點擊“ok”按鈕來完成元器件的添加。添加好元器件以后,下面我們所需要做的就是將元器件按照我們的需要連接成電路。首先在元器件瀏覽區(qū)中點擊我們需要添加到文檔中的元器件,這時我們就可以在瀏覽區(qū)看到我們所選擇的元器件的形狀與方向,如果其方向不符合你的要求,你可以通

39、過點擊元器件調(diào)整工具欄中的工具來任意進行調(diào)整,調(diào)整完成之后在文檔中單擊并選定好需要放置的位置即可。接著按相同的操作即可完成所有元器件的布置,接下來是連線。事實上proteus的自動布線功能是如此的完美以至于我們在做布線時從來都不會覺得這是一項任務(wù),而通常像是在享受布線的樂趣。布線時我們只需要單擊選擇起點,然后在需要轉(zhuǎn)彎的地方單擊一下,按照你所需走線的方向移動鼠標到線的終點單擊即可。本例我們布線的結(jié)果如下圖所示(仿真我們在上面的keil操作介紹中的簡單例子)。 圖5-3 發(fā)光二極管發(fā)光原理圖 因為該工程十分簡單,我們沒有必要加上復(fù)位電路,所以這點在圖中予以忽略,請大家注意。除此以外,還會發(fā)現(xiàn),單

40、片機系統(tǒng)沒有晶振,這一點你需注意。事實上在proteus中單片機的晶振可以省略,系統(tǒng)默認為12mhz,而且很多時候,當然也為了方便,我們只需要取默認值就可以了。proteus中單片機芯片默認已經(jīng)添加電源與地,所以我們可以省略。然后在添加電源與地以前,我們先來看一下上面第一個圖中區(qū)域的對象拾取區(qū),在這里只說明本文中可能會用得到的以及比較重要的工具。(selection mode)。選擇模式,通常情況下我們都需要選中它,比如布局時和布線時。(component mode)。組件模式,點擊該按鈕,能夠顯示出區(qū)域中的元器件,以便我們選擇。線路標簽?zāi)J?,選中它并單擊文檔區(qū)電路連線能夠為連線添加標簽。經(jīng)常

41、與總線配合使用。文本模式,選中它能夠為文檔添加文本??偩€模式,選中它能夠在電路中畫總線。關(guān)于總線畫法的詳細步驟與注意事項我們在下面會進行專門講解。l :終端模式,選中它能夠為電路添加各種終端,比如輸入、輸出、電源、地等等。l :虛擬儀器模式,選中它我們能夠在區(qū)域中看到很多虛擬儀器,比如示波器、電壓表、電流表等等。關(guān)于它們的用法我們會在后面的相應(yīng)章節(jié)中詳細講述。添加電源:首先點擊,選擇終端模式,然后在元器件瀏覽區(qū)中點擊power(電源)來選中電源,通過區(qū)域中的元器件調(diào)整工具進行適當?shù)恼{(diào)整,然后就可以在文檔區(qū)中單擊放置電源了。連接好電路圖以后我們還需要做一些修改,由上5-1-3圖我們可以看出,圖中

42、的r1電阻值為10k,這個電阻作為限流電阻顯然太大,將使發(fā)光二極管d1亮度很低或者根本就不亮,影響我們的仿真結(jié)果。故要進行修改,修改方法:首先我們雙擊電阻圖標,這時軟件將彈出“edit component”對話框(見下圖所示的對話框),對話框中的“component referer”是組件標簽之意,可以隨便填寫,也可以取默認,但要注意在同一文檔中不能有兩個組件標簽相同;“resistance”就是電阻值了,我們可以在其后的框中根據(jù)需要填入相應(yīng)的電阻值。填寫時需注意其格式,如果直接填寫數(shù)字,則單位默認為;如果在數(shù)字后面加上k或者k,則表示k之意。這里我們填入220,表示220。修改好各組件屬性以

43、后就要將程序(hex文件)載入單片機了。首先雙擊單片機圖標,系統(tǒng)同樣會彈出“edit component”對話框,如下圖。在這個對話框中我們點擊“program files”框右側(cè)的,來打開選擇程序代碼窗口,選中相應(yīng)的hex文件后返回,這時,按鈕左側(cè)的框中就填入了相應(yīng)的hex文件,我們點擊對話框的“ok”按鈕,回到文檔,程序文件就添加完畢了。圖5-4 裝載程序裝載好程序,我們就可以進行仿真了。首先來熟悉一下上面第一個圖中區(qū)域的運行工具條。因為比較簡單,我們只作一下介紹。工具條從左到右依次是“play”、“step”、“pause”、“stop”按鈕,即運行、步進、暫停、停止。下面我們點擊“pl

44、ay”按鈕來仿真運行,效果如下圖所示,可以看到系統(tǒng)按照我們的程序在運行著,而且我們還能看到其高低電平的實時變化。如果我們已經(jīng)觀察到了結(jié)果就可以點擊“stop”來停止運行。5.2 搶答器protenus軟件的仿真繪制搶答器的軟件仿真圖步驟分一下四步:(1)查找所需要的元器件;(2)根據(jù)電路圖進行連線;(3)是用來寫線所對應(yīng)的坐標,即下圖所示的p1.1等坐標;(4)下載所寫完的c程序即可以仿真。通過以上步驟,來實現(xiàn)搶答器設(shè)計的仿真實現(xiàn),仿真如下圖所示:圖5-5 搶答器的proteus仿真圖第6章 調(diào)試功能說明6.1 系統(tǒng)的調(diào)試系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,而且兩者是密不可分的。我們設(shè)計好的硬件電

45、路和軟件程序,只有經(jīng)過聯(lián)合調(diào)試,才能驗證其正確性;軟硬件的配人情況以及是否達到設(shè)計任務(wù)的要求,也只有經(jīng)過調(diào)試,才能發(fā)現(xiàn)問題并加以解決、完善,最終開發(fā)成實用產(chǎn)品。硬件調(diào)試分單元電路調(diào)試和聯(lián)機調(diào)試,單元電路試驗在硬件電路設(shè)計時已經(jīng)進行,這里的調(diào)試只是將其制成印刷電路板后試驗電路是否正確,并排除一些加工工藝性錯誤(如錯線、開路、短路等)。這種調(diào)試可單獨模擬進行,也可通過開發(fā)裝置由軟件配合進行,硬件聯(lián)機調(diào)試則必須在系統(tǒng)軟件的配合下進行。軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機調(diào)試兩個階段。程序的分塊調(diào)試一般在單片機開發(fā)裝置上進行,可根據(jù)所調(diào)程序功能塊的入口參量初值編制一個特殊的程序段,并連同被調(diào)程序功能塊一起在

46、開發(fā)裝置上運行;也可配合對應(yīng)硬件電路單獨運行某程序功能塊,然后檢查是否正確,如果執(zhí)行結(jié)果與預(yù)想的不一致,可以通過單步運行或設(shè)置斷點的方法,查出原因并加以改正,直到運行結(jié)果正確為止。這時該 程序功能塊已調(diào)試完畢,可去掉附加程序段。其它程序功能塊可按此法進行調(diào)試。程序聯(lián)機調(diào)試就是將已調(diào)試好的各程序功能塊按總體結(jié)構(gòu)聯(lián)成一個完整程序,在所研制的硬件電路上運行。從而試驗程序整體運行的完整性、正確性和與硬件電路的配合情況。在聯(lián)調(diào)中可能會有某些支路上的程序、功能塊因受條件制約而得不到相應(yīng)的輸入?yún)?shù),這時,調(diào)試人員應(yīng)創(chuàng)造條件進行模擬調(diào)試。在聯(lián)調(diào)中如發(fā)現(xiàn)硬件問題也應(yīng)及時修正,直到單片機系統(tǒng)的軟件、硬件全部調(diào)試成

47、功為止。系統(tǒng)調(diào)試完成后,還要進行一段時間的試運行,從而檢驗系統(tǒng)的穩(wěn)定性和抗干擾能力,驗證系統(tǒng)功能是否達到設(shè)計要求,是否達到預(yù)期的效果。6.2 軟件調(diào)試問題及解決首先對所用軟件及使用方法介紹如下:1、keil是德國開發(fā)的一個51單片機開發(fā)軟件平臺,最開始只是一個支持c語言和匯編語言的編譯器軟件。后來隨著開發(fā)人員的不斷努力以及版本的不斷升級,使它已經(jīng)成為了一個重要的單片機開發(fā)平臺,不過keil的界面并不是非常復(fù)雜,操作也不是非常困難,很多工程師的開發(fā)的優(yōu)秀程序都是在keil的平臺上編寫出來的。可以說它是一個比較重要的軟件,熟悉他的人很多很多,用戶群極為龐大,要遠遠超過偉福等廠家軟件用戶群,操作有不

48、懂的地方只要找相關(guān)的書看看,到相關(guān)的單片機技術(shù)論壇問問,很快就可以掌握它的基本使用了。2、 總調(diào),即應(yīng)用軟件的鏈接調(diào)試,程序固化,軟、硬件結(jié)合的應(yīng)用系統(tǒng)軟硬件聯(lián)合仿真系統(tǒng)由一個硬件執(zhí)行環(huán)境和一個軟件執(zhí)行環(huán)境組成,通常軟件環(huán)境和硬件環(huán)境都有自己的除錯和控制界面,keil與proteus的整合調(diào)試可以實現(xiàn)系統(tǒng)的總調(diào),在該系統(tǒng)中,keil作為軟件調(diào)試界面,proteus作為硬件仿真和調(diào)試界面,下面說一下如何在keil中調(diào)用proteus進行mcu外圍器件的仿真。(1)安裝keil 與 proteus。(2)把安裝proteus models目錄下 vdm51.dll文件復(fù)制到keil安裝目錄的 c5

49、1bin目錄中。(3)修改keil安裝目錄下 tools.ini文件,在c51字段加入tdrv5=binvdm51.dll (proteus vsm monitor-51 driver),保存。(注意:不一定要用tdrv5,根據(jù)原來字段選用一個不重復(fù)的數(shù)值就可以了。引號內(nèi)的名字隨意)3、打開proteus,畫出相應(yīng)電路,在proteus的debug菜單中選中use remote debug monitor4、在keil中編寫c語言程序5、進入keil的project菜單option for target 工程名。在debug選項中右欄上部的下拉菜單選中 proteus vsm monitor-

50、51 driver。6、在keil中進行debug吧,同時在proteus中查看直觀的結(jié)果(如lcd顯示)這樣就可以像使用仿真器一樣調(diào)。問題:有時候在自己創(chuàng)建的元器件的管腳上無法實現(xiàn)連線?;卮穑簯?yīng)該是管腳的間距太小了。因為在isis中,每個元器件的管腳都要占據(jù)一塊區(qū)域(就像自己的保護區(qū)一樣,不容別人隨意侵犯),該區(qū)域會排斥外部的走線。解決問題的方法是在走線的同時按住 “ctrl”鍵,直到走線繞過狹窄的保護區(qū)。當然最根本的辦法是重新編輯元器件,把其管腳間距調(diào)大一些。主持人按鍵來控制總開關(guān),主持人按下開關(guān)那么選手開始搶答,此時數(shù)碼管開始0-60計數(shù),并且選手們必須在規(guī)定的時間內(nèi)進行搶答,若過了60

51、秒還沒搶答那么搶答失效,選手們?nèi)粲幸粋€在規(guī)定的時間內(nèi)搶答成功則其余的選手不可以再搶答,即該選手搶答成功。6.3 焊接的問題及解決一般來說,造成硬件問題的首要問題就是焊接了,也就是說焊接的好與壞直接響產(chǎn)品的正常運行。造成焊接質(zhì)量不高的常見原因是:焊錫用量過多,形成焊點的錫堆積;焊錫過少,不足以包裹焊點。冷焊。焊接時烙鐵溫度過低或加熱時間不足,焊錫未完全熔化、浸潤、焊錫表面不光亮(不光滑),有細小裂紋(如同豆腐渣一樣!)。夾松香焊接,焊錫與元器件或印刷板之間夾雜著一層松香,造成電連接不良。若夾雜加熱不足的松香,則焊點下有一層黃褐色松香膜;若加熱溫度太高,則焊點下有一層碳化松香的黑色膜。對于有加熱不足的松香膜的情況,可以用烙鐵進行補焊。對于已形成黑膜的,則要吃凈焊錫,清潔被焊元器件或印刷板表面,重新進行焊接才行。焊錫連橋。指焊錫量過多,造成元器件的焊點之間短路。這在對超小元器

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論