欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2454|回復(fù): 0
收起左側(cè)

基于單片機(jī)乒乓球游戲機(jī)控制系統(tǒng)

[復(fù)制鏈接]
ID:190577 發(fā)表于 2023-7-28 20:04 | 顯示全部樓層 |閱讀模式
一、系統(tǒng)方案

首先,我們編寫(xiě)的這個(gè)游戲是一個(gè)小型游戲,實(shí)現(xiàn)的功能比較簡(jiǎn)單,不像大型游戲那樣功能復(fù)雜,它只要LED燈逐個(gè)點(diǎn)亮到一方,在最靠近自己的LED點(diǎn)亮?xí)r按下按鍵即可,難度隨著局?jǐn)?shù)的增加而加大,對(duì)于實(shí)現(xiàn)這樣一個(gè)功能,程序不是太復(fù)雜,用一塊單片機(jī)足以達(dá)到目的。
其次,它的按鍵也比較少只有5個(gè)功能鍵,這些控鍵在Proteus中用彈跳式按鍵代替即可。
第三,本游戲只需要兩個(gè)兩位的數(shù)碼管顯示比分即可,不需要LCD液晶屏,也用不著電腦顯示屏。
第四,就編程語(yǔ)言方面來(lái)說(shuō),編寫(xiě)這樣一個(gè)簡(jiǎn)單的小游戲不需要什么高級(jí)的語(yǔ)言,C語(yǔ)言或匯編語(yǔ)言就足以完成,C語(yǔ)言是一種通用型的語(yǔ)言,編程靈活、可讀性強(qiáng)、移植性好;匯編語(yǔ)言是一種直接面向硬件的基礎(chǔ)語(yǔ)言,最接近機(jī)器語(yǔ)言,執(zhí)行速度快(本游戲采用C語(yǔ)言編寫(xiě))。由以上幾點(diǎn)可知:?jiǎn)纹瑱C(jī)上此游戲在硬件和軟件兩個(gè)方面都是可行的。
乒乓球比賽是由甲乙雙方參賽,再加上裁判的三人游戲。乒乓球比賽模擬機(jī)是一種用發(fā)光二極管模擬乒乓球運(yùn)動(dòng)的電子游戲機(jī),同時(shí)可以容納三人玩耍。
1. 用8個(gè)LED排成一條直線,以中點(diǎn)為界,兩邊各代表參賽雙方的位置。其中一只點(diǎn)亮的LED指示球的當(dāng)前位置。點(diǎn)亮的LED依次從左到右,或從右到左移動(dòng),其移動(dòng)速度應(yīng)能進(jìn)行調(diào)節(jié)。
2. 當(dāng)球(點(diǎn)亮的那只LED)運(yùn)動(dòng)到某方德最后一位時(shí),參賽者應(yīng)能果斷地按下位于自己一方的按鈕開(kāi)關(guān),即表示啟動(dòng)球拍擊球,若擊中則使球向相反方向移動(dòng),若未擊中,則對(duì)方得一分。
3. 一方得分時(shí),電路自動(dòng)響鈴3s,這期間發(fā)球無(wú)效,等鈴聲停止后方能繼續(xù)比賽。
4. 設(shè)置自動(dòng)計(jì)分電路。甲乙雙方各用兩位數(shù)碼管進(jìn)行計(jì)分顯示,每記滿11分為1局。最好考慮雙方各10分之后,領(lǐng)先2分者為勝。
5. 甲乙雙方各設(shè)置一個(gè)發(fā)光二極管表示擁有發(fā)球權(quán),每得2分自動(dòng)交換發(fā)球權(quán),擁有發(fā)球權(quán)的一方發(fā)球才能有效。
1.png


二、硬件設(shè)計(jì)
原理圖如下:
2.png


三、單片機(jī)軟件設(shè)計(jì)
1、首先是系統(tǒng)初始化:
        InitTimer();    //初始化定時(shí)器
        EA=1;      //全局中斷開(kāi)關(guān)
        TR0=0;
        TR1=0;
        ET0=1;      //開(kāi)啟定時(shí)器0
        ET1=1;
    EX0=0;
    EX1=0;

2、中斷服務(wù)程序
void timer1(void) interrupt 3                                //用于產(chǎn)生報(bào)警信號(hào)
{
        TH1=0x4c;
        TL1=0x00;                 //50ms
        TR1=1;
        count_1miao++;
        if(count_1miao==60)
        {
                count_1miao=0;
                flag_1miao=1;
                ALAM=1;
                TR1=0;
        }
}

3、數(shù)碼管程序
/*****顯示分?jǐn)?shù)子程序*****/
void Disp_score(void)     //顯示溫度
{
        P0=LEDData[scoreL/10];
        P2=0x7F;
        Delay(200);
        P2=0xFF;

        P0=LEDData[scoreL%10];
        P2=0xBF;
        Delay(200);
        P2=0xFF;

        P0=LEDData[scoreR/10];
        P2=0xDF;
        Delay(200);
        P2=0xFF;

        P0=LEDData[scoreR%10];
        P2=0xEF;
        Delay(200);
        P2=0xFF;
}

4、核心算法程序
                if((start==0)&&(run==0)&&flag_1miao==1)                        //停止?fàn)顟B(tài)下,控下start鍵
                {
                        Disp_score();         //調(diào)用數(shù)碼管顯示
                        {
                                if(start==0)         //開(kāi)始按鍵按下
                                {
                                        if(((scoreL==11)&&(scoreR<10))||((scoreR==11)&&(scoreL<10))||((scoreL>11)&&(scoreL-scoreR==2))||((scoreR>11)&(scoreR-scoreL==2)))
                                        //        判斷左右方到11,另一方小于10,或者大于12,兩方差大于2,這局結(jié)束
                                        {
                                                TR1=0;
                                                ALAM=1;
                                                scoreL=0;
                                                scoreR=0;
                                        }
                                        run=1;           //         運(yùn)行標(biāo)志位置1
                                        jiqiu_l=0;
                                        jiqiu_r=7;
                                        zongjiqiushu=0;
                                        if((scoreL+scoreR)%4<=1)  //所得分?jǐn)?shù)和4取余,(比如1+1和為2和4取余余數(shù)為2大于1)余數(shù)小于1就是左側(cè)發(fā)球,大于一就是右側(cè)發(fā)球         ,就是每側(cè)發(fā)球兩次        ,
                                        L_R=0;
                                        else
                                        L_R=1;
                                        if(L_R==0)
                                        {
                                                countt0=0;
                                                P1=PPQdata[0];
                                                EX0=1;
                                                EX1=0;
                                        }
                                        else
                                        {        
                                                countt0=7;
                                                P1=PPQdata[7];
                                                EX0=0;
                                                EX1=1;
                                        }
                                }                                       
                        }
                }

四、proteus仿真設(shè)計(jì)
Proteus軟件是一款應(yīng)用比較廣泛的工具,它可以在沒(méi)有硬件平臺(tái)的基礎(chǔ)上通過(guò)自身的軟件仿真出硬件平臺(tái)的運(yùn)行情況,這樣就可以通過(guò)軟件仿真來(lái)驗(yàn)證我們?cè)O(shè)計(jì)的方案有沒(méi)有問(wèn)題,如果有問(wèn)題,可以重新選擇器件,連接器件,直到達(dá)到我們?cè)O(shè)定的目的,避免我們搭建實(shí)物的時(shí)候,如果當(dāng)初選擇的方案有問(wèn)題,我們器件都已經(jīng)焊接好了,再去卸載下去,再去焊接新的方案的器件,測(cè)試,這樣會(huì)浪費(fèi)人力和物力,也給開(kāi)發(fā)者帶來(lái)一定困惑,Proteus仿真軟件就很好的解決這個(gè)問(wèn)題,我們?cè)谠O(shè)計(jì)之初,就使用該軟件進(jìn)行模擬仿真,測(cè)試,選擇滿足我們?cè)O(shè)計(jì)的最優(yōu)方案。最后根據(jù)測(cè)試沒(méi)問(wèn)題的仿真圖紙,焊接實(shí)物,調(diào)試,最終完成本設(shè)計(jì)的作品。
3.png

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表