




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于51單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)摘 要 俄羅斯方塊是一款風(fēng)行全球的益智游戲。它規(guī)那么簡(jiǎn)單,容易上手,且游戲過(guò)程變化無(wú)窮,使用戶在游戲中得到樂(lè)趣。 本文討論了一種基于增強(qiáng)型單片機(jī)硬件平臺(tái)和實(shí)時(shí)操作系統(tǒng)的智能俄羅斯方塊游戲的設(shè)計(jì)與實(shí)現(xiàn)。該設(shè)計(jì)選用的處理器型號(hào)為STC12C5A60S2的單片機(jī),實(shí)時(shí)操作系統(tǒng)采用適用于8051處理器的RTX51 Tiny多任務(wù)實(shí)時(shí)操作系統(tǒng)。重點(diǎn)從軟件工程角度論述了俄羅斯方塊模型構(gòu)造,圖形旋轉(zhuǎn),坐標(biāo)變換,雙人游戲中多任務(wù)實(shí)時(shí)操作的設(shè)計(jì)法方,以及背景音樂(lè)的處理等技術(shù)。同時(shí),該設(shè)計(jì)的獨(dú)創(chuàng)性是在8051系列單片機(jī)中使用操作系統(tǒng)實(shí)現(xiàn)了雙人游戲和
2、音效的添加。關(guān)鍵詞:單片機(jī);RTX51;LCD;俄羅斯方塊 ABSTRACT Tetris is a section became popular in the world of puzzles.The rules are simple, easy to operate and the game process changes.Users in the game to get fun. This paper discussed a method based on enhanece microcontroller hardware platform and real-time operating
3、 system of intelligent Tetris game of design and implementa- tion.This design multi-back STC12C5A60S2 single-chip processor regult and real-time operating system adopt suitable for the 8051 processor RTX51 of multi-tasking real- time operating system.This paper mainly discusses the from software eng
4、ineering tetris model of structure,graphics rotation,coordinate transform,the double game multitasking real-time operating design,and the background music of the formation of technology.At the same time,the design originality in the 8051series micro- controller is used in the operating system realiz
5、ing double game and sound add.Key words: singlechip;RTX51;LCD;Tetris目 錄摘 要IABSTRACTII1 緒 論11.1 課題背景11.2 課題的主要研究?jī)?nèi)容11.3 課題的研究現(xiàn)狀及意義12 系統(tǒng)硬件平臺(tái)設(shè)計(jì)22.1 STC12C5A60S2單片機(jī)概述22.2 STC12C5A60S2最小系統(tǒng)32.3 電源系統(tǒng)32.4 振蕩電路32.5 復(fù)位系統(tǒng)42.6 程序下載系統(tǒng)52.7 音樂(lè)播放系統(tǒng)62.8 LCD液晶顯示接口電路62.9 操作控制接口73 系統(tǒng)軟件平臺(tái)構(gòu)建83.1 Vision簡(jiǎn)介83.2 LCD12864液晶屏顯示
6、原理83.2.1 LCD模塊總線選擇及時(shí)序83.2.2 LCD顯示RAM區(qū)映射概況93.2.3 LCD的驅(qū)動(dòng)方法103.2.4 LCD驅(qū)動(dòng)程序架構(gòu)103.3 俄羅斯方塊游戲設(shè)計(jì)113.3.1 俄羅斯方塊游戲功能簡(jiǎn)介113.3.2 系統(tǒng)界面的設(shè)計(jì)123.3.3 游戲系統(tǒng)“枚舉算法概述143.3.4 俄羅斯方塊造型設(shè)計(jì)的方法153.3.5 隨機(jī)產(chǎn)生俄羅斯方塊的方法153.3.6 俄羅斯方塊平移的實(shí)現(xiàn)方法173.3.7 俄羅斯方塊旋轉(zhuǎn)的實(shí)現(xiàn)方法183.3.8 俄羅斯方塊下移的實(shí)現(xiàn)方法203.3.9 滿行檢測(cè)及消行功能的實(shí)現(xiàn)方法213.3.10 游戲積分的計(jì)算方法223.4 雙人俄羅斯方塊游戲設(shè)計(jì)24
7、3.4.1 RTX51 Tiny簡(jiǎn)介243.4.2 RTX51 Tiny的內(nèi)核分析243.4.3 游戲開(kāi)發(fā)環(huán)境的配置273.4.4 雙人單機(jī)對(duì)戰(zhàn)模式的實(shí)現(xiàn)流程283.5 系統(tǒng)背景音樂(lè)的設(shè)計(jì)283.5.1音樂(lè)的設(shè)計(jì)原理283.5.2 音樂(lè)播放的實(shí)現(xiàn)方法303.5.3 音效程序流程303.6 系統(tǒng)主程序流程圖314 產(chǎn)品功能說(shuō)明與系統(tǒng)性能測(cè)試324.1 產(chǎn)品功能說(shuō)明324.2 系統(tǒng)性能測(cè)試335 結(jié)束語(yǔ)33參考文獻(xiàn)35致 謝1 緒 論1.1 課題背景 如今,計(jì)算機(jī)系統(tǒng)的開(kāi)展已明顯地朝三個(gè)方向開(kāi)展,這三個(gè)方向就是:巨型化,單片化,網(wǎng)絡(luò)化。對(duì)于解決復(fù)雜計(jì)算和高速數(shù)據(jù)處理的問(wèn)題仍然是巨型機(jī)在起作用,因而
8、,目前巨型機(jī)正在朝高速及高處理能力的方向開(kāi)展。單片機(jī)在出現(xiàn)時(shí)Intel公司就給其單片機(jī)取名為嵌入式微控制器4。單片機(jī)的最明顯的優(yōu)勢(shì),就是可以嵌入到各種儀器、設(shè)備中。這一點(diǎn)是巨型機(jī)和網(wǎng)絡(luò)不可能做到的。單片機(jī)在內(nèi)部已集成了?來(lái)?多的部件,這些部件包括一般常用的電路,例如:定時(shí)器,比擬器,EEPROM,D/A轉(zhuǎn)換器,串行通信接口,Watchdog電路等。 同時(shí),俄羅斯方塊是一款風(fēng)行全球的電視游戲機(jī)和掌上游戲機(jī)游戲,目前在網(wǎng)絡(luò)單機(jī)游戲和kele8等上都有它的身影。而它曾經(jīng)造成的轟動(dòng)與經(jīng)濟(jì)價(jià)值可以說(shuō)是游戲史上一件大事。因此,對(duì)它的研究,無(wú)論從技術(shù)上,還是社會(huì)意義上看都是很有價(jià)值的。 單片機(jī)在游戲上的應(yīng)用
9、是具有非常大的潛力的,它能將游戲帶入到另一個(gè)階段。此次設(shè)計(jì)僅僅是為了舉一個(gè)單片機(jī)在游戲應(yīng)用方面的簡(jiǎn)單例子,它可以很好的說(shuō)明單片機(jī)功能的強(qiáng)大,表達(dá)其更高的可控性和高集成度的好處,因此它可以在電子游戲方面成為一個(gè)不可計(jì)量的明日之星。1.2 課題的主要研究?jī)?nèi)容 本課題研究和實(shí)現(xiàn)了基于8051+RTX51到Tiny平臺(tái)下的智能俄羅斯方塊游戲系統(tǒng)。主要研究?jī)?nèi)容是實(shí)現(xiàn)智能俄羅斯方塊游戲系統(tǒng)軟硬件平臺(tái)的搭建;本系統(tǒng)以8051微處理器為核心來(lái)運(yùn)行RTX51 Tiny多任務(wù)實(shí)時(shí)操作系統(tǒng),利用KEIL C51開(kāi)發(fā)工具進(jìn)行軟件開(kāi)發(fā),通過(guò)LCD12864液晶屏顯示游戲界面。該設(shè)計(jì)能實(shí)現(xiàn)單人單機(jī)游、雙人單機(jī)對(duì)戰(zhàn)游戲、游
10、戲背景音樂(lè)的播放和單人最高積分存儲(chǔ)等功能。 在俄羅斯方塊游戲系統(tǒng)開(kāi)發(fā)過(guò)程中,本文作者首先進(jìn)行硬件平臺(tái)的搭建,包括單片機(jī)最小系統(tǒng)的搭建、電源系統(tǒng)的搭建、串口下載器的設(shè)計(jì)、游戲手柄的設(shè)計(jì)、音效播放模塊的設(shè)計(jì)以及LCD液晶顯示接口的設(shè)計(jì)。然后,作者才開(kāi)展軟件平臺(tái)的構(gòu)建,這也是本設(shè)計(jì)的重要局部,主要包括對(duì)RTX51 Tiny操作系統(tǒng)的配置、俄羅斯方塊模型的設(shè)計(jì)、模型圖塊的旋轉(zhuǎn)及坐標(biāo)變換設(shè)計(jì)、雙人單機(jī)對(duì)戰(zhàn)游戲設(shè)計(jì)和音效系統(tǒng)設(shè)計(jì)等。最后,從硬件和軟件兩方面對(duì)完成的智能俄羅斯方塊游戲系統(tǒng)進(jìn)行調(diào)試及運(yùn)行試驗(yàn)。1.3 課題的研究現(xiàn)狀及意義 現(xiàn)今國(guó)內(nèi)外的俄羅斯方塊游戲設(shè)計(jì)主要有基于PC機(jī)上Windows平臺(tái)的俄羅
11、斯方塊游戲、基于 平臺(tái)的智能俄羅斯方塊游戲以及基于單片機(jī)平臺(tái)的俄羅斯方塊游戲等。前兩種屬于高端游機(jī),性能優(yōu)越,但本錢高,而且計(jì)算機(jī)編程已不是新命題,VB、VC、Delphi版本的俄羅斯方塊游戲都有發(fā)布9。 從學(xué)術(shù)角度來(lái)看,針對(duì)俄羅斯方塊游戲的開(kāi)發(fā),國(guó)內(nèi)外也有不少學(xué)者展開(kāi)過(guò)研究,比方Niko將進(jìn)化算法引入到俄羅斯方塊中并驗(yàn)證了其有效性,Hoogeboom探討了俄羅斯方塊游戲的構(gòu)造問(wèn)題,王宇等針對(duì)存在于俄羅斯方塊中的兩個(gè)數(shù)學(xué)問(wèn)題提出解決方案,高凌琴探討游戲功能要求、數(shù)據(jù)結(jié)構(gòu)、圖形旋轉(zhuǎn)、坐標(biāo)變換等關(guān)鍵技術(shù),胡代弟在SPCE061A單片機(jī)實(shí)現(xiàn)了俄羅斯方塊游戲10。 綜上,國(guó)內(nèi)外的研究多著重于游戲數(shù)學(xué)原
12、理的討論,也有局部文獻(xiàn)涉及游戲的具體實(shí)現(xiàn),但多是在Windows操作系統(tǒng)下實(shí)現(xiàn)的,在單片機(jī)平臺(tái)下的開(kāi)發(fā)俄羅斯方塊游戲鮮少有文獻(xiàn)刊載。而單片機(jī)由于具有體積小、性能突出、價(jià)格低廉等特點(diǎn),應(yīng)用領(lǐng)域不斷擴(kuò)大,除了工業(yè)控制、智能化儀表、家用電器外,在智能化高檔電子玩具產(chǎn)品也大量采用單片機(jī)芯片作為核心控制部件。曾經(jīng)80年代非常流行的掌上游戲機(jī)便是單片機(jī)在電子玩具中的應(yīng)用之一,其中的俄羅斯方塊游戲現(xiàn)已被我們所熟知。 本文探討基于8051單片機(jī)硬件平臺(tái)和RTX51 Tiny多任務(wù)實(shí)時(shí)操作系統(tǒng)的俄羅斯方塊游戲的設(shè)計(jì)與實(shí)現(xiàn),將理論與實(shí)踐相結(jié)合。其主要目標(biāo)是再現(xiàn)經(jīng)典的俄羅斯方塊游戲,并在此根底上實(shí)現(xiàn)雙人單機(jī)對(duì)戰(zhàn)游戲
13、模式,以豐富產(chǎn)品功能,增強(qiáng)游戲的趣味性。 2 系統(tǒng)硬件平臺(tái)設(shè)計(jì)2.1 STC12C5A60S2單片機(jī)概述 STC12C5A60S2系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速、低功耗、超強(qiáng)抗干擾的新一代8051系列單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快812倍。用戶程序空間為60KB,片上集成1280字節(jié)RAM,具有EEPROM功能,能夠額外儲(chǔ)蓄1KB的數(shù)據(jù)。該單片機(jī)共有4個(gè)16位定時(shí)器,兩個(gè)與傳統(tǒng)8051兼容的定時(shí)器/計(jì)數(shù)器,即16位定時(shí)器T0和T1,沒(méi)有定時(shí)器2,但有獨(dú)立波特率發(fā)生器做串行通訊的波特率發(fā)生器,再加上2路PCA模塊可由T0的溢出在P3.4/T0輸
14、出時(shí)鐘,可由T1的溢出在P3.5/T1輸出時(shí)鐘,此兩路可編程計(jì)數(shù)器陣列(PCA)可用來(lái)再實(shí)現(xiàn)2個(gè)定時(shí)器。此外,STC12C5A60S2內(nèi)部還集成810專用復(fù)位電路,2路PWM,8路高速度10位A/D轉(zhuǎn)換(250K/S),針對(duì)電機(jī)控制,強(qiáng)干擾場(chǎng)地合。 綜上所述,STC12C5A605S2單片機(jī)具有許多強(qiáng)大的功能,能夠滿足大多數(shù)用戶對(duì)8位單片機(jī)的要求。2.2 STC12C5A60S2最小系統(tǒng) 單片機(jī)最小系統(tǒng)主要由電源、振蕩、復(fù)位電路以及擴(kuò)展電路等局部組成。在本設(shè)計(jì)中,擴(kuò)展了液晶顯示接口。因此,本設(shè)計(jì)的最小系統(tǒng)如圖2-1所示。圖 2-1 STC12C5A60S2最小系統(tǒng)Fig 2-1 STC12C5
15、A60S2 Minimum System2.3 電源系統(tǒng) 本設(shè)計(jì)的電源系統(tǒng)比擬簡(jiǎn)單,直接由LM7805穩(wěn)壓芯片輸出的+5V電源供電。具體電路如圖2-2所示。 圖片2-2 電源系統(tǒng)Fig 2-2 Power System2.4 振蕩電路 單片機(jī)系統(tǒng)里都有振蕩電路,在單片機(jī)系統(tǒng)里晶振作用非常大,全稱叫晶體振蕩器,它結(jié)合單片機(jī)內(nèi)部電路產(chǎn)生單片機(jī)所需的時(shí)鐘頻率,單片機(jī)晶振提供的時(shí)鐘頻率?高,那么單片機(jī)運(yùn)行速度就?快,單片機(jī)的一切指令執(zhí)行都是依靠單片機(jī)晶振提供的時(shí)鐘頻率。4 晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時(shí)鐘頻率。本設(shè)計(jì)中STC12C5A60S2使用12MHz的晶體振蕩器作為振蕩源,由于
16、單片機(jī)內(nèi)部帶有振蕩電路,所以外部只要連接一個(gè)晶振和兩個(gè)電容即可,電容容量一般在15pF至50pF之間。如圖2-3所示即為本設(shè)計(jì)的振蕩電路。圖 2-3 振蕩電路Fig 2-3 oscillatory circuit2.5 復(fù)位系統(tǒng) MCS51單片機(jī)通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。通常因?yàn)橄到y(tǒng)運(yùn)行等需要,常常需要人工復(fù)位,本設(shè)計(jì)采用按鈕復(fù)位的方式,即按下開(kāi)關(guān)一定時(shí)間就能使RTS引腳端為高電平,從而使單片機(jī)復(fù)位。同時(shí),簡(jiǎn)單復(fù)位電路中,干擾信號(hào)易串入復(fù)位端,由此可能會(huì)引起內(nèi)部某些存放器錯(cuò)誤復(fù)位,這時(shí)可在RST引腳上接去耦電容。在STC12C5A60S2單片機(jī)中有兩個(gè)復(fù)位端口,即RST/P4.7
17、、RST2/P4.6,當(dāng)晶振頻率小于或等于12MHz時(shí),使用RST端口。由于本設(shè)計(jì)使用外接12MHz的晶振作為振蕩時(shí)鐘,所以采用如圖2-4所示的復(fù)位系統(tǒng)。圖 2-4 復(fù)位系統(tǒng)Fig 2-4 Rest System2.6 程序下載系統(tǒng) 單片機(jī)系統(tǒng)的傳統(tǒng)編程方式是先將單片機(jī)從電路板上取下,放入專用的編程器進(jìn)行編程,再放入電路板進(jìn)行調(diào)試。其缺點(diǎn)是頻繁拔插器件容易損壞器件的引腳;如果頻繁的調(diào)試程序,必須重復(fù)拔插,大降低了開(kāi)發(fā)效率。ISP(在線系統(tǒng)編程)技術(shù)是一種無(wú)需將存儲(chǔ)芯片從嵌入式設(shè)備上取出就能對(duì)其進(jìn)行編程的過(guò)程。其優(yōu)點(diǎn)是,即使器件焊接在電路板上,仍可對(duì)其進(jìn)行編程。在線系統(tǒng)可編程是Flash存儲(chǔ)器的
18、固有特性(通常無(wú)需額外電路),Flash幾乎都采用這種方式編程。 ISP的實(shí)現(xiàn)相對(duì)要簡(jiǎn)單一些,一般通用做法是內(nèi)部的存儲(chǔ)器可以由上位機(jī)的軟件通過(guò)串口來(lái)進(jìn)行改寫(xiě)。對(duì)于8051系列單片機(jī)來(lái)講可通過(guò)SPI接口或其它的串行接口接收上位機(jī)傳來(lái)的數(shù)據(jù)并寫(xiě)入存儲(chǔ)器中。而上位機(jī)PC機(jī)與下位機(jī)單片機(jī)通過(guò)RS-232串行接口總線進(jìn)行的串行通信。8051系列單片機(jī)帶有一個(gè)全雙工的串行接口,因此用RS-232串行接口總線非常方便。PC機(jī)配置RS-232標(biāo)準(zhǔn)接口,RS-232信號(hào)電平為負(fù)邏輯(邏輯“0為+12V ;邏輯“1為-12V),8051單片機(jī)輸入、輸出電平為T(mén)TL電平(邏輯“0為小于等于0.5V;邏輯“1為大于等
19、于2.4V)。所以8051單片機(jī)與PC機(jī)間點(diǎn)對(duì)點(diǎn)異步通信需加電平轉(zhuǎn)換電路,否那么將燒壞TTL電路。232是IM公司生產(chǎn)的電平轉(zhuǎn)換器件,只需在外部接入相應(yīng)的電解電容即可。因此,本設(shè)計(jì)采用直連串口線進(jìn)行串口通信,其中STC12C5A60S2的P30/RXD和P31/TXD分別和下載器的第10管腳/T和第9管腳/R相連,串口線的第5管腳接地,2、3管腳和下載器的7、8管腳相連。具體電路如圖2-5所示。圖 2-5 程序下載系統(tǒng)Fig 2-5 Program Download System2.7 音樂(lè)播放系統(tǒng) 在本設(shè)計(jì)中,音樂(lè)播放系統(tǒng)是通過(guò)三極管驅(qū)動(dòng)有源蜂鳴器發(fā)聲,而具體的音符聲調(diào)那么由程序控制。因此,
20、音樂(lè)播放系統(tǒng)的硬件電路非常簡(jiǎn)單。具體接法為有源蜂鳴器正極直接接+5V電源,負(fù)極與三極管8050的發(fā)射極相連,8050的集電極直接接地,其基極串一個(gè)1K的電阻連接到STC12C5A60S2單片機(jī)的P20端口。如圖2-6所示。 圖片2-6 音樂(lè)播放系統(tǒng)Fig 2-6 Music Player System2.8 LCD液晶顯示接口電路 液晶顯示屏是整個(gè)系統(tǒng)硬件的重要組成局部,擔(dān)當(dāng)著人機(jī)交互的重要角色。本設(shè)計(jì)采用銘正同創(chuàng)公司生產(chǎn)的MzL02D-12864液晶點(diǎn)陣屏作為顯示器件。它是一塊128*64點(diǎn)陣的LCD顯示模組,模組上的LCM采用COG技術(shù)將控制(包括顯存)、驅(qū)動(dòng)器集成在LCM的玻璃上,接口簡(jiǎn)
21、單、操作方便。其特點(diǎn)為單電源供電,比照度編程可調(diào),可采用并行接口為6800/8080時(shí)序或者串行SPI的MPU接口方式,整塊液晶屏由3.3V的白色LED背光,美觀大方。其外部接口分為電源端口、數(shù)據(jù)端口和命令端口三局部組成。本設(shè)計(jì)中LCD的數(shù)據(jù)端口連接到STC12C5A60S2單片機(jī)的P0端口,LCD的命令端口連接到單片機(jī)的P2端口。具體硬件電路如圖2-7所示。圖 2-7 LCD液晶顯示接口電路Fig 2-7 Liquid Display Interface Circuit2.9 操作控制接口 操作控制模塊是智能俄羅斯方塊游戲系統(tǒng)的輸入器件。它包括主控制器和輔助控制器。主控制器包括七個(gè)按鍵,分別
22、為:旋轉(zhuǎn)/確定、向左/返回上級(jí)菜、向右/下一個(gè)、快速下降、使用道具、暫停、退出。副控制器那么包括五個(gè)按鍵,分別為:旋轉(zhuǎn)/確定、向左/返回上級(jí)菜、向右/下一個(gè)、快速下降、使用道具。在硬件電路方面輔控制器比主控制器少兩個(gè)按鍵的連接。如圖2-8所示為主控制器的接線圖。與單片機(jī)的具體接口可根據(jù)實(shí)際設(shè)定。圖片2-8 控制模塊接口Fig 2-8 Control Interface 3 系統(tǒng)軟件平臺(tái)構(gòu)建3.1 Vision簡(jiǎn)介 Vision是德國(guó)Keil公司開(kāi)發(fā)的單片機(jī)IDE軟件,最初主要用于8051系列單片機(jī),目前也有支ARM系列單片機(jī)的專用版本MDK-ARM。本設(shè)計(jì)使用的是keil Vision3版本的
23、開(kāi)發(fā)軟件進(jìn)行程序開(kāi)發(fā)。3.2 LCD12864液晶屏顯示原理3.2.1 LCD模塊總線選擇及時(shí)序 MzL02D模塊提供了兩個(gè)LCM的引腳(C86和PS引腳)供用戶選擇模塊的接口類型,分別可以選擇6800并行總線、8080并行總線或者SPI串行接口。模塊默認(rèn)情況下PS為高電平、C86為高電平,此時(shí)為6800總線接口類型,本設(shè)計(jì)采用6800總線模式。在此種接口模式下,WR 線為讀寫(xiě)控制信號(hào)線,當(dāng)WR 為高電平時(shí)為讀狀態(tài),WR為低電來(lái)時(shí)為寫(xiě)入狀態(tài)。在6800總線接口模式下LCD的時(shí)序如圖3-1所示。圖 3-1 6800總線時(shí)序Fig 3-1 6800 Bus Timing3.2.2 LCD顯示RAM
24、區(qū)映射概況 驅(qū)動(dòng)控制芯片的顯示RAM區(qū)中,每個(gè)byte的數(shù)據(jù)對(duì)應(yīng)屏上的點(diǎn)的排列方式為:縱向排列,低位在上高位在下;如圖3-2所示。MzL02D-12864液晶顯示模組的顯示器上的顯示點(diǎn)與驅(qū)動(dòng)控制芯片中的顯示緩存RAM是一一對(duì)應(yīng)的;共有65(8Page * 8bit + 1)*132個(gè)位的顯示RAM區(qū)。而顯示器的顯示點(diǎn)陣大小為64*128點(diǎn),所以實(shí)際上在液晶顯示模塊中有用的顯示RAM區(qū)為64*128個(gè)位;按byte為單位劃分,共分為8個(gè)Page,每個(gè)Page為8行,而每一行為128個(gè)位。(即128列)。圖 3-2 字節(jié)數(shù)據(jù)排列情況Fig 3-2 Byte data arrangement MzL
25、02D-12864液晶顯示模塊的顯示屏上的每一個(gè)點(diǎn)都對(duì)應(yīng)有控制器片內(nèi)的顯示緩存RAM中的一個(gè)bit,顯示屏上64*128個(gè)點(diǎn)分別對(duì)應(yīng)著顯示RAM的8個(gè)Page,每一個(gè)Page有128個(gè)byte的空間。因此可知顯示RAM區(qū)中的一個(gè)Page空間對(duì)應(yīng)8行的點(diǎn),而該P(yáng)age中的一個(gè)byte數(shù)據(jù)那么對(duì)應(yīng)一列(8個(gè)點(diǎn))。 用戶如要點(diǎn)亮LCD屏上的某一個(gè)點(diǎn)時(shí),實(shí)際上就是對(duì)該點(diǎn)所對(duì)應(yīng)的顯示RAM區(qū)中的某一個(gè)位進(jìn)行置1操作,所以就要確定該點(diǎn)所處的行地址、列地址。MzL02-12864液晶顯示模組的行地址實(shí)際上就是Page的信息,每一個(gè)Page應(yīng)有8行;而列地址那么表示該點(diǎn)的橫坐標(biāo),在屏上為從左到右排列,Page
26、中的一個(gè)Byte對(duì)應(yīng)的是一列(8行,即8個(gè)點(diǎn)),達(dá)128列??梢愿鶕?jù)這樣的關(guān)系在程序中控制LCD顯示屏的顯示。 LCD的驅(qū)動(dòng)方法 在很多資料以及書(shū)籍當(dāng)中,通常介紹有兩種 LCD模塊的連接方法:直接控制和間接控制;直接控制實(shí)際指的是 LCD模塊的總線接口直接與MCU端口連接,然后 MCU 通過(guò)程序控制端口來(lái)模擬 LCD的總線時(shí)序來(lái)完成對(duì)其的控制操作;而間接控制指的是MCU本身就有外部總線拉出,與LCD的總線接口對(duì)應(yīng)的連接上,程序中直接操作總線以控制LCD。目前有很多MCU 都把總線密封起來(lái)了,都沒(méi)有引出外部總線;所以通常在用MCU控制LCD模塊時(shí),時(shí)常會(huì)選擇直接控制的方式,即利用端口來(lái)模擬總線時(shí)
27、序;當(dāng)然了,如果本身就有總線而且也與LCD模塊的總線配得上的話,肯定會(huì)使用總線連接的間控方式。 本設(shè)計(jì)采用直接控制的方式,將MzL02D-12864 LCD模塊的總配置為6800總線,這與絕大局部引出外部總線的MCU的時(shí)序是不一樣的。本設(shè)計(jì)的LCD12864模塊中,用戶程序?qū)ζ溥M(jìn)行顯示控制時(shí),無(wú)非就是通過(guò)對(duì)LCD模塊內(nèi)部的驅(qū)動(dòng)控制器當(dāng)中的存放器進(jìn)行設(shè)置操作;最常用的如LCD的顯示開(kāi)/關(guān)、操作顯存地址(行與列地址)的設(shè)置等。這些存放器一般都在LCD模塊的驅(qū)動(dòng)控制器文檔中有詳細(xì)介紹。3.2.4 LCD驅(qū)動(dòng)程序架構(gòu) LCD12864驅(qū)動(dòng)程序主要由LCD底層驅(qū)動(dòng)和LCD功能函數(shù)兩局部組成。用戶在應(yīng)用層
28、直接使用功能函數(shù)即可。具體框架如圖3-3所示。圖 3-3 LCD驅(qū)動(dòng)程序架構(gòu)Fig 3-3 LCD Driver architectures3.3 俄羅斯方塊游戲設(shè)計(jì)3.3.1 俄羅斯方塊游戲功能簡(jiǎn)介 俄羅斯方塊游戲的規(guī)那么很簡(jiǎn)單,當(dāng)方塊從屏幕上方落下來(lái)時(shí),玩家控制方塊的位置以及旋轉(zhuǎn)方塊,巧妙地安排布置到達(dá)充分利用屏幕空間的目的。每當(dāng)屏幕的一整行被方塊排滿時(shí),作為獎(jiǎng)賞,整行從屏幕上消失,剩余的方塊依次往下降一行。當(dāng)方塊堆積到達(dá)無(wú)法再落下方塊的時(shí)候,游戲結(jié)束。本設(shè)計(jì)中游戲主要的功能點(diǎn)包括:1 每4個(gè)小方塊可以組合成一組方塊群,游戲共有7種方塊群,每次隨機(jī)產(chǎn)生一種;玩家使用向左、向右、快速向下這些
29、按鍵控制方塊的位置,旋轉(zhuǎn)按鍵控制方塊順時(shí)針旋轉(zhuǎn)。在主控制手柄上還有退出、暫停按鈕,可以實(shí)現(xiàn)隨時(shí)切換到啟動(dòng)時(shí)的狀態(tài)和暫停游戲的功能。2 在本設(shè)計(jì)中,系統(tǒng)為玩家提供了背景音樂(lè),玩家可以根據(jù)個(gè)人喜好開(kāi)啟或關(guān)閉音效。3 單人模式下,玩家使用主控制器進(jìn)行操作。每消去一行,系統(tǒng)就給玩家加1分。在單人模式下,如果積分超過(guò)系統(tǒng)記錄的最高積分,系統(tǒng)將更新最高積分。4 本設(shè)計(jì)的亮點(diǎn)是實(shí)現(xiàn)雙人對(duì)戰(zhàn)游戲,通過(guò)主控制器在菜單項(xiàng)選擇項(xiàng)中選擇雙人模式,第二玩家可以通過(guò)副控制器對(duì)第二游戲界面進(jìn)行操作。本游戲系統(tǒng)規(guī)定,雙人對(duì)戰(zhàn)游戲中積分可分為兩個(gè)階段。第一階段是普通積分階段,即雙方玩家每消去一行,其相應(yīng)積分表加1分;第二階段是
30、多積分階段,即每消去三行才獲得1個(gè)積分。雙方先到達(dá)第二階段末尾者,即可取勝。同時(shí),該設(shè)計(jì)中還為雙方玩家增加了道具功能,即當(dāng)使用該功能時(shí),可令對(duì)手當(dāng)前移動(dòng)圖塊消失,隨機(jī)出下一個(gè)圖塊。當(dāng)玩家一次性消去三行,就能獲得一次道具功能,最多一次性累積2個(gè)道具。系統(tǒng)默認(rèn)為每個(gè)玩家提供1個(gè)道具。這樣不僅豐富了俄羅斯方塊游戲的功能,而且使其更具趣味性。3.3.2 系統(tǒng)界面的設(shè)計(jì)1 菜單項(xiàng)選擇項(xiàng)界面 當(dāng)玩家將本設(shè)計(jì)的作品上電啟動(dòng)后,系統(tǒng)首先在LCD顯示器件上呈現(xiàn)一個(gè)動(dòng)態(tài)的開(kāi)機(jī)動(dòng)畫(huà)。然后,系統(tǒng)提供三個(gè)功能選項(xiàng),即最高積分、游戲設(shè)置、開(kāi)始游戲。其中,“游戲設(shè)置選項(xiàng)包含了兩級(jí)子菜單。一級(jí)菜單包括“模式選擇和“音效選擇。
31、在這兩個(gè)選項(xiàng)后面給出單字提示,以說(shuō)明當(dāng)前相應(yīng)設(shè)置選項(xiàng)的狀態(tài)。“模式選擇菜單包含的二級(jí)子菜單有“單人模式和“雙人模式?!耙粜нx擇菜單包含的二級(jí)子菜單有“開(kāi)音效和“關(guān)音效通過(guò)控制按鍵即可設(shè)置成相應(yīng)狀態(tài)?!白罡叻e分菜單項(xiàng)選擇項(xiàng)為玩家提供單人模式下系統(tǒng)記憶的最高積分。如果選擇了“開(kāi)始游戲菜單項(xiàng)選擇項(xiàng),那么系統(tǒng)根據(jù)“游戲設(shè)置選項(xiàng)中的設(shè)置啟動(dòng)相應(yīng)的游戲界面。菜單項(xiàng)選擇項(xiàng)界面框架如圖3-4所示。 圖 3-4 菜單項(xiàng)選擇項(xiàng)界面框架 Fig 3-4 The menu option interface framework 2 游戲操作界面 首先,我們先來(lái)介紹單人模式下游戲界面的一些情況。在啟動(dòng)單人模式后,LCD1
32、2864顯示屏分成兩屏,左半屏為俄羅斯方塊游戲地圖?map區(qū),右半屏為俄羅斯方塊圖形預(yù)覽區(qū)和實(shí)時(shí)積分顯示區(qū)。其結(jié)構(gòu)框架如圖3-5所示。 圖 3-5 單人模式界面結(jié)構(gòu)框架 Fig 3-5 The single-player game interface architecture 其次,如果玩家啟動(dòng)的是雙人模式,LCD12864顯示屏也分為兩屏,左屏由主控器操作,稱為map1區(qū),右屏由副控制器操作,稱為map2區(qū)。在兩屏中間是雙方積分顯示區(qū)和各自的道具數(shù)量顯示區(qū)。其結(jié)構(gòu)框架如圖3-6所示。 圖 3-6 雙人模式界面結(jié)構(gòu)框架 Fig 3-6 Double mode interface archite
33、cture 系統(tǒng)界面整體程序流程圖如圖3-7所示。圖 3-7 開(kāi)機(jī)界面功能框架Fig 3-7 Boot interface function frame3.3.3 游戲系統(tǒng)“枚舉算法概述 本文繞開(kāi)了澀難懂、比擬復(fù)雜的“矩陣算法,提出了另一種“枚舉算法來(lái)實(shí)現(xiàn)這個(gè)經(jīng)典游戲?!懊杜e算法沒(méi)有復(fù)雜的數(shù)學(xué)理論、防止了在程序中大量使用矩陣運(yùn)算公式,設(shè)計(jì)思路清晰、明了,非常適合游戲設(shè)計(jì)的初學(xué)者理解和實(shí)現(xiàn)。 所謂枚舉算法,就是直接枚舉出游戲中各圖塊的根本形狀和它們的旋轉(zhuǎn)形狀,然后控制每一種不同形狀的方塊在游戲戲中的產(chǎn)生、移動(dòng)、旋轉(zhuǎn)、落下、填滿和去除等游戲過(guò)程。3.3.4 俄羅斯方塊造型設(shè)計(jì)的方法 眾所周知,俄羅
34、斯方塊一般有七種根本形狀,每個(gè)根本形狀都由4個(gè)正方形的小方塊構(gòu)成。利用小方塊不同的擺放位置,可產(chǎn)生19種旋轉(zhuǎn)型圖塊。這七種圖形分別是“I型、“L型、“反L型、“Z型、“反Z型、“口型、“T型。如圖3-8所示。 圖 3-8 方塊模型 Fig 3-8 Square model 本系統(tǒng)在構(gòu)造19個(gè)方塊模型時(shí)的思路是:定義一個(gè)數(shù)組,用以存儲(chǔ)各個(gè)模型中4個(gè)小方塊的頂點(diǎn)坐標(biāo)。比方L型,其數(shù)據(jù)結(jié)構(gòu)為0,0,0,4,0,8,4,8。其中,每?jī)蓚€(gè)數(shù)據(jù)為一個(gè)小正方形的列、行坐標(biāo),如圖 3-9所示。由圖可知,整個(gè)界面的坐標(biāo)原點(diǎn)在左上角,分別向右、向下作為橫軸的正方向和縱軸的正方向。圖中每一格代表了LCD12864中
35、的連續(xù)四行,第1格的坐標(biāo)是(0,0);第2格的坐標(biāo)是(0,4);第3格的坐標(biāo)是(0,8);第4格的坐標(biāo)是(4,8);其它圖塊也按此方法編輯數(shù)組內(nèi)容。 圖 3-9 L型 Fig 3-9 L Shape 3.3.5 隨機(jī)產(chǎn)生俄羅斯方塊的方法1 產(chǎn)生隨機(jī)數(shù)的理論依據(jù) 為了實(shí)現(xiàn)隨機(jī)落下各類方塊圖形,游戲過(guò)程序中必須抽取隨機(jī)數(shù)來(lái)確定方塊的類型。隨機(jī)數(shù)是一個(gè)既簡(jiǎn)單又復(fù)雜的問(wèn)題。 本設(shè)計(jì)采用眾所周知的線性疊加法,雖然沒(méi)有完美的方法產(chǎn)生隨機(jī)數(shù),不過(guò)線性疊加法是一個(gè)適宜的方法,它徹底解決了8位機(jī)隨機(jī)數(shù)的問(wèn)題。如果從一個(gè)足夠長(zhǎng)的數(shù)字序列中的某一個(gè)點(diǎn)取出一邊串的數(shù)字,那么這些數(shù)字就看似隨機(jī)。這個(gè)開(kāi)始的點(diǎn)(數(shù)字)叫做
36、種子。如果從相同的點(diǎn)(種子)開(kāi)始,將會(huì)得到相同的數(shù)字,這是因?yàn)槲覀兪菑墓潭ǖ男蛄兄腥?shù)字(所以叫偽隨機(jī))。但這卻是一個(gè)有用的特性,我們可以每次從不同的點(diǎn)取數(shù),即改變種子,從而可以實(shí)現(xiàn)真正的隨機(jī)。2 “線性疊加法的概況 “線性疊加法其實(shí)只涉及二個(gè)內(nèi)容即:乘法和加法。只需三個(gè)步驟即:第一,為了取得新的種子,舊的種子與一個(gè)常數(shù)A相乘;第二,所得的結(jié)果和第二個(gè)常數(shù)C相加;第三,新的種子就是第二步結(jié)果的低32位。保存低32位很重要,用來(lái)獲得下一個(gè)種子。計(jì)算公式為: 種子 A * 種子 + C (3-1)此公式在幾何圖中表示為一條直線,而且新種子由舊種子反復(fù)相加得來(lái),所以叫線性疊加。隨機(jī)函數(shù)的關(guān)鍵在于選擇
37、優(yōu)秀的“常數(shù)A(也叫乘數(shù)A),其實(shí)也就是選擇了一個(gè)固定的數(shù)字序列。“常數(shù)C,不像乘數(shù)A那樣重要,但是一定是個(gè)奇數(shù)。事實(shí)上,C可選1。因?yàn)槠鏀?shù)(舊的種子)乘奇數(shù)(乘數(shù)A)是奇數(shù),再加奇數(shù)(常數(shù)C)將會(huì)是一個(gè)偶數(shù)學(xué)偶數(shù)(舊的種子)乘奇數(shù)(乘數(shù)A),加奇數(shù)(常數(shù)C)將會(huì)是一個(gè)奇數(shù)。如此種子會(huì)在奇數(shù)和偶數(shù)之間轉(zhuǎn)變。因?yàn)榉N了的變化足夠隨機(jī),所以種子的值可以作為8位或16位隨機(jī)數(shù)。3 Keil C51中“線性疊加法的實(shí)現(xiàn)方法 在Keil C51中生成偽隨機(jī)數(shù)需要用到兩個(gè)函數(shù),一個(gè)是srandunsigned int seed,一個(gè)是rand。首先給srandunsigned int seed提供一個(gè)種子,
38、該種子為unsigned int類型,其取值范圍從0到65536,srandunsigned int seed根據(jù)這個(gè)種子會(huì)由上述特定的公式生成一個(gè)隨機(jī)數(shù)序列;然后調(diào)用rand,它會(huì)依次從這個(gè)序列中返回一個(gè)數(shù),其值在0 到32767之間。因隨機(jī)數(shù)函數(shù)rand函數(shù)實(shí)際上是線性隨機(jī)的,如果在不指定srand(unsigned int seed)的種子的情況下,它每次都使用默認(rèn)的種子,因此生成的序列會(huì)是同一個(gè),所以會(huì)取到相同的數(shù)字序列。這可能會(huì)導(dǎo)致每次重新運(yùn)行游戲時(shí)其隨機(jī)數(shù)結(jié)果都是一樣的。為了解決該問(wèn)題,本設(shè)計(jì)在玩家進(jìn)入游戲時(shí)讀取按鍵按下瞬間定時(shí)器T0的計(jì)數(shù)值,作為srandunsigned int
39、 seed的種子。從而實(shí)現(xiàn)真正的隨機(jī)。4 隨機(jī)數(shù)程序流程圖如圖3-10為隨機(jī)數(shù)程序流程圖。圖 3-10 隨機(jī)數(shù)程序流程圖Fig 3-10 Ramdom process flow program diagram3.3.6 俄羅斯方塊平移的實(shí)現(xiàn)方法 方塊產(chǎn)生后,需要用全局變量來(lái)保存方塊在游戲map區(qū)中的行坐標(biāo)和列坐標(biāo)。方塊的平移包括左移和右移兩種情況,無(wú)論那種情況都要首先進(jìn)行合法性判斷。1 俄羅斯方塊平移特性 在本設(shè)計(jì)中規(guī)定當(dāng)按下一次左移或右移按鍵時(shí),map區(qū)中的當(dāng)前圖塊就左移或右移一個(gè)正方形的寬度。而一個(gè)小正方形的寬度,那么對(duì)應(yīng)著LCD12864中的4列。2 平移合法性判斷 平移的合法性判斷經(jīng)較
40、簡(jiǎn)單,只需判斷它旁邊相鄰位置是否被填充即可。3 平移算法的實(shí)現(xiàn) 在程序中,當(dāng)有任意一個(gè)平移按鍵被按下時(shí),系統(tǒng)接收到信號(hào),然后調(diào)用平移函數(shù)進(jìn)行判斷其合法性,得到該函數(shù)的返回值為1后,再進(jìn)行平移操作。其程序流程如圖3-11所示。圖 3-11 平移算法流程圖Fig 3-11 Translation algorithms flowchart3.3.7 俄羅斯方塊旋轉(zhuǎn)的實(shí)現(xiàn)方法1 俄羅斯方塊旋轉(zhuǎn)圖形概況 方塊旋轉(zhuǎn)是一個(gè)游戲?qū)崿F(xiàn)的關(guān)鍵問(wèn)題,實(shí)現(xiàn)旋轉(zhuǎn)的數(shù)學(xué)方法有多種,如矩陣變換法、枚舉法、索引法等。本文前面已經(jīng)論述了此次設(shè)計(jì)采用枚舉的方法,對(duì)19種俄羅斯方塊造型進(jìn)行構(gòu)造。游戲過(guò)程中,每一種根本方塊都要做旋轉(zhuǎn)
41、控制,于是就產(chǎn)生了旋轉(zhuǎn)后的方塊形狀,本文將其稱為“旋轉(zhuǎn)型。 根本型中的“I型,只有一種旋轉(zhuǎn)型,即由豎直旋轉(zhuǎn)90度后成為水平。因此,根本型加上一種旋轉(zhuǎn)型,共有兩種形狀。 根本型中的“L型和“反L型有三種旋轉(zhuǎn)型,將它按順時(shí)針每旋轉(zhuǎn)一個(gè)90度就產(chǎn)生一種旋轉(zhuǎn)型,可以旋轉(zhuǎn)三次,得到三種不同的旋轉(zhuǎn)型,因此,它的三種旋轉(zhuǎn)型加上其根本型,“L型和“反L型方塊分別有四種形狀。 根本型中“Z型和“反Z型可以順時(shí)針旋轉(zhuǎn)一次90度,加上他們的基型分別有兩種形狀。 根本型中的“T型有三種旋轉(zhuǎn)型,將他按順時(shí)針旋轉(zhuǎn)一個(gè)90度就產(chǎn)生一種旋轉(zhuǎn)型,它可以旋轉(zhuǎn)三次,得到三種不同的旋轉(zhuǎn)型,因此,它的三種旋轉(zhuǎn)型加上其根本型,“T型方塊
42、共有四種形狀。 根本型中的“口型方塊沒(méi)有旋轉(zhuǎn)型,在游戲中只有一種形狀。 綜上所述,七種根本型方塊,因旋轉(zhuǎn)產(chǎn)生了不同的旋轉(zhuǎn)型,這些旋轉(zhuǎn)型加上他們的根本型,整個(gè)游戲中,共有19種不同的方塊形狀。 本設(shè)計(jì)實(shí)現(xiàn)旋轉(zhuǎn)操作的具體方法,可分為兩類,一類是I型的旋轉(zhuǎn)策略;另一類那么是其余17種根本型的旋轉(zhuǎn)策略。2 旋轉(zhuǎn)合法性判斷 方塊做順時(shí)針旋轉(zhuǎn),每次旋轉(zhuǎn)90度。本設(shè)計(jì)規(guī)定只要旋轉(zhuǎn)后到達(dá)的地方未被填允,方塊就可以進(jìn)行旋轉(zhuǎn)操作。3 I型的旋轉(zhuǎn)策略 為了在視覺(jué)上實(shí)現(xiàn)I型的順時(shí)針旋轉(zhuǎn),本設(shè)計(jì)采用位置錯(cuò)落的方式來(lái)實(shí)現(xiàn)。其具體過(guò)程如圖3-12所示。圖 3-12 I型的旋轉(zhuǎn)方法Fig 3-12 The rotation
43、method of I shape 當(dāng)落下的圖塊是圖所示時(shí),其旋轉(zhuǎn)周期為 ?。 當(dāng)落下的圖塊是圖所示時(shí),其旋轉(zhuǎn)周期為 ?。 之所以把I型的旋轉(zhuǎn)變換單獨(dú)拿出來(lái)討論,是因?yàn)镮型只有根本型和旋轉(zhuǎn)型共兩種圖塊。如果在當(dāng)前位置直接按這兩種圖塊的坐標(biāo)數(shù)組進(jìn)行圖形切換,那么無(wú)法實(shí)現(xiàn)順時(shí)針旋轉(zhuǎn)的視覺(jué)效果。所以,在旋轉(zhuǎn)處理程序中,當(dāng)要旋轉(zhuǎn)的當(dāng)前圖塊為I型及其旋轉(zhuǎn)型時(shí),就要改變當(dāng)前列、行這兩個(gè)全局變量的值。4 其余17種根本型的旋轉(zhuǎn)策略 除了I型的旋轉(zhuǎn)比擬復(fù)雜外,其余17種類型的方塊只需按各自旋轉(zhuǎn)的順序在當(dāng)前位置用已經(jīng)編輯好的坐標(biāo)數(shù)組來(lái)實(shí)現(xiàn)旋轉(zhuǎn)即可。具體程序流程如圖3-13所示。 圖 3-13 旋轉(zhuǎn)程序流程圖 F
44、ig 3-13 Rotating program flowchart 3.3.8 俄羅斯方塊下移的實(shí)現(xiàn)方法 在整個(gè)游戲過(guò)程中,方塊是不斷向下運(yùn)行的,其下移特性為:方塊每次下移的格數(shù)對(duì)應(yīng)著LCD12864屏幕中的一行。具體程序?qū)崿F(xiàn)流程如圖3-14所示。圖 3-14 下移判斷程序流程圖Fig 3-14 Moves down judgment program flowchart3.3.9 滿行檢測(cè)及消行功能的實(shí)現(xiàn)方法 隨著方塊的不斷累積,方塊每次下落到不能再運(yùn)動(dòng)時(shí),系統(tǒng)就會(huì)檢測(cè)游戲map區(qū),當(dāng)檢測(cè)到map區(qū)中某一行堆積滿后,系統(tǒng)就消去此行,作為獎(jiǎng)勵(lì),其上方的方塊群那么依次下落一行。系統(tǒng)滿行檢測(cè)和消行
45、功能是通過(guò)“滿行檢測(cè)及消行函數(shù)實(shí)現(xiàn)的,即在每個(gè)圖塊落定和下一個(gè)圖塊未出來(lái)之前,按頁(yè)掃描游戲map區(qū),每半頁(yè)算一行。假設(shè)檢測(cè)到某行被填滿,那么消去此行,并將其上方的圖塊往下移動(dòng)相應(yīng)的行數(shù)。具體程序?qū)崿F(xiàn)流程如圖3-15所示。圖 3-15 滿行檢測(cè)程序流程Fig 3-15 Full line detection processes3.3.10 游戲積分的計(jì)算方法 在游戲系統(tǒng)中,積分表達(dá)了玩家在此次游戲中的操作情況。本游戲系統(tǒng)分單人模式和雙人模式兩種積分計(jì)算方式。 單人模式下,玩家每消去一行,就能獲得1個(gè)積分,如果當(dāng)前游戲積分超過(guò)系統(tǒng)記錄的單人最高游戲積分,那么系統(tǒng)將更新記錄,以便其他玩家挑戰(zhàn)。 雙人
46、模式下,雙方的積分制度是一樣的,以進(jìn)度條的方式展示在積分與道具區(qū)。其中積分區(qū)分為兩個(gè)階段,第一階段每消去1行進(jìn)度條向上走一格,共8個(gè)進(jìn)度格;第二階段每累計(jì)消去3行進(jìn)度條才向上增加一格,共6個(gè)進(jìn)度格。雙方誰(shuí)先到達(dá)進(jìn)度條的頂端就算勝利。 當(dāng)一次性同時(shí)消去3行時(shí),那么能獲得一個(gè)道具功能的使用權(quán)。最多能累積兩個(gè)道具。具體程序?qū)崿F(xiàn)流程如圖3-16所示。 圖 3-16 積分系統(tǒng)程序流程圖Fig 3-16 Score system program flowchart 3.4 雙人俄羅斯方塊游戲設(shè)計(jì)3.4.1 RTX51 Tiny簡(jiǎn)介 許多微處理器應(yīng)用程序要求同時(shí)執(zhí)行多個(gè)任務(wù)。對(duì)于這樣的應(yīng)用程序,一個(gè)實(shí)時(shí)操系
47、統(tǒng)RTOS允許靈活的分配系統(tǒng)資源(中央處理器、存儲(chǔ)器等)給各個(gè)任務(wù)。RTX51它可以運(yùn)行于所有的8051派生機(jī)型,是一個(gè)很好使用的強(qiáng)大的準(zhǔn)并行實(shí)時(shí)操作系統(tǒng)。 RTX51可以簡(jiǎn)化那些復(fù)雜而且時(shí)間要嚴(yán)格的工程軟件設(shè)計(jì)工作。有兩個(gè)不同的RTX51版本可以利用:RTX51 Full和RTX51 Tiny。二者的主要區(qū)別是前者是可以強(qiáng)占(或者說(shuō)可剝奪的)系統(tǒng)而后者是不可以強(qiáng)占的(不可剝奪的)。RTX51 Full版本是完整版,它使用四個(gè)任務(wù)優(yōu)先級(jí)來(lái)完成,同時(shí)存在時(shí)間片輪轉(zhuǎn)調(diào)度和搶先的任務(wù)切換。RTX51 Full工作在與中斷功能相似的狀態(tài)下,信號(hào)和信息可以通過(guò)郵箱系統(tǒng)在任務(wù)之間互相傳遞。程序員可以從一存
48、儲(chǔ)池中分配和釋放內(nèi)存,也可以強(qiáng)迫一個(gè)任務(wù)等待中斷、超時(shí)或者是從另一個(gè)任務(wù)或中斷發(fā)出的信號(hào)或信息。而本游戲系統(tǒng)采用的RTX51 Tiny是RTX51完整版的子集,它完全集成在Keil C51的集成開(kāi)發(fā)環(huán)境中。自身僅占用900字節(jié)左右的程序存儲(chǔ)空間。RTX51 Tiny僅支持時(shí)間片輪轉(zhuǎn)任務(wù)切換和使用信號(hào)進(jìn)行任務(wù)切換。不支持搶先式的任務(wù)切換,不包括消息歷程,沒(méi)有存儲(chǔ)器池分配程序。 RTX51 Tiny雖然比擬簡(jiǎn)陋,但它還是具備了一些實(shí)時(shí)操作系統(tǒng)的根本要素,又因?yàn)樗耆稍贙eil C51的集成開(kāi)發(fā)環(huán)境中,可以使用戶把更多的精力關(guān)注在應(yīng)用本身而無(wú)需考慮復(fù)雜的底層驅(qū)動(dòng),而且整個(gè)應(yīng)用軟件系統(tǒng)結(jié)構(gòu)清晰,維
49、護(hù)方便,可節(jié)省大量的時(shí)間和人力。當(dāng)程序比擬復(fù)雜時(shí),它的優(yōu)點(diǎn)就表達(dá)得更明顯。RTX51 Tiny完全可以充當(dāng)我們進(jìn)入實(shí)時(shí)操作系統(tǒng)(RTOS)世界的領(lǐng)路者,更為重要的是,它是免費(fèi)的。無(wú)論如何,RTX51 Tiny仍然是在8位單片機(jī)中應(yīng)用操作系統(tǒng)的首選。3.4.2 RTX51 Tiny的內(nèi)核分析 該小節(jié)只介紹本設(shè)計(jì)中用到RTX51 Tiny系統(tǒng)的相關(guān)知識(shí)與配置方法。讀者假設(shè)想更全面了解RTX51 Tiny多任務(wù)實(shí)時(shí)操作系統(tǒng),請(qǐng)閱讀RTX51 Tiny的幫助文件或其它相關(guān)文件。1 RTX51 Tiny程序的編寫(xiě)方法假設(shè)要使用RTX51 Tiny的內(nèi)核,只需包含文件RTX51TNY.H即可。所有的運(yùn)行時(shí)
50、庫(kù)常量都在這個(gè)頭文件中定義。可以采用以下方式包含它:#include 當(dāng)使用Rtx51 Tiny時(shí),要為每個(gè)任務(wù)建立獨(dú)立的任務(wù)函數(shù)。同時(shí),RTX51 Tiny任務(wù)必須是用_task_聲明的C函數(shù),返回值和參數(shù)都必須是void類型的, RTX51 Tiny程序不需要用戶自已定義main函數(shù),取而代之的是,RTX51 Tiny從任務(wù)0開(kāi)始執(zhí)行。在典型的應(yīng)用中,任務(wù)0簡(jiǎn)單的建立所有其他的任務(wù)。2 系統(tǒng)調(diào)用函數(shù)簡(jiǎn)介 RTX51 Tiny內(nèi)核完全集成在KEIL C51編譯器中,以系統(tǒng)函數(shù)調(diào)用的方式運(yùn)行,因此可以很容易地使用KEIL C51語(yǔ)言編寫(xiě)和編譯一個(gè)多任務(wù)程序,并嵌入到實(shí)際應(yīng)用系統(tǒng)中,內(nèi)核提供多組
51、函數(shù)供給用程序引用。3 RTX51 Tiny的任務(wù)狀態(tài)RTX51 Tiny 的用戶任務(wù)具有以下幾個(gè)狀態(tài):RUNNING: 任務(wù)處于運(yùn)行中,同一時(shí)間只有一個(gè)搶占任務(wù)可以處于“RUNNING狀態(tài)。READY :任務(wù)正在等待運(yùn)行,在當(dāng)前運(yùn)行的任務(wù)時(shí)間片完成之后,RTX51 Tiny運(yùn)行下一個(gè)處于“READY狀態(tài)的任務(wù)。WAITING: 任務(wù)由于時(shí)間片用完而處于“TIME OUT狀態(tài),并等待再次運(yùn)行。該狀態(tài)與“READY狀態(tài)相似,但由于是內(nèi)部操作過(guò)程使一個(gè)循環(huán)任務(wù)被切換而被冠以標(biāo)記。如圖3-17所示為任務(wù)狀態(tài)轉(zhuǎn)換圖8。圖 3-17 任務(wù)狀態(tài)轉(zhuǎn)換圖Fig 3-17 Task state transition diagram 4 RTX51 Tiny的同步機(jī)制 為了能保證任務(wù)在執(zhí)行次序上的協(xié)調(diào),必須采用同步機(jī)制。內(nèi)核用以下事件進(jìn)行任務(wù)間的通信和同步。SIGNAL:用于任務(wù)之間通信的位,可以用系統(tǒng)函數(shù)置位或去除。如果一個(gè)任務(wù)調(diào)用os_wait函數(shù)等待SIGNAL而SIGNAL未置位,那么該任務(wù)被掛起直到SIGNAL置位,才返回到READY狀態(tài),并可被再次執(zhí)行。TIMEOUT:由os_wait函數(shù)開(kāi)始的時(shí)間延時(shí),其持續(xù)時(shí)間可由定時(shí)節(jié)拍數(shù)確定。帶有TIMEOUT值調(diào)用os_wait函數(shù)的任務(wù)將被
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 西藏取水收費(fèi)管理辦法
- 異地辦公團(tuán)隊(duì)管理辦法
- 移動(dòng)推車定置管理辦法
- 萊蕪瓷器修復(fù)培訓(xùn)課件
- 高三上期末數(shù)學(xué)試卷
- 高考模擬感人數(shù)學(xué)試卷
- 定西市歷年中考數(shù)學(xué)試卷
- 德陽(yáng)市期末高二數(shù)學(xué)試卷
- 2025年03月浙江紹興嵊州市婦幼保健院第一次招聘編外合同制人員12人筆試歷年專業(yè)考點(diǎn)(難、易錯(cuò)點(diǎn))附帶答案詳解
- 2025至2030打印機(jī)市場(chǎng)行業(yè)市場(chǎng)深度研究與戰(zhàn)略咨詢分析報(bào)告
- 2025年中考物理熱點(diǎn)題型專項(xiàng)訓(xùn)練:實(shí)驗(yàn)之探究平面鏡成像的特點(diǎn) (解析版)
- SEAtech 石油石化ICS網(wǎng)絡(luò)安全解決方案
- 班級(jí)管理中的法治教育實(shí)踐
- 高二【數(shù)學(xué)(人教A版)】用空間向量研究距離、夾角問(wèn)題(2)-教學(xué)設(shè)計(jì)
- 中頻藥物透入治療
- 四好農(nóng)村路培訓(xùn)
- 《瀝青及瀝青混合料》課件
- 醫(yī)療物聯(lián)網(wǎng)標(biāo)準(zhǔn)與規(guī)范-洞察分析
- 綜合機(jī)電供應(yīng)及安裝專業(yè)分包工程機(jī)電系統(tǒng)調(diào)試方案
- 城市軌道交通車輛智慧運(yùn)維系統(tǒng)技術(shù)規(guī)范
- 信息安全保密三員培訓(xùn)
評(píng)論
0/150
提交評(píng)論