個(gè)人消費(fèi)類電子
- 首頁 >> 新聞資訊 >> 博客文章 >> 個(gè)人消費(fèi)類電子
游戲機(jī)電路板單片機(jī)方案開發(fā)
小游戲不僅可以幫助人們緩解日常生活壓力,還可以鍛煉手眼協(xié)調(diào)能力、應(yīng)急反應(yīng)能力,并且小游戲不會(huì)占用太多的時(shí)間,在學(xué)習(xí)、工作間隙,可以作為一種放松的方式,例如俄羅斯方塊、貪吃蛇、賽車、打飛機(jī)等。本設(shè)計(jì)是以單片機(jī)為控制器完成這些內(nèi)容,并且對于單片機(jī)初學(xué)者,也可以完成這項(xiàng)任務(wù),對微控制器控制電路產(chǎn)生興趣,從而提高學(xué)習(xí)的樂趣。
此次設(shè)計(jì)采用STC15單片機(jī)對整個(gè)系統(tǒng)進(jìn)行控制,利用點(diǎn)陣來顯示游戲的各個(gè)不同界面。本系統(tǒng)的時(shí)鐘是由單片機(jī)內(nèi)部振蕩器振蕩產(chǎn)生,該實(shí)時(shí)時(shí)鐘同時(shí)提供給顯示模塊,完成顯示功能。此款游戲機(jī)可以進(jìn)行俄羅斯方塊、貪吃蛇、賽車、打飛機(jī)等游戲,通過鍵盤對游戲進(jìn)行控制,游戲音效電路會(huì)同時(shí)播放游戲音樂,使得游戲玩起來更加逼真。
一、游戲機(jī)系統(tǒng)結(jié)構(gòu)和硬件設(shè)計(jì)
本次采用的STC15系列單片機(jī)具有以下特點(diǎn):大容量的片內(nèi)RAM存儲(chǔ)器,運(yùn)行速度比普通單片機(jī)更快,具有多種工作模式以降低功耗,多路PWM、ADC功能單元輸出,同時(shí)還具有6個(gè)定時(shí)器,方便控制,還可對系統(tǒng)時(shí)鐘進(jìn)行編程輸出。本次設(shè)計(jì)采用STC15F2K60S2單片機(jī)作為控制器,使用內(nèi)部振蕩器提供的時(shí)鐘;利用單片機(jī)片內(nèi)大容量EEPROM完成游戲過程中的FLASH畫面;利用單片機(jī)外部中斷構(gòu)成鍵盤控制游戲;PWM功能實(shí)現(xiàn)LED顯示屏的亮度調(diào)節(jié)。
為了設(shè)計(jì)和調(diào)試方便,該游戲機(jī)系統(tǒng)可以采用單片機(jī)的最小系統(tǒng)來完成,包括:點(diǎn)陣屏電路、游戲鍵盤電路、游戲音效電路、LED游戲計(jì)分電路。游戲機(jī)硬件電路圖如圖1所示。
1.1點(diǎn)陣屏顯示游戲畫面電路
本設(shè)計(jì)采用點(diǎn)陣顯示,其原理如圖2點(diǎn)陣屏顯示電路所示。為了使顯示的圖像較為清晰,需要兩個(gè)88點(diǎn)陣顯示模塊。從圖2中給出了一塊點(diǎn)陣及其連接關(guān)系,每個(gè)點(diǎn)陣模塊由64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上。當(dāng)某一列置高電平,對應(yīng)的行置低電平,則相應(yīng)的二極管就點(diǎn)亮。通過行列的控制算法,即可完成動(dòng)態(tài)Flsh動(dòng)畫的顯示。STC15系列單片機(jī)的I/O口有四種工作模式:準(zhǔn)雙向口、弱上拉、強(qiáng)推挽、強(qiáng)上拉。將I/O口作為輸出時(shí),選擇強(qiáng)推挽模式,每個(gè)口的輸出電流可達(dá)到20mA,這足以點(diǎn)亮對應(yīng)行上的發(fā)光二極管,無需額外的上拉電阻。因此,可將點(diǎn)陣與單片機(jī)的I/O口直接相連,降低了電路的復(fù)雜程度,對于初學(xué)者而言,硬件更加簡單。
1.2游戲鍵盤設(shè)計(jì)
在游戲機(jī)的設(shè)計(jì)中,鍵盤是必備的輸入設(shè)備。本設(shè)計(jì)中,鍵盤的作用是在游戲開始時(shí),通過鍵盤選擇對應(yīng)的游戲界面;在游戲過程中,通過鍵盤對正在進(jìn)行的游戲進(jìn)行控制。本游戲機(jī)共有五個(gè)按鍵,分別是K0與K4。K0為選擇鍵,完成開始、變形、加速等功能;K1與K4為方向鍵,K1為向上鍵,K3為向下鍵,K4為向左鍵,K2為向右鍵。R1與R5為上拉電阻,為I/O口提供必要的驅(qū)動(dòng)。
1.3游戲音效電路設(shè)計(jì)
在滿足應(yīng)用的前提下,本設(shè)計(jì)采用普通的蜂鳴器作為游戲音效的發(fā)聲元件。蜂鳴器通常工作電流比較大,需要一個(gè)三極管放大電路來驅(qū)動(dòng)它。蜂鳴器正極性接+5V電源,另一端接PNP管的發(fā)射極,三極管基極由單片機(jī)的P5.5口控制,給游戲提供必要的音樂。
1.4游戲計(jì)分電路設(shè)計(jì)
游戲計(jì)分電路采用三位七段數(shù)碼管來實(shí)現(xiàn)。三位一體的七段數(shù)碼管顯示電路有段碼地址和位碼地址??刂茢?shù)碼管顯示不同的字符。這樣,要顯示三位數(shù)字,就必須通過采用動(dòng)態(tài)掃描實(shí)現(xiàn)方式。簡單地說就是在不同的位上顯示不同的數(shù)碼,然后快速完成顯示,為了使人能夠看見上面的數(shù)字,必須重復(fù)多次。這樣就通過人眼視覺暫留效應(yīng)及數(shù)碼管余輝特性,可以觀察到數(shù)碼管上的三位數(shù)字了。三位數(shù)碼管的段碼與點(diǎn)陣屏的行數(shù)據(jù)口相連,供游戲計(jì)分使用。
二、游戲機(jī)系統(tǒng)軟件設(shè)計(jì)
2.1軟件設(shè)計(jì)流程
由于系統(tǒng)較為復(fù)雜,所以需要進(jìn)行模塊化設(shè)計(jì),以便于后續(xù)的調(diào)試驗(yàn)證。將不同的游戲分開,用不同的函數(shù)實(shí)現(xiàn),然后在主函數(shù)里進(jìn)行選擇。
2.2主程序的設(shè)計(jì)
程序按照結(jié)構(gòu)化程序設(shè)計(jì),所有功能都通過子程序調(diào)用完成。主程序完成功能包括設(shè)計(jì)游戲GUI,構(gòu)建游戲界面基本模型,達(dá)到畫面平移效果,利用LED點(diǎn)陣底層驅(qū)動(dòng)逐點(diǎn)掃描,使顯示亮度均勻,用軟件PWM分層掃描畫面,形成游戲畫面對比度使顯示屏亮度可調(diào)。在主程序中設(shè)置全局變量,掃描鍵盤的輸入、控制游戲速度、游戲計(jì)分、游戲生命、音效開關(guān)、顯示屏默認(rèn)亮度等。
2.3俄羅斯方塊游戲軟件設(shè)計(jì)
俄羅斯方塊游戲的規(guī)則是在限定的空間范圍內(nèi),各種形狀的方塊組合依次往下掉落,在方塊的掉落過程中,玩家通過控制按鍵,控制方塊的下落形狀,盡可能的使落下的方塊和已經(jīng)在下面的方塊緊密結(jié)合,不留空隙。當(dāng)方格在下降過程中遇到其它方格的阻擋,將會(huì)在當(dāng)前位置停留下來。當(dāng)某橫向的一層全部被方塊占滿時(shí),此層的方塊將會(huì)全部消失。通過按鍵控制方塊的合理擺放位置,使方塊填滿一行而自行消失,這樣就可以得分,它是俄羅斯方塊的主要玩點(diǎn)及玩法。
依據(jù)上述規(guī)則,程序設(shè)計(jì)思路如下。先利用函數(shù)staticvoidRandBox隨機(jī)裝載一個(gè)方塊,下落時(shí)間到達(dá)后,當(dāng)前方塊向下方向移動(dòng)一個(gè)單位,然后讀取鍵盤按鍵值。如果按下了移動(dòng)鍵,判斷能否左移或右移,如果可以,則方塊向左或右移動(dòng)一個(gè)單位。如果為變形鍵,則根據(jù)函數(shù)tmpbuf[i]=blocks[tmpid][3-i]按規(guī)定對當(dāng)前方塊進(jìn)行變形。方塊每下落一個(gè)單元后,都要判斷是否死亡,是否規(guī)定的樓層已填滿。根據(jù)函數(shù)staticvoidRowFull{uint8p,k;uint8tmps=0;for(p=0;p<16;p++)}檢測是否滿行并進(jìn)行相應(yīng)處理。如滿行則消行,同時(shí)分?jǐn)?shù)將會(huì)作相應(yīng)的變化;若規(guī)定范圍內(nèi)堆滿方塊則游戲結(jié)束,顯示游戲分?jǐn)?shù)。
2.4貪吃蛇游戲軟件設(shè)計(jì)
貪吃蛇游戲的規(guī)則是蛇在一定的空間內(nèi)以一定的速度向前跑動(dòng),在蛇跑動(dòng)的過程中,可以通過按鍵控制蛇頭的方向,使蛇吃到食物。要是蛇吃到食物,那么蛇的長度就會(huì)長大一個(gè)單位,同時(shí)得分也會(huì)增加。如果蛇頭碰到墻或是碰到自己身體的任一部分,游戲就結(jié)束。
設(shè)計(jì)貪吃蛇游戲的基本思路是先為貪吃蛇制作一塊蛇身作為一個(gè)游戲點(diǎn),即一個(gè)基本點(diǎn)陣。利用函數(shù)staticvoidCreate_Food隨機(jī)加載蛇的食物。用定時(shí)器1定時(shí)1s,當(dāng)1s的定時(shí)時(shí)間達(dá)到時(shí),蛇向前跑一個(gè)單位。設(shè)計(jì)蛇的運(yùn)動(dòng)過程,需要注意以下幾點(diǎn):(1)運(yùn)動(dòng)處理。根據(jù)用戶按鍵的按鍵值進(jìn)行柔體傳動(dòng),可以通過按下選擇鍵使蛇的運(yùn)動(dòng)加速;(2)吃到食物的處理。如果吃到食物,則置食物標(biāo)志位為0,蛇身體長大一個(gè)游戲點(diǎn);(3)放置新的食物。判斷食物標(biāo)志位,若食物標(biāo)志位為0,那么就要放置食物。放置食物的過程,還需要判斷新的食物是否和蛇身重疊。如果重疊,則需要重新放置并且再次判斷,直到新的食物與蛇身不重疊為止;(4)死亡處理。蛇跑動(dòng)的過程中,若碰到墻或自己的身體,則游戲結(jié)束,顯示游戲分?jǐn)?shù)。
2.5賽車游戲軟件設(shè)計(jì)
賽車的規(guī)則是賽車在一定的時(shí)間內(nèi)向前跑動(dòng),在跑動(dòng)的時(shí)候前面出現(xiàn)其他賽車,玩家可以控制賽車速度,并且左、右移動(dòng)賽車位置前進(jìn),躲避其他賽車。隨著賽車前進(jìn)的距離,得分也會(huì)相應(yīng)增加。游戲中,如果賽車撞到其他賽車,游戲結(jié)束。
設(shè)計(jì)賽車游戲的基本思路是先利用函數(shù)voidRAC_Game設(shè)計(jì)賽車結(jié)構(gòu)圖形,設(shè)置一個(gè)全局變量RAC_flag,其類型定義為無符號(hào)字符型,用于記錄賽車位置和賽車移動(dòng)方向等信息。接下來用定時(shí)器2定時(shí)1s,當(dāng)1s的定時(shí)時(shí)間到后,賽車和其它賽車同時(shí)向前跑動(dòng)一個(gè)單位。通過函數(shù)實(shí)現(xiàn)賽車隨即產(chǎn)生,當(dāng)按選擇鍵時(shí),汽車加速(0.2s/單位),同時(shí)按左、右鍵躲避其它賽車前進(jìn),游戲分?jǐn)?shù)相應(yīng)增加。賽車跑動(dòng)過程中,若撞到其他賽車則游戲結(jié)束,并顯示游戲得分。
2.6打飛機(jī)游戲軟件設(shè)計(jì)
打飛機(jī)的規(guī)則是飛機(jī)上方隨機(jī)出現(xiàn)一個(gè)單位點(diǎn)陣的方塊,用戶通過控制左、右鍵及選擇鍵(射擊),對隨機(jī)出現(xiàn)的方塊進(jìn)行射擊,當(dāng)擊中時(shí)方塊消除,同時(shí)分?jǐn)?shù)增加。如果飛機(jī)撞到方塊,那么游戲結(jié)束。
設(shè)計(jì)打飛機(jī)游戲基本設(shè)計(jì)思路是先利用函數(shù)staticvoidShot_Game_Init繪制飛機(jī)圖形,同時(shí)初始化顯示畫面,然后隨機(jī)出現(xiàn)射擊方塊。每方塊對應(yīng)一個(gè)游戲點(diǎn),即一個(gè)基本點(diǎn)陣。設(shè)置一個(gè)全局變量Shot_flag,其類型定義為無符號(hào)字符型,用于記錄飛機(jī)位置、方塊位置、產(chǎn)生彈道等信息。接著對隨機(jī)出現(xiàn)的方塊進(jìn)行射擊,被擊中后的方塊消失,游戲分?jǐn)?shù)增加。方塊每隔1s下降一個(gè)單位。若飛機(jī)撞到方塊,游戲結(jié)束,并顯示游戲分?jǐn)?shù)。
結(jié)論
由于電路控制部分相對簡單,可以采用ST15單片機(jī)的最小系統(tǒng)來完成,完成起來難度不大。但是需要注意點(diǎn)陣屏的管腳與行、列的對應(yīng)關(guān)系,三極管、蜂鳴器注意方向即可。軟件方面,由于系統(tǒng)比較龐大,需要分開完成,即在主程序框架搭建好以后,可以先完成俄羅斯方塊游戲的調(diào)試,然后再加其它的小游戲到系統(tǒng)里面。
本設(shè)計(jì)對采用STC15F2K60S2單片機(jī),制作俄羅斯方塊、貪吃蛇、賽車、打飛機(jī)游戲的硬件原理圖及軟件邏輯進(jìn)行了分析,并完成了該款游戲機(jī)的制作。本游戲機(jī)硬件電路簡單,軟件程序編程邏輯清晰,便于初學(xué)者完成系統(tǒng)的制作,是單片機(jī)初學(xué)者動(dòng)手練習(xí)單片機(jī)的有利工具。
以上就是我們深圳市組創(chuàng)微電子有限公司為您介紹的游戲機(jī)開發(fā)示例。如果您有游戲方案開發(fā)需求,可以放心交給我們。我們代理多種單片機(jī)、語音芯片、雙模藍(lán)牙IC、wifi芯片。品牌有松翰單片機(jī)、應(yīng)廣單片機(jī)、杰理藍(lán)牙、安凱藍(lán)牙、全志、瑞昱(realtek)。我們的技術(shù)服務(wù)范圍有:PCB設(shè)計(jì)、單片機(jī)開發(fā)、藍(lán)牙方案、軟硬件定制開發(fā)、APP開發(fā)、小程序開發(fā)、微信公眾號(hào)開發(fā)等。還可以承接智能電子產(chǎn)品方案設(shè)計(jì)、生活電器開發(fā)、美容儀器研發(fā)、物聯(lián)網(wǎng)平臺(tái)應(yīng)用、智能家居控制系統(tǒng)、TWS耳機(jī)、藍(lán)牙耳機(jī)音箱開發(fā)、兒童益智玩具方案開發(fā)、電子教育產(chǎn)品方案設(shè)計(jì)等。
注:部分圖片內(nèi)容來源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪除。
- 返回頂部