拔河游戲機(jī)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  Course Design Report</p><p><b>  拔河游戲機(jī)</b></p><p><b>  1 設(shè)計(jì)目的</b></p><p> ?。?)了解AT89C51芯片的引腳功能和該芯片

2、的結(jié)構(gòu);</p><p>  (2)熟悉拔河游戲機(jī)的原理和對(duì)數(shù)碼管,蜂鳴器,發(fā)光二極管各元器件的結(jié)構(gòu)功能;</p><p> ?。?)掌握應(yīng)用AT89C51芯片設(shè)計(jì)拔河游戲機(jī)電路以及運(yùn)用C語言編寫簡單的程序。</p><p><b>  2 設(shè)計(jì)思路</b></p><p>  15個(gè)二極管排成一條直線,兩邊各裝一個(gè)按鍵

3、,每按一次按鍵,就會(huì)產(chǎn)生一個(gè)有效低電平,哪邊按一次,發(fā)光二極管就向哪邊移一位。</p><p>  安裝一個(gè)復(fù)位開關(guān),第一次按是讓發(fā)光二極管回到中點(diǎn),再按一下后,蜂鳴器發(fā)出響聲,兩邊選手就可以拔河了。</p><p>  當(dāng)發(fā)光二極管移到終端時(shí),兩邊選手按鍵無效,數(shù)碼管就會(huì)記錄一下對(duì)應(yīng)的盤數(shù)。再按復(fù)位鍵,以進(jìn)行下次的拔河。</p><p>  再用一個(gè)清零鍵,用于讓

4、記錄盤數(shù)的數(shù)碼管清零,同時(shí)發(fā)光二極管也回到中點(diǎn)。</p><p><b>  3 設(shè)計(jì)過程 </b></p><p>  該電路分為五個(gè)部分,分別為提示部分,該部分包括的主要元器件為蜂鳴器;拔河部分,該部分的主要元器件為發(fā)光二極管;顯示部分,該部分的主要元器件為數(shù)碼管;清零部分,該部分的主要元器件為AT89C51芯片等;控制部分,該部分的主要元器件為控制開關(guān)。主要過程

5、分為方案論證和電路設(shè)計(jì),具體如下。 </p><p><b>  3.1方案論證</b></p><p>  按兩次復(fù)位鍵后,蜂鳴器響起,兩邊選手開始拔河。當(dāng)發(fā)光二極管移到左端終點(diǎn)時(shí),選手按鍵無效,左邊的數(shù)碼管計(jì)1次數(shù)。按兩次復(fù)位鍵,繼續(xù)拔河,當(dāng)發(fā)光二極管移到右端終點(diǎn)時(shí),選手按鍵無效,右邊的數(shù)碼管計(jì)1次數(shù)。如果是3局2勝制,當(dāng)有一方已贏了2局后,復(fù)位鍵也無效,需要按一

6、下清零鍵。此方案實(shí)際操作可行!</p><p><b>  3.2電路設(shè)計(jì)</b></p><p>  該電路的設(shè)計(jì)主要從硬件和軟件兩個(gè)方面完成。</p><p> ?。?)硬件部分:主要由顯示部分、提示部分、清零部分、控制部分和拔河“繩子”部分五部分組成。具體電路如圖1(a)、(b)、(c)、(d)、(e)所示。</p><

7、;p> ?。╝)顯示部分 (b)提示部分</p><p><b> ?。╟)清零部分</b></p><p><b> ?。╠)控制部分</b></p><p>  (e)拔河“繩子”部分</p><p>  圖1 電路硬件部分</p

8、><p>  (2)軟件部分,其設(shè)計(jì)過程如圖2所示。</p><p>  圖2 一次拔河過程圖</p><p>  4電路仿真與結(jié)果分析</p><p><b>  4.1電路仿真</b></p><p> ?。?)按下清零部分復(fù)位鍵,觀察顯示部分是否為0比0和發(fā)光二極管是否在中點(diǎn),如果數(shù)碼管顯示0比

9、0,而且發(fā)光二極管在中點(diǎn)亮,則再按下控制部分復(fù)位鍵,蜂鳴器響,提示拔河準(zhǔn)備;再按控制部分復(fù)位鍵,第一局拔河開始。</p><p> ?。?)選手任意隨機(jī)的按key1和key2,假設(shè)按key1鍵的選手對(duì)應(yīng)發(fā)光二極管先移到二極管左端終點(diǎn),則player1贏,顯示部分如下圖,顯示1比0。</p><p> ?。?)按控制部分復(fù)位鍵,使二極管在中點(diǎn)亮,選手準(zhǔn)備第二局比賽;再按復(fù)位鍵,蜂鳴器響,提示

10、比賽開始;選手按key1和key2,假設(shè)按key2鍵的選手對(duì)應(yīng)發(fā)光二極管先移到二極管右端終點(diǎn),則player2贏,顯示部分如下圖,顯示1比1。</p><p>  (4)按控制部分復(fù)位鍵,使二極管在中點(diǎn)亮,選手準(zhǔn)備第三局比賽;再按復(fù)位鍵,蜂鳴器響,提示比賽開始;選手按key1和key2,假設(shè)按key1鍵的選手對(duì)應(yīng)發(fā)光二極管先移到二極管左端終點(diǎn),則player1贏,顯示部分如下圖,顯示2比1。由于比賽3局2勝,所以

11、最后player1勝,游戲結(jié)束。</p><p> ?。?)按下清零鍵,看數(shù)碼管數(shù)據(jù)是否清零,發(fā)光二極管是否也回到中點(diǎn)。如果達(dá)到預(yù)期,則實(shí)驗(yàn)成功。</p><p><b>  4.2結(jié)果分析</b></p><p>  該拔河游戲機(jī)的設(shè)計(jì)在仿真過程中出現(xiàn)了一些無法正常顯示比賽結(jié)果的情形。第一,數(shù)碼管不亮,經(jīng)過分析后知道是錯(cuò)用了共陰極數(shù)碼管,改用

12、共陽極的后數(shù)碼管有顯示了。第二是進(jìn)行拔河游戲過程,發(fā)光二極管從P0口進(jìn)入到P2口或從P2口進(jìn)入到P0口后,發(fā)光二極管移位出現(xiàn)了混亂,而且不能到達(dá)終點(diǎn),原因是程序沒有寫好,認(rèn)真修改了程序后,移位正常了。第三是數(shù)碼管不能實(shí)現(xiàn)清零,把清零方式由電平清零改為脈沖式清零后,可以正常清屏了。</p><p><b>  5主要儀器與設(shè)備</b></p><p>  發(fā)光二極管

13、 LED 7紅1黃7綠, </p><p>  電阻 RES 300k×15, </p><p>  電阻 RES 1k×2,</p><p>  電阻

14、 RES 20k ×1 </p><p>  數(shù)碼管 7SEG-MPX2-CA×1, </p><p>  芯片 AT89C51×1,</p><p>  極性電容

15、 CAP-POL 22uF×2, </p><p>  電容 CAP 30pF×2, </p><p>  蜂鳴器 BUZZER×1,</p><p>  晶振

16、 CRYSTAL×1, </p><p>  排阻 RESPACK-8×1, </p><p>  三極管 PNP×1,</p><p>  按鍵

17、 BUTTON×4。</p><p><b>  6設(shè)計(jì)體會(huì)與建議</b></p><p><b>  6.1設(shè)計(jì)體會(huì)</b></p><p>  這次課程設(shè)計(jì)是對(duì)我們知識(shí)與能力的一次綜合考察,集中鍛煉了我們發(fā)現(xiàn)、提出、分析、解決問題的能力,為我們以后參

18、加工作打好了堅(jiān)實(shí)基礎(chǔ)。通過這次課程設(shè)計(jì),從剛開始的新鮮興奮,到后來的挫折沮喪,再到迎難而上,到最后的滿足,我們學(xué)會(huì)了許多。首先,我們必須努力學(xué)好知識(shí),并且必須將知識(shí)與實(shí)踐相結(jié)合,做到學(xué)以致用,只有這樣你才會(huì)有自信且有能力去完成一件作品。只有理論扎實(shí),才能更好實(shí)踐;只有實(shí)踐,才能更好的掌握理論。其次,必須學(xué)會(huì)去查找課外資料,有良好的自學(xué)能力,吸收汲取新的知識(shí),豐富自己。我們必須認(rèn)識(shí)到課本上學(xué)到的總是有限的,有不足的。再次,我們必須要有團(tuán)隊(duì)

19、的意識(shí),要善于小組分工合作去解決問題。須知一個(gè)人的能力也是有限的,有不足的,有善于的,有不善于的,大家互補(bǔ)學(xué)習(xí)才是最好的。最后,我們必須熟悉自己所從是行業(yè)的一些常用軟件,不要用的時(shí)候方覺不知道。</p><p>  通過這次課程設(shè)計(jì),我們對(duì)相關(guān)的知識(shí)有了一個(gè)更好的了解掌握,學(xué)會(huì)了設(shè)計(jì)的步驟,學(xué)會(huì)了怎樣使用Proteus軟件畫原理圖和進(jìn)行仿真實(shí)驗(yàn),學(xué)會(huì)了怎樣焊接制作實(shí)物圖,學(xué)會(huì)了怎樣做課程設(shè)計(jì)報(bào)告??傊?,通過這幾個(gè)

20、星期的努力,我們一起學(xué)會(huì)了許多。雖然在完成過程中碰到過許多困難,但通過我們的努力以及老師的指點(diǎn)解惑,我們都一一解決了。我們覺得這是苦并快樂著,覺得很有成就感滿足感。</p><p><b>  6.2對(duì)設(shè)計(jì)的建議</b></p><p> ?。?)發(fā)光二極管部分將15個(gè)串聯(lián)電阻該為在二極管至電源的總線上串聯(lián)一個(gè)電阻,減少器件。</p><p>

21、 ?。?)數(shù)碼管每按一次鍵閃一下,對(duì)選手視覺影響不好,在數(shù)碼管上接一鎖存器,使實(shí)驗(yàn)中按鍵時(shí),數(shù)碼管不閃。</p><p> ?。?)蜂鳴器只在按復(fù)位鍵準(zhǔn)備游戲時(shí)叫,更改程序,使蜂鳴器在游戲開始與結(jié)束時(shí)都發(fā)聲提醒。</p><p> ?。?)更改程序,使游戲進(jìn)行到一定局?jǐn)?shù)時(shí),無論怎么按拔河部分復(fù)位鍵,游戲都不能進(jìn)行下一局,比如說3局2勝時(shí),當(dāng)比分2比1時(shí),無論你按拔河部分復(fù)位鍵準(zhǔn)備,都不能進(jìn)

22、行下一局。</p><p> ?。?)在原有設(shè)計(jì)的基礎(chǔ)增加一個(gè)故障中斷恢復(fù)系統(tǒng),即在拔河的過程中,出現(xiàn)故障應(yīng)立即中斷此次拔河比賽,不記入成績,等到恢復(fù)系統(tǒng)將其恢復(fù)正常后再進(jìn)行拔河比賽。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 吳?。骸禔VR單片機(jī)實(shí)用C語言程序設(shè)計(jì)與典型實(shí)例》[M],北京中國電力出版社,2008

23、。</p><p>  [2] 馬潮:《AVR單片機(jī)嵌入式系統(tǒng)原理與應(yīng)用》[M],北京韓天航空大學(xué)出版社,2007。</p><p>  [3] 閻石主編:《數(shù)字電子電路》 [M] ,北京中央廣播電視大學(xué)出版社,1993。</p><p>  [4] 高吉祥主編:《電子技術(shù)基礎(chǔ) 實(shí)驗(yàn)與課程設(shè)計(jì)》電子工業(yè)出版社。</p><p><b&g

24、t;  附件</b></p><p>  #include<reg52.h></p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p>

25、<p>  sbit wela1=P3^0;</p><p>  sbit wela2=P3^1; //</p><p>  sbit beep=P3^5; //</p><p>  sbit key=P3^4; //</p><p>  sbit key1=P3^2; //</p><p>  sbi

26、t key2=P3^3; //</p><p>  uchar n,m,temp1,temp2,a,b,num;</p><p>  uint n1=0,n2=0;</p><p>  void key_init();</p><p>  uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0

27、x7d,0x07,0x7f,0x6f};//共陰數(shù)碼管碼表 0--9</p><p>  void delay(uchar z) // 延時(shí)子程序 z=10時(shí)大約為2.5ms</p><p><b>  {</b></p><p>  uchar x,y;</p><p>  for(x=z;x>0;x--

28、)</p><p>  for(y=120;y>0;y--);</p><p><b>  }</b></p><p>  void di(void) //蜂鳴器</p><p><b>  {</b></p><p><b>  beep=0;</

29、b></p><p>  delay(100);</p><p><b>  beep=1;</b></p><p><b>  }</b></p><p>  void disp(uchar shi,uchar ge)//顯示子程序</p><p><b>

30、;  {</b></p><p><b>  wela1=0;</b></p><p>  P1=table[shi];</p><p>  delay(10);</p><p><b>  wela1=1;</b></p><p><b>  wela

31、2=0;</b></p><p>  P1=table[ge];</p><p>  delay(10);</p><p><b>  wela2=1;</b></p><p><b>  }</b></p><p>  void key_init() //

32、按鍵子程序</p><p><b>  {</b></p><p>  if(key==0) //復(fù)位,按第一次復(fù)位,第二次開始</p><p><b>  { </b></p><p><b>  delay(5);</b></p><p> 

33、 if(key==0)</p><p><b>  {</b></p><p>  while(!key);</p><p>  temp1=0x7f;</p><p>  temp2=0xff;</p><p><b>  di();</b></p><

34、p><b>  P0=temp1;</b></p><p><b>  P2=temp2;</b></p><p><b>  num++;</b></p><p>  if(num==3)</p><p><b>  num=0;</b></

35、p><p><b>  }</b></p><p><b>  }</b></p><p>  if(num==2)</p><p><b>  {</b></p><p>  if(key1==0) //玩家一,燈左移</p>&l

36、t;p><b>  {</b></p><p><b>  delay(5);</b></p><p>  if(key1==0)</p><p><b>  {</b></p><p>  while(!key1); </p><p>  if

37、(temp1==0xff)//燈在P2口上</p><p><b>  {</b></p><p>  if(temp2==0xfe)//燈在P2口的最低位,接著跳到P0口的最高位</p><p><b>  {</b></p><p>  temp2=0xff;</p><

38、;p><b>  P2=temp2;</b></p><p>  temp1=0x7f;</p><p><b>  P0=temp1;</b></p><p><b>  }</b></p><p>  if(temp2!=0xff) </p><p

39、><b>  {</b></p><p>  temp2=_cror_(temp2,1);//P2口燈往左移</p><p><b>  P2=temp2;</b></p><p><b>  }</b></p><p><b>  }</b>&

40、lt;/p><p>  else//燈在P0口上</p><p><b>  {</b></p><p>  temp1=_cror_(temp1,1); //P0口燈往左移</p><p><b>  P0=temp1;</b></p><p><b>  

41、}</b></p><p>  a=1; //用于跳出P0==0xfe的循環(huán)</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key2==0) //玩家二,燈右移</p><p><b

42、>  {</b></p><p><b>  delay(5);</b></p><p>  if(key2==0)</p><p>  while(!key2);</p><p>  if(temp2==0xff)</p><p><b>  {</b>&

43、lt;/p><p>  if(P0==0x7f)</p><p><b>  { </b></p><p>  temp1=0xff;</p><p><b>  P0=temp1;</b></p><p>  temp2=0xfe;</p><p>&l

44、t;b>  P2=temp2;</b></p><p><b>  }</b></p><p>  if(temp1!=0xff)</p><p><b>  {</b></p><p>  temp1=_crol_(temp1,1);</p><p>&

45、lt;b>  P0=temp1;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  { </b></p>&l

46、t;p>  temp2=_crol_(temp2,1);</p><p>  P2=temp2; </p><p><b>  }</b></p><p>  b=1; //用于跳出P2==0xbf的循環(huán)</p><p><b>  }</b></p><p

47、><b>  }</b></p><p><b>  } </b></p><p>  if(P0==0xfe&&a==1)//玩家一勝一次,n加1,用來顯示在數(shù)碼管上</p><p><b>  { </b></p><p><b> 

48、 num=0;</b></p><p><b>  n+=1;</b></p><p><b>  a=0;</b></p><p><b>  } </b></p><p>  if(P2==0xbf&&b==1) //玩家二勝一次,m加1,用

49、來顯示在數(shù)碼管上</p><p><b>  {</b></p><p><b>  num=0;</b></p><p><b>  m+=1;</b></p><p><b>  b=0;</b></p><p><b&g

50、t;  }</b></p><p>  if(n==2||m==2)//有人先勝2盤的蜂鳴器響</p><p><b>  {</b></p><p><b>  di();</b></p><p><b>  } </b></p><p&g

51、t;<b>  } </b></p><p>  void init()</p><p><b>  { </b></p><p>  P0=0x7f;//中間的燈亮</p><p><b>  n1=0;</b></p><p><b>

52、;  n2=0;</b></p><p><b>  num=0;</b></p><p><b>  n=0;</b></p><p><b>  m=0;</b></p><p><b>  }</b></p><p&g

53、t;  void main()</p><p><b>  {</b></p><p>  init(); //初始化</p><p>  disp(n,m); //顯示</p><p><b>  while(1)</b></p><p><b&g

54、t;  {</b></p><p>  disp(n,m); //刷新--顯示</p><p>  key_init();//按鍵掃描</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  完

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論