版權(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)論