版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 乒乓球模擬器</b></p><p><b> 目錄</b></p><p><b> 摘 要2</b></p><p><b> 第一章概 述2</b></p><p><b> 1.1項目概述2&
2、lt;/b></p><p> 1.2 本設(shè)計的任務(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è)計7</p><p> 第四章仿真效果與成品展示12&
4、lt;/p><p> 4.1 仿真效果錯誤!未定義書簽。</p><p> 4.2 成品展示錯誤!未定義書簽。</p><p> 第五章 設(shè)計心得錯誤!未定義書簽。</p><p> 參考文獻錯誤!未定義書簽。</p><p> 【摘 要】利用單片機中的定時器、IO接口、中斷系統(tǒng)等資源,設(shè)計一個乒乓球游戲
5、,利用單片機設(shè)計具有系統(tǒng)簡單易懂,易于操作的優(yōu)點。</p><p><b> 返回</b></p><p><b> 概 述</b></p><p><b> 1.1項目的概述</b></p><p> 用8個LED二極管的來回滾動顯示模擬乒乓球的來回運動。比賽雙方用開
6、關(guān)(K1和K8)控制發(fā)球與接球,當球運動至接球方時,接球方立即改變開關(guān)狀態(tài),“擊球”使球“彈回”發(fā)球方一側(cè)。如此周而復始,直至在規(guī)定的擊球時間內(nèi)有一方未能完成擊球動作,從而對方得一分;然后繼續(xù)比賽。 </p><p><b> 返回</b></p><p> 1.2本設(shè)計的任務(wù)及要求</p><p> 任務(wù):運用單片機制作8個
7、LED二極管的來回滾動顯示模擬乒乓球的來回運動。</p><p> 要求:比賽雙方用開關(guān)(K1和K8)控制發(fā)球與接球,當球運動至接球方時,接球方立即改變開關(guān)狀態(tài),“擊球”使球“彈回”發(fā)球方一側(cè)。如此周而復始,直至在規(guī)定的擊球時間內(nèi)有一方未能完成擊球動作,從而對方得一分;然后繼續(xù)比賽。</p><p><b> 返回</b></p><p>
8、<b> 1.3系統(tǒng)主要功能</b></p><p> 所設(shè)計的游戲模擬器,可在仿真環(huán)境下進行模擬乒乓球比賽,實現(xiàn)以下功能: 1.基本功能 </p><p> ?。?)采用兩個開關(guān)K1、K8作為擊球鍵。為便于操作,以開關(guān)量的電平改變作為 輸入信號,分別實現(xiàn)乒乓球的左擊和右擊。 </p><p> ?。?)采用P1口模擬球的移動,并在LED
9、反映乒乓球的運動狀態(tài)。 </p><p> (3)按乒乓球游戲規(guī)則設(shè)計打球的基本過程模擬?;疽?guī)則為:每局采用采用 11分制、三局兩勝制,在各數(shù)碼管上反映雙方比分。每當一方得分后,采用一球輪換制發(fā)球,由對方選手開始發(fā)球。若球移至最邊上一個LED后,對應的選手還在1s仍內(nèi)未擊回,即判定另一方選手得分。 </p><p> 2.提高功能 所有提高功能均依賴于開關(guān)量K,以其電平的改變作為觸發(fā)
10、信號。 </p><p> ?。?) 加設(shè)“失誤”判斷模式,即一方發(fā)球,在球還未到對方近前時,若對方提 前擊球,則認為其擊球失誤,判負。 </p><p> ?。?)所有比分清零。等待發(fā)球時,撥動K2,可實現(xiàn)雙方局數(shù)、每局分數(shù)的清零。 </p><p> ?。?)比分調(diào)節(jié)。等待發(fā)球時,撥動K3、K4可實現(xiàn)雙方局數(shù)比分的自增調(diào)節(jié),撥 動K6、K7可實現(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系列單片機:89C51單片機。</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 地址鎖存控制信號</p><p> PSEN 外部程序存儲器讀選通信號</p><p> EA 程序訪問存儲控制信號</p><p> RST 復位信號</p><p> XTAL1和XTAL2 外接晶體引線端</p><p> P3口各
14、引腳的第二功能:</p><p> RXD 串行數(shù)據(jù)接收 </p><p> TXD 串行數(shù)據(jù)發(fā)送</p><p> INT0 外部中斷0申請</p><p> INT1 外部中斷1申請</p><p> T0 定時/計數(shù)器0的外部輸入<
15、/p><p> T1 定時/計數(shù)器1的外部輸入</p><p> WR 外部RAM或外部I/O寫選通</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; 單片機及發(fā)光二極管顯示原理如圖1.2所示。通過MSC-51的P3口中的P3.4和P3.5來讀取開關(guān)狀態(tài),從而決定是否正?;厍颉3.4口連接開關(guān)K1,P3.5口連接開關(guān)K8。P1口通過74LS240來驅(qū)動八個LED燈,模擬球的運行軌跡。在AEDK5196ET實驗平臺上,由于各芯片之間電路已接好。所以只需將DL1-DL8</p><p> 與單片機P1.0到P1.7相連。</p><p
18、><b> 返回</b></p><p> 2.3.3最小電路 </p><p> 單片機最小系統(tǒng)分為振蕩電路個復位電路。</p><p> 振蕩電路:在XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,就可以構(gòu)成一個穩(wěn)定的自激振蕩器。</p><p> 復位電路:單片機在剛接上電源或斷電、發(fā)生故障后都
19、要復位。單片機復位是使CPU和系統(tǒng)中的其他功能部件都恢復到一個確定的初始狀態(tài)。</p><p><b> 返回</b></p><p><b> 三、系統(tǒng)軟件設(shè)置 </b></p><p> 3.1 系統(tǒng)主程序設(shè)計</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; //開始</p>
21、<p> //sbit L=P3^2; //左方</p><p> //sbit R=P3^3; //右方</p><p> sbit ALAM=P3^7; //報警</p><p> bit L_R=0;
22、 //左、右標志位,=0左邊,=1右邊</p><p> bit run=0; //運行、停止標志位,=0停止,=1運行</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中斷計數(shù)</p><p> /******延時子程序******/</p><p> void Delay(uint num)</p><p><b> {</b>
25、;</p><p> while(--num);</p><p><b> }</b></p><p> /******初始化定時器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(); //初始化定時器</p><p> EA=1; //全局中斷開關(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)) //停止狀態(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> //==========定時器0中斷服務(wù)程序==========//</p><p> void timer0(void)interrupt 1 //用于乒乓球的運行速度控制</p&g
41、t;<p><b> {</b></p><p> TH0=0x3c; //T0重賦初值</p><p><b> TL0=0xb0;</b></p><p> TR0=1; //開啟計數(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++; //中斷計數(shù)加1</p><p> if_countt0==7) //當計時器計數(shù)到7時,(即LED運行到端點時)</p><p><b> {</b></p><p> EX1=1; //開啟外部中斷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)) //當計數(shù)大于7時或小于0,(表明選手未擊球中球)</p><p><b> {</b></p><p> TR0=0; //光定時器
49、,(球停止運行)</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ù)方向標志位判斷哪一方得分&
50、lt;/p><p><b> {</b></p><p> scoreL++; //左加1分</p><p> if(socreR==11) //當分數(shù)=11分時</p><p><b> {</b></p><p> TR0=0; //關(guān)T
51、0</p><p> TR1=1; //開啟T0定時器,產(chǎn)生報警信號</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> //============定時中斷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; //開啟定時器0,乒乓球開始運動</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; //開啟定時器1,乒乓球開始運動</p><p><b> run=1;</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論