八路搶答器單片機(jī)畢業(yè)論文_第1頁(yè)
八路搶答器單片機(jī)畢業(yè)論文_第2頁(yè)
八路搶答器單片機(jī)畢業(yè)論文_第3頁(yè)
八路搶答器單片機(jī)畢業(yè)論文_第4頁(yè)
八路搶答器單片機(jī)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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、 . . . 目 錄摘要 .2第一章 緒論 .3第二章 系統(tǒng)總體方案設(shè)計(jì) .42.1 設(shè)計(jì)任務(wù)與要求 .42.2 系統(tǒng)設(shè)計(jì)方案與選擇 .42.3 系統(tǒng)總體結(jié)構(gòu)框圖 .52.4 系統(tǒng)的工作原理.6第三章 電路的功能單元設(shè)計(jì) .73.1 單片機(jī)最小系統(tǒng)電路.73.2 按鍵電路 .113.3 報(bào)警電路 .123.4 顯示電路 .13第四章 程序設(shè)計(jì).144.1 程序設(shè)計(jì)思想 .144.2 程序流程模塊介紹 .154.3 設(shè)計(jì)軟件簡(jiǎn)介 .16第五章 調(diào)試與故障分析.17 5.1 程序調(diào)試.17 5.2 硬件焊接與故障分析.17.總 結(jié) .18參考文獻(xiàn).19附錄1 整機(jī)原理圖附錄2 PCB制版圖附錄3

2、程序清單14 / 35摘 要搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個(gè)單位,如果專門購(gòu)一臺(tái)搶答器雖然在經(jīng)濟(jì)上可以承受,但每年使用的次數(shù)極少,往往因長(zhǎng)期存放使(電子器件的)搶答器損壞,再購(gòu)置的麻煩和與時(shí)性就會(huì)影響活動(dòng)的開展,因此設(shè)計(jì)了本搶答器。本設(shè)計(jì)是以八路搶答為基本理念??紤]到依需設(shè)定限時(shí)回答的功能,利用STC89C52單片機(jī)與外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來(lái),使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開關(guān)做鍵盤輸出,蜂鳴器發(fā)生提示。同

3、時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無(wú)效;搶答限定時(shí)間和回答問(wèn)題的時(shí)間可在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無(wú)效搶答,正確按鍵后有音樂(lè)提示;搶答時(shí)間和回答問(wèn)題時(shí)間倒記時(shí)顯示,滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位與主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無(wú)效非法。關(guān)鍵字:?jiǎn)纹瑱C(jī)、數(shù)字管、蜂鳴器第1章 緒 論設(shè)計(jì)研究的背景與意義:我國(guó)進(jìn)行單片機(jī)項(xiàng)目開發(fā)已經(jīng)有二十多年歷史,在此期間所進(jìn)行的單片機(jī)開發(fā)項(xiàng)目已由簡(jiǎn)單到復(fù)雜,由小型系統(tǒng)到大型綜合系統(tǒng)。單片機(jī)應(yīng)用也越來(lái)越廣泛,從開始的工控控制,到現(xiàn)在的航空航天、消防安全、工作數(shù)據(jù)采集、石油地質(zhì)勘探、鐵路交通運(yùn)輸以與樓宇自動(dòng)化等

4、,甚至目前的許多家電中都有單片機(jī)的應(yīng)用。隨著計(jì)算機(jī)技術(shù)的發(fā)展,單片機(jī)技術(shù)已經(jīng)成為計(jì)算機(jī)技術(shù)中的一個(gè)獨(dú)特的分支,單片機(jī)的應(yīng)用領(lǐng)域也越來(lái)越廣泛,特別是在工業(yè)控制和儀表儀器智能化中扮演著舉足輕重的角色。在單片機(jī)家族的眾多成員中,52系列單片機(jī)以其優(yōu)越的性能、成熟的技術(shù)、高可靠性和高性價(jià)比,成為國(guó)單片機(jī)應(yīng)用領(lǐng)域的主流。各種知識(shí)競(jìng)賽、文娛活動(dòng)的廣泛開展,使搶答器成了必不可少的電子設(shè)備,它為參賽選手提供了公正、客觀、快速的裁決,已逐漸發(fā)展成為一種成型的電子產(chǎn)品,但市面上所售搶答器價(jià)格一般較貴且多為小規(guī)模集成電路構(gòu)成,其性能單一,工作起來(lái)不夠理想。本文介紹了一種以STC89C52單片機(jī)為核心的智能搶答器,它

5、充分利用了單片機(jī)系統(tǒng)的優(yōu)點(diǎn),具有結(jié)構(gòu)簡(jiǎn)單、功能強(qiáng)大、可靠性好、成本較低,實(shí)用性強(qiáng)的特點(diǎn)。第2章 系統(tǒng)總體方案設(shè)計(jì)2.1設(shè)計(jì)要求2.1.1 設(shè)計(jì)任務(wù)具有時(shí)間,聲,光,提示的數(shù)字搶答器的設(shè)計(jì) 2.1.2 基本要求(1)具有聲音提示,LED閃爍提示,或者LED與顯示時(shí)間。(2)最小同時(shí)提供8名選手比賽,分別有8個(gè)按鈕。(3)設(shè)置一個(gè)搶答開關(guān),該開關(guān)由主持人控制。(4)搶答選手在設(shè)定時(shí)間搶答功能,且一次搶答時(shí)間由主持人設(shè)定。(5)搶答選手在設(shè)定時(shí)間搶答,搶答定時(shí)器停止工作,顯示選手的編號(hào)和時(shí)間并保持到主持人清楚為止。(6)如設(shè)定時(shí)間已到無(wú)人搶答,本次搶答無(wú)效系統(tǒng)報(bào)警,禁止搶答。顯示器顯示“00” 2.

6、1.3 結(jié)題形式(1)撰寫并上交一份6000字左右的畢業(yè)設(shè)計(jì)報(bào)告(紙質(zhì));(2)上交畢業(yè)設(shè)計(jì)報(bào)告、電路原理圖和PCB圖、程序等電子文件;(3)制作并上交相應(yīng)的控制系統(tǒng)作品(硬件);(4)口試答辯。2.2系統(tǒng)設(shè)計(jì)方案與選擇2.2.1 方案一設(shè)計(jì)思路系統(tǒng)各部分采用中小規(guī)模集成數(shù)字電路,用機(jī)械開關(guān)按鈕作為控制開關(guān),完成搶答輸入信號(hào)的觸發(fā)。該方案的特點(diǎn)是中小規(guī)模集成電路應(yīng)用技術(shù)成熟,性能可靠,能方便地完成選手搶答的基本功能,但是由于系統(tǒng)功能要求較高,所以電路連接集成電路相對(duì)較多,而且過(guò)于復(fù)雜,并且制作過(guò)程工序比較煩瑣,使用不太方便。2.2.2 方案二的設(shè)計(jì)思路采用52系列單片機(jī)STC89C52作為控制

7、核心,該系統(tǒng)可以完成運(yùn)算控制、信號(hào)識(shí)別以與顯示功能的實(shí)現(xiàn)。由于使用單片機(jī)作為控制核心,其技術(shù)比較成熟,應(yīng)用起來(lái)方便、簡(jiǎn)單,并且周圍的輔助電路也比較少,便于控制和實(shí)現(xiàn)。整個(gè)系統(tǒng)具有極其靈活的可編程性,能方便地對(duì)系統(tǒng)進(jìn)行功能的擴(kuò)展和更改。2.2.3 方案比較所以通過(guò)比較以上兩種方案,方案二比方案一簡(jiǎn)單的多,不但從性能上優(yōu)于方案一,而且在使用上與其功能的實(shí)現(xiàn)上都較方案一簡(jiǎn)潔,并且由于單片機(jī)具有優(yōu) 越的高集成電路性,使其工作速度更快、效率更高。另外STC89C52單片機(jī)可以采用11.0592MHz的晶振,提高了信號(hào)的測(cè)量精度,并且使該系統(tǒng)可以通過(guò)軟件改進(jìn)來(lái)擴(kuò)展功能。而方案一采用了中小規(guī)模集成電路,由于

8、其復(fù)雜的電路性能,可能會(huì)使信號(hào)的輸入輸出產(chǎn)生延時(shí)與不必要的誤差。因此選擇方案二比較適合。2.3系統(tǒng)總體結(jié)構(gòu)圖搶答器電路總體設(shè)計(jì)方框圖如圖1所示: 按鍵電路控制電路顯示電路報(bào)警電路圖1 搶答器總體設(shè)計(jì)方框圖2.4系統(tǒng)的工作原理?yè)尨鹌鞯墓ぷ髟硎抢脝纹瑱C(jī)的定時(shí)器T0、T1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,用4個(gè)共陰極LED數(shù)碼管來(lái)顯示,用P0口作為數(shù)碼管的八個(gè)段選,用P2口中的P2.4、P2.5、P2.6、P2.7作為4個(gè)數(shù)碼管的位選,P1口接8個(gè)按鍵,提供選手搶答,P3.0、P3.2、P3.3、P3.4、3.5分別為開始、停止、答題時(shí)間調(diào)整、搶答時(shí)間調(diào)整,復(fù)位。搶答功能:通過(guò)八路按鍵配合程

9、序來(lái)實(shí)現(xiàn)搶答功能。當(dāng)主持人按下?lián)尨疰I開始搶答后,此時(shí)任一路按下按鈕均閉鎖其它各路,由程序?qū)︽I盤譯碼并顯示最先按下?lián)尨疰I的路數(shù)與其當(dāng)前時(shí)間。搶答限時(shí):主持人按下?lián)尨疰I后,設(shè)置30秒為搶答時(shí)間(此時(shí)間可在1-99秒之間修改)。若30秒無(wú)人搶答,倒計(jì)時(shí)為5時(shí)發(fā)出報(bào)警,說(shuō)明該搶答題目作廢。此時(shí)閉鎖所有搶答按鍵,只有當(dāng)主持人再次按下?lián)尨疰I開始下一次搶答方可搶答。答題限時(shí):當(dāng)選手按下按鈕時(shí),啟動(dòng)倒計(jì)時(shí)(此倒計(jì)時(shí)時(shí)間可在199秒之間修改),倒計(jì)時(shí)為5時(shí)發(fā)出報(bào)警,說(shuō)明答題時(shí)間到。第三章 電路的功能單元設(shè)計(jì)電路的功能單元設(shè)計(jì)包括:?jiǎn)纹瑱C(jī)最小系統(tǒng)、按鍵電路、報(bào)警電路、顯示電路3.1單片機(jī)最小系統(tǒng)3.1.1系統(tǒng)結(jié)構(gòu)

10、總線型單片機(jī)非總線應(yīng)用的最小系統(tǒng)示意圖如圖2所示,只有單片機(jī)和時(shí)鐘電路、復(fù)位電路構(gòu)成的最簡(jiǎn)單電路,并行總線不用于外圍擴(kuò)展,可作為應(yīng)用系統(tǒng)的I/O口使用。圖2 總線型單片機(jī)非總線應(yīng)用的最小系統(tǒng)3.1.2系統(tǒng)特點(diǎn)(1)有大量可使用的I/O口;(2)沒(méi)有并行擴(kuò)展,應(yīng)用系統(tǒng)結(jié)構(gòu)簡(jiǎn)單;(3)外圍器件只能通過(guò)UART口的串行移位方式或虛擬串行擴(kuò)展總線進(jìn)行擴(kuò)展。3.1.3 STC89C52單片機(jī)STC89C52單片機(jī)具有片E2PROM,是真正的單片機(jī),由于不需要外接EPROM,所以應(yīng)用非常普遍。STC89C52的主要工作特性如下:(1)片程序存儲(chǔ)器含8KB的Flash程序存儲(chǔ)器,可擦寫壽命為10000次;(

11、2)片數(shù)據(jù)存儲(chǔ)器含256字節(jié)的RAM;(3)具有32根可編程I/O口線;(4)具有3個(gè)可編程定時(shí)器;(5)中斷系統(tǒng)是具有8個(gè)中斷源、6個(gè)中斷矢量、2個(gè)級(jí)優(yōu)先權(quán)的中斷結(jié)構(gòu);(6)串行口是具有一個(gè)全雙工的可編程串行通信口;(7)具有一個(gè)數(shù)據(jù)指針DPTR;(8)低功耗工作模式有空閑模式和掉電模式;(9)具有可編程的3級(jí)程序鎖定位;(10)單片機(jī)STC89C52工作電源電壓為5(1+0.2)V,且典型值為5V;(11)單片機(jī)STC89C52最高工作頻率為24MHz,單片機(jī)正常工作時(shí),都需要有一個(gè)時(shí)鐘電路和一個(gè)復(fù)位電路。STC89C52的部結(jié)構(gòu)圖如圖3所示:ROM并行接口RAM串行接口定時(shí)器/計(jì)數(shù)器中斷

12、系統(tǒng)內(nèi)部總線SFR特殊功能寄存器P0TXD RXDINTO INT1CPU微處理器P1P2P3內(nèi)部總線T0 T1圖3 STC89C52部結(jié)構(gòu)圖52單片機(jī)有4個(gè)8位并行輸入/輸出接口:P0、P1、P2和P3口這四個(gè)口既可以并行輸入或輸出8位數(shù)據(jù),又可按位使用,即每一位均能獨(dú)立做輸入或輸出用。圖4為各接口的電氣結(jié)構(gòu)示意圖:圖4 P0、P1、P2、P3口的電氣結(jié)構(gòu)圖I/O端口的結(jié)構(gòu)(1)鎖存器加引腳的典型結(jié)構(gòu)52的I/O端口都由部總線實(shí)現(xiàn)操作控制。P0-P3四個(gè)I/O端口都可以用作普通I/O口,因此,要求有輸出鎖存功能。部總線又是分時(shí)操作,故每個(gè) I/O端口都有相應(yīng)的鎖存器。然而,I/O端口又是外部

13、的輸入/輸出通道,必須有相應(yīng)的引腳,故形成了I/O端口的鎖存器加引腳的典型結(jié)構(gòu)。(2)I/O的復(fù)用結(jié)構(gòu)I/O端口的總線復(fù)用。在使用并行擴(kuò)展總線時(shí),P0口可做數(shù)據(jù)總線口和低8位地址總線口,P0口為三態(tài)雙向口。P0口輸出并行總線的地址/數(shù)據(jù)信號(hào);P2口輸出高8位地址信號(hào)。I/O端口的功能復(fù)用。P3口為復(fù)用的I/O端口,口有復(fù)用輸出功能的控制端;引腳也有復(fù)用輸入功能的控制端。P3口的第二功能輸入引腳功能表如表1所示:表1 P3口的第二功能輸入引腳端口引腳第二功能說(shuō) 明P3.0RXD串行數(shù)據(jù)接受P3.1TXD串行數(shù)據(jù)發(fā)送P3.2外部中斷0申請(qǐng)P3.3外部中斷1申請(qǐng)P3.4T0定時(shí)/計(jì)數(shù)器0輸入P3.5

14、T1定時(shí)/計(jì)數(shù)器1輸入P3.6外部數(shù)據(jù)存儲(chǔ)器寫選通P3.7外部數(shù)據(jù)存儲(chǔ)器讀選通(3)準(zhǔn)雙向口結(jié)構(gòu)P0、P1、P2、P3口作為普通I/O口使用時(shí),都是準(zhǔn)雙向口結(jié)構(gòu),準(zhǔn)雙向口的典型結(jié)構(gòu)如圖(5)-b所示,準(zhǔn)雙向口的輸入操作和輸出操作本質(zhì)不同,輸入操作是讀引腳狀態(tài);輸出操作是對(duì)口鎖存器的寫入操作。由口鎖存器和引腳電路可知:當(dāng)由部總線給口鎖存器置0或1時(shí),鎖存器中的“1”或“0”狀態(tài)立即反映到引腳上。但是在輸入操作(讀引腳)時(shí),如果口鎖存器狀態(tài)為“0”,引腳被鉗位在“0”狀態(tài),導(dǎo)致無(wú)法讀出引腳的高電平輸入。I/O端口的應(yīng)用特性(1)端口的自動(dòng)識(shí)別。無(wú)論是P0、P2口的總線復(fù)用,還是P3口的功能復(fù)用,部

15、資源會(huì)自動(dòng)選擇,不需要通過(guò)指令的狀態(tài)選擇。(2)口鎖存器的讀、改、寫操作。許多涉與到I/O端口的操作,實(shí)際上只是設(shè)計(jì)口鎖存器的讀出、修改、寫入的操作。這些指令都是一些邏輯運(yùn)算指令、置位/清除指令、條件轉(zhuǎn)移指令以與將I/O口作為目的地址的操作指令。(3)P0口作為普通I/O口使用。當(dāng)不使用并行擴(kuò)展總線時(shí),P0、P2口都可以做普通I/O口。但是P0口為開漏結(jié)構(gòu),作I/O口時(shí)必須外加上拉電阻。(5)I/O口的驅(qū)動(dòng)特性。P0口每一個(gè)I/O口可輸出驅(qū)動(dòng)8個(gè)TTL負(fù)載。而P1-P3口只能驅(qū)動(dòng)4個(gè)。3.1.4 時(shí)鐘電路時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào)。設(shè)計(jì)中采用了比較典型的部時(shí)鐘方式,如圖5所示:

16、其工作原理是:片高增益反向放大器XTAL1、XTAL2外接作為反饋元件的晶體(呈感性)與電容組成的并聯(lián)諧振回路構(gòu)成一個(gè)自激振蕩器向部時(shí) 鐘電路提供振蕩時(shí)鐘。振蕩器的頻率主要取決于晶體的振蕩頻率,一般晶體可以在1.2-12MHz之間任選。電容的大小影響振蕩器電路的穩(wěn)定性和快速性,其值有微調(diào)作用,通常取30pF左右。在設(shè)計(jì)電路板時(shí),晶振和電容應(yīng)盡可能的靠近芯片,以減小分布電容,保證振蕩器振蕩的穩(wěn)定性。XTAL2XTAL1晶振C2C1單 片 機(jī)圖5單片機(jī)外接晶體的接法3.1.5 復(fù)位電路復(fù)位是單片機(jī)的初始化操作,其主要功能是將程序計(jì)數(shù)器PC初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序。復(fù)

17、位操作不影響片RAM的容,但是對(duì)SFR中的一些寄存器有影響。圖6各種復(fù)位電路單片機(jī)的復(fù)位是靠外部電路復(fù)位的。其復(fù)位方式有上電復(fù)位和按鍵手動(dòng)復(fù)位兩種。復(fù)位電路中的電阻、電容數(shù)值的設(shè)置,是為了保證在RST管腳處至少保持兩個(gè)機(jī)器周期(24個(gè)振蕩周期)的高電平而完成復(fù)位過(guò)程的,也就是在斯密特觸發(fā)器的輸入端維持在最低閥值電壓以上足夠長(zhǎng)時(shí)間,使斯密特觸發(fā)器產(chǎn)生一個(gè)正脈沖。電阻值通常為1K,電容值通常為22uF。圖6為幾種常見的復(fù)位電路接法。 3.2 按鍵電路3.2.1 鍵盤接口和鍵輸入軟件中應(yīng)解決的幾個(gè)問(wèn)題(1)消除抖動(dòng)按鍵的合斷過(guò)程存在一個(gè)抖動(dòng)的暫態(tài)過(guò)程,這種抖動(dòng)的暫態(tài)過(guò)程大約經(jīng)過(guò)5-10ms的時(shí)間,人

18、的肉眼是察覺(jué)不到的,但對(duì)于高速的CPU是有反應(yīng)的,可能產(chǎn)生誤處理。為了保證鍵動(dòng)作一次,僅作一次處理,必須采取措施以消除抖動(dòng)。本設(shè)計(jì)中采用了軟件消抖的方法。軟件消抖是用延時(shí)來(lái)躲過(guò)暫態(tài)抖動(dòng)過(guò)程,執(zhí)行一段大于10ms的延時(shí)程序后,再讀取穩(wěn)定的鍵狀態(tài)。(2)鍵盤的監(jiān)測(cè)方法對(duì)于計(jì)算機(jī)應(yīng)用系統(tǒng),鍵盤掃描只是CPU工作的一部分,鍵盤處理只是在有鍵按下時(shí)才有意義。對(duì)于是否有鍵按下的信息輸入方式有中斷方式和查詢方式兩種。3.2.2 電路接法如圖7所示:圖7選手按鍵電路3.3 報(bào)警電路考慮到實(shí)驗(yàn)室現(xiàn)有的元器件,設(shè)計(jì)中采用了蜂鳴器報(bào)警電路,如果有條件還可以采用更高級(jí)的語(yǔ)音報(bào)警電路,那樣更加直觀方便。電路的接法如圖8

19、所示:3圖8蜂鳴器報(bào)警電路工作工程:蜂鳴器經(jīng)過(guò)PNP三極管接在P3.6口,當(dāng)P3.6輸出為低電平“0”時(shí),PNP三極管端輸出為“1”,晶體管導(dǎo)通,蜂鳴器兩端獲得約+5V的電壓而鳴叫;當(dāng)P3.6輸出為高電平“1”時(shí),三極管截止,蜂鳴器停止鳴叫。電路中三極管不僅起到了反向作用,還有增大負(fù)載能力的作用。3.4 顯示電路顯示電路為六位共陽(yáng)極LED動(dòng)態(tài)顯示接口電路如圖9所示: 圖9數(shù)碼管顯示電路單個(gè)共陽(yáng)極7段數(shù)碼的段選碼如表3所示:表2 7段共陽(yáng)數(shù)碼管段選碼表顯示字符0123456789共陽(yáng)極段選碼c0Hf9HA4HB0H99H92H82HF8H80H90H共陽(yáng)極LED數(shù)碼管將發(fā)光二極管的陽(yáng)極(正極)短

20、接后作為公共陰極,當(dāng)驅(qū)動(dòng)信號(hào)為低電平、“+”端接高電平時(shí)才能發(fā)光。這樣的多位顯示,將所有位的選線并聯(lián)在一起,由一個(gè)8位I/O口控制,實(shí)現(xiàn)各部分的分時(shí)選通。由于所有位選皆由一個(gè)I/O口控制,在每一瞬間6位LED會(huì)顯示一樣的字符。想要每一位顯示不同的字符,就必須采用掃描方法輪流點(diǎn)亮各位LED,即在每一瞬間只使某一位顯示字符。在此瞬間,段選控制I/O口輸出相應(yīng)字型碼,而位選則控制I/O口在該顯示位送出低電平,以保證該位顯示相應(yīng)字符。如此輪流,使每一位分時(shí)顯示該位應(yīng)顯示字符。其管腳配置與動(dòng)態(tài)顯示接口電路如圖10所示:圖10 共陽(yáng)極數(shù)碼管管腳配置與動(dòng)態(tài)顯示接口電路第四 章系統(tǒng)軟件的設(shè)計(jì)眾多軟件的聯(lián)合使用

21、對(duì)應(yīng)用系統(tǒng)的設(shè)計(jì)起到了很重要的作用,在實(shí)物制作之前對(duì)設(shè)計(jì)進(jìn)行仿真,可以檢驗(yàn)程序的執(zhí)行結(jié)果是否與設(shè)計(jì)的功能一樣,這樣可以對(duì)程序進(jìn)行改進(jìn)。在這里用到了Keil C和Proteus,同時(shí)在電路制板時(shí)用到了Protel DXP繪制PCB板。4.1編譯軟件Keil C(1)Keil C的使用Keil C是眾多單片機(jī)應(yīng)用開發(fā)軟件中優(yōu)秀的軟件之一,它集編輯,編譯,仿真等于一體,同時(shí)支持匯編和C語(yǔ)言的程序設(shè)計(jì),本設(shè)計(jì)使用它作為C編譯器,使用方法如下:首先建立一個(gè)工程,然后將C程序文件添加到工程下編譯,接著設(shè)置生成并輸出HEX文件,如果程序編譯后有錯(cuò)誤就進(jìn)行調(diào)試11。(2)程序設(shè)計(jì)完整的程序參見附錄。主流程主流

22、程圖如圖11所示: 圖11 主流程圖 圖12 按鍵掃描流程按鍵掃描流程每一個(gè)按鍵都對(duì)應(yīng)一個(gè)處理子程序,通過(guò)對(duì)按鍵掃描進(jìn)行按鍵識(shí)別。按鍵識(shí)別的方法包含了行掃描法和反轉(zhuǎn)法。按鍵掃描流程圖如圖12所示,包括了對(duì)矩陣鍵盤和調(diào)整時(shí)間按鍵的掃描。中斷流程圖設(shè)計(jì)采用了外部中斷,中斷程序流程圖如圖13所示:圖13 中斷流程圖4.2仿真軟件ProteusProteus是一款常用的仿真軟件,和Keil聯(lián)合使用,對(duì)設(shè)計(jì)的完善起到很大的作用,也對(duì)硬件的搭建提供了連線依據(jù)。Proteus的使用相對(duì)比較簡(jiǎn)單,在元件庫(kù)中找到相應(yīng)電路所要用到的元件后放置在原理圖紙上,然后用導(dǎo)線連接起來(lái)就可以了。在選用元件后,可以在原理圖紙上

23、雙擊某元件,更改它的屬性,如電阻的名稱、阻值等。本設(shè)計(jì)中使用了單片機(jī),需要加載程序文件。之前已經(jīng)使用Keil C生成了所需要的HEX文件,直接加載進(jìn)來(lái)就可以了。這時(shí)就可以運(yùn)行仿真了。在仿真之前最好再檢查一下電路的連接,確認(rèn)正確之后再運(yùn)行,以免粗心造成運(yùn)行結(jié)果與設(shè)計(jì)的不相符合。設(shè)計(jì)的仿真原理圖如圖14所示:圖14 電路仿真原理圖4.3制板軟件Protel 99 SEPCB電路板的設(shè)計(jì)流程:(1)設(shè)計(jì)原理圖 創(chuàng)建一個(gè)新項(xiàng)目;創(chuàng)建一新的原理圖圖紙;查找元件;在原理圖中放置元件;設(shè)置元件屬性;放置電源和接地符號(hào);繪制原理圖。(2)定義元件封裝 原理圖設(shè)計(jì)完成后,元件的封裝有可能被遺漏或有錯(cuò)誤。對(duì)于用戶

24、自己設(shè)計(jì)的元件或者是某些特殊元件,必須由用戶自己定義或修改元件的封裝。 (3)設(shè)置PCB圖紙可以設(shè)定PCB電路板的結(jié)構(gòu)與尺寸,板層數(shù)目,通孔的類型,網(wǎng)格的大小等,既可以用系統(tǒng)提供的PCB設(shè)計(jì)模板進(jìn)行設(shè)計(jì),也可以手動(dòng)設(shè)計(jì)PCB板。 (4)生成網(wǎng)表和加載網(wǎng)表 網(wǎng)表是電路原理圖和印刷電路板設(shè)計(jì)的接口,只有將網(wǎng)表引入PCB系統(tǒng)后,才能進(jìn)行電路板的自動(dòng)布線。 (5)布線 設(shè)置布線規(guī)則后,先自動(dòng)布線,然后手工調(diào)整。在元件很少且布線簡(jiǎn)單的情況下,也可以直接進(jìn)行手動(dòng)布線。第五章 調(diào)試與故障分析5.1 程序調(diào)試程序調(diào)試:分步驟進(jìn)行調(diào)試,對(duì)每一個(gè)子程序進(jìn)行編譯后,將整個(gè)程序全部編譯,生成HEX文件加載到單片機(jī)上,

25、進(jìn)行仿真。出現(xiàn)錯(cuò)誤和警告時(shí)要進(jìn)行分析,解決問(wèn)題。仿真分析:?jiǎn)?dòng)(上電)后,顯示0000。當(dāng)主持人按鍵,顯示30秒的搶答時(shí)間,如有選手搶答,會(huì)顯示選手以與60秒的回答時(shí)間,回答時(shí)間剩余5秒時(shí),會(huì)響提示音。如果第一位選手不能回答,那么主持人再次按下START鍵允許其他選手繼續(xù)搶答,允許其他選手搶答的時(shí)間為上一次搶答的剩余時(shí)間,答題時(shí)間仍是60秒。如果沒(méi)有人搶答,搶答倒計(jì)時(shí)還有5秒的時(shí)候會(huì)響提示音,搶答時(shí)間過(guò)后搶答器會(huì)自動(dòng)進(jìn)入復(fù)位狀態(tài),可以進(jìn)行下一輪的搶答。 如果主持人未按START鍵,有選手按了搶答按鍵,犯規(guī)搶答,顯示犯規(guī)選手號(hào)并閃爍FF,直到主持人復(fù)位。這與預(yù)期的效果是一致的。5.2 硬件焊接與

26、故障分析電子電路是由許多元器件和導(dǎo)線連接而成,每一個(gè)元件和導(dǎo)線的好壞,連接的正確可靠與否,都可能產(chǎn)生故障,情況很復(fù)雜。有的是一種原因引起的簡(jiǎn)單故障,也有的是多種原因引起的復(fù)雜故障。以下是一些常見的故障:(1)電路組裝有錯(cuò)誤或連接不牢,致使電路與原理電路不一致。(2)電路元器件本身特性不良或損壞,特別是芯片的損壞最為常見,其次是電容的擊穿、短路以與電阻的阻值與標(biāo)稱值不符。因此在組裝電路前應(yīng)進(jìn)行檢查和篩選,以防組裝完電路后,再查找原因所帶來(lái)的種種麻煩。(3)各儀器連線是否正確,是否與電路共地;儀表使用是否得當(dāng)。(4)以上檢查無(wú)錯(cuò)誤時(shí),應(yīng)考慮電路設(shè)計(jì),這也是實(shí)驗(yàn)中尤其是在數(shù)字電路中常遇到的。硬件搭建

27、:按照設(shè)計(jì)的原理圖一步一步完成電路的搭建。這過(guò)程中一定要耐心、細(xì)心,否則很容易跳錯(cuò)線。實(shí)物電路搭好以后,仔細(xì)對(duì)照原理圖檢查一遍,然后就可以上電檢測(cè)了。制作硬件過(guò)程中,出現(xiàn)了以下問(wèn)題經(jīng)過(guò)檢查得到了解決:(1)接上電源后發(fā)覺(jué)數(shù)碼管無(wú)顯示。經(jīng)檢查后現(xiàn)單片機(jī)的29腳懸空未接,應(yīng)該接在高電平上,這是單片機(jī)正常工作的前提。(2)選手鍵盤的其中一個(gè)不正常工作。經(jīng)檢查后發(fā)現(xiàn)是虛焊。總 結(jié)通過(guò)此次的畢業(yè)設(shè)計(jì),讓我更進(jìn)一步的鞏固了單片機(jī)的各種知識(shí)。但在設(shè)計(jì)的過(guò)程中,遇到了很多的問(wèn)題,有一些知識(shí)已經(jīng)不太清楚了,但是通過(guò)一些資料又重新的翻閱并且認(rèn)真的復(fù)習(xí)了相關(guān)教科書中的容。此次的畢業(yè)設(shè)計(jì)樹立了對(duì)自己工作能力的信心,相

28、信會(huì)對(duì)今后的學(xué)習(xí)工作生活都有非常重要的影響,而且大大的提高了動(dòng)手能力,使我充分的體會(huì)到了創(chuàng)造過(guò)程中的探索的艱難和成功的喜悅。雖然這次做出的作品還存在很多需要改進(jìn)的地方,但是在整個(gè)設(shè)計(jì)過(guò)程中期間所得到的最大收獲,使我終身受益。不過(guò)在此設(shè)計(jì)期間,還是要感我的同班許多同學(xué)給予我的幫助,還有感學(xué)院各位教育過(guò)我的老師,你們?cè)谶@三年期間對(duì)我的培養(yǎng)上和教育,使我受益匪淺,我對(duì)他們報(bào)以崇高的敬意紅外感。在論文結(jié)束之際,我要感指導(dǎo)老師,他的專業(yè)知識(shí)豐富,治學(xué)嚴(yán)謹(jǐn),而且認(rèn)真負(fù)責(zé),耐心講解問(wèn)題,對(duì)喔的畢業(yè)設(shè)計(jì)提供了很大的指導(dǎo)和幫助。在這次畢業(yè)設(shè)計(jì)過(guò)程中,在指導(dǎo)老師的嚴(yán)格要求與一些合理性建議。在此向我的指導(dǎo)老師與主任

29、、祝敏老師這三年對(duì)我的培養(yǎng)衷心的感!參考文獻(xiàn)1模擬電子技術(shù)高等教育2數(shù)字電子技術(shù)高等教育3基于集成電路的電路設(shè)計(jì)交通大學(xué)出版4譚浩強(qiáng)C語(yǔ)言程序設(shè)計(jì) M. :清華大學(xué).5 51單片機(jī)C語(yǔ)言教程入門、提高、開發(fā)、擴(kuò)展全攻略電子工業(yè)6 51單片機(jī)開發(fā)與應(yīng)用技術(shù)詳解電子工業(yè)7單片機(jī)c語(yǔ)言應(yīng)用100例電子工業(yè)附錄1:整機(jī)原理圖附錄2:PCB制板圖附錄3:程序清單/能夠顯示搶答、回答時(shí)間倒計(jì)時(shí),能夠調(diào)節(jié)搶答、回答時(shí)間,能夠報(bào)警犯規(guī)搶答,可以計(jì)分,可以實(shí)現(xiàn)軟復(fù)位#include<reg52.h>#define uchar unsigned char#define uint unsigned in

30、tsbit fmq=P36;sbit Key_Start=P34;/開始鍵,時(shí)間設(shè)置時(shí)+sbit Key_Stop=P35;/停止鍵,時(shí)間設(shè)置時(shí)-sbit Key_Restart=P30;/復(fù)位鍵sbit Key_set_Q=P32;/搶答時(shí)間設(shè)置鍵sbit Key_set_H=P33;/回答時(shí)間設(shè)置鍵sbit led=P37;/搶答LED提示uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6,0xf0,0xb6;/段碼表uchar code table_char=0xc0,0xf9

31、,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc7,0xc0,0x92,0x86,0xbf,0xb7,0xff,0xb9,0x8f;/0-9 L O S E -uchar table_score9=0,50,50,50,50,50,50,50,50;/記分?jǐn)?shù)組,初設(shè)值50分void delay(uint z);/延時(shí)函數(shù)聲明void init();/初始化函數(shù)聲明void display(uchar XuanShou,uchar time);/顯示數(shù)字函數(shù)聲明void display_char(uchar char_1,uchar char_2,ucha

32、r char_3,uchar char_4 );/顯示字符函數(shù)聲明void display_set(uchar char_1,uchar time,uchar char_2);/時(shí)間設(shè)置閃動(dòng)顯示函數(shù)聲明void display_score(uchar xs_num);/分?jǐn)?shù)查詢顯示函數(shù)void beep();/蜂鳴器函數(shù)void beep_last();/蜂鳴器特殊報(bào)警void LED();/提示燈函數(shù)uchar QiangDa_time,HuiDa_time,QiangDa_time_temp=20,HuiDa_time_temp=30;/搶答時(shí)間、回答時(shí)間變量uchar count_0,c

33、ount_1;/定時(shí)中計(jì)數(shù)用的uint shan_count=0;/閃動(dòng)顯示計(jì)數(shù)用void main()uchar AnJian,ShuJu,XuanShou_num;Top:init();/初始化XuanShou_num=1;/為分?jǐn)?shù)查詢做好準(zhǔn)備while(1)display(10,0);/顯示一杠ShuJu=P1;if(ShuJu!=0xff)/犯規(guī)搶答!AnJian=ShuJu;switch(AnJian)/取出選手編號(hào)case 0xfe :XuanShou_num=1;break;/1111 1110case 0xfd :XuanShou_num=2;break;/1111 1101c

34、ase 0xfb :XuanShou_num=3;break;/1111 1011case 0xf7 :XuanShou_num=4;break;/1111 0111case 0xef :XuanShou_num=5;break;/1110 1111case 0xdf :XuanShou_num=6;break;/1101 1111case 0xbf :XuanShou_num=7;break;/1011 1111case 0x7f :XuanShou_num=8;break;/0111 1111default : goto LOSE;/無(wú)法顯示了,有兩個(gè)以上的鍵同時(shí)按下了!不過(guò)這種概率相當(dāng)小

35、while(1)display_char(13,14,14,XuanShou_num);/閃動(dòng)顯示犯規(guī)選手并且報(bào)警if(shan_count=50)beep();if(Key_Stop=0)delay(10);if(Key_Stop=0)beep();table_scoreXuanShou_num-;/扣分while(!Key_Stop)display_char(14,14,1,16);/按鍵不放開的情況下顯示-1shan_count=1;/調(diào)用的是閃動(dòng)顯示函數(shù),但是不讓其閃動(dòng)if(Key_Restart=0)delay(10);if(Key_Restart=0)beep();goto Top

36、;/熱復(fù)位if(Key_Start=0)delay(10);if(Key_Start=0)/主持人按下?lián)尨疰I,搶答正式開始!QiangDa_time=QiangDa_time_temp;HuiDa_time=HuiDa_time_temp;beep();TR1=1;/搶答時(shí)間開始倒計(jì)時(shí)break;/跳出犯規(guī)搶答查詢循環(huán)/一下為查分程序測(cè)試 if(Key_Stop=0) delay(10);if(Key_Stop=0)/進(jìn)入分?jǐn)?shù)查詢顯示beep();while(!Key_Stop);while(1)display_score(XuanShou_num);if(Key_Start=0)delay(

37、10);if(Key_Start=0)XuanShou_num+;if(XuanShou_num=9) XuanShou_num=1;while(!Key_Start);/等待按鍵釋放if(Key_Stop=0)delay(10);if(Key_Stop=0)XuanShou_num-;if(XuanShou_num=0) XuanShou_num=8;while(!Key_Stop);/等待按鍵釋放 if(Key_Restart=0)delay(10);if(Key_Restart=0)beep();goto Top;/熱復(fù)位 while(1) /查詢是否有按鍵按下,進(jìn)入搶答循環(huán)displa

38、y(10,QiangDa_time);/顯示搶答倒計(jì)時(shí)if(QiangDa_time=0)TR1=0;/關(guān)閉定時(shí)器1LOSE:while(1)display_char(10,11,12,13); /顯示lose 字符if(Key_Restart=0)delay(10);if(Key_Restart=0)/熱復(fù)位鍵,從頭開始下一輪beep();goto Top;ShuJu=P1;/把P1口的數(shù)據(jù)送給變量if(ShuJu!=0xff)/有按鍵按下 AnJian=ShuJu;/傳遞數(shù)據(jù)掃描值 TR1=0;/關(guān)閉定時(shí)器1 break;/不再進(jìn)行查詢是否有按鍵按下了switch(AnJian)/取出選手

39、編號(hào)case 0xfe :XuanShou_num=1;beep();LED();break;/1111 1110case 0xfd :XuanShou_num=2;beep();LED();break;/1111 1101case 0xfb :XuanShou_num=3;beep();LED();break;/1111 1011case 0xf7 :XuanShou_num=4;beep();LED();break;/1111 0111case 0xef :XuanShou_num=5;beep();LED();break;/1110 1111case 0xdf :XuanShou_num

40、=6;beep();LED();break;/1101 1111case 0xbf :XuanShou_num=7;beep();LED();break;/1011 1111case 0x7f :XuanShou_num=8;beep();LED();break;/0111 1111default : goto LOSE;/無(wú)法顯示了,有兩個(gè)以上的鍵同時(shí)按下了!不過(guò)這種概率相當(dāng)小TR0=1;/啟動(dòng)定時(shí)器0(在這里啟動(dòng)比在前面好)while(1)display(XuanShou_num,HuiDa_time);/顯示選手編號(hào)和回答倒計(jì)時(shí)if(HuiDa_time=0)TR0=0;/關(guān)閉定時(shí)器0g

41、oto LOSE;/跳到顯示lose字符那里if(Key_Stop=0)delay(30);if(Key_Stop=0)/停止鍵按下beep();TR0=0;/關(guān)閉定時(shí)器0,選手開始回答while(!Key_Stop);while(1) /在顯示選手回答倒計(jì)時(shí)時(shí)只有在stop按鍵按下時(shí),才可按復(fù)位鍵display(XuanShou_num,HuiDa_time);/顯示選手編號(hào)和回答倒計(jì)時(shí)if(Key_Start=0)delay(10);if(Key_Start=0)beep();table_scoreXuanShou_num+;/加分while(!Key_Start)display_char

42、(17,18,1,16);/按鍵不放開的情況下顯示+1shan_count=1;/調(diào)用的是閃動(dòng)顯示函數(shù),但是不讓其閃動(dòng)if(Key_Stop=0)delay(10);if(Key_Stop=0)beep();table_scoreXuanShou_num-;/扣分while(!Key_Stop)display_char(14,14,1,16);/按鍵不放開的情況下顯示-1shan_count=1;/調(diào)用的是閃動(dòng)顯示函數(shù),但是不讓其閃動(dòng)if(Key_Restart=0)delay(10);if(Key_Restart=0)/熱復(fù)位鍵,從頭開始下一輪beep();goto Top;void del

43、ay(uint z)/1ms基準(zhǔn)延時(shí)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void init()/初始化函數(shù)EA=1;/開總中斷;TMOD=0x11;/定時(shí)器工作方式1,16位定時(shí)計(jì)數(shù)器TH0=(65536-50000)/256;/50usTL0=(65536-50000)%256;ET0=1;/開定時(shí)器0中斷(暫時(shí)不啟動(dòng)定時(shí)器)TH1=(65536-50000)/256;/50usTL1=(65536-50000)%256;ET1=1;/開定時(shí)器0中斷(暫時(shí)不啟動(dòng)定時(shí)器)EX0=1;/啟動(dòng)外中斷0EX1=1;/啟動(dòng)外中斷1P1=0xf

44、f;/讀P1口的數(shù)據(jù)要先置1準(zhǔn)備count_0=0;/定時(shí)器中的計(jì)數(shù)清零count_1=0;shan_count=0;void display(uchar XuanShou,uchar time)/顯示數(shù)字的函數(shù)P2=0x7f;/0111 1111最后一位數(shù)碼管亮P0=tableXuanShou;/選手編號(hào)delay(1);P2=0x7f;/0111 1111P0=0xff;/消余輝delay(1);P2=0xdf;/1101 1111P0=tabletime%10;/時(shí)間的個(gè)位delay(1);P2=0xdf;/0111 1111P0=0xff;/消余輝delay(1);P2=0xef;/

45、1110 1111P0=tabletime/10;/時(shí)間的十位delay(1);P2=0xef;/0111 1111P0=0xff;/消余輝delay(1);void display_char(uchar char_1,uchar char_2,uchar char_3,uchar char_4 )/閃動(dòng)!顯示字符的函數(shù)shan_count+;if(shan_count=150)shan_count=0; if(shan_count>0&&shan_count<50) P2=0x7f;/0111 1111P0=table_charchar_4;delay(1);P2

46、=0x7f;/0111 1111P0=0xff;delay(1);P2=0xbf;/1011 1111P0=table_charchar_3;delay(1);P2=0xbf;/1011 1111P0=0xff;delay(1);P2=0xdf;/1101 1111P0=table_charchar_2;delay(1);P2=0xdf;/1101 1111P0=0xff;delay(1);P2=0xef;/1110 1111P0=table_charchar_1;delay(1);P2=0xef;/1110 1111P0=0xff;delay(1);else P2=0x7f;/0111 1111P0=0xff;delay(1);P2=0xbf;/P0=0xff;delay(1);P2=0xdf;/P0=0xff;delay(1);P2=0xef;/P0=0xff;delay(1);void display_set(uchar char_1,uch

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論