基于單片機的8路搶答器課程設(shè)計報告_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  單片機原理及接口技術(shù)</p><p><b>  課程設(shè)計報告</b></p><p><b>  信息與電氣工程學(xué)院</b></p><p><b>  二零一五年七月</b></p><p> 設(shè)計題目:基于單片機的8路搶答器</p>&

2、lt;p> 學(xué) 號:××××××</p><p> 姓 名:××</p><p> 指導(dǎo)教師:×××</p><p>  基于單片機的8路搶答器</p><p>  單片機把我們帶入了智能化的電子領(lǐng)域,許多繁瑣的系統(tǒng)

3、若由單片機進(jìn)行設(shè)計,便能收到電路更簡單、功能更齊全的良好效果。若把經(jīng)典的電子系統(tǒng)當(dāng)作一個僵死的電子系統(tǒng),那么智能化的現(xiàn)代電子系統(tǒng)則是一個具有“生命”的電子系統(tǒng)。 而隨著技術(shù)的進(jìn)步,單片機與串口通信的結(jié)合更多地應(yīng)用到各個電子系統(tǒng)中已成一種趨勢。本設(shè)計就是基于單片機設(shè)計搶答系統(tǒng),通過串口通信動態(tài)傳輸數(shù)據(jù),使搶答系統(tǒng)有了更多更完善的功能。單片機系統(tǒng)的硬件結(jié)構(gòu)給予了搶答系統(tǒng)“身軀”,而單片機的應(yīng)用程序賦予了其新的“生命”,使其在傳統(tǒng)的搶

4、答器面前具有電路簡單、成本低、運行可靠等特色。對于搶答器我們大家都知道那是用于選手做搶答題時用的,選手進(jìn)行搶答,搶到題的選手來回答問題。搶答器不僅考驗選手的反應(yīng)速度同時也要求選手具備足夠的知識面和一定的勇氣。選手們都站在同一個起跑線上,體現(xiàn)了公平公正的原則。</p><p><b>  1. 設(shè)計任務(wù)</b></p><p>  結(jié)合實際情況,基于AT89C51單片機

5、設(shè)計一個8路搶答器。該系統(tǒng)應(yīng)滿足的功能要求為:</p><p>  (1) 設(shè)計一個可供8人進(jìn)行的搶答器;</p><p>  (2) 系統(tǒng)設(shè)置復(fù)位按鈕,按動后,重新開始搶答;</p><p>  (3) 搶答器開始時數(shù)碼管顯示序號0,選手搶答實行優(yōu)先顯示,優(yōu)先搶答選手的編號一直保持到主持人將系統(tǒng)清除為止。搶答后顯示優(yōu)先搶答者序號,同時發(fā)出音響。,并且不出現(xiàn)其他搶答

6、者的序號;</p><p>  (4) 搶答器具有定時搶答功能,且一次搶答的時間有主持人設(shè)定,本搶答器的時間可設(shè)定在1~99秒(本例中設(shè)置為20s),當(dāng)主持人啟動“開始”開關(guān)后,定時器開始減計時,數(shù)碼管顯示倒計時的時間,同時蜂鳴器有短暫的聲響;</p><p>  (5) 設(shè)定的搶答時間內(nèi),選手可以搶答,這時定時器停止工作,顯示器上顯示選手的號碼和搶答時間。并保持到主持人按復(fù)位鍵;<

7、/p><p>  (6) 當(dāng)設(shè)定的時間到,而無人搶答時,本次搶答無效,揚聲器報警發(fā)出聲音,并禁止搶答,定時器上顯示00。</p><p>  主要硬件設(shè)備:AT89C51單片機、4位數(shù)碼管、蜂鳴器等 ……</p><p><b>  2. 整體方案設(shè)計</b></p><p>  8路搶答器以AT89C51單片機作為整個系統(tǒng)

8、的控制核心,應(yīng)用其強大的接口功能,構(gòu)成整個搶答器的硬件系統(tǒng)。在主持人按下開始搶答的按鈕之后,倒計時開始并在數(shù)碼管上顯示出來,選手按下?lián)尨鸢粹o進(jìn)行搶答,送入單片機進(jìn)行數(shù)據(jù)處理。最先搶答的選手編號會通過數(shù)碼管顯示出來,同時結(jié)束搶答,不再顯示其他選手編號和倒計時時間。再次按下開始搶答按鈕時,開始下一次的搶答。8路搶答器的原理圖如圖2-1所示。</p><p>  圖2-1 基于單片機的8路搶答器原理圖</p>

9、;<p>  本系統(tǒng)硬件主要由按鍵、蜂鳴器、顯示系統(tǒng)等幾部分組成。各模塊的主要功能如下:</p><p>  (1) 按鍵的功能是把搶答選手編號和開始搶答信號送入單片機;</p><p>  (2) 蜂鳴器的功能是搶答結(jié)束后進(jìn)行報警提示;</p><p>  (3) 顯示系統(tǒng)的功能是顯示搶答選手編號以及倒計時時間。</p><p&g

10、t;  系統(tǒng)的整體設(shè)計方案設(shè)計圖如圖2-2所示。</p><p>  圖2-2 系統(tǒng)的整體方案設(shè)計圖</p><p>  整體電路原理圖如下:</p><p>  圖2-2 系統(tǒng)的整體電路原理圖</p><p>  如圖所示,電路左上角部分為時鐘電路和復(fù)位電路,用于給單片機提供時鐘信號以及復(fù)位。</p><p>  電

11、路左下角部分為選手搶答電路,按下8個按鈕中的一個即可進(jìn)行搶答,同時將信號發(fā)送給單片機并由單片機進(jìn)行顯示輸出。此部分為輸入環(huán)節(jié)。</p><p>  電路右上角部分為顯示電路,進(jìn)行顯示已經(jīng)開始搶答的時間和搶答選手編號,此處采用7段數(shù)碼管共陽接法,四個反向器用于提供位選信號。當(dāng)沒有選手搶答時,此處顯示搶答倒計時;開始有人搶答后,此處顯示搶答選手的編號并停止計時。</p><p>  電路右下角

12、為蜂鳴器部分,當(dāng)有選手進(jìn)行搶答或者搶答倒計時結(jié)束后,蜂鳴器會發(fā)聲報警,進(jìn)行提示。</p><p>  3. 系統(tǒng)硬件電路設(shè)計</p><p><b>  3.1 時鐘電路</b></p><p>  單片機必須在時鐘的驅(qū)動下才能工作.在單片機內(nèi)部有一個時鐘振蕩電路,只需要外接一個振蕩源就能產(chǎn)生一定的時鐘信號送到單片機內(nèi)部的各個單元,決定單片機的

13、工作速度。</p><p>  圖3-1 外部震蕩源電路</p><p>  一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個電容 C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為30PF。</p><p>

14、  單片機在工作時,由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時鐘信號的周期稱為時鐘周期。其大小是時鐘信號頻率的倒數(shù),常用fosc表示。如時鐘頻率為12MHz,即fosc=12MHz,則時鐘周期為1/12µs。</p><p><b>  3.2 復(fù)位電路</b></p><p>  單片機的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個機器周期的

15、高電平即可實現(xiàn)復(fù)位,復(fù)位后單片機的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖所示:</p><p><b>  圖3-2 復(fù)位電路</b></p><p>  值得注意的是,在設(shè)計當(dāng)中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面的硬件復(fù)位后的各狀態(tài)可知寄存器及存儲器的值都恢復(fù)到了初始值,而前面的功能介紹中提到了倒計時時間的記憶功能,該功能的實現(xiàn)的前提條件就是不能對單片機進(jìn)行

16、硬件復(fù)位,所以設(shè)定了軟復(fù)位功能。軟復(fù)位實際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。</p><p><b>  3.3 顯示電路</b></p><p>  本設(shè)計所用的為4位8段共陽數(shù)碼管,由P0控制顯示數(shù)字,P2.0~P2.3控制位選信號。最高位顯示選手編號,低兩位顯示倒計時時間。 </p><p>

17、;  顯示功能與硬件關(guān)系極大,當(dāng)硬件固定后,如何在不引起操作者誤解的前提下提供盡可能豐富的信息,全靠軟件來解決。</p><p>  使用數(shù)碼管應(yīng)該注意位選信號,以及共陽和共陰的區(qū)別。</p><p>  其與單片機的接口電路如圖3-3所示。</p><p>  圖3-3 數(shù)碼管與單片機的接口電路</p><p>  3.4 鍵盤掃描電路&l

18、t;/p><p>  鍵盤是人與微機系統(tǒng)打交道的主要設(shè)備。關(guān)于鍵盤硬件電路的設(shè)計方法也可以在文獻(xiàn)和書籍中找到,配合各種不同的硬件電路,這些書籍中一般也提供了相應(yīng)的鍵盤掃描程序。站在系統(tǒng)監(jiān)控軟件設(shè)計的立場上來看,僅僅完成鍵盤掃描,讀取當(dāng)前時刻的鍵盤狀態(tài)是不夠的,還有不少問題需要妥善解決,否則,人們在操作鍵盤就容易引起誤操作和操作失控現(xiàn)象。在單片機應(yīng)用中鍵盤用得最多的形式是獨立鍵盤及矩陣鍵盤。</p>&l

19、t;p><b>  圖3-4 獨立鍵盤</b></p><p>  它們各有自己的特點,其中獨立鍵盤硬件電路簡單,而且在程序設(shè)計上也不復(fù)雜,一般用在對硬件電路要求不高的簡單電路中;矩陣鍵盤與獨立鍵盤有很大區(qū)別,首先在硬件電路上它要比獨立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢得多,因此它更適合于多按鍵電路。其次就是消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象。這里采用

20、最常用的方法,即延時重復(fù)掃描法,延時法的原理為:因為“毛刺”脈沖一般持續(xù)時間短,約為幾ms,而我們按鍵的時間一般遠(yuǎn)遠(yuǎn)大于這個時間,所以當(dāng)單片機檢測到有按鍵動靜后再延時一段時間(這里我們?nèi)?0ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。</p><p><b>  3.5 蜂鳴器</b></p><p>  由于蜂鳴器的工作電流一般比較大,以致于單

21、片機的I/O 口是無法直接驅(qū)動的(但AVR可以驅(qū)動小功率蜂鳴器),所以要利用放大電路來驅(qū)動,一般使用三極管來放大電流就可以了。</p><p>  當(dāng)有選手進(jìn)行搶答或者搶答倒計時結(jié)束時,蜂鳴器進(jìn)行報警提示。</p><p>  驅(qū)動電路如圖3-4所示。</p><p>  圖3-4 蜂鳴器電路</p><p><b>  4. 系統(tǒng)

22、程序設(shè)計</b></p><p>  4.1 主程序流程圖</p><p>  當(dāng)主持人按下開始按鈕后,計時器開始倒計時顯示。若有選手搶答,計時終止并顯示搶答選手的編號。本輪搶答結(jié)束。</p><p>  只有當(dāng)主持人再次按下開始按鈕后,才能進(jìn)行下一輪的搶答。</p><p>  系統(tǒng)主程序流程圖如圖4-1所示。</p>

23、;<p>  圖4-1 主程序流程圖</p><p>  4.2 倒計時時間顯示流程圖</p><p>  當(dāng)主持人按下開始按鈕之后,計時器開始顯示倒計時,每過一秒減一。當(dāng)?shù)褂嫊r完成后,若還沒有人進(jìn)行搶答,數(shù)碼管顯示00,搶答結(jié)束。其流程圖如下:</p><p>  圖4-2 倒計時時間顯示流程圖</p><p>  4.3 選

24、手搶答流程圖</p><p>  當(dāng)主持人按下開始按鈕之后,8位選手進(jìn)行搶答。當(dāng)其中某一位選手進(jìn)行搶答后,數(shù)碼管顯示搶答選手的編號并鎖定,此時其他選手無法再次搶答,本次搶答結(jié)束。直到主持人再次按下開始按鈕后,才能進(jìn)行下一輪搶答。</p><p><b>  具體流程圖如下:</b></p><p>  圖4-3 搶答選手顯示程序流程圖</

25、p><p><b>  5. 系統(tǒng)調(diào)試</b></p><p>  5.1 Proteus軟件仿真調(diào)試</p><p>  在proteus中新建工程,搭好電路,保存。然后在AT89C51單片機中加載C語言編寫程序生成的hex文件。</p><p>  點擊左下角的運行按鈕(或Debug-Run Simulation),按下

26、結(jié)束按鈕結(jié)束仿真。</p><p>  開始仿真后,倒計時顯示如圖5-1.</p><p>  圖5-1 搶答開始,進(jìn)行倒計時</p><p>  例如3號選手搶答后,顯示如圖5-2.</p><p>  圖5-2 2號選手進(jìn)行搶答</p><p>  若倒計時結(jié)束仍無人搶答,顯示如圖5-3.</p>&

27、lt;p>  圖5-3 倒計時結(jié)束,仍無人搶答</p><p><b>  5.2 結(jié)果分析</b></p><p>  搶答器仿真模擬結(jié)果與實際搶答一致,可以進(jìn)行8路搶答。</p><p><b>  6. 程序清單</b></p><p>  #include<reg52.h>

28、 // 包含51單片機寄存器定義的頭文件</p><p>  #define N 20</p><p>  unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; //0xbf為“-”</p><p>  //數(shù)碼管顯示0~9的段碼表</p

29、><p>  unsigned char int_time; //記錄中斷次數(shù)</p><p>  unsigned char second; //儲存秒</p><p>  unsigned char num; //記錄搶答選手編號</p><p>  char flag1=0; //復(fù)位標(biāo)志

30、</p><p>  /*********************************************************************</p><p>  對按鍵的接口進(jìn)行定義了K1、K2、K3、K4、K5,K6,K7,K8分別為P1.0-P1.7</p><p>  ***********************************

31、**********************************/</p><p>  sbit K1=P1^0;</p><p>  sbit K2=P1^1;</p><p>  sbit K3=P1^2;</p><p>  sbit K4=P1^3;</p><p>  sbit K5=P1^4;</

32、p><p>  sbit K6=P1^5;</p><p>  sbit K7=P1^6;</p><p>  sbit K8=P1^7;</p><p>  sbit B0=P3^6;//蜂鳴器控制</p><p>  sbit KA=P3^0;//主持人開始</p><p>  /*******

33、****************************************************************</p><p>  函數(shù)功能:快速動態(tài)掃描延時</p><p>  ************************************************************************/</p><p>  v

34、oid delay(void)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<3000;i++)</p><p><b>  ;</b></p><p><b

35、>  }</b></p><p>  /***********************************************************************</p><p><b>  函數(shù)功能:顯示秒</b></p><p><b>  入口參數(shù):k</b></p>

36、<p><b>  出口參數(shù):無</b></p><p>  ************************************************************************/</p><p>  void DisplaySecond(unsigned char k)</p><p><b&g

37、t;  {</b></p><p>  P2=0xf7; //P2.3引腳輸出低電平, 第4位點亮 </p><p>  P0=Tab[k%10]; //顯示個位</p><p><b>  delay();</b></p><p><b>  P0=0xff;</

38、b></p><p>  //*****************************************</p><p>  P2=0xfb; //P2.2引腳輸出低電平, 第3位點亮 </p><p>  P0=Tab[k/10]; //顯示十位</p><p><b>  delay()

39、;</b></p><p><b>  P0=0xff;</b></p><p>  //************************************</p><p>  P2=0xfd;//P2.1引腳輸出低電平, 第2位點亮</p><p>  P0=Tab[10]; //顯示“-”

40、</p><p><b>  delay();</b></p><p><b>  P0=0xff;</b></p><p>  //*******************************</p><p>  P2=0xfe; //P2.0引腳輸出低電平, 第3位點亮</p>

41、;<p>  P0=Tab[num];//顯示搶答選手編號</p><p><b>  delay();</b></p><p><b>  P0=0xff;</b></p><p><b>  }</b></p><p>  ///************

42、***復(fù)位函數(shù)*******************</p><p>  void _reset()</p><p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p> 

43、 if(KA==0) /*復(fù)位開關(guān)按下*/</p><p><b>  {</b></p><p>  delay(); /*按鍵去抖動*/</p><p>  if(KA==0) /*復(fù)位開關(guān)按下*/</p>

44、<p><b>  flag1=1;</b></p><p><b>  }</b></p><p>  if(flag1) //出現(xiàn)復(fù)位,返回原程序</p><p><b>  {</b></p><p>  //flag1=0;</p>

45、<p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****************************

46、***************************************</p><p>  * 名稱 : key()</p><p>  * 功能 : 進(jìn)行了獨立鍵盤的鍵盤掃描,并且二極管發(fā)光,揚聲器發(fā)聲</p><p><b>  * 輸入 : 無</b></p><p><b>  * 輸出 : 無

47、</b></p><p>  **********************************************************************/ </p><p>  void key()</p><p><b>  {</b></p><p>  if(K1==0)

48、 /*開關(guān)0按下*/</p><p><b>  {</b></p><p>  delay(); /*按鍵去抖動*/</p><p>  if(K1==0) /*開關(guān)0按下*/</p><p><b>

49、  {</b></p><p>  //void _stop();</p><p><b>  num=1;</b></p><p><b>  B0=1;</b></p><p>  DisplaySecond(N-second);</p><p><b&

50、gt;  P2=0xfe;</b></p><p>  P0=Tab[num];</p><p>  while(!K1); /*等待按鍵k0釋放*/</p><p><b>  _reset();</b></p><p>  /*死循環(huán)只顯示本按鍵號*/</p>&

51、lt;p>  } /* 1號選手搶答成功 ,數(shù)碼管顯示1,蜂鳴器響*/</p><p><b>  }</b></p><p><b>  if(K2==0)</b></p><p><b>  {</b></p><p

52、>  delay(); /*按鍵去抖動*/</p><p>  if(K2==0) </p><p><b>  {</b></p><p>  //void _stop();</p><p><b>  num=2;</b>

53、;</p><p><b>  B0=1;</b></p><p>  DisplaySecond(N-second);</p><p><b>  //顯示搶答選手</b></p><p><b>  P2=0xfe;</b></p><p>  P0

54、=Tab[num];</p><p>  while(!K2); /*等待按鍵k1釋放*/</p><p><b>  _reset();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

55、;  if(K3==0) /*開關(guān)2按下*/</p><p><b>  {</b></p><p>  delay(); /*按鍵去抖動*/</p><p>  if(K3==0) </p><p>  {

56、 </p><p><b>  num=3;</b></p><p><b>  B0=1;</b></p><p>  DisplaySecond(N-second);</p><p><b>  P2=0xfe;</b></p><p>  P0

57、=Tab[num];</p><p>  while(!K3); /*等待按鍵k2放*/</p><p><b>  _reset();</b></p><p>  /*死循環(huán)只顯示本按鍵號*/</p><p>  } /* 3號選手搶答成

58、功,數(shù)碼管顯示3,蜂鳴器響*/</p><p><b>  }</b></p><p>  if(K4==0) /*開關(guān)3按下*/</p><p><b>  {</b></p><p>  delay(); /

59、*按鍵去抖動*/</p><p>  if(K4==0) </p><p>  { </p><p><b>  num=4;</b></p><p><b>  B0=1;</b></p><p>  DisplaySecond(N-s

60、econd); //顯示搶答選手</p><p><b>  P2=0xfe;</b></p><p>  P0=Tab[num];</p><p>  while(!K4); /*等待按鍵k3放*/</p><p><b>  _reset();</b></p>

61、;<p>  } /* 4號選手搶答成功,數(shù)碼管顯示4,蜂鳴器響*/</p><p><b>  }</b></p><p>  if(K5==0) /*開關(guān)5按下*/</p><p><b>  {<

62、/b></p><p>  delay(); /*按鍵去抖動*/</p><p>  if(K5==0) /*開關(guān)5按下*/</p><p><b>  {</b></p><p><b>  num=5;</b></p&g

63、t;<p><b>  B0=1;</b></p><p>  DisplaySecond(N-second);</p><p><b>  P2=0xfe;</b></p><p>  P0=Tab[num];</p><p>  while(!K5); /*

64、等待按鍵k5釋放*/</p><p><b>  _reset();</b></p><p>  /*死循環(huán)只顯示本按鍵號*/</p><p>  } /* 5號選手搶答成功 ,數(shù)碼管顯示5,蜂鳴器響*/</p><p><b>  }</b&g

65、t;</p><p>  if(K6==0) /*開關(guān)6按下*/</p><p><b>  {</b></p><p>  delay(); /*按鍵去抖動*/</p><p>  if(K6==0)

66、 /*開關(guān)6按下*/</p><p><b>  {</b></p><p><b>  num=6;</b></p><p><b>  B0=1;</b></p><p>  DisplaySecond(N-second);</p><p><

67、b>  P2=0xfe;</b></p><p>  P0=Tab[num];</p><p>  while(!K6); /*等待按鍵k6釋放*/</p><p><b>  _reset();</b></p><p>  /*死循環(huán)只顯示本按鍵號*/</p>

68、<p>  } /* 6號選手搶答成功 ,數(shù)碼管顯示6,蜂鳴器響*/</p><p><b>  }</b></p><p>  if(K7==0) /*開關(guān)7按下*/</p><p><b>  {</b

69、></p><p>  delay(); /*按鍵去抖動*/</p><p>  if(K7==0) /*開關(guān)7按下*/</p><p><b>  {</b></p><p><b>  num=7;</b></p>

70、<p><b>  B0=1;</b></p><p>  DisplaySecond(N-second);</p><p><b>  //顯示搶答選手</b></p><p><b>  P2=0xfe;</b></p><p>  P0=Tab[num];&

71、lt;/p><p>  while(!K7); /*等待按鍵k7釋放*/</p><p><b>  _reset();</b></p><p>  //while(1) ; /*死循環(huán)只顯示本按鍵號*/</p><p>  } /*

72、 7號選手搶答成功 ,數(shù)碼管顯示7,蜂鳴器響*/</p><p><b>  }</b></p><p>  if(K8==0) /*開關(guān)8按下*/</p><p><b>  {</b></p><p>  delay();

73、 /*按鍵去抖動*/</p><p>  if(K8==0) /*開關(guān)8按下*/</p><p><b>  {</b></p><p><b>  num=8;</b></p><p><b>  B0=1;</b></p&

74、gt;<p>  DisplaySecond(N-second);</p><p><b>  P2=0xfe;</b></p><p>  P0=Tab[num];</p><p>  while(!K8); /*等待按鍵k8釋放*/</p><p><b>  _res

75、et();</b></p><p>  /*死循環(huán)只顯示本按鍵號*/</p><p>  } /* 8號選手搶答成功 ,數(shù)碼管顯示8,蜂鳴器響*/</p><p><b>  }</b></p><p><b>  } </b>

76、</p><p>  void main(void) //主函數(shù)</p><p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  num

77、=0;</b></p><p>  TMOD=0x01; //使用定時器T0</p><p>  TH0=(65536-46083)/256; //將定時器計時時間設(shè)定為46083×1.085微秒</p><p>  //=50000微秒=50毫秒</p><p>  TL0=(65

78、536-46083)%256;</p><p>  EA=1; //開啟總中斷</p><p>  ET0=1; //定時器T0中斷允許</p><p>  TR0=1; //啟動定時器T0開始運行</p><p>  int_tim

79、e=0; //中斷次數(shù)初始化</p><p>  second=0; //秒初始化</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  key();</b></p><p

80、>  DisplaySecond(N-second);//調(diào)用秒的顯示子程序</p><p>  if(flag1) { flag1=0; break;}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b

81、></p><p>  //********************************************************</p><p>  //函數(shù)功能:定時器T0的中斷服務(wù)程序</p><p>  //*******************************************************</p>&

82、lt;p>  void interserve(void ) interrupt 1 using 1 </p><p><b>  {</b></p><p>  TR0=0; //關(guān)閉定時器T0</p><p>  int_time ++; //每來一次中斷,中斷次數(shù)int_time自加1</p>&

83、lt;p>  if(int_time==20) //夠20次中斷,即1秒鐘進(jìn)行一次檢測結(jié)果采樣</p><p><b>  {</b></p><p>  int_time=0; //中斷次數(shù)清0</p><p>  second++; //秒加1</p><p>  if(second==N)

84、 //秒等于N就結(jié)束</p><p><b>  { </b></p><p><b>  EA=0;</b></p><p><b>  ET0=0; </b></p><p><b>  TR0=0;</b></p><p>

85、;<b>  _reset();</b></p><p><b>  return; </b></p><p><b>  }</b></p><p><b>  } </b></p><p>  TH0=(65536-46083)/256;

86、 //重新給計數(shù)器T0賦初值</p><p>  TL0=(65536-46083)%256;</p><p>  TR0=1; //啟動定時器T0</p><p><b>  } </b></p><p><b>  7.小結(jié)</b></p><p>  制作

87、此次試驗,開始很苦惱,無從下手。后來和同組同學(xué)討論,決定首先借助于網(wǎng)絡(luò)資料。網(wǎng)絡(luò)上的資源大多并不完善,甚至有些根本看不懂。此時真的恩頭疼。于是回想之前實驗課上所學(xué)習(xí)的知識,尋找借鑒例題。零零散散下載摘錄很多東西。又結(jié)合搶答比賽的實際應(yīng)用,開始起草最初的設(shè)計草案。想法很多,設(shè)計也幾近完整,然而很多功能卻無法實現(xiàn)。于是小組討論決定按照草案一步步依次解決,邊解決邊定稿最后設(shè)計方案。中間遇到很多問題,困難。這時我們才了解到對知識的掌握還有許多的

88、生疏和欠缺。然而此時后悔已經(jīng)于事無補。我們只能不停在網(wǎng)絡(luò)上搜索查找學(xué)習(xí),盡量彌補自身知識的不足。漸漸完善此設(shè)計。</p><p>  有時候在自己創(chuàng)建的元器件的管腳上無法實現(xiàn)連線。應(yīng)該是管腳的間距太小了。因為在ISIS中,每個元器件的管腳都要占據(jù)一塊區(qū)域(就像自己的保護(hù)區(qū)一樣,不容別人隨意侵犯),該區(qū)域會排斥外部的走線。解決問題的方法是在走線的同時按住 “CTRL”鍵,直到走線繞過狹窄的保護(hù)區(qū)。當(dāng)然最根本的辦法是

89、重新編輯元器件,把其管腳間距調(diào)大一些。  主持人按鍵來控制總開關(guān),主持人按下開關(guān)那么選手開始搶答,此時數(shù)碼管開始20s倒計時,并且選手們必須在規(guī)定的時間內(nèi)進(jìn)行搶答,若過了20秒還沒搶答那么搶答失效,選手們?nèi)粲幸粋€在規(guī)定的時間內(nèi)搶答成功則其余的選手不可以再搶答,即該選手搶答成功。</p><p>  在這次試驗設(shè)計中,我發(fā)現(xiàn)了自己知識上的不足,和理論時間上的差距。通過完成試驗,使我對本科知識有了更深入的了解,提高

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論