版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、畢業(yè)設計(論文)題 目: 基于51單片機的搶答器系統(tǒng)設計 函授站點: 中國礦業(yè)大學繼續(xù)教育學院 學習層次: ???班級名稱: 徐工技師學院 函機電2015班 姓名: 彭乾坤 學號: 中國礦業(yè)大學繼續(xù)教育學院20 年 月 日摘 要隨著科學技術的發(fā)展和普及,各種各樣的競賽越來越多,其中搶答器的作用也就顯而易見。目前很多搶答器基本上采用小規(guī)模數字集成電路設計,使用起來不夠理想。因此設計一更易于使用和區(qū)分度高的搶答器成了非常迫切的任務?,F在單片機已進入各個領域,以其功耗小、智能化而著稱,所以若利用單片機來設計搶答器,便使以上問題得以解決.針對以上情況,本文設計出以STC89C52RC單片機為核心的八路
2、搶答器。我們采用了數字顯示器直接指示,自動鎖存顯示結果,并自動復位的設計思想,它能根據不同的搶答輸入信號,經過單片機的控制處理并產生不同的與輸入信號相對應的輸出信號,最后通過LED數碼管顯示相應的路數,即使兩組的搶答時間相差幾微秒,也可分辨出是哪組優(yōu)先按下的按鍵,它充分利用了單片機系統(tǒng)的優(yōu)點,具有結構簡單、功能強大、可靠性好、實用性強的特點。本設計是以八路搶答為基本理念??紤]到依需設定限時回答的功能,利用51單片機及外圍接口實現的搶答系統(tǒng),利用單片機的定時器/計數器定時和記數的原理,將軟、硬件有機地結合起來,使得系統(tǒng)能夠正確地進行計時,同時使數碼管能夠正確地顯示時間。用開關做鍵盤輸出,揚聲器發(fā)
3、生提示。同時系統(tǒng)能夠實現:在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為犯規(guī);滿時后系統(tǒng)計時自動復位及主控強制復位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。關鍵詞:STC89C52RC; 共陰數碼管; 按鍵 ;蜂鳴器目 錄前 言1第一章 工作原理21.1設計目標21.1.1基本功能21.1.2主要技術參數2第二章 硬件設計與原理32.1 總設計框圖32.2 硬件設計分析32.2.1 電源的設計32.2.2 單片機最小系統(tǒng)42.2.3 數碼管顯示電路102.2.4 按鍵輸入電路112.2.5 報警與指示電路14第三章 軟件設計與分析153.1 軟件設計的組成153.2 各部分軟件分析153
4、.2.1 延時子函數153.2.2 初始化子函數153.2.3 開始鍵掃描子函數163.2.4 選手搶答按鍵掃描子函數173.2.5 顯示子函數203.2.6 調整時間鍵掃描子函數243.2.7 定時器0中斷子函數263.2.8 定時器1中斷子函數273.2.9 主函數283.3 總源程序30第四章 軟件仿真464.1 PROTEUS簡介464.2仿真圖484.3原理圖494.4 元件清單504.5 仿真結果圖51總結54致 謝56參考文獻57歡迎下載前 言最近幾年來,隨著科技的飛速發(fā)展,單片機領域正在不斷的走向社會各個角落,還帶動傳統(tǒng)控制檢測日新月異更新。在實時運作和自動控制的單片機應用到系
5、統(tǒng)中,單片機如今是作為一個核心部件來使用,僅掌握單片機方面知識是不夠的,還應根據其具體硬件結構,以及針對具體應用對象特點的軟件結合,加以完善?!皢纹瑱C原理及應用課程設計”是電子類專業(yè)的學科基礎科,它是繼“匯編語言程序設計”,“接口技術”等課程之后開出的實踐環(huán)節(jié)課程。第一章 工作原理1.1設計目標1.1.1基本功能1、同時供8名選手比賽,分別用8個按鈕K1 K8表示。2、設置一個系統(tǒng)搶答控制開關K0,該開關由主持人控制。3、搶答器具有鎖存與顯示功能。即選手按動按鈕,鎖存相應的編號,揚聲器發(fā)出聲響提示,并在七段數碼管上顯示選手號碼。選手搶答實行優(yōu)先鎖存,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除
6、為止。4、搶答器具有定時搶答功能,且一次搶答的時間由主持人設定(如30秒)。當主持人啟動"開始"鍵后,定時器進行減計時。5、參賽選手在設定的時間內進行搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號和搶答的時間,并保持到主持人將系統(tǒng)清除為止。在這段時間如果定時時間已到,無人搶答,本次搶答無效,系統(tǒng)報警并禁止搶答,定時顯示器上顯示00。1.1.2主要技術參數 1、在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為犯規(guī)。2、搶答限定時間和回答問題的時間是在1060s設定。3、可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音提示。4、搶答時間和回答問題時間倒記時顯示
7、,時間完后系統(tǒng)自動復位。5、按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。第二章 硬件設計與原理以STC89C52RC單片機為核心,起著控制作用。系統(tǒng)包括數碼管顯示電路、復位電路、時鐘電路、按鍵輸入電路和蜂鳴器報警電路。設計思路分為六個模塊:復位電路、晶振電路模塊、STC89C52RC、數碼管顯示電路、按鍵輸入電路和蜂鳴器報警電路這六個模塊。2.1 總設計框圖2.2 硬件設計分析2.2.1 電源的設計系統(tǒng)電源使用外接直流5伏。2.2.2 單片機最小系統(tǒng)51單片機是對目前所有兼容intel 8031指令系統(tǒng)的單片機的統(tǒng)稱。該系列單片機的始祖是intel的8031單片機,后來隨著技術的發(fā)展,成為目前廣泛應
8、用的為單片機之一。單片機是在一塊芯片內集成了CPU、RAM、ROM、定時器計數器和多功能I/O口等計算機所需要的基本功能部件的大規(guī)模集成電路,又稱為MCU。51系列單片機內包含以下幾個部件:一個位CPU;一個片內振蕩器及時鐘電路;4KB的ROM程序存儲器;一個128B的RAM數據存儲器;尋址64KB外部數據存儲器和64KB外部程序存儲空間的控制電路;32條可編程的I/O口線;兩個16位定時計數器;一個可編程全雙工串行口;個中斷源、兩個優(yōu)先級嵌套中斷結構。如圖2-2-1所示為STC89C52RC單片機基本構造,其基本性能介紹如下:圖2-2-1 STC89C52RC單片機STC89C52RC本身內
9、含40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中端口,3個16位可編程定時計數器,2個全雙工串行通信口,STC89C51RC可以按照常規(guī)方法進行編程,但不可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發(fā)成本。STC89C52RC的主要特性如下表所示:兼容MCS51指令系統(tǒng)32個可編程I/O線4k字節(jié)可編程閃爍存儲器可編程UARL通道三個16位可編程定時/計數器中斷時鐘頻率0-24MHz2個外部中斷源,共8個中斷源256×8bit內部RAM2個讀寫中斷口線可直接驅動LED軟件設置睡眠和喚醒功能低功耗空
10、閑和掉電模式表2-2-1 STC89C52RC主要功能描述STC89C52RC為40腳雙列直插封裝的8位通用微處理器,采用工業(yè)標準的C51內核,在內部功能及管腳排布上與通用的8xc52相同,其主要用于會聚調整時的功能控制。功能包括對會聚主IC內部寄存器、數據RAM及外部接口等功能部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19腳)和XTAL2(18腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9腳)為復位輸入端口,外接電阻電容組成的復位電路。VCC(40腳)和VSS(20腳)為供電端口,分別接+5V電源的
11、正負端。P0P3 為可編程通用I/O腳,其功能用途由軟件定義,在本設計中,P0端口(3239腳)被定義為N1功能控制端口,分別與N1的相應功能管腳相連接,13腳定義為IR輸入端,10腳和11腳定義為I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12腳、27腳及28腳定義為握手信號功能端口,連接主板CPU的相應功能端,用于當前制式的檢測及會聚調整狀態(tài)進入的控制功能。P0口:P0口是一組8位漏極開路型雙向I/O 口,也即地址/數據總線復用口。作為輸出口用時,每位能吸收電流的方式驅動8個TTL邏輯門電路,對端口P0寫“1”時,可作為高阻抗輸入端用。在訪問外部數據存儲器
12、或程序存儲器時,這組口線分時轉換地址(低8位)和數據總線復用,在訪問期間激活內部上拉電阻。在Flash 編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。P1口:P1是一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計數器2 的外部計數輸入(P1.0/T2)和輸入(P1.1/T2EX)。Fla
13、sh編程和程序校驗期間,P1接收低8位地址。P2口:P2是一個帶有內部上拉電阻的8 位雙向I/O口,P2的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口P2寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16位地址的外部數據存儲器(例如執(zhí)行MOVX DPTR指令)時,P2口送出高8位地址數據。在訪問8位地址的外部數據存儲器(如執(zhí)行MOVX RI指令)時,P2口輸出P2鎖存器的內容。Flash編程或校驗時,P2亦接收高位地址和一些控制信號。P3口:P3口是一
14、組帶有內部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能P3口還接收一些用于Flash 閃速存儲器編程和程序校驗的控制信號。RST:復位輸入。當振蕩器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信
15、號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個AL脈沖。對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條 MOVX 和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當STC89C51RC由外部程序存儲器取指令(或數據)時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。在此期間,當訪問外部數據存儲器,將跳過兩
16、次PSEN信號。EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲器(地址為0000HFFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內部程序存儲器中的指令。Flash存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。XTAL1:振蕩器反相放大器的及內部時鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。單片機最小原理圖如圖2-2-2所示。圖2-2-2 單片機最小系統(tǒng)單片機最小系統(tǒng)說明:時鐘信號的產生:在MCS-51芯片內部有一個
17、高增益反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。而在芯片的外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調電容,從而構成一個穩(wěn)定的自激振蕩器,這就是單片機的時鐘振蕩電路。時鐘電路產生的振蕩脈沖經過觸發(fā)器進行二分頻之后,才成為單片機的時鐘脈沖信號。一般地,電容C2和C3取30pF左右,晶體的振蕩頻率范圍是1.2-12MHz。如果晶體振蕩頻率高,則系統(tǒng)的時鐘頻率也高,單片機的運行速度也就快。單片機復位使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài)下,并從這個狀態(tài)開始工作。單片機復位條件:必須使9腳加上持續(xù)兩個機器周期(即24個振蕩周期)的高電平。2.2.3 數
18、碼管顯示電路顯示系統(tǒng)采用四位一體數碼管來顯示,LED顯示屏作為大型顯示設備的一種,具有亮度高、價格低、壽命長、維護簡便等優(yōu)點。LED數碼管的結構簡單,分為七段和八段兩種形式,也有共陽和共陰之分。以八段共陽管為例,它有8個發(fā)光二極管(比七段多一個發(fā)光二極管,用來顯示sP,即點),每個發(fā)光二極管的陽極連在一起,如圖(圖2-2-4)所示。這樣,一個LED數碼管就有I根位選線和8根段選線,要想顯示一個數值,就要分別對它們的高低電平來加以控制。為方便起見,本文主要討論共陰八段LED數碼顯示管,其他類形的顯示管與其類似。圖2-2-3 LED數碼管LED 燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光
19、二極管是否點亮而顯示不同的字形,如 H,G,F,E,D,C,B,A全亮顯示為8,采用共陰極連接驅動代碼,代碼表如下表(表2-2-2)所示。表2-2-2 驅動代碼表顯示數值H,G,F,E,D,C,B,A驅動代碼0001111113FH10000011006H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FH9011011116FH2.2.4 按鍵輸入電路按鍵是由一組按壓式或觸摸式開關構成的陣列,是一種常用的輸入設備。鍵盤可分為編碼式鍵盤和非編碼式鍵盤兩種。1.編碼鍵盤通過硬件電路
20、產生被按按鍵的鍵碼,這種鍵盤所需程序簡單,但硬件電路復雜、價格昂貴通常不被單片機系統(tǒng)采用。2.非編碼鍵盤常用一些按鍵排列成行列矩陣,其硬件邏輯與按鍵編碼不存在嚴格的對應關系,而要由所用的程序來決定。非編碼鍵盤的硬件接口簡單,但是要占用較多的CPU時間,通常采用可編程鍵盤管理芯片來克服這個缺點。本設計使用兩種按鍵,一種是按鍵式非編碼鍵盤和輕觸式非編碼開關。在接線時由于有四個引腳,連接時需要用萬用表進行測量,然后接通兩個引腳,原理圖如下。要進行數據的計算就必須先進行數據的輸入,也就必須確定按鍵輸入的數值是什么,這就需要對鍵盤進行掃描,從而確定究竟是哪個鍵按下。圖2-2-4 按鍵電路2.2.5 報警
21、與指示電路圖2-2-5 報警與指示電路第三章 軟件設計與分析3.1 軟件設計的組成該系統(tǒng)由延時子函數、初始化子函數、開始鍵掃描子函數、選手搶答按鍵掃描子函數、顯示子函數、調整時間鍵掃描子函數、定時器0中斷子函數、定時器1中斷子函數、主函數和數據定義這幾部分組成。3.2 各部分軟件分析3.2.1 延時子函數/延時子函數void delay(uchar x)uchar y;for(;x>0;x-)for(y=120;y>0;y-);3.2.2 初始化子函數/初始化子函數void init()TMOD=0x11;TH0=(65536-2000)/256;TL0=(65536-2000)%
22、256;TH1=(65536-2000)/256;TL1=(65536-2000)%256;ET0=1;ET1=1;EA=1;P0=0x00;time1=10;time2=10;flag2=1;3.2.3 開始鍵掃描子函數/開始鍵掃描子函數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ī)標志位aa=0;bb=0;3.2.4 選手搶答
23、按鍵掃描子函數/選手搶答按鍵掃描子函數void key()if(K1=0)delay(10);if(K1=0)while(!K1);num=1;/數碼管顯示1號"1"TR0=0;/關閉定時器0,時間停止TR1=1;/打開定時器1,使揚聲器響一聲flag2=0;/關閉開始鍵標志位,使再按其他七個鍵不會響應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=
24、0;if(K4=0)delay(10);if(K4=0)while(!K4);num=4;TR0=0;TR1=1;flag2=0;if(K5=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
25、=0;TR1=1;flag2=0;3.2.5 顯示子函數/顯示子函數void display()if(flag1=1)/開始鍵按下,開始計時搶答if(num!=0)/如果有人搶答,則顯示相應的幾號P0=table1num;/顯示幾號搶到了P2=table20;delay(2);P0=0;P2=0xff;else/否則沒人搶答,則前面不顯示幾號P0=0x00;P2=0xff;P0=table1s/10;/下面為顯示搶答倒計時P2=table22;delay(2);P0=0;P2=0xff;P0=table1s%10;P2=table23;delay(2);P2=0xff;P0=0x00;else
26、/如果開始鍵沒有按下,則顯示F FF(若有違規(guī)者,則顯示違規(guī)號碼及 FF)或時間調整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=0x00;P2=0xff;else/沒有人違規(guī)才顯示調整時間if(aa=1)P0=0x6d;/第一位數碼管顯示
27、"5(S)"(表示搶答時間調整)P2=table20;delay(2);P0=0x00;P2=0xff;P0=table1time1/10;/下面顯示調整的搶答時間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;/第一位與第二位數碼管合起來顯示"T",表示答題時間調整P2=table20;delay(2);P0=0x00;P2=0xff;P0=0x31;P2=table21;dela
28、y(2);P0=0x00;P2=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;3.2.6 調整時間鍵掃描子函數/調整
29、時間鍵掃描子函數void key2()uchar i=100;if(S2=0)/搶答時間調整delay(10);if(S2=0)while(S2=0&&i)i-;delay(10);time1+;if(time1=61)time1=10;aa=1;/將搶答時間標志位置1bb=0;/同時關閉答題時間標志位if(S3=0)/答題時間調整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中斷子函數/定時器0中斷子函數void t0()
30、 interrupt 1TH0=(65536-2000)/256;/2msTL0=(65536-2000)%256;if(flag3)/開始(START)鍵按下,嘟一聲(長1秒),表示開始搶答beep=beep;elsebeep=1;if(s<5)/搶答時間快到報警,隔1秒響一聲且紅燈閃爍,響三聲if(s%2=0)flag3=1;D0=0;elseflag3=0;D0=1;m+;if(m=500)/1秒m=0;s-;flag3=0;/關閉開始鍵按下響一秒的嘟聲if(s=-1)s=20;TR0=0;flag1=0;/顯示F FFflag2=1;num=0;D0=1;3.2.8 定時器1中斷
31、子函數/定時器1中斷子函數void t1() interrupt 3/定時器1處理有人按下搶答器嘟一聲(長1秒)TH1=(65536-2000)/256;TL1=(65536-2000)%256;beep=beep;n+;if(n=500)n=0;TR1=0;3.2.9 主函數/主函數void main()uchar i=100;init();/調用初始化子函數while(1)key1();/調用開始鍵掃描子函數if(flag1=0)&(flag2=1)/當開始鍵沒按下及沒有人違規(guī)時才可進行時間調整key2();if(flag1=1)&(flag2=0)/當開始鍵按下及有人搶答
32、才進行開始回答計時倒計時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ī)標志位flag4=1;D0=0;if(flag1=1)&(flag2=1)/如果開始鍵按下且搶答鍵沒有人按下,則進行八路搶答鍵掃描key();display();/顯示到數碼管上3.3 總源程序#include<reg51.h>typedef unsi
33、gned 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號選手搶答按鍵sbit K4=P13;/4號選手搶答按鍵sbit K5=P14;/5號選手搶答按鍵sbit K6=P15;/6號選手搶答按鍵sbit K7=P16;/7號選手搶答按鍵sbit K8=P17;/8號選手搶答按鍵sbit S1=P32;/答題計時鍵sbit S2=P33;/開始搶答時間
34、調整鍵sbit S3=P34;/答題計時時間調整鍵char s;uchar num=0;char time1;/搶答時間char time2;/答題限時時間uint m,n;/T0,T1定時器定一秒時bit flag1,flag2,flag3,flag4;/標志位bit aa,bb;/時間調整標志位/延時子函數void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=120;y>0;y-);uchar code table1=/共陰數碼管段碼值0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0
35、x77,0x7c,0x39,0x5e,0x79,0x71;uchar code table2=/共陰數碼管位碼值0xfe,0xfd,0xfb,0xf7;/初始化子函數void init()TMOD=0x11;TH0=(65536-2000)/256;TL0=(65536-2000)%256;TH1=(65536-2000)/256;TL1=(65536-2000)%256;ET0=1;ET1=1;EA=1;P0=0x00;time1=10;time2=10;flag2=1;/開始鍵掃描子函數void key1()uchar i=100;if(K0=0)delay(10);if(K0=0)whi
36、le(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ī)標志位aa=0;bb=0;/選手搶答按鍵掃描子函數void key() uchar i=100;if(K1=0)delay(10);if(K1=0)while(K1=0&&i)i-;delay(10);num=1;/數碼管顯示1號"1"TR0=0;/關閉定時器0,時間停止TR1=1;/打開定時器1,使揚聲器響一聲flag2=0;/關閉開始鍵標志位,使再
37、按其他七個鍵不會響應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(10);if(K4=0)while(K4=0&&i)i-;delay(10);num=4;TR0=0;TR1=1;flag2=0;if(K5=0)delay(1
38、0);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;if(K8=0)delay(10);if(K8=0)while(K8=0&&i)i-;del
39、ay(10);num=8;TR0=0;TR1=1;flag2=0;/數碼管顯示子函數void display()if(flag1=1)/開始鍵按下,開始計時搶答if(num!=0)/如果有人搶答,則顯示相應的幾號P0=table1num;/顯示幾號搶到了P2=table20;delay(2);P0=0;P2=0xff;else/否則沒人搶答,則前面不顯示幾號P0=0x00;P2=0xff;P0=table1s/10;/下面為顯示搶答倒計時P2=table22;delay(2);P0=0;P2=0xff;P0=table1s%10;P2=table23;delay(2);P2=0xff;P0=0
40、x00;else/如果開始鍵沒有按下,則顯示F FF(若有違規(guī)者,則顯示違規(guī)號碼及 FF)或時間調整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=0x00;P2=0xff;else/沒有人違規(guī)才顯示調整時間if(aa=1)P0=0x76;/
41、第一位數碼管顯示"5(S)"(表示搶答時間調整)P2=table20;delay(2);P0=0x00;P2=0xff;P0=table1time1/10;/下面顯示調整的搶答時間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;/第一位與第二位數碼管合起來顯示"T",表示答題時間調整P2=table20;delay(2);P0=0x00;P2=0xff;P0=table1time2/
42、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;/調整時間鍵掃描子函數void key2()uchar i=100;if(S2=0)/搶答時間調整delay(
43、10);if(S2=0)while(S2=0&&i)i-;delay(10);time1+;if(time1=61)time1=10;aa=1;/將搶答時間標志位置1bb=0;/同時關閉答題時間標志位if(S3=0)/答題時間調整delay(10);if(S3=0)while(S3=0&&i)i-;delay(10);time2+;if(time2=61)time2=10;bb=1;aa=0;/主函數void main()uchar i=100;init();/調用初始化子函數while(1)key1();/調用開始鍵掃描子函數if(flag1=0)&(
44、flag2=1)/當開始鍵沒按下及沒有人違規(guī)時才可進行時間調整key2();if(flag1=1)&(flag2=0)/當開始鍵按下及有人搶答才進行開始回答計時倒計時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ī)標志位flag4=1;D0=0;if(flag1=1)&(flag2=1)/如果開始鍵按下且搶答鍵沒有人按下,則進行八路搶答鍵
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雙十二購房指南
- 體育用品行業(yè)保安工作總結
- 軍訓心得體會15篇
- 教育的項目計劃書精彩3篇
- 建筑工程施工合同范文集合8篇
- 2023年-2024年崗位安全教育培訓試題及參考答案【培優(yōu)】
- 2023年項目安全培訓考試題(打?。?/a>
- 文學作品意識形態(tài)解讀-洞察分析
- 宇宙常數與宇宙結構形成-洞察分析
- 遺傳進化機制探究-洞察分析
- 2024年工貿重點企業(yè)有限空間作業(yè)專家指導服務專題培訓
- 2024年注冊安全工程師考試題庫及參考答案【完整版】
- 第十二章 全等三角形 作業(yè)設計-2023-2024學年人教版八年級數學上冊
- 建筑結構荷載規(guī)范DBJ-T 15-101-2022
- 制藥專業(yè)畢業(yè)設計開題報告
- 普通心理學智慧樹知到期末考試答案2024年
- 青少年涉毒問題監(jiān)測制度
- 征兵眼科科普知識講座
- 人工智能在醫(yī)療健康領域的應用探索報告
- 高二上學期數學期末測試卷01-【好題匯編】備戰(zhàn)2023-2024學年高二數學上學期期末真題分類匯編(人教A版2019選擇性必修第一、二冊)(原卷版)
- 環(huán)評驗收方案
評論
0/150
提交評論