版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課 程 設 計</p><p> 課程名稱 單片機原理及應用 </p><p> 課題名稱 搶答器設計 </p><p> 專 業(yè) 自動化 </p><p> 班
2、 級 自動化090 2 </p><p> 學 號 </p><p> 姓 名 </p><p> 指導教師 </p>&
3、lt;p> 2012年 6 月 13 日</p><p><b> 目 錄</b></p><p> 第1章 課題設計的要求、目的及意義1</p><p> 1.1課題設計的要求1</p><p> 1.2課題設計的目的及意義1</p><p> 第2章 總體設
4、計思路2</p><p> 2.1 總體設計框圖2</p><p> 2.2 總體設計流程圖3</p><p> 第3章 各單元設計及說明4</p><p> 3.1 硬件單元設計及說明4</p><p> 3.2 軟件設計及說明6</p><p> 第4章 調試
5、與運行9</p><p><b> 4.1仿真測試9</b></p><p> 4.2仿真結果分析11</p><p> 第5章 系統硬件調試及結果12</p><p> 第6章 心得體會13</p><p><b> 參考文獻14</b></
6、p><p><b> 附件15</b></p><p><b> 源程序15</b></p><p> PROTEUS系統電路原理圖24</p><p> 第1章 課題設計的要求、目的及意義</p><p> 1.1 課題設計的要求</p><
7、;p> 本課題要求以單片機為核心設計一個電子搶答器,具有搶答控制和倒計時顯示功能。有一位主持人與3~4位搶答者,控制器應有復位控制、開始控制、搶答控制和狀態(tài)指示等功能,并有答題時間控制和顯示功能。設計任務包括控制器硬件設計和應用程序設計。</p><p> 1.2 課題設計的目的及意義</p><p><b> 課題設計的目的:</b></p>
8、<p> 掌握用51單片機控制LED數碼管顯示字符的方法。</p><p> 掌握用單片機進行顯示系統開發(fā)的方法。</p><p> 掌握單片機軟件、硬件調試技術。</p><p> 了解LED顯示器的一般驅動方法。</p><p><b> 課題設計的意義:</b></p><
9、;p> 本系統采用單片機作為整個控制核心。該系統通過搶答電路鍵盤按鍵輸入搶答信號;利用一個數碼管來完成顯示功能;用按鍵來讓選手進行搶答,在數碼管上顯示哪一組先答題的,從而實現整個搶答過程。在知識比賽中,特別是做搶答題目的時候,在搶答過程中,為了知道哪一組或哪一位選手先答題,必須要設計一個系統來完成這個任務。如果在搶答中,靠視覺是很難判斷出哪組先答題。利用單片機系統來設計搶答器,使以上問題得以解決,即使兩組的搶答時間相差幾微秒,也
10、可分辨出哪組優(yōu)先答題。通過該課程的學習使我們對計算機控制系統有一個全面的了解、掌握常規(guī)控制算法的使用方法、掌握簡單微型計算機應用系統軟硬的設計方法,進一步鍛煉同學們在微型計算機應用方面的實際工作能力。</p><p> 第2章 總體設計思路</p><p> 設計目的:設計簡單搶答器,功能齊全,連線簡單,方便學校時常舉行競賽。同時加深對單片機的認識和理解,加強自己的動手能力。<
11、/p><p> 設計內容及要求:本課題要求以單片機為核心設計一個竟賽搶答器系統,具有搶答控制和倒計時顯示功能。有一位主持人和3位搶答者,控制系統應有復位控制、開始控制、搶答控制和狀態(tài)指示等功能,并有答題時間控制與時間顯示功能。設計任務包括控制系統硬件設計和應用程序設計。一位主持人和3位搶答者,復位后,3位搶答者的兩組指示燈全亮;開始后,開始指示燈亮,3位搶答者指示燈全暗,準備開始;優(yōu)先者成功搶答及相應指示燈亮,不出
12、現其他搶答者的序號;在規(guī)定前搶答,示為犯規(guī)并指示;答題開始,有倒計時顯示,到規(guī)定時間不允許答題;復位返回。在七段數碼管上將其組號(1-3)顯示出來,并使喇叭響一下(或LED顯示)。</p><p> 2.1 總體設計框圖</p><p> 利用單片機設計,總體框圖如下圖2.1所示:</p><p> 本搶答系統設計為三路搶答,通過對應LED燈亮、數碼管顯示編
13、號來表明某一搶答者搶答,在搶答者搶答之前,由主持人按下復位鍵后,在按下開始鍵,說明搶答開始,10秒鐘之內,若有人搶答,就由搶答者開始答題,限時一分鐘,一分鐘內答完,由主持人復位,再重新開始新一輪的搶答;若一分鐘內未答完,系統就會報警,定時器中斷,停止計時,此次搶答完成,再開始新一輪的搶答。10秒分鐘內沒人搶答,系統報警,進入下一個題目的搶答。搶答者若是在復位鍵按下后,開始鍵按下之前就強答,則說明搶答者未按規(guī)則搶答,此次搶答也無效,然后由
14、主持人復位,開始搶答下一題目。</p><p> 2.2 總體設計流程圖</p><p> 利用單片機設計,總體設計流程圖如下圖2.2所示:</p><p> 第三章 各單元設計及說明</p><p> 3.1 硬件單元設計及說明</p><p> 3.1.1 搶答電路</p><p
15、> 搶答器是將鍵盤部分、單片機部分、鎖存顯示部分按指示的3個單元電路相接。這樣就將整個硬件部分連接起來組成一個整體電路。搶答器由主體電路和擴展電路兩部分組成。主體電路完成基本的搶答功能;擴展電路完成定時搶答的功能。定時搶答器的工作過程是:接通電源時,節(jié)目主持人按下復位鍵,搶答器處于禁止工作狀態(tài),編號顯示器滅燈,定時顯示器滅燈,當節(jié)目主持人宣布“搶答開始”,同時按下開始搶答鍵,定時顯示器顯示設定的時間,搶答器處于工作狀態(tài),定時器倒
16、計時。當定時時間到,卻沒有選手搶答時,系統報警,并封鎖輸入電路,禁止選手超時后搶答。在規(guī)定時間內若有人搶答,搶答時間為10秒鐘,在一分鐘內若搶答完,主持人按下復位鍵,開始新一輪的搶答,若沒有搶答完,會發(fā)出報警聲,主持人按下復位鍵,在進入新一輪的搶答。</p><p> 3.1.2 單片機電路引腳各部分連接及功能</p><p> AT89C52 (如圖3.1所示)提供以下標準功能:8字
17、節(jié)FLASH閃速存儲器,256字竹內部RAM , 32個I/O口線,3個16 位定時/計數器,一個6向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘電路。同時,AT89c52可降至OHz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電上作模式??臻e方式停止CPU 的工作,但允許RAM,定時/計數器.串行通信口及中斷系統繼續(xù)工作。</p><p><b> 3.1.3顯示部分</b><
18、/p><p> 采用動態(tài)掃描4 位LED 顯示接口電路(如圖3.2所示),LED 動態(tài)顯示是單片機中應用最為廣泛的一種顯示方式,其接口電路是把所有顯示器的8 個筆劃段a~dp 同名端并聯在一起,而每一個顯示器的公共極COM 是各自獨立地受I/ O線控制,CPU 的字段輸出口送出字形碼時,所有顯示器由于同名端并聯接收到相同的字形碼,但究竟哪個顯示器亮,則取決于COM 端,這一端是由I/ O 控制的,可以自行決定何時顯
19、示哪一位。在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的,盡管實際上各位顯示器并非同時點亮,但只要掃描速度足夠快,給人的印象就是一組穩(wěn)定的顯示數據,不會有閃爍感。</p><p> 3.1.4矩陣鍵盤工作原理</p><p> 本次因為要用到9個開關。但是單片機板子上只有4個獨立開關所以選擇使用矩陣鍵盤。本次用的是掃描法。首先是判斷有無鍵按下。設其列口初值為0FH,然后輸入行線
20、狀態(tài),測試行線中是否有低電平,如果沒有低電平則測試列線狀態(tài)。若有低電平則閉合鍵找到。且鍵碼值為行健號加上列鍵號。本次設計可以通過鍵盤操作修改答題時間和犯規(guī)搶答時間。</p><p> 3.1.5指示燈的設計原理</p><p> 主持人沒有按下開始鍵時復位燈亮。當主持人按下開始鍵后開始燈亮。沒有按下開始鍵時搶答為犯規(guī)。及犯規(guī)選手的燈和報警燈同時亮。</p><p&g
21、t; 3.2軟件設計及說明</p><p><b> 3.2.1主函數</b></p><p> 主函數是對定時器0、1的初始化,開放CPU總中斷、定時器0、1中斷,其中while 循環(huán)是一個死循環(huán),單片機一旦上電就一直會運行下去,不斷掃描鍵盤的狀態(tài),通過scan()函數,兩個中斷函數來實現對個電路的控制,一實現搶答器的功能。</p><p&
22、gt; 3.2.2定時器0中斷的定時、倒計時</p><p> void timer0()interrupt 1 ,這是定時器0的中斷函數,設置定時時間為50ms,每運行50ms,就發(fā)生一次中斷,且與軟件計數器綜合使用,軟件計數為20,當計數達到20時,正好為一秒,即產生秒脈沖信號。每一秒通過鍵盤掃描函數來判斷有無按鍵按下,如果有就進入相應函數,執(zhí)行相應功能。比如主持人按下復位鍵后,再按下開始鍵后,開始燈會亮
23、,數碼管處于通電狀態(tài),并且顯示0300,開始進入倒計時階段,期間如有強答者搶答,數碼管的第一位會顯示搶答者的編號,后三位進入五分鐘倒計時階段,同時,沒當有鍵按下,蜂鳴器都會響一聲,蜂鳴器響的時長及頻率由 void speaker_out()該函數確定。在規(guī)定時間內如果沒有人搶答或者犯規(guī)搶答,或者定時時間已到就會發(fā)出報警聲,并且報警燈也會亮。</p><p> 3.2.3定時器1中斷的動態(tài)掃描顯示</p&g
24、t;<p> void timer1()interrupt 3,這是定時器1的中斷函數,定時時間為10ms,即每隔10ms掃描一次鍵盤的狀態(tài),如果掃描時間太長的話,掃描頻率低,數碼管的顯示會有閃爍,所以為了保證顯示處于“連續(xù)”的狀態(tài),利用人眼的視覺逗留特性,這里我們設置器定時時間為20ms,滿足要求。數碼管顯示器的位選信號由單片機的P2口控制,段選信號由單片機的P0口控制。</p><p>
25、3.2.4鍵盤掃描與控制</p><p> void scan() ,這是鍵盤掃描與控制函數,一旦主持人按下復位鍵(flag0=1),進入預搶答狀態(tài),三位搶答者的燈就會亮,同時數碼管通電,如果在主持人沒有按下開始鍵時就有人搶答,視此次搶答無效,報警燈會亮,并且發(fā)出報警聲,顯示器會顯示對應搶答者的編號,然后有主持人重新按下復位鍵,開始新一輪的搶答;如果沒有有犯規(guī),主持人緊接著按下開始鍵,開始燈會亮,然后數碼管顯示
26、倒計時3分鐘,三分鐘內有人搶答,搶答者按下搶答鍵,相應指示燈亮,數碼管也會顯示其編號,顯示五分鐘倒計時 。按規(guī)則搶答的子程序流程圖如下圖3.3所示:</p><p><b> 第四章 調試與運行</b></p><p><b> 4.1 仿真測試</b></p><p> 4.1.1 開始搶答仿真:</p>
27、;<p> 主持人按開始按鈕后,進入搶答10秒倒計時,仿真結果如圖</p><p> 4.1.2搶答犯規(guī)仿真:</p><p> 若在主持人還未按開始按鈕時,就搶答則為搶答犯規(guī)。C號選手在主持人未宣布開始時就搶答,從而造成犯規(guī),犯規(guī)仿真如圖。</p><p> 4.1.3搶答成功仿真:</p><p> 主持人按開始按
28、鈕后,10秒內搶答則為成功搶答。仿真圖為A號選手成功搶答,搶答后進入60秒倒計時答題時間,搶答成功仿真如圖</p><p> 4.2 仿真結果分析</p><p> 通過對電路的仿真,可以看出基于AT89C52單片機控制的搶答器在PROTEUS軟件上可以很好的實現搶答閃爍、搶答成功顯示、搶答倒計時等一系列功能。</p><p> 當仿真開始運行時,各個模塊處于
29、初始狀態(tài)。此時顯示器并無狀態(tài)顯示,但此時搶答鍵處于開啟狀態(tài),若此時有選手按下搶答鍵,則指示燈會閃爍,并且在數碼管上顯示犯規(guī)的選手的編號。主持人重新按下開始鍵,此時表示搶答正式開始,并且數碼管顯示10秒倒計時,提醒選手搶答開始了。選手搶答成功,同時也進入到倒計時60秒答題時間。從仿真的測試結果來看,此設計還是能比較好的實現預期的目標。</p><p> 第五章 系統硬件調試及結果</p><p
30、> 二號選手成功答題與三號選手違規(guī)答題的硬件示意圖如下:</p><p> 圖5.1二號選手答題成功 圖5.2 三號選手答題違規(guī)</p><p><b> 第六章 心得體會</b></p><p> 本單片機課程設計是要設計一個可用于實際操作的搶答器,該電路由我和我的搭檔一起完成 ,該設計的顯示要求是要顯示
31、剩余答題時間與剩余允許搶答時間及搶答選手號,有狀態(tài)顯示電路及報警電路。要求有主持人復位按鍵,開始按鍵,三位搶答者各按鍵一個,一個蜂鳴器,用于提示選手或者主持人按下鍵以及犯規(guī)搶答、搶答超時等功能。功能相當齊全,在以后還可擴展功能。如自動控制記分器進行記分,并通過串行口與PC 機通信,用PC 機統計選手得分情況,完全實現智能化,減小人為因素造成的影響。</p><p> 通過運用我所學習的單片機原理及應用、數字電子
32、技術等關于電子技術的課程中的理論知識來完成此項設計。在設計的過程中,通過查找資料又重新的溫習了一下各個部分的內容,并且通過查閱書籍和相關文獻資料來提高獨立分析能力和解決實際問題的能力;掌握并熟練運用相關軟件進行操作;熟悉常用電子器件的類型、特征和功能,并本著合理采選用的原則進行選用;進一步熟悉電子儀器的正確使用。此外,本次我們設計的搶答器,電路簡單,成本較低,操作方便,靈敏可靠,功能也較多。</p><p>
33、在此我要感謝指導老師的悉心教導,感謝期間幫助過我的同學,謝謝你們,讓我加強了對單片機知識的理解,能過把所學的理論知識運用到實際當中去,加強了我的動手能力。同時,在整個設計過程中我懂得了許多東西,不僅加強了我與搭檔一起合作的團結能力,增進了我們之間的友誼,樹立了對自己工作能力的信心,相信這次設計對今后的工作有非常重要的影響,而且還大大提高了我的動手能力,使我充分體會到了在創(chuàng)造過程中的探索的艱難和成功的喜悅??傊?,通過這次課程設計我受益良多
34、。</p><p><b> 參考文獻</b></p><p> 1、《51系列單片機應用與實踐教程》 周向紅 編 北航出版社</p><p> 2、《單片機應用系統設計》 何立民 編 北航出版社</p><p> 3、《單片機原理及應用》 王迎旭 主編 機械工業(yè)出版社 2012年二月</p>
35、;<p> 4、《51系列單片機設計實例》 樓然苗 等編 北航出版社</p><p> 5、《51單片機應用系統開發(fā)典型實例》戴家 等編 中國電力出版社</p><p> 《單片機實用系統設計技術》房小翠 編 國防工業(yè)出版社</p><p><b> 附件</b></p><p><
36、b> 源程序</b></p><p><b> 程序清單:</b></p><p> #include<reg52.h></p><p> unsigned char flag0=0;//用于標志數碼管顯示的內容</p><p> unsigned char flag1=0,fla
37、g2=0,flag3=0,flag4=0,flag5=1; //1表示數碼管顯示的內容,2表示選手正常答題,5表示復位狀態(tài)</p><p> unsigned char key; //鍵盤掃描的鍵值</p><p> unsigned char sec=0; //當前數碼管顯示的秒數</p><p> unsigned char key1=0,key2
38、=0,key3=0; //每位數碼管表示的數值</p><p> sbit LEDA=P1^0;</p><p> sbit LEDB=P1^1;</p><p> sbit LEDC=P1^2;</p><p> sbit LEDF=P1^3;</p><p> sbit LEDK=P1^4;</p
39、><p> unsigned char t1,t2;</p><p> sbit ALARM1=P1^7;</p><p> unsigned char led1[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,</p><p> 0x7D,0x07, 0x7F,0x6F,0X71};//共陰數碼管數字意以及F字符
40、數組</p><p> //unsigned char led2[3]={0x80,0x40,0x20};//數碼管位選數組</p><p> unsigned char led2[3]={0xFE,0xFD,0xFB};//數碼管位選數組</p><p> void delay(int t)</p><p><b>
41、{</b></p><p> unsigned char i,j;</p><p> for(i=0;i<t;i++)</p><p> for(j=0;j<100;j++);</p><p><b> }</b></p><p> void initiatime
42、0()</p><p><b> {</b></p><p> TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響 </p><p> TH0 =(65536-50000)/256;//50毫秒</p><p> TL0 =(655
43、36-50000)%256; //給定初值,這里使用定時器最大值從0開始計數一直到65535溢出</p><p> EA=1; //總中斷打開 </p><p> ET0=1; //定時器中斷打開</p><p> TR0=1; //定時器開關打開</p><
44、p><b> }</b></p><p> /*****************功能:鍵盤掃描************/</p><p> key_scan()</p><p><b> {</b></p><p> unsigned char k=0,p3_h=0,p3_l=0;&
45、lt;/p><p><b> P3=0XF0;</b></p><p><b> k=P3;</b></p><p> if(k!=0XF0)</p><p><b> { </b></p><p> delay(20);
46、 //讀入行鍵值</p><p> if(k!=0XF0)</p><p><b> {</b></p><p> p3_h=P3; //行鍵值給高位</p><p> P3=0X0f; //翻轉后讀入列的值給P1(讀鍵值時按鍵還未釋放)</p><
47、p> p3_l=P3; //列鍵值給低位</p><p> k=p3_h | p3_l; //高低位相或確定具體按鍵值 </p><p> if(key==5||key==6||key==7) </p><p><b> {</b></p><p> if(k!=0xED)</p&
48、gt;<p><b> k=0;</b></p><p><b> }</b></p><p><b> switch(k)</b></p><p><b> {</b></p><p> case 0: return(0)
49、 ;break;</p><p> case 0xEE: if(flag2==0){flag0 = 1;sec=t1;initiatime0();return(key=1);}break; //開始</p><p> case 0xED: {flag0 = 1;return(key=2);}break;//復位</p><p> case 0xE
50、B: {flag0 = 1;sec=t1;initiatime0();return(key=3);}break;</p><p> case 0xe7: {flag0 = 1;sec=t2;initiatime0();return(key=4);}break;</p><p> case 0xde: {flag0 = 1;sec=t2;initiatime0();return(
51、key=5);}break; //A選手</p><p> case 0xdd: {flag0 = 1;sec=t2;initiatime0();return(key=6);}break; //B選手</p><p> case 0xdb: {flag0 = 1;sec=t2;initiatime0();return(key=7);}break; //C選手</p>
52、<p> //case 0xd7: {flag0 = 1;sec=t2;initiatime0();return(key=8);}break;</p><p> case 0xbe: {flag0 = 1;return(key=9);}break; //時間加</p><p> case 0xbd: {flag0 = 1;return(key=10);}break;
53、//時間減</p><p> default: return(0) ; break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
54、 }</b></p><p> /*****************定時器T0**************</p><p> 函數功能:實現倒計時秒鐘的遞減</p><p> ******************************************/</p><p> void Timer0() interr
55、upt 1</p><p><b> {</b></p><p> static unsigned char count; //計時數量</p><p> TH0 =(65536-50000)/256;//50毫秒</p><p> TL0 =(65536-50000)%256; //給定初值,這
56、里使用定時器最大值從0開始計數一直到65535溢出</p><p><b> P3=0xf0;</b></p><p> while(P3!=0xf0)</p><p><b> {</b></p><p> key_scan();//鍵盤掃描</p><p><
57、;b> }</b></p><p> EX0=0; //關閉外部中斷0</p><p><b> count++;</b></p><p> if(count==20)</p><p><b> {</b></p><p><b>
58、 count=0;</b></p><p><b> sec--;</b></p><p><b> }</b></p><p> if(sec==0) //倒計時完成,參數初始化</p><p><b> { </b></p><p&
59、gt;<b> ET0=0;</b></p><p><b> sec=0;</b></p><p><b> TR0=0;</b></p><p><b> key=0;</b></p><p><b> }</b><
60、;/p><p><b> }</b></p><p> /****************************************</p><p><b> 函數名:main</b></p><p> 功能:調節(jié)整個程序的功能完成顯示功能</p><p> *
61、**************************************/</p><p> void main()</p><p><b> { </b></p><p> P1=0; //關閉所有燈</p><p><b> t1=10;</b></p><p
62、><b> t2=60;</b></p><p><b> key=0;</b></p><p><b> flag0=0;</b></p><p><b> key1=10;</b></p><p><b> sec=0;<
63、;/b></p><p><b> while(1)</b></p><p><b> {</b></p><p> key_scan(); //鍵盤掃描</p><p> if(sec==0&&flag3==0) //當倒計時完畢后flag0=0;是程序進入復位狀
64、態(tài)</p><p><b> {</b></p><p><b> flag0=0; </b></p><p><b> }</b></p><p> if(0==flag0) //顯示FFF</p><p><b> {</
65、b></p><p><b> P1=0;</b></p><p><b> LEDF=1;</b></p><p> // ALARM1=0;</p><p><b> key=0;</b></p><p><b> fla
66、g1=0;</b></p><p><b> flag2=0;</b></p><p> flag5=1; //做為復位的標志</p><p> key1=key2=key3=10;</p><p> P0=led1[key1];</p><p> P2=led2[0];
67、</p><p><b> delay(5);</b></p><p> P0=led1[key2];</p><p> P2=led2[1];</p><p><b> delay(5);</b></p><p> P0=led1[key3];</p>
68、<p> P2=led2[2];</p><p><b> delay(5);</b></p><p><b> }</b></p><p> if(1==flag0)</p><p><b> { </b></p><p>&l
69、t;b> flag4=0;</b></p><p> switch(key)</p><p><b> {</b></p><p><b> case 1:</b></p><p><b> {</b></p><p><
70、;b> LEDK=1;</b></p><p> LEDA=LEDB=LEDC=LEDF=0;</p><p><b> flag2=1;</b></p><p><b> flag1=1;</b></p><p><b> key1=10;</b>
71、</p><p> key2=sec/10;</p><p> key3=sec%10;</p><p> P2=led2[0];</p><p> P0=led1[key1];</p><p> delay(60); </p><p> P2=led2[1];</p>
72、<p> P0=led1[key2];</p><p> delay(60); </p><p> P2=led2[2];//須先顯示段碼數碼管不然會閃</p><p> P0=led1[key3];</p><p> delay(40);</p><p><b> } break
73、;</b></p><p> case 2: //實現復位</p><p><b> {</b></p><p><b> flag2=0;</b></p><p><b> flag0=0;</b></p><p><b&
74、gt; flag3=0;</b></p><p><b> flag4=0;</b></p><p><b> flag1=0;</b></p><p><b> } break;</b></p><p> case 3: //實現搶答時間的設置
75、</p><p><b> {</b></p><p> while(flag5) //</p><p><b> {</b></p><p> P1=0;//關閉所有燈</p><p><b> sec=t1;</b></p>
76、<p><b> key1=10;</b></p><p> key2=sec/10;</p><p> key3=sec%10;</p><p> P2=led2[0];</p><p> P0=led1[key1];</p><p> delay(60); </
77、p><p> P2=led2[1];</p><p> P0=led1[key2];</p><p> delay(60); </p><p> P2=led2[2];</p><p> P0=led1[key3];</p><p> delay(60);</p>&l
78、t;p> key_scan();</p><p> if(key==9)</p><p><b> {</b></p><p> while(P3!=0xf0);//等待按鍵松開</p><p><b> key=0;</b></p><p><b>
79、; t1++;</b></p><p><b> }</b></p><p> if(key==10&&t1>=5)</p><p><b> {</b></p><p> while(P3!=0xf0);//等待按鍵松開</p><
80、p><b> key=0;</b></p><p><b> t1--;</b></p><p><b> }</b></p><p> if(key==2)</p><p><b> {</b></p><p>&
81、lt;b> flag5=0;</b></p><p><b> }</b></p><p> else key=0;</p><p><b> } </b></p><p><b> } break;</b></p><p>
82、; case 4://實現答題時間的設置</p><p><b> {</b></p><p> while(flag5)</p><p><b> {</b></p><p><b> P1=0;</b></p><p><b&
83、gt; sec=t2;</b></p><p><b> key1=10;</b></p><p> key2=sec/10;</p><p> key3=sec%10;</p><p> P2=led2[0];</p><p> P0=led1[key1];</p&
84、gt;<p> delay(60); </p><p> P2=led2[1];</p><p> P0=led1[key2];</p><p> delay(60); </p><p> P2=led2[2];</p><p> P0=led1[key3];</p><
85、;p> delay(40);</p><p> key_scan();</p><p> if(key==9)</p><p><b> {</b></p><p> while(P3!=0xf0);</p><p><b> key=0;</b></
86、p><p><b> t2++;</b></p><p><b> }</b></p><p> if(key==10&&t1>=5)</p><p><b> {</b></p><p> while(P3!=0xf0);&
87、lt;/p><p><b> key=0;</b></p><p><b> t2--;</b></p><p><b> }</b></p><p> if(key==2)</p><p><b> {</b></p&
88、gt;<p><b> flag5=0;</b></p><p><b> }</b></p><p><b> } </b></p><p><b> } break;</b></p><p> case 5: //A選
89、手</p><p><b> { </b></p><p> if(flag1!=1) //違規(guī)搶答</p><p><b> {</b></p><p> P1=0; //關閉所有燈</p><p><b> ALARM1=1;</b>
90、</p><p><b> LEDA=1;</b></p><p> P0=led1[1];//顯示內容</p><p> P2=led2[0]; //位選</p><p> delay(50);</p><p> P0=led1[10]; //顯示內容</p>&l
91、t;p> P2=led2[1]; //位選</p><p> delay(50); </p><p> ALARM1=0;//形成閃爍</p><p> P0=led1[10]; //顯示內容</p><p> P2=led2[2]; //位選</p><p> delay(50);<
92、;/p><p><b> }</b></p><p> else //A選手搶答成功</p><p><b> {</b></p><p> P1=0; //關閉所有的燈</p><p> LEDA=1; //點亮A選手的燈</p><
93、p><b> flag2=1;</b></p><p><b> key1=1;</b></p><p> key2=sec/10;</p><p> key3=sec%10;</p><p> P2=led2[0];</p><p> P0=led1[ke
94、y1];</p><p> delay(60); </p><p> P2=led2[1];</p><p> P0=led1[key2];</p><p> delay(60); </p><p> P2=led2[2];</p><p> P0=led1[key3];</
95、p><p> delay(60);</p><p><b> }</b></p><p><b> } break;</b></p><p> case 6://B選手</p><p><b> {</b></p><p&
96、gt; if(flag1!=1) //違規(guī)搶答</p><p><b> {</b></p><p><b> P1=0;</b></p><p><b> ALARM1=1;</b></p><p><b> LEDB=1;</b><
97、;/p><p> P2=led2[0];</p><p> P0=led1[2]; </p><p> delay(50); </p><p> P2=led2[1];</p><p> P0=led1[10];</p><p> delay(50);</p><p
98、><b> ALARM1=0;</b></p><p> P2=led2[2];</p><p> P0=led1[10];</p><p> delay(50);</p><p><b> }</b></p><p><b> else</
99、b></p><p><b> {</b></p><p><b> P1=0;</b></p><p><b> LEDF=0;</b></p><p><b> LEDB=1;</b></p><p><b&
100、gt; flag2=1;</b></p><p><b> key1=2;</b></p><p> key2=sec/10;</p><p> key3=sec%10;</p><p> P2=led2[0];</p><p> P0=led1[key1];</p&
101、gt;<p> delay(60); </p><p> P2=led2[1];</p><p> P0=led1[key2];</p><p> delay(60); </p><p> P2=led2[2];</p><p> P0=led1[key3];</p><
102、;p> delay(40);</p><p><b> }</b></p><p><b> } break;</b></p><p> case 7: //C選手</p><p><b> {</b></p><p> i
103、f(flag1!=1) //違規(guī)搶答</p><p><b> {</b></p><p> P1=0; //關閉所有的燈</p><p> ALARM1=1; //打開報警燈</p><p> LEDC=1; //打開C選手燈</p><p> P2=led2[0];&
104、lt;/p><p> P0=led1[3]; </p><p> delay(50); </p><p> P2=led2[1];</p><p> P0=led1[10];</p><p> delay(50); </p><p><b> ALARM1=0;</b&
105、gt;</p><p> P2=led2[2];</p><p> P0=led1[10];</p><p> delay(50);</p><p><b> }</b></p><p> else//正常答題</p><p><b> {<
106、;/b></p><p><b> P1=0;</b></p><p> LEDF=0; //關閉所有的燈</p><p> LEDC=1; //打開C選手的燈</p><p> flag2=1; </p><p><b> key1=3;</b&g
107、t;</p><p> key2=sec/10;</p><p> key3=sec%10;</p><p> P2=led2[0];</p><p> P0=led1[key1];</p><p> delay(60); </p><p> P2=led2[1];</p>
108、;<p> P0=led1[key2];</p><p> delay(60); </p><p> P2=led2[2];</p><p> P0=led1[key3];</p><p> delay(40);</p><p><b> }</b></p>
109、;<p><b> } break;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> } </b></p><p><b> }</b><
110、/p><p> PROTEUS系統電路原理圖</p><p> 電氣與信息工程系課程設計評分表</p><p> 指導教師簽名:________________</p><p> 日 期:________________ </p><p> 注:①表中標*號項目是硬件制作或軟件編程類課題必填內容;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論