乒乓球模擬器畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  乒乓球模擬器</b></p><p><b>  目錄</b></p><p><b>  摘 要2</b></p><p><b>  第一章概 述2</b></p><p><b>  1.1項(xiàng)目概述2&

2、lt;/b></p><p>  1.2 本設(shè)計(jì)的任務(wù)及要求2</p><p>  1.3 系統(tǒng)主要功能2</p><p>  第二章 系統(tǒng)硬件設(shè)置3</p><p>  2.1 芯片的選擇3</p><p>  2.2 工作原理圖5</p><p>  2.3 系統(tǒng)的硬件構(gòu)成及

3、功能5</p><p>  2.3.1電路原理圖5</p><p>  2.3.2 顯現(xiàn)管電路5</p><p>  2.3.3 最小電路6</p><p>  第三章 系統(tǒng)軟件設(shè)置7</p><p>  3.1 系統(tǒng)主程序設(shè)計(jì)7</p><p>  第四章仿真效果與成品展示12&

4、lt;/p><p>  4.1 仿真效果錯(cuò)誤!未定義書(shū)簽。</p><p>  4.2 成品展示錯(cuò)誤!未定義書(shū)簽。</p><p>  第五章 設(shè)計(jì)心得錯(cuò)誤!未定義書(shū)簽。</p><p>  參考文獻(xiàn)錯(cuò)誤!未定義書(shū)簽。</p><p>  【摘 要】利用單片機(jī)中的定時(shí)器、IO接口、中斷系統(tǒng)等資源,設(shè)計(jì)一個(gè)乒乓球游戲

5、,利用單片機(jī)設(shè)計(jì)具有系統(tǒng)簡(jiǎn)單易懂,易于操作的優(yōu)點(diǎn)。</p><p><b>  返回</b></p><p><b>  概 述</b></p><p><b>  1.1項(xiàng)目的概述</b></p><p>  用8個(gè)LED二極管的來(lái)回滾動(dòng)顯示模擬乒乓球的來(lái)回運(yùn)動(dòng)。比賽雙方用開(kāi)

6、關(guān)(K1和K8)控制發(fā)球與接球,當(dāng)球運(yùn)動(dòng)至接球方時(shí),接球方立即改變開(kāi)關(guān)狀態(tài),“擊球”使球“彈回”發(fā)球方一側(cè)。如此周而復(fù)始,直至在規(guī)定的擊球時(shí)間內(nèi)有一方未能完成擊球動(dòng)作,從而對(duì)方得一分;然后繼續(xù)比賽。 </p><p><b>  返回</b></p><p>  1.2本設(shè)計(jì)的任務(wù)及要求</p><p>  任務(wù):運(yùn)用單片機(jī)制作8個(gè)

7、LED二極管的來(lái)回滾動(dòng)顯示模擬乒乓球的來(lái)回運(yùn)動(dòng)。</p><p>  要求:比賽雙方用開(kāi)關(guān)(K1和K8)控制發(fā)球與接球,當(dāng)球運(yùn)動(dòng)至接球方時(shí),接球方立即改變開(kāi)關(guān)狀態(tài),“擊球”使球“彈回”發(fā)球方一側(cè)。如此周而復(fù)始,直至在規(guī)定的擊球時(shí)間內(nèi)有一方未能完成擊球動(dòng)作,從而對(duì)方得一分;然后繼續(xù)比賽。</p><p><b>  返回</b></p><p>

8、<b>  1.3系統(tǒng)主要功能</b></p><p>  所設(shè)計(jì)的游戲模擬器,可在仿真環(huán)境下進(jìn)行模擬乒乓球比賽,實(shí)現(xiàn)以下功能: 1.基本功能 </p><p> ?。?)采用兩個(gè)開(kāi)關(guān)K1、K8作為擊球鍵。為便于操作,以開(kāi)關(guān)量的電平改變作為 輸入信號(hào),分別實(shí)現(xiàn)乒乓球的左擊和右擊。 </p><p> ?。?)采用P1口模擬球的移動(dòng),并在LED

9、反映乒乓球的運(yùn)動(dòng)狀態(tài)。 </p><p> ?。?)按乒乓球游戲規(guī)則設(shè)計(jì)打球的基本過(guò)程模擬?;疽?guī)則為:每局采用采用 11分制、三局兩勝制,在各數(shù)碼管上反映雙方比分。每當(dāng)一方得分后,采用一球輪換制發(fā)球,由對(duì)方選手開(kāi)始發(fā)球。若球移至最邊上一個(gè)LED后,對(duì)應(yīng)的選手還在1s仍內(nèi)未擊回,即判定另一方選手得分。 </p><p>  2.提高功能 所有提高功能均依賴于開(kāi)關(guān)量K,以其電平的改變作為觸發(fā)

10、信號(hào)。 </p><p> ?。?) 加設(shè)“失誤”判斷模式,即一方發(fā)球,在球還未到對(duì)方近前時(shí),若對(duì)方提 前擊球,則認(rèn)為其擊球失誤,判負(fù)。 </p><p>  (2)所有比分清零。等待發(fā)球時(shí),撥動(dòng)K2,可實(shí)現(xiàn)雙方局?jǐn)?shù)、每局分?jǐn)?shù)的清零。 </p><p> ?。?)比分調(diào)節(jié)。等待發(fā)球時(shí),撥動(dòng)K3、K4可實(shí)現(xiàn)雙方局?jǐn)?shù)比分的自增調(diào)節(jié),撥 動(dòng)K6、K7可實(shí)現(xiàn)雙方每局比分的自

11、增調(diào)節(jié)。</p><p><b>  返回</b></p><p><b>  二、系統(tǒng)硬件設(shè)置</b></p><p><b>  2.1芯片的選擇</b></p><p>  選用設(shè)備MCS-51系列單片機(jī):89C51單片機(jī)。</p><p><

12、;b>  各引腳功能:</b></p><p>  P0.0~P0.7 P0口8位雙向端口線</p><p>  P1.0~P1.7 P1口8位雙向端口線</p><p>  P2.0~P2.7 P2口8位雙向端口線</p><p>  P3.0~P3.7 P3口8位雙向端口線</p><p>

13、;  ALE 地址鎖存控制信號(hào)</p><p>  PSEN 外部程序存儲(chǔ)器讀選通信號(hào)</p><p>  EA 程序訪問(wèn)存儲(chǔ)控制信號(hào)</p><p>  RST 復(fù)位信號(hào)</p><p>  XTAL1和XTAL2 外接晶體引線端</p><p>  P3口各

14、引腳的第二功能:</p><p>  RXD 串行數(shù)據(jù)接收 </p><p>  TXD 串行數(shù)據(jù)發(fā)送</p><p>  INT0 外部中斷0申請(qǐng)</p><p>  INT1 外部中斷1申請(qǐng)</p><p>  T0 定時(shí)/計(jì)數(shù)器0的外部輸入<

15、/p><p>  T1 定時(shí)/計(jì)數(shù)器1的外部輸入</p><p>  WR 外部RAM或外部I/O寫(xiě)選通</p><p>  RD 外部RAM或外部I/O讀選通</p><p><b>  返回</b></p><p><b>  2.2工作原理圖

16、</b></p><p><b>  返回</b></p><p>  2.3 系統(tǒng)的硬件構(gòu)成及功能</p><p>  2.3.1電路原理圖</p><p><b>  返回</b></p><p>  2.3.2顯像管電路</p><p&g

17、t;  單片機(jī)及發(fā)光二極管顯示原理如圖1.2所示。通過(guò)MSC-51的P3口中的P3.4和P3.5來(lái)讀取開(kāi)關(guān)狀態(tài),從而決定是否正常回球。P3.4口連接開(kāi)關(guān)K1,P3.5口連接開(kāi)關(guān)K8。P1口通過(guò)74LS240來(lái)驅(qū)動(dòng)八個(gè)LED燈,模擬球的運(yùn)行軌跡。在AEDK5196ET實(shí)驗(yàn)平臺(tái)上,由于各芯片之間電路已接好。所以只需將DL1-DL8</p><p>  與單片機(jī)P1.0到P1.7相連。</p><p

18、><b>  返回</b></p><p>  2.3.3最小電路 </p><p>  單片機(jī)最小系統(tǒng)分為振蕩電路個(gè)復(fù)位電路。</p><p>  振蕩電路:在XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,就可以構(gòu)成一個(gè)穩(wěn)定的自激振蕩器。</p><p>  復(fù)位電路:?jiǎn)纹瑱C(jī)在剛接上電源或斷電、發(fā)生故障后都

19、要復(fù)位。單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都恢復(fù)到一個(gè)確定的初始狀態(tài)。</p><p><b>  返回</b></p><p><b>  三、系統(tǒng)軟件設(shè)置 </b></p><p>  3.1 系統(tǒng)主程序設(shè)計(jì)</p><p>  #include <reg51.h></

20、p><p>  #include<intrins.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char //宏定義</p><p>  sbit start=P3^1; //開(kāi)始</p>

21、<p>  //sbit L=P3^2; //左方</p><p>  //sbit R=P3^3; //右方</p><p>  sbit ALAM=P3^7; //報(bào)警</p><p>  bit L_R=0;

22、 //左、右標(biāo)志位,=0左邊,=1右邊</p><p>  bit run=0; //運(yùn)行、停止標(biāo)志位,=0停止,=1運(yùn)行</p><p>  //uchar code LEDData[]={0xC0,0xF9,0xA4,0xB0,0Xx99,0x92,0x82,0xF8,0x80,0x90,0xff};</p

23、><p>  uchar code LEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數(shù)字0-9的編碼</p><p>  uchar code PPQdata[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}</p><p>  uchar scoreL

24、,scoreR; //左右得分</p><p>  uchar countt0n,countt0,countt1; //T0,T1中斷計(jì)數(shù)</p><p>  /******延時(shí)子程序******/</p><p>  void Delay(uint num)</p><p><b>  {</b>

25、;</p><p>  while(--num);</p><p><b>  }</b></p><p>  /******初始化定時(shí)器0******/</p><p>  viod InitTimer(void)</p><p><b>  {</b></p>

26、<p>  TM0D=0x11;</p><p><b>  TH0=0x3C;</b></p><p>  TL0=0xb0; //50ms(晶振12M)</p><p><b>  }</b></p><p>  /******顯示分子數(shù)字程序******/</p>

27、<p>  void Disp_score(void) //顯示溫度</p><p><b>  {</b></p><p>  P0=LEDData[scoreL/10];</p><p><b>  P2=0x7F;</b></p><p>  Delay(200);</p

28、><p><b>  P2=0xFF;</b></p><p>  P0=LEDData[scoreL%10];</p><p><b>  P2=0xBF;</b></p><p>  Delay(200);</p><p><b>  P2=0xFF;</b&

29、gt;</p><p>  P0=LEDData[scoreR/10];</p><p><b>  P2=0xDF;</b></p><p>  Delay(200);</p><p><b>  P2=0xFF;</b></p><p>  P0=LEDData[scor

30、eR%10];</p><p><b>  P2=0xEF;</b></p><p>  Delay(200);</p><p><b>  P2=0xFF;</b></p><p><b>  }</b></p><p>  /******主函數(shù)***

31、***/</p><p>  void main(void)</p><p><b>  {</b></p><p>  InitTimer(); //初始化定時(shí)器</p><p>  EA=1; //全局中斷開(kāi)關(guān)</p><p><b>  TR0=0;</b>

32、;</p><p><b>  TR1=0;</b></p><p><b>  ET0=1;</b></p><p><b>  ET1=1;</b></p><p><b>  EX0=0;</b></p><p><b&

33、gt;  EX1=0;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if((start==0)&&(run==0)) //停止?fàn)顟B(tài)下,控下start鍵</p><p><

34、b>  {</b></p><p>  Disp_score();</p><p><b>  {</b></p><p>  if(start==0)</p><p><b>  {</b></p><p>  if((scoreL==11)||(seor

35、eR==11))</p><p><b>  {</b></p><p><b>  TR1=0;</b></p><p><b>  ALAM=1;</b></p><p><b>  scoreL=0;</b></p><p>

36、<b>  scoreR=0;</b></p><p><b>  }</b></p><p><b>  run=1;</b></p><p>  if(L_R==0)</p><p><b>  {</b></p><p>  

37、countt0=0;</p><p>  P1=PPQdata[0];</p><p><b>  EX0=1;</b></p><p><b>  EX1=0;</b></p><p><b>  }</b></p><p><b>  el

38、se</b></p><p><b>  {</b></p><p>  countt0=7;</p><p>  P1=PPQdata[7];</p><p><b>  EX0=0;</b></p><p><b>  EX1=1;</b>

39、;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  Disp_score();</p>

40、<p><b>  }</b></p><p><b>  }</b></p><p>  //==========定時(shí)器0中斷服務(wù)程序==========//</p><p>  void timer0(void)interrupt 1 //用于乒乓球的運(yùn)行速度控制</p&g

41、t;<p><b>  {</b></p><p>  TH0=0x3c; //T0重賦初值</p><p><b>  TL0=0xb0;</b></p><p>  TR0=1; //開(kāi)啟計(jì)數(shù)器0</p><

42、p>  countt0n++;</p><p>  if(countt0n==2)</p><p><b>  {</b></p><p>  countt0n==0;</p><p>  if(L_R==0)</p><p><b>  {</b></p>

43、<p>  countt0++; //中斷計(jì)數(shù)加1</p><p>  if_countt0==7) //當(dāng)計(jì)時(shí)器計(jì)數(shù)到7時(shí),(即LED運(yùn)行到端點(diǎn)時(shí))</p><p><b>  {</b></p><p>  EX1=1; //開(kāi)啟外部中斷1,便于選手擊球

44、</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  EX0=0;</b></p><p><b>  EX1=0;&l

45、t;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  countt0--;<

46、/p><p>  if(countt0==0)</p><p><b>  {</b></p><p><b>  EX0=1</b></p><p><b>  }</b></p><p><b>  else</b></p&g

47、t;<p><b>  {</b></p><p><b>  EX0=0;</b></p><p><b>  EX1=0;</b></p><p><b>  }</b></p><p><b>  }</b><

48、;/p><p>  P1==PPQdata[countt0];</p><p>  if((countt0==8)||(countt0==-1)) //當(dāng)計(jì)數(shù)大于7時(shí)或小于0,(表明選手未擊球中球)</p><p><b>  {</b></p><p>  TR0=0; //光定時(shí)器

49、,(球停止運(yùn)行)</p><p><b>  run=0;</b></p><p>  EX0=0; //關(guān)外部中斷0,1 </p><p><b>  EX1=0;</b></p><p>  if(L_R==0) //根據(jù)方向標(biāo)志位判斷哪一方得分&

50、lt;/p><p><b>  {</b></p><p>  scoreL++; //左加1分</p><p>  if(socreR==11) //當(dāng)分?jǐn)?shù)=11分時(shí)</p><p><b>  {</b></p><p>  TR0=0; //關(guān)T

51、0</p><p>  TR1=1; //開(kāi)啟T0定時(shí)器,產(chǎn)生報(bào)警信號(hào)</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {<

52、;/b></p><p><b>  scoreR++;</b></p><p>  if(scoreR==11)</p><p><b>  {</b></p><p><b>  TR0=0;</b></p><p><b>  TR

53、1=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  P1=0xFF;</b></p><p><b>  }</b></p><p><b&

54、gt;  }</b></p><p><b>  }</b></p><p>  //============定時(shí)中斷1服務(wù)程序=============//</p><p>  void timer1(void) interrupt 3</p><p><b>  {</b><

55、/p><p><b>  TH1=0x3C;</b></p><p><b>  TL1=0XB0;</b></p><p><b>  TR1=1;</b></p><p>  countt1++;</p><p>  if(countt1==10)<

56、;/p><p><b>  {</b></p><p>  countt1=0;</p><p>  ALAM=~ALAM;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //**

57、****外部中斷0服務(wù)程序******/</p><p>  void int0(void) interrupt 0</p><p><b>  {</b></p><p>  EX0=0; //關(guān)外部中斷0</p><p>  TR0=1; //開(kāi)啟定時(shí)器0,乒乓球開(kāi)始運(yùn)動(dòng)</p>

58、<p><b>  run=1;</b></p><p><b>  L_R=0;</b></p><p><b>  }</b></p><p>  //*****外部中斷1服務(wù)程序******/</p><p>  void int1(void) interru

59、pt 2</p><p><b>  {</b></p><p>  EX1=0; //關(guān)外部中斷1</p><p>  TR0=1; //開(kāi)啟定時(shí)器1,乒乓球開(kāi)始運(yùn)動(dòng)</p><p><b>  run=1;</b></p><p><b>

溫馨提示

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