




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、xxxxxxxx學(xué)院(論文)畢業(yè)設(shè)計(jì)(論文)題 目:基于51單片機(jī)八路搶答器的設(shè)計(jì) 系 部: 專 業(yè): 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師姓名: 指導(dǎo)教師職稱: 2013年 xx 月 xx 日55摘 要隨著科學(xué)技術(shù)的發(fā)展和普及,各種各樣的競賽越來越多,其中搶答器的作用也就顯而易見。目前很多搶答器基本上采用小規(guī)模數(shù)字集成電路設(shè)計(jì),使用起來不夠理想。因此設(shè)計(jì)一更易于使用和區(qū)分度高的搶答器成了非常迫切的任務(wù)。現(xiàn)在單片機(jī)已進(jìn)入各個領(lǐng)域,以其功耗小、智能化而著稱,所以若利用單片機(jī)來設(shè)計(jì)搶答器,便使以上問題得以解決.針對以上情況,本文設(shè)計(jì)出以stc89c52rc單片機(jī)為核心的八路搶答器。我們采用了數(shù)字顯示器直
2、接指示,自動鎖存顯示結(jié)果,并自動復(fù)位的設(shè)計(jì)思想,它能根據(jù)不同的搶答輸入信號,經(jīng)過單片機(jī)的控制處理并產(chǎn)生不同的與輸入信號相對應(yīng)的輸出信號,最后通過led數(shù)碼管顯示相應(yīng)的路數(shù),即使兩組的搶答時間相差幾微秒,也可分辨出是哪組優(yōu)先按下的按鍵,它充分利用了單片機(jī)系統(tǒng)的優(yōu)點(diǎn),具有結(jié)構(gòu)簡單、功能強(qiáng)大、可靠性好、實(shí)用性強(qiáng)的特點(diǎn)。本設(shè)計(jì)是以八路搶答為基本理念??紤]到依需設(shè)定限時回答的功能,利用51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時器/計(jì)數(shù)器定時和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時,同時使數(shù)碼管能夠正確地顯示時間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時系統(tǒng)能夠?qū)崿F(xiàn):在搶
3、答中,只有開始后搶答才有效,如果在開始搶答前搶答為犯規(guī);滿時后系統(tǒng)計(jì)時自動復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法?!娟P(guān)鍵詞】stc89c52rc 共陰數(shù)碼管 按鍵 蜂鳴器目錄前 言1第一章 工作原理21.1設(shè)計(jì)目標(biāo)21.1.1基本功能21.1.2主要技術(shù)參數(shù)2第二章 硬件設(shè)計(jì)與原理32.1 總設(shè)計(jì)框圖32.2 硬件設(shè)計(jì)分析32.2.1 電源的設(shè)計(jì)32.2.2 單片機(jī)最小系統(tǒng)42.2.3 數(shù)碼管顯示電路102.2.4 按鍵輸入電路112.2.5 報警與指示電路14第三章 軟件設(shè)計(jì)與分析153.1 軟件設(shè)計(jì)的組成153.2 各部分軟件分析153.2.1 延時子函數(shù)153.2.2
4、初始化子函數(shù)153.2.3 開始鍵掃描子函數(shù)163.2.4 選手搶答按鍵掃描子函數(shù)173.2.5 顯示子函數(shù)203.2.6 調(diào)整時間鍵掃描子函數(shù)243.2.7 定時器0中斷子函數(shù)263.2.8 定時器1中斷子函數(shù)273.2.9 主函數(shù)283.3 總源程序30第四章 軟件仿真464.1 proteus簡介464.2仿真圖484.3原理圖494.4 元件清單504.5 仿真結(jié)果圖51總結(jié)54致 謝56參考文獻(xiàn)57前 言最近幾年來,隨著科技的飛速發(fā)展,單片機(jī)領(lǐng)域正在不斷的走向社會各個角落,還帶動傳統(tǒng)控制檢測日新月異更新。在實(shí)時運(yùn)作和自動控制的單片機(jī)應(yīng)用到系統(tǒng)中,單片機(jī)如今是作為一個核心部件來使用,僅
5、掌握單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)其具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點(diǎn)的軟件結(jié)合,加以完善。“單片機(jī)原理及應(yīng)用課程設(shè)計(jì)”是電子類專業(yè)的學(xué)科基礎(chǔ)科,它是繼“匯編語言程序設(shè)計(jì)”,“接口技術(shù)”等課程之后開出的實(shí)踐環(huán)節(jié)課程。第一章 工作原理1.1設(shè)計(jì)目標(biāo)1.1.1基本功能1、同時供8名選手比賽,分別用8個按鈕k1 k8表示。2、設(shè)置一個系統(tǒng)搶答控制開關(guān)k0,該開關(guān)由主持人控制。3、搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應(yīng)的編號,揚(yáng)聲器發(fā)出聲響提示,并在七段數(shù)碼管上顯示選手號碼。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。4、搶答器具有定時搶答功能,且一次搶答
6、的時間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動開始鍵后,定時器進(jìn)行減計(jì)時。5、參賽選手在設(shè)定的時間內(nèi)進(jìn)行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。在這段時間如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00。1.1.2主要技術(shù)參數(shù) 1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為犯規(guī)。2、搶答限定時間和回答問題的時間是在1060s設(shè)定。3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音提示。4、搶答時間和回答問題時間倒記時顯示,時間完后系統(tǒng)自動復(fù)位。5、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。第
7、二章 硬件設(shè)計(jì)與原理以stc89c52rc單片機(jī)為核心,起著控制作用。系統(tǒng)包括數(shù)碼管顯示電路、復(fù)位電路、時鐘電路、按鍵輸入電路和蜂鳴器報警電路。設(shè)計(jì)思路分為六個模塊:復(fù)位電路、晶振電路模塊、stc89c52rc、數(shù)碼管顯示電路、按鍵輸入電路和蜂鳴器報警電路這六個模塊。2.1 總設(shè)計(jì)框圖2.2 硬件設(shè)計(jì)分析2.2.1 電源的設(shè)計(jì)系統(tǒng)電源使用外接直流5伏。2.2.2 單片機(jī)最小系統(tǒng)51單片機(jī)是對目前所有兼容intel 8031指令系統(tǒng)的單片機(jī)的統(tǒng)稱。該系列單片機(jī)的始祖是intel的8031單片機(jī),后來隨著技術(shù)的發(fā)展,成為目前廣泛應(yīng)用的為單片機(jī)之一。單片機(jī)是在一塊芯片內(nèi)集成了cpu、ram、rom、
8、定時器計(jì)數(shù)器和多功能i/o口等計(jì)算機(jī)所需要的基本功能部件的大規(guī)模集成電路,又稱為mcu。51系列單片機(jī)內(nèi)包含以下幾個部件:一個位cpu;一個片內(nèi)振蕩器及時鐘電路;4kb的rom程序存儲器;一個128b的ram數(shù)據(jù)存儲器;尋址64kb外部數(shù)據(jù)存儲器和64kb外部程序存儲空間的控制電路;32條可編程的i/o口線;兩個16位定時計(jì)數(shù)器;一個可編程全雙工串行口;個中斷源、兩個優(yōu)先級嵌套中斷結(jié)構(gòu)。如圖2-2-1所示為stc89c52rc單片機(jī)基本構(gòu)造,其基本性能介紹如下:圖2-2-1 stc89c52rc單片機(jī)stc89c52rc本身內(nèi)含40個引腳,32個外部雙向輸入/輸出(i/o)端口,同時內(nèi)含2個外
9、中端口,3個16位可編程定時計(jì)數(shù)器,2個全雙工串行通信口,stc89c51rc可以按照常規(guī)方法進(jìn)行編程,但不可以在線編程。其將通用的微處理器和flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的flash存儲器可有效地降低開發(fā)成本。stc89c52rc的主要特性如下表所示:兼容mcs51指令系統(tǒng)32個可編程i/o線4k字節(jié)可編程閃爍存儲器可編程uarl通道三個16位可編程定時/計(jì)數(shù)器中斷時鐘頻率0-24mhz2個外部中斷源,共8個中斷源2568bit內(nèi)部ram2個讀寫中斷口線可直接驅(qū)動led軟件設(shè)置睡眠和喚醒功能低功耗空閑和掉電模式表2-2-1 stc89c52rc主要功能描述stc89c52rc為
10、40腳雙列直插封裝的8位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的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ù)位電路。vcc(40腳)和vss(20腳)為供電端口,分別接+5v電源的正負(fù)端。p0p3 為可編程通用i/o腳,其功能用途由軟件定義,在本設(shè)計(jì)中,p0端
11、口(3239腳)被定義為n1功能控制端口,分別與n1的相應(yīng)功能管腳相連接,13腳定義為ir輸入端,10腳和11腳定義為i2c總線控制端口,分別連接n1的sdas(18腳)和scls(19腳)端口,12腳、27腳及28腳定義為握手信號功能端口,連接主板cpu的相應(yīng)功能端,用于當(dāng)前制式的檢測及會聚調(diào)整狀態(tài)進(jìn)入的控制功能。p0口:p0口是一組8位漏極開路型雙向i/o 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個ttl邏輯門電路,對端口p0寫“1”時,可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部
12、上拉電阻。在flash 編程時,p0口接收指令字節(jié),而在程序校驗(yàn)時,輸出指令字節(jié),校驗(yàn)時,要求外接上拉電阻。p1口:p1是一個帶內(nèi)部上拉電阻的8位雙向i/o口,p1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個ttl邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(iil)。與at89c51不同之處是,p1.0和p1.1還可分別作為定時/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(p1.0/t2)和輸入(p1.1/t2ex)。flash編程和程序校驗(yàn)期間,p1接收低8位地址。p2口:p2是一個帶有內(nèi)部上拉電阻的
13、8 位雙向i/o口,p2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個ttl邏輯門電路。對端口p2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(iil)。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行movx dptr指令)時,p2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行movx ri指令)時,p2口輸出p2鎖存器的內(nèi)容。flash編程或校驗(yàn)時,p2亦接收高位地址和一些控制信號。p3口:p3口是一組帶有內(nèi)部上拉電阻的8位雙向i/o口。p3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4
14、個ttl邏輯門電路。對p3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的p3口將用上拉電阻輸出電流(iil)。p3口除了作為一般的i/o口線外,更重要的用途是它的第二功能p3口還接收一些用于flash 閃速存儲器編程和程序校驗(yàn)的控制信號。rst:復(fù)位輸入。當(dāng)振蕩器工作時,rst引腳出現(xiàn)兩個機(jī)器周期以上高電平將使單片機(jī)復(fù)位。ale/prog:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ale仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳
15、過一個al脈沖。對flash存儲器編程期間,該引腳還用于輸入編程脈沖(prog)。如有必要,可通過對特殊功能寄存器(sfr)區(qū)中的8eh單元的d0位置位,可禁止ale操作。該位置位后,只有一條 movx 和movc指令才能將ale激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ale禁止位無效。psen:程序儲存允許(psen)輸出是外部程序存儲器的讀選通信號,當(dāng)stc89c51rc由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次psen有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次psen信號。ea/vpp:外部訪問允許。欲使cpu僅訪問外部程序存儲器(地址
16、為0000hffffh),ea端必須保持低電平(接地)。需注意的是:如果加密位lb1被編程,復(fù)位時內(nèi)部會鎖存ea端狀態(tài)。如ea端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲器中的指令。flash存儲器編程時,該引腳加上+12v的編程允許電源vpp,當(dāng)然這必須是該器件是使用12v編程電壓vpp。xtal1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。xtal2:振蕩器反相放大器的輸出端。單片機(jī)最小原理圖如圖2-2-2所示。圖2-2-2 單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng)說明:時鐘信號的產(chǎn)生:在mcs-51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳xtal1,其輸出端為引腳xtal2。而在芯
17、片的外部,xtal1和xtal2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個穩(wěn)定的自激振蕩器,這就是單片機(jī)的時鐘振蕩電路。時鐘電路產(chǎn)生的振蕩脈沖經(jīng)過觸發(fā)器進(jìn)行二分頻之后,才成為單片機(jī)的時鐘脈沖信號。一般地,電容c2和c3取30pf左右,晶體的振蕩頻率范圍是1.2-12mhz。如果晶體振蕩頻率高,則系統(tǒng)的時鐘頻率也高,單片機(jī)的運(yùn)行速度也就快。單片機(jī)復(fù)位使cpu和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài)下,并從這個狀態(tài)開始工作。單片機(jī)復(fù)位條件:必須使9腳加上持續(xù)兩個機(jī)器周期(即24個振蕩周期)的高電平。2.2.3 數(shù)碼管顯示電路顯示系統(tǒng)采用四位一體數(shù)碼管來顯示,led顯示屏作為大型顯示設(shè)備的一種
18、,具有亮度高、價格低、壽命長、維護(hù)簡便等優(yōu)點(diǎn)。led數(shù)碼管的結(jié)構(gòu)簡單,分為七段和八段兩種形式,也有共陽和共陰之分。以八段共陽管為例,它有8個發(fā)光二極管(比七段多一個發(fā)光二極管,用來顯示sp,即點(diǎn)),每個發(fā)光二極管的陽極連在一起,如圖(圖2-2-4)所示。這樣,一個led數(shù)碼管就有i根位選線和8根段選線,要想顯示一個數(shù)值,就要分別對它們的高低電平來加以控制。為方便起見,本文主要討論共陰八段led數(shù)碼顯示管,其他類形的顯示管與其類似。圖2-2-3 led數(shù)碼管led 燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點(diǎn)亮而顯示不同的字形,如 h,g,f,e,d,c,b,a全亮顯示為8,
19、采用共陰極連接驅(qū)動代碼,代碼表如下表(表2-2-2)所示。表2-2-2 驅(qū)動代碼表顯示數(shù)值h,g,f,e,d,c,b,a驅(qū)動代碼0001111113fh10000011006h2010110115bh3010011114fh40110011066h5011011016dh6011111017dh70000011107h8011111117fh9011011116fh2.2.4 按鍵輸入電路按鍵是由一組按壓式或觸摸式開關(guān)構(gòu)成的陣列,是一種常用的輸入設(shè)備。鍵盤可分為編碼式鍵盤和非編碼式鍵盤兩種。1.編碼鍵盤通過硬件電路產(chǎn)生被按按鍵的鍵碼,這種鍵盤所需程序簡單,但硬件電路復(fù)雜、價格昂貴通常不被單片機(jī)
20、系統(tǒng)采用。2.非編碼鍵盤常用一些按鍵排列成行列矩陣,其硬件邏輯與按鍵編碼不存在嚴(yán)格的對應(yīng)關(guān)系,而要由所用的程序來決定。非編碼鍵盤的硬件接口簡單,但是要占用較多的cpu時間,通常采用可編程鍵盤管理芯片來克服這個缺點(diǎn)。本設(shè)計(jì)使用兩種按鍵,一種是按鍵式非編碼鍵盤和輕觸式非編碼開關(guān)。在接線時由于有四個引腳,連接時需要用萬用表進(jìn)行測量,然后接通兩個引腳,原理圖如下。要進(jìn)行數(shù)據(jù)的計(jì)算就必須先進(jìn)行數(shù)據(jù)的輸入,也就必須確定按鍵輸入的數(shù)值是什么,這就需要對鍵盤進(jìn)行掃描,從而確定究竟是哪個鍵按下。圖2-2-4 按鍵電路2.2.5 報警與指示電路圖2-2-5 報警與指示電路第三章 軟件設(shè)計(jì)與分析3.1 軟件設(shè)計(jì)的組
21、成該系統(tǒng)由延時子函數(shù)、初始化子函數(shù)、開始鍵掃描子函數(shù)、選手搶答按鍵掃描子函數(shù)、顯示子函數(shù)、調(diào)整時間鍵掃描子函數(shù)、定時器0中斷子函數(shù)、定時器1中斷子函數(shù)、主函數(shù)和數(shù)據(jù)定義這幾部分組成。3.2 各部分軟件分析3.2.1 延時子函數(shù)/延時子函數(shù)void delay(uchar x)uchar y;for(;x0;x-)for(y=120;y0;y-);3.2.2 初始化子函數(shù)/初始化子函數(shù)void init()tmod=0x11;th0=(65536-2000)/256;tl0=(65536-2000)%256;th1=(65536-2000)/256;tl1=(65536-2000)%256;et
22、0=1;et1=1;ea=1;p0=0x00;time1=10;time2=10;flag2=1;3.2.3 開始鍵掃描子函數(shù)/開始鍵掃描子函數(shù)void key1()uchar i=100;if(k0=0)delay(10);if(k0=0)while(k0=0&i)i-;delay(10);tr0=1;s=time1;m=0;flag1=1;flag2=1;flag3=1;num=0;beep=1;d0=1;flag4=0;/清除違規(guī)標(biāo)志位aa=0;bb=0;3.2.4 選手搶答按鍵掃描子函數(shù)/選手搶答按鍵掃描子函數(shù)void key()if(k1=0)delay(10);if(k1=0)wh
23、ile(!k1);num=1;/數(shù)碼管顯示1號1tr0=0;/關(guān)閉定時器0,時間停止tr1=1;/打開定時器1,使揚(yáng)聲器響一聲flag2=0;/關(guān)閉開始鍵標(biāo)志位,使再按其他七個鍵不會響應(yīng)if(k2=0)/下面七個鍵的處理同上delay(10);if(k2=0)while(!k2);num=2;tr0=0;tr1=1;flag2=0;/重要if(k3=0)delay(10);if(k3=0)while(!k3);num=3;tr0=0;tr1=1;flag2=0;if(k4=0)delay(10);if(k4=0)while(!k4);num=4;tr0=0;tr1=1;flag2=0;if(k
24、5=0)delay(10);if(k5=0)while(!k5);num=5;tr0=0;tr1=1;flag2=0;if(k6=0)delay(10);if(k6=0)while(!k6);num=6;tr0=0;tr1=1;flag2=0;if(k7=0)delay(10);if(k7=0)while(!k7);num=7;tr0=0;tr1=1;flag2=0;if(k8=0)delay(10);if(k8=0)while(!k8);num=8;tr0=0;tr1=1;flag2=0;3.2.5 顯示子函數(shù)/顯示子函數(shù)void display()if(flag1=1)/開始鍵按下,開始計(jì)
25、時搶答if(num!=0)/如果有人搶答,則顯示相應(yīng)的幾號p0=table1num;/顯示幾號搶到了p2=table20;delay(2);p0=0;p2=0xff;else/否則沒人搶答,則前面不顯示幾號p0=0x00;p2=0xff;p0=table1s/10;/下面為顯示搶答倒計(jì)時p2=table22;delay(2);p0=0;p2=0xff;p0=table1s%10;p2=table23;delay(2);p2=0xff;p0=0x00;else/如果開始鍵沒有按下,則顯示f ff(若有違規(guī)者,則顯示違規(guī)號碼及 ff)或時間調(diào)整if(flag4=1)/違規(guī)顯示if(num!=0)p
26、0=table1num;/顯示幾號違規(guī)了p2=table20;delay(2);p0=0x00;p2=0xff;p0=table115;/下面顯示 ff,表示違規(guī)了p2=table22;delay(2);p0=0x00;/消隱p2=0xff;p0=table115;p2=table23;delay(2);p0=0x00;p2=0xff;elsep0=0x00;p2=0xff;else/沒有人違規(guī)才顯示調(diào)整時間if(aa=1)p0=0x6d;/第一位數(shù)碼管顯示5(s)(表示搶答時間調(diào)整)p2=table20;delay(2);p0=0x00;p2=0xff;p0=table1time1/10;/
27、下面顯示調(diào)整的搶答時間p2=table22;delay(2);p0=0x00;p2=0xff;p0=table1time1%10;p2=table23;delay(2);p0=0x00;p2=0xff;else if(bb=1)p0=0x07;/第一位與第二位數(shù)碼管合起來顯示t,表示答題時間調(diào)整p2=table20;delay(2);p0=0x00;p2=0xff;p0=0x31;p2=table21;delay(2);p0=0x00;p2=0xff;p0=table1time2/10;p2=table22;delay(2);p0=0x00;p2=0xff;p0=table1time2%10;
28、p2=table23;delay(2);p0=0x00;p2=0xff;else/否則顯示f ffp0=table115;p2=table20;delay(2);p0=0x00;p0=table115;p2=table22;delay(2);p0=0x00;/消隱p2=0xff;p0=table115;p2=table23;delay(2);p0=0x00;p2=0xff;3.2.6 調(diào)整時間鍵掃描子函數(shù)/調(diào)整時間鍵掃描子函數(shù)void key2()uchar i=100;if(s2=0)/搶答時間調(diào)整delay(10);if(s2=0)while(s2=0&i)i-;delay(10);tim
29、e1+;if(time1=61)time1=10;aa=1;/將搶答時間標(biāo)志位置1bb=0;/同時關(guān)閉答題時間標(biāo)志位if(s3=0)/答題時間調(diào)整delay(10);if(s3=0)while(s3=0&i)i-;delay(10);time2+;if(time2=61)time2=10;bb=1;aa=0;3.2.7 定時器0中斷子函數(shù)/定時器0中斷子函數(shù)void t0() interrupt 1th0=(65536-2000)/256;/2mstl0=(65536-2000)%256;if(flag3)/開始(start)鍵按下,嘟一聲(長1秒),表示開始搶答beep=beep;elseb
30、eep=1;if(s5)/搶答時間快到報警,隔1秒響一聲且紅燈閃爍,響三聲if(s%2=0)flag3=1;d0=0;elseflag3=0;d0=1;m+;if(m=500)/1秒m=0;s-;flag3=0;/關(guān)閉開始鍵按下響一秒的嘟聲if(s=-1)s=20;tr0=0;flag1=0;/顯示f ffflag2=1;num=0;d0=1;3.2.8 定時器1中斷子函數(shù)/定時器1中斷子函數(shù)void t1() interrupt 3/定時器1處理有人按下?lián)尨鹌鬣揭宦?長1秒)th1=(65536-2000)/256;tl1=(65536-2000)%256;beep=beep;n+;if(n
31、=500)n=0;tr1=0;3.2.9 主函數(shù)/主函數(shù)void main()uchar i=100;init();/調(diào)用初始化子函數(shù)while(1)key1();/調(diào)用開始鍵掃描子函數(shù)if(flag1=0)&(flag2=1)/當(dāng)開始鍵沒按下及沒有人違規(guī)時才可進(jìn)行時間調(diào)整key2();if(flag1=1)&(flag2=0)/當(dāng)開始鍵按下及有人搶答才進(jìn)行開始回答計(jì)時倒計(jì)時if(s1=0)delay(10);if(s1=0)while(s1=0&i)i-;delay(10);s=time2;tr0=1;m=0;tr1=1;if(flag1=0)&(flag2=1)/違規(guī)key();if(nu
32、m!=0)/開始鍵沒有按下時,有人按下了搶答器,則置違規(guī)標(biāo)志位flag4=1;d0=0;if(flag1=1)&(flag2=1)/如果開始鍵按下且搶答鍵沒有人按下,則進(jìn)行八路搶答鍵掃描key();display();/顯示到數(shù)碼管上3.3 總源程序#includetypedef unsigned char uchar;typedef unsigned int uint;sbit k0=p30;/開始搶答按鍵sbit beep=p37;/蜂鳴器sbit d0=p31;/指示燈sbit k1=p10;/1號選手搶答按鍵sbit k2=p11;/2號選手搶答按鍵sbit k3=p12;/3號選手搶
33、答按鍵sbit k4=p13;/4號選手搶答按鍵sbit k5=p14;/5號選手搶答按鍵sbit k6=p15;/6號選手搶答按鍵sbit k7=p16;/7號選手搶答按鍵sbit k8=p17;/8號選手搶答按鍵sbit s1=p32;/答題計(jì)時鍵sbit s2=p33;/開始搶答時間調(diào)整鍵sbit s3=p34;/答題計(jì)時時間調(diào)整鍵char s;uchar num=0;char time1;/搶答時間char time2;/答題限時時間uint m,n;/t0,t1定時器定一秒時bit flag1,flag2,flag3,flag4;/標(biāo)志位bit aa,bb;/時間調(diào)整標(biāo)志位/延時子函
34、數(shù)void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=120;y0;y-);uchar code table1=/共陰數(shù)碼管段碼值0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code table2=/共陰數(shù)碼管位碼值0xfe,0xfd,0xfb,0xf7;/初始化子函數(shù)void init()tmod=0x11;th0=(65536-2000)/256;tl0=(65536-2000)%256;th1=(65536-2000)/
35、256;tl1=(65536-2000)%256;et0=1;et1=1;ea=1;p0=0x00;time1=10;time2=10;flag2=1;/開始鍵掃描子函數(shù)void key1()uchar i=100;if(k0=0)delay(10);if(k0=0)while(k0=0&i)i-;delay(10);tr0=1;s=time1;m=0;flag1=1;flag2=1;flag3=1;num=0;beep=1;d0=1;flag4=0;/清除違規(guī)標(biāo)志位aa=0;bb=0;/選手搶答按鍵掃描子函數(shù)void key() uchar i=100;if(k1=0)delay(10);i
36、f(k1=0)while(k1=0&i)i-;delay(10);num=1;/數(shù)碼管顯示1號1tr0=0;/關(guān)閉定時器0,時間停止tr1=1;/打開定時器1,使揚(yáng)聲器響一聲flag2=0;/關(guān)閉開始鍵標(biāo)志位,使再按其他七個鍵不會響應(yīng)if(k2=0)/下面七個鍵的處理同上delay(10);if(k2=0)while(k2=0&i)i-;delay(10);num=2;tr0=0;tr1=1;flag2=0;/重要if(k3=0)delay(10);if(k3=0)while(k3=0&i)i-;delay(10);num=3;tr0=0;tr1=1;flag2=0;if(k4=0)delay
37、(10);if(k4=0)while(k4=0&i)i-;delay(10);num=4;tr0=0;tr1=1;flag2=0;if(k5=0)delay(10);if(k5=0)while(k5=0&i)i-;delay(10);num=5;tr0=0;tr1=1;flag2=0;if(k6=0)delay(10);if(k6=0)while(k6=0&i)i-;delay(10);num=6;tr0=0;tr1=1;flag2=0;if(k7=0)delay(10);if(k7=0)while(k7=0&i)i-;delay(10);num=7;tr0=0;tr1=1;flag2=0;i
38、f(k8=0)delay(10);if(k8=0)while(k8=0&i)i-;delay(10);num=8;tr0=0;tr1=1;flag2=0;/數(shù)碼管顯示子函數(shù)void display()if(flag1=1)/開始鍵按下,開始計(jì)時搶答if(num!=0)/如果有人搶答,則顯示相應(yīng)的幾號p0=table1num;/顯示幾號搶到了p2=table20;delay(2);p0=0;p2=0xff;else/否則沒人搶答,則前面不顯示幾號p0=0x00;p2=0xff;p0=table1s/10;/下面為顯示搶答倒計(jì)時p2=table22;delay(2);p0=0;p2=0xff;p0
39、=table1s%10;p2=table23;delay(2);p2=0xff;p0=0x00;else/如果開始鍵沒有按下,則顯示f ff(若有違規(guī)者,則顯示違規(guī)號碼及 ff)或時間調(diào)整if(flag4=1)/違規(guī)顯示if(num!=0)p0=table1num;/顯示幾號違規(guī)了p2=table20;delay(2);p0=0x00;p2=0xff;p0=table115;/下面顯示 ff,表示違規(guī)了p2=table22;delay(2);p0=0x00;/消隱p2=0xff;p0=table115;p2=table23;delay(2);p0=0x00;p2=0xff;elsep0=0x0
40、0;p2=0xff;else/沒有人違規(guī)才顯示調(diào)整時間if(aa=1)p0=0x76;/第一位數(shù)碼管顯示5(s)(表示搶答時間調(diào)整)p2=table20;delay(2);p0=0x00;p2=0xff;p0=table1time1/10;/下面顯示調(diào)整的搶答時間p2=table22;delay(2);p0=0x00;p2=0xff;p0=table1time1%10;p2=table23;delay(2);p0=0x00;p2=0xff;else if(bb=1)p0=0x38;/第一位與第二位數(shù)碼管合起來顯示t,表示答題時間調(diào)整p2=table20;delay(2);p0=0x00;p2=
41、0xff;p0=table1time2/10;p2=table22;delay(2);p0=0x00;p2=0xff;p0=table1time2%10;p2=table23;delay(2);p0=0x00;p2=0xff;else/否則顯示f ffp0=table115;p2=table20;delay(2);p0=0x00;p0=table115;p2=table22;delay(2);p0=0x00;/消隱p2=0xff;p0=table115;p2=table23;delay(2);p0=0x00;p2=0xff;/調(diào)整時間鍵掃描子函數(shù)void key2()uchar i=100;i
42、f(s2=0)/搶答時間調(diào)整delay(10);if(s2=0)while(s2=0&i)i-;delay(10);time1+;if(time1=61)time1=10;aa=1;/將搶答時間標(biāo)志位置1bb=0;/同時關(guān)閉答題時間標(biāo)志位if(s3=0)/答題時間調(diào)整delay(10);if(s3=0)while(s3=0&i)i-;delay(10);time2+;if(time2=61)time2=10;bb=1;aa=0;/主函數(shù)void main()uchar i=100;init();/調(diào)用初始化子函數(shù)while(1)key1();/調(diào)用開始鍵掃描子函數(shù)if(flag1=0)&(fl
43、ag2=1)/當(dāng)開始鍵沒按下及沒有人違規(guī)時才可進(jìn)行時間調(diào)整key2();if(flag1=1)&(flag2=0)/當(dāng)開始鍵按下及有人搶答才進(jìn)行開始回答計(jì)時倒計(jì)時if(s1=0)delay(10);if(s1=0)while(s1=0&i)i-;delay(10);s=time2;tr0=1;m=0;tr1=1;if(flag1=0)&(flag2=1)/違規(guī)key();if(num!=0)/開始鍵沒有按下時,有人按下了搶答器,則置違規(guī)標(biāo)志位flag4=1;d0=0;if(flag1=1)&(flag2=1)/如果開始鍵按下且搶答鍵沒有人按下,則進(jìn)行八路搶答鍵掃描key();display();/顯示到數(shù)碼管上/定時器0中斷子函數(shù)void t0() interrupt 1th0=(65536-2000)/256;/2mstl0=(65
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025新媒體新聞傳播真實(shí)性與公信力構(gòu)建路徑研究報告
- 2025年P(guān)M步進(jìn)電機(jī)項(xiàng)目建議書
- 工業(yè)互聯(lián)網(wǎng)平臺量子通信技術(shù)在智能物流設(shè)備數(shù)據(jù)傳輸中的數(shù)據(jù)傳輸穩(wěn)定性研究報告
- 股骨損傷的治療方案
- 超短波治療儀
- 2025新進(jìn)廠職工安全培訓(xùn)考試試題含答案(培優(yōu)A卷)
- 2025年項(xiàng)目部管理人員安全培訓(xùn)考試試題含答案(能力提升)
- 2025年非熱殺菌先進(jìn)設(shè)備項(xiàng)目合作計(jì)劃書
- 2025年企業(yè)員工崗前安全培訓(xùn)考試試題附參考答案【突破訓(xùn)練】
- 2024-2025公司及項(xiàng)目部安全培訓(xùn)考試試題帶答案(研優(yōu)卷)
- 2025年北京鐵路局集團(tuán)招聘筆試參考題庫含答案解析
- 湖南省長沙市雅禮實(shí)驗(yàn)高中-主題班會-把學(xué)習(xí)變?yōu)闊釔郏簝?nèi)驅(qū)力【課件】
- 2025中考物理總復(fù)習(xí)填空題練習(xí)100題(附答案及解析)
- 2025年牛津譯林版英語七年級下冊全冊單元重點(diǎn)知識點(diǎn)與語法匯編
- 期中考試成績質(zhì)量分析
- 高空作業(yè)車(剪叉式、曲臂式)驗(yàn)收表
- 浸水電梯應(yīng)急保障檢測規(guī)范DB1305T+95-2024
- 高度近視防控專家共識
- 安全標(biāo)準(zhǔn)化安全培訓(xùn)試題(審定版)
- 血透患者敘事護(hù)理故事
- 自動噴水滅火系統(tǒng)施工安裝質(zhì)量記錄(樣本)
評論
0/150
提交評論