何杰鑫 李文睿 吳海欣 李小燕
廣東科技學(xué)院 機(jī)電工程學(xué)院,廣東 東莞,523083)
摘 要:老年癡呆癥(也稱阿爾茨海默病)是一種常見的神經(jīng)退行性疾病,通常在老年人中發(fā)生。玩游戲也是運(yùn)用腦部運(yùn)動(dòng),可以讓老年人盡量避免老年癡呆的問題,比如說俄羅斯方塊。本篇論文主要設(shè)計(jì)了一款基于51單片機(jī)的俄羅斯方塊游戲機(jī)。選用了STC89C52單片機(jī)作為主控芯片,控制8*8點(diǎn)陣顯示屏、獨(dú)立按鍵、LED閃爍等模塊。在軟件設(shè)計(jì)上,進(jìn)行了俄羅斯方塊游戲的控制程序的編寫,并在Keil軟件上進(jìn)行了運(yùn)行、調(diào)試,最后連接電路板通過STC軟件燒錄進(jìn)單片機(jī)中,從而來實(shí)現(xiàn)該游戲的制作。
關(guān)鍵字:STC89C52單片機(jī);俄羅斯方塊;預(yù)防和干預(yù)
一、引言
隨著科技的發(fā)展和社會(huì)老齡化的加劇,老年癡呆癥已成為全球關(guān)注的公共衛(wèi)生問題。老年癡呆癥不僅嚴(yán)重影響患者的生活質(zhì)量,也給家庭和社會(huì)帶來了沉重的負(fù)擔(dān)。因此,開展老年癡呆癥的預(yù)防和干預(yù)研究具有重要的現(xiàn)實(shí)意義。
在眾多預(yù)防措施中,科學(xué)家們發(fā)現(xiàn)通過改善日常生活方式,特別是通過增加認(rèn)知活動(dòng),可以有效降低老年癡呆的發(fā)病風(fēng)險(xiǎn)。俄羅斯方塊作為一款經(jīng)典的益智游戲,以其簡(jiǎn)單的規(guī)則和豐富的變化,能夠激發(fā)玩家的思維和反應(yīng)能力,對(duì)于鍛煉大腦和提高認(rèn)知功能具有潛在的積極作用。
基于51單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)與實(shí)現(xiàn),不僅是一項(xiàng)技術(shù)挑戰(zhàn),也是一種創(chuàng)新的嘗試。51單片機(jī)因其功能和靈活的操作被廣泛應(yīng)用,成為電子設(shè)計(jì)和教學(xué)工作中的重要工具。通過將51單片機(jī)應(yīng)用于一些簡(jiǎn)單游戲的開發(fā),可以為老年人提供一個(gè)簡(jiǎn)單易用、互動(dòng)性強(qiáng)的認(rèn)知訓(xùn)練工具。本論文旨在探討如何利用51單片機(jī)開發(fā)俄羅斯方塊游戲[2],以期為老年癡呆的預(yù)防提供一種新的技術(shù)手段。首先,本文將介紹俄羅斯方塊游戲的基本原理和設(shè)計(jì)要求,然后詳細(xì)闡述基于51單片機(jī)的硬件電路設(shè)計(jì)、程序編寫和調(diào)試過程。同時(shí),本文還將探討如何利用按鍵輸入實(shí)現(xiàn)游戲的交互操作。通過本研究,我們期望為老年人提供一個(gè)有趣且有益的認(rèn)知訓(xùn)練平臺(tái),幫助他們?cè)谟螒蛑邢硎軜啡,同時(shí)鍛煉大腦,降低老年癡呆的發(fā)病風(fēng)險(xiǎn)。
二、方案設(shè)計(jì)
1、基本功能要求[1]
(1)基本玩法:包括初始化不同類型的方塊,在游戲開始時(shí)可以隨機(jī)生成不同類型方塊,同時(shí)方塊還會(huì)隨著時(shí)間的推移進(jìn)行周期性下移運(yùn)動(dòng)。
(2)控制系統(tǒng):通過按鍵控制,用戶可以操作方塊向左移動(dòng)、向右移動(dòng)、一鍵下移以及旋轉(zhuǎn)移動(dòng),并且這四類移動(dòng)不分先后,是同一優(yōu)先級(jí)。
(3)消去功能:在用戶控制方塊移動(dòng)后或方塊自動(dòng)下移后,判斷每一行是否都存在方塊,若出現(xiàn)某一行都有方塊則實(shí)現(xiàn)消去操作,同時(shí)獲得分?jǐn)?shù)。
(4)游戲顯示功能:設(shè)置游戲顯示畫面,用戶根據(jù)顯示內(nèi)容來進(jìn)行游玩,其中主要包含俄羅斯方塊的顯示、得分區(qū)域的顯示以及游戲勝利或失敗的提示等。
(5)游戲玩法:用戶操控方塊實(shí)現(xiàn)消行處理后分?jǐn)?shù)增加,當(dāng)分?jǐn)?shù)達(dá)到某一數(shù)值后顯示游戲勝利的提示,并可選擇性進(jìn)入“無盡模式”(此模式下,可以在游戲規(guī)則下無限得分),若某一列方塊觸及游戲區(qū)域的頂部時(shí)則顯示游戲失敗的提示,需按下復(fù)位按鈕重新開始游玩游戲。
2、系統(tǒng)總體方案設(shè)計(jì)
本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于51單片機(jī)的俄羅斯方塊游戲機(jī),經(jīng)過軟件的合理設(shè)計(jì),把俄羅斯方塊顯示在8*8的LED點(diǎn)陣屏上,在用戶控制操作系統(tǒng)下實(shí)現(xiàn)俄羅斯方塊的基本玩法。本設(shè)計(jì)采用STC89C52芯片作為主控芯片,本系統(tǒng)可以分為六個(gè)模塊,STC89C52最小系統(tǒng)模塊、晶振電路模塊、復(fù)位電路模塊、獨(dú)立按鍵模塊、游戲顯示模塊、游戲得分模塊。本系統(tǒng)的設(shè)計(jì)理念是由STC89C52芯片作為中心處理器來控制整個(gè)系統(tǒng)。當(dāng)接通電源時(shí),用戶通過按下獨(dú)立按鍵改變高低電平,把控制信息傳輸?shù)絊TC89C52單片機(jī)中,根據(jù)軟件部分進(jìn)行處理后,顯示在俄羅斯方塊的游戲顯示區(qū)域以及得分區(qū)域。其中復(fù)位電路模塊與晶振電路模塊在STC89C52單片機(jī)正常工作中尤為重要。控制著STC89C52芯片的運(yùn)行。系統(tǒng)主框圖如圖1所示。
圖1 硬件整體框圖
三、硬件電路與軟件設(shè)計(jì)
1、硬件電路設(shè)計(jì)[5]
(1)控制芯片
在設(shè)計(jì)電路之前,首先需要選擇系統(tǒng)的主控芯片,一般來說,我們需要從產(chǎn)品所實(shí)施的功能以及成本來落實(shí)選擇,并根據(jù)具體設(shè)備和理念做相應(yīng)的定制化芯片設(shè)計(jì)。與我們大腦類似,芯片主要功能體現(xiàn)在識(shí)別信號(hào)、讀取信號(hào)、處理信號(hào)、控制操作等方面。本系統(tǒng)采用STC89C52最小系統(tǒng)板作為系統(tǒng)的主控芯片,根據(jù)用戶的實(shí)際需求搭建電路。STC89C52主控芯片是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案,相比于其他單片機(jī)芯片,STC89C52對(duì)于本項(xiàng)目實(shí)現(xiàn)的俄羅斯方塊游戲有著很高的適配性。
(2)晶振模塊
在晶振選擇方面,本系統(tǒng)選擇的是12MHz的晶振,該晶振在識(shí)別代碼上有很大優(yōu)勢(shì),可以基于這個(gè)原理對(duì)8*8的點(diǎn)陣屏進(jìn)行逐幀顯示來實(shí)現(xiàn)顯示俄羅斯方塊移動(dòng)的動(dòng)畫。電路設(shè)計(jì)如圖2所示
圖2 晶振電路模塊
(3)游戲顯示模塊[4]
本系統(tǒng)選擇8*8的LED點(diǎn)陣液晶顯示屏作為俄羅斯方塊游戲的顯示區(qū)域。通過軟件設(shè)計(jì)對(duì)液晶屏中LED的亮滅情況表示方塊的存在與否。8*8的LED點(diǎn)陣液晶顯示屏優(yōu)勢(shì)在于成本低廉,設(shè)計(jì)簡(jiǎn)單。當(dāng)STC89C52單片機(jī)的P0口接低電平以及經(jīng)過其P3口在74HC595譯碼器轉(zhuǎn)化后的端口接高電平即可實(shí)現(xiàn)點(diǎn)亮8*8中某一個(gè)位置的LED燈。電路設(shè)計(jì)如圖3圖4所示。
圖3 74HC595譯碼器
圖4 8*8LED點(diǎn)陣液晶屏
(4)獨(dú)立按鍵模塊
獨(dú)立按鍵模塊中K1、K2、K3、K4分別設(shè)置為方塊的左移、右移、一鍵下移、旋轉(zhuǎn)四個(gè)操作方式。在用戶按下獨(dú)立按鍵給連接于單片機(jī)STC89C52的P3口接高電平后即可對(duì)方塊進(jìn)行操控。電路設(shè)計(jì)如圖5所示
圖5 獨(dú)立按鍵
(5)得分系統(tǒng)
在方塊實(shí)現(xiàn)下落的消行判斷后,自定義設(shè)置消去一行游戲分?jǐn)?shù)加1,若同時(shí)消去兩行則分?jǐn)?shù)加3。與此同時(shí)將分?jǐn)?shù)以二進(jìn)制的形式顯示在八個(gè)LED燈上(LED燈亮表示1,燈滅表示0,最高得分為255)。電路設(shè)計(jì)如圖6所示
圖6 LED顯示得分
1.2軟件編程設(shè)計(jì)
(1)軟件整體思路設(shè)計(jì)
整體來說,建立一個(gè)8x8的二維數(shù)組記錄LED在每一個(gè)位置亮滅情況(1表示亮,0表示滅,為了方便起見設(shè)置九行八列的二維數(shù)組,以下均以9*8為前提描述),同時(shí)編寫一個(gè)顯示函數(shù)把二維數(shù)組的亮滅情況顯示到點(diǎn)陣屏中。本系統(tǒng)核心思想主要是圍繞母方塊的坐標(biāo)(x,y)進(jìn)行,不同類型的方塊根據(jù)母方塊的坐標(biāo)而生成對(duì)應(yīng)位置的方塊,方塊的左右移動(dòng)、下移以及旋轉(zhuǎn)都是依據(jù)改變母方塊的坐標(biāo)而進(jìn)行移位,再根據(jù)每種方塊具體的移動(dòng)邏輯而設(shè)置規(guī)則,這樣就可以做到一個(gè)簡(jiǎn)易的按鍵控制系統(tǒng),最后在方塊下落至邊界時(shí)設(shè)置一個(gè)堆疊判斷、消行處理、得分系統(tǒng),一個(gè)簡(jiǎn)單的俄羅斯方塊方塊游戲就制作完成了。
軟件整體框圖如圖7所示。
圖7 軟件實(shí)現(xiàn)流程圖
(2)軟件方面舉例
整體代碼些許繁瑣,僅展示本項(xiàng)目中“正方形”類型方塊的一鍵下移模塊。設(shè)置參數(shù)down_permit表示是否找到正方形方塊所能一鍵下移的位置,找到賦值0,反之賦值1。設(shè)置參數(shù)down_replace表示找到位置后是否允許對(duì)正方形方塊進(jìn)行替換處理,即把正方形方塊從初始位置替換成一鍵下移的位置,替換完成賦值0,反之賦值1。box_type()函數(shù)可以根據(jù)母方塊的位置生成相應(yīng)的方塊類型。
3、實(shí)物調(diào)試
給開發(fā)板接上電源后,按下電源開關(guān)按鈕開始游戲。自動(dòng)生成隨機(jī)方塊類型,同位于中斷系統(tǒng)的定時(shí)器[3]開始計(jì)時(shí),使得俄羅斯方塊定時(shí)(設(shè)置每隔1s下移一格)下移。用戶通過按鍵控制對(duì)方塊進(jìn)行左右移動(dòng)、一鍵下移、旋轉(zhuǎn)操作,實(shí)現(xiàn)消行得分。當(dāng)?shù)梅植坏陀?分時(shí)顯示游戲勝利,此時(shí)可以選擇按下K1進(jìn)入“無盡模式”或按下復(fù)位按鈕重新開始;當(dāng)某一列方塊頂?shù)阶钌隙藭r(shí)顯示游戲失敗,按下復(fù)位按鈕重新開始。
圖8 實(shí)物圖
本項(xiàng)目基本完成所有預(yù)期效果,無論是按鍵控制系統(tǒng)亦或是游戲顯示問題,都能為用戶帶來不錯(cuò)的體驗(yàn)。
四、結(jié)語
本項(xiàng)目基本實(shí)現(xiàn)了俄羅斯方塊的基本玩法,從軟硬件的角度對(duì)系統(tǒng)與各模塊設(shè)計(jì)進(jìn)行了詳細(xì)的說明,設(shè)計(jì)獨(dú)特的游玩模式,在保證基本游戲規(guī)則之下推出“無盡模式”的玩法。但本設(shè)計(jì)還存在些不足之處,比如可以拓展游戲顯示屏與方塊類型、增加音樂效果以及新的玩法設(shè)計(jì)等。
資助項(xiàng)目:2023年廣東科技學(xué)院大創(chuàng)項(xiàng)目(項(xiàng)目編號(hào):GK2023022)
參考文獻(xiàn)
[1]郭璨,楊旭輝,張志昂.基于單片機(jī)的俄羅斯方塊設(shè)計(jì) [J].時(shí)代農(nóng)機(jī), 2018, 45 (09): 227-228.
[2]李曉彤,羅杉,王華陽,等.基于51單片機(jī)的綜合游戲機(jī)的設(shè)計(jì)與實(shí)現(xiàn) [J].工業(yè)控制計(jì)算機(jī),2018,31(07): 143-145+153.
[3]李子華.單片機(jī)的定時(shí)中斷系統(tǒng)的應(yīng)用 [J].數(shù)字通信世界,2017,(09): 155.
[4]趙漣漪.基于STC89C52單片機(jī)的16×16點(diǎn)陣屏的設(shè)計(jì) [J].電腦知識(shí)與技術(shù), 2023, 19 (22): 64-66. DOI:10.14004/j.cnki.ckt.2023.1228.
[5]趙巧妮.基于Proteus的俄羅斯方塊電路的設(shè)計(jì)和仿真 [J].微型電腦應(yīng)用, 2016, 32 (08): 59-60.
轉(zhuǎn)載請(qǐng)注明來自:http://www.jinnzone.com/jisuanjiyingyonglw/161.html