freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于stc12c5a60s2單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)(文件)

 

【正文】 在 LCM 的玻璃上,接口簡(jiǎn)單、操作方便。具體硬件電路如圖 27所示。副 控制器則包括五個(gè)按鍵,分別為:旋轉(zhuǎn) /確定、向左 /返回上級(jí)菜、向右 /下一個(gè)、快速下降、使用道具。 賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 13 S1S W P BS2S W P BS3S W P BS4S W P BS5S W P BS6S W P BS7S W P B12J1di a ny ua n12J3di a ny ua n1 2 3 4 5 6 7J2C O N 7V C CR11kR21kR31kR41kR51kR61kR71k 圖片 28 控制模塊接口 Fig 28 Control Interface 3 系統(tǒng)軟件平臺(tái)構(gòu)建 μ Vision 簡(jiǎn)介 μVision 是德國(guó) Keil 公司開發(fā)的單片機(jī) IDE 軟件, 最初主要用于 8051 系列單片機(jī),目前也有支 ARM系列單片機(jī)的專用版本 MDKARM。 在此種接口模式下, WR 線為讀寫控制信號(hào)線,當(dāng) WR 為高電平時(shí)為讀狀態(tài), WR為低電來時(shí)為寫入狀態(tài)。而顯示器的顯示點(diǎn)陣大小為 64*128 點(diǎn),所以實(shí)際上在液晶顯示模塊中有用的顯示 RAM 區(qū)為 64*128 個(gè)位;按 byte 為單位劃分,共分為 8個(gè)Page,每個(gè) Page 為 8 行,而每一行為 128 個(gè)位。 用戶如要點(diǎn)亮 LCD 屏上的某一個(gè)點(diǎn)時(shí),實(shí)際上就是對(duì)該點(diǎn)所對(duì)應(yīng)的顯示 RAM區(qū)中的某一個(gè)位進(jìn)行置 1 操作,所以 就要確定該點(diǎn)所處的行地址、列地址。目前有很多 MCU 都把總線 密 封起來 了,都沒有引出外部總線;所以通常在用 MCU 控制 LCD 模塊時(shí),時(shí)常會(huì)選擇直接控制的方式,即利用端口來模擬總線時(shí)序;當(dāng)然了,如果本身就有總線而且也與 LCD 模塊的總線配得上的話,肯定會(huì)使用總線連接的間控方式。 LCD 驅(qū)動(dòng)程序架構(gòu) LCD12864 驅(qū)動(dòng)程序 主要 由 LCD 底層驅(qū)動(dòng)和 LCD 功能函數(shù)兩 部分 組成。每當(dāng)屏幕的一整行被方塊排滿時(shí),作為獎(jiǎng)賞,整行從屏幕上 消 失,剩余的 方塊 依次往下降一行。在主控制手柄上還有退出、暫停按鈕,可以實(shí)現(xiàn)隨 時(shí)切換到 啟 動(dòng)時(shí)的 狀態(tài)和暫停游戲的功能。在單人模式下,如果積分超過系統(tǒng)記錄的最高積分,系統(tǒng)將更新最高積分。雙方先達(dá)到第二階段末尾者,即可取勝。這樣不僅豐富了俄羅斯方塊游戲的功能,而且使其更具趣味性。 一級(jí)菜單包括“模式選擇”和“音效選擇”。 “最高積分” 菜單 選項(xiàng)為玩家提供單人模式下系統(tǒng)記憶的最高積分。 在啟動(dòng)單人模式后,菜單功能界面框架 最高積分 游戲設(shè)置 開始游戲 模式選擇 音效選擇 單人模式 雙人模式 開音效 關(guān)音效 黃忠南 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 18 LCD12864 顯示屏分成兩屏,左半屏為俄羅斯方塊游戲地圖 —— map 區(qū),右半屏為俄羅斯方塊圖形預(yù)覽區(qū)和實(shí)時(shí)積分顯示區(qū)。其 結(jié)構(gòu) 框架如圖 36 所示。 所謂枚舉算法,就是直接枚舉出游戲中 各圖 塊的基本形狀和它們的旋轉(zhuǎn)形狀,然后控制每一種不同形狀的方塊在游戲戲中的產(chǎn)生、移動(dòng)、旋轉(zhuǎn)、落下、填滿和清除等N Y Y N N Y Y N Y 單人模式 音效選擇 模式選擇 游戲設(shè)置 雙人模式 音效關(guān) 音效開 清模式標(biāo)志 置模式標(biāo)志 返回上一級(jí) 清音效標(biāo)志 置音效標(biāo)志 返回上一級(jí) 開機(jī) 啟動(dòng)動(dòng)畫 進(jìn)入主菜單 顯示單人最高積分 返回按鍵 最高積分 開始游戲 進(jìn)入游戲 游戲設(shè)置 模式選擇 音效選擇 ?? ?? 黃忠南 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 20 游戲過程。如圖 38所示。由圖可知,整個(gè)界面的坐標(biāo)原點(diǎn)在左上角,分別向右、向下作為橫軸的正方向和縱軸的正方向。 本設(shè)計(jì)采用眾所周知的線性疊加法,雖然沒有完美的方法產(chǎn)生隨機(jī)數(shù),不過線性疊加法是一個(gè)合適的方法,它徹底解決了 8 位機(jī)隨機(jī)數(shù)的問題。但這卻是一個(gè)有用的特性,我們可以每次從不同的點(diǎn)取數(shù),即改變種子,從而 可以 實(shí)現(xiàn)真正的隨機(jī)。計(jì)算公式為: 種子 = A * 種子 + C ( 31) 此公式在幾何圖中表示 為 一條直線,而且新種子由舊種子反復(fù)相加得來,所以叫線性疊加。因?yàn)槠鏀?shù)(舊的種子)乘奇數(shù)(乘數(shù) A)是奇數(shù),再加奇數(shù)(常數(shù) C)將會(huì)是一個(gè)偶數(shù)學(xué)偶數(shù)(舊的種子)乘奇數(shù)(乘數(shù) A),加奇數(shù)(常數(shù) C)將會(huì)是一個(gè)奇 數(shù)。首先給 srand(unsigned int seed)提供一個(gè)種子, 該種子為unsigned int 類型,其取值范圍從 0到 65536, srand(unsigned int seed)根據(jù)這個(gè)種子 會(huì)由 上 述 特定的公式生成一個(gè)隨機(jī)數(shù)序列; 然后調(diào)用 rand(),它會(huì)依次從這個(gè)序列中返回一個(gè)數(shù),其值在 0 到 32767 之間。從而實(shí)現(xiàn)真正的隨機(jī)。 (1) 俄羅斯方塊平移特性 在本設(shè)計(jì)中規(guī)定 當(dāng) 按下一次左移或右移按鍵 時(shí), map 區(qū)中的 當(dāng)前 圖塊 就左移或右移 一個(gè)正方形的寬度。其程序流程如圖 311 所示。 基本型中的“ I 型”,只有一種旋轉(zhuǎn)型,即由豎直旋轉(zhuǎn) 90 度后成為水平。 基本型中的“ T 型”有三種旋轉(zhuǎn)型,將他按順時(shí)針旋轉(zhuǎn)一個(gè) 90 度就產(chǎn)生一種旋轉(zhuǎn)返回 1 返回 1 返回 0 Y Y N N ?? 左移按鍵被按下 right_left_judge 函數(shù) ?? 列變量 f_x減 4行不變 右移按鍵被按下 列變量 f_x加 4行不變 right_left_judge 函數(shù) 將圖塊左移一格 將圖塊右移一格 黃忠南 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 24 型,它可以旋轉(zhuǎn)三次,得到三種不同的旋轉(zhuǎn)型,因此,它的三種旋轉(zhuǎn)型加上其基本型,“ T型” 方塊共有四種形狀。 (2) 旋轉(zhuǎn)合法性判斷 方塊做順時(shí)針 旋轉(zhuǎn),每次旋轉(zhuǎn) 90 度。 圖 312 I型的旋轉(zhuǎn)方法 Fig 312 The rotation method of I shape 當(dāng)落下的圖塊是圖 ① 所示時(shí),其旋轉(zhuǎn)周期為 ① —— ② —— ③ —— ④ —— ① 。 所以,在旋轉(zhuǎn)處理程序中,當(dāng)要旋轉(zhuǎn)的當(dāng)前圖塊為 I型及其旋轉(zhuǎn)型時(shí),就要改變當(dāng)前列、行 這兩個(gè)全局 變量的值。 具 體程序?qū)崿F(xiàn)流程如圖 314所示。 具體程序?qū)崿F(xiàn)流程如圖 315所示。 Y N Y N Y N 某一方塊已落定 進(jìn)入滿行檢測(cè)程序,頁(yè)標(biāo)志 n=7 從第 n 頁(yè)開始檢測(cè) 檢測(cè)當(dāng)前頁(yè)的下半頁(yè) 是否滿行 消除此行,其上方塊依次下落一行 檢測(cè)當(dāng)前頁(yè)的上半頁(yè) 是否滿行 消除此行,其上方塊依次下落一行 n 減 1 是否是第 0 頁(yè) 退出 黃忠南 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 28 雙人模式下,雙方的積分制度是一樣的,以進(jìn)度條的方式展示在積 分與道具區(qū)。最多能累積兩個(gè)道具。 RTX51它可以運(yùn)行于所有的 8051 派生機(jī)型,是一個(gè)很好使用的強(qiáng)大的準(zhǔn)并行實(shí)時(shí)操作系統(tǒng)。 RTX51 Full 版本是完整版,它使用四個(gè)任務(wù)優(yōu)先級(jí)來完成,同時(shí)存在時(shí)間片輪轉(zhuǎn)調(diào)度和搶先的任務(wù)切換。自身僅占用 900 字節(jié)左右的程序存儲(chǔ)空間。當(dāng)程序比較復(fù)雜時(shí),它的 優(yōu)點(diǎn)就體現(xiàn)得更明顯。讀者若想更全面了解 RTX51 Tiny 多任務(wù)實(shí)時(shí)操作 系統(tǒng),請(qǐng)閱讀 RTX51 Tiny 的幫助文件或其它相關(guān)文件。同時(shí), RTX51 Tiny 任務(wù)必須是用 _task_聲明的 C 函數(shù),返回值和參數(shù)都必須是 void 類型的, RTX51 Tiny黃忠南 基于單片機(jī)的俄羅斯方塊游戲設(shè)計(jì) 30 程序不需要用戶自已定義 main 函數(shù),取而代之 的是 , RTX51 Tiny 從任務(wù) 0開始執(zhí)行。 READY :任務(wù)正在等待運(yùn)行,在當(dāng)前運(yùn)行的任務(wù)時(shí)間片完成之后, RTX51 Tiny 運(yùn)行下一個(gè)處于“ READY”狀態(tài)的任務(wù)。 圖 317 任務(wù)狀態(tài)轉(zhuǎn)換圖 Fig 317 Task state transition diagram (4) RTX51 Tiny 的 同步機(jī)制 為了能保證任務(wù)在執(zhí)行次序上的協(xié)調(diào),必須采用同步機(jī)制。 ② TIMEOUT:由 os_wait 函數(shù)開始的時(shí)間延時(shí),其持續(xù)時(shí)間可由定時(shí)節(jié)拍數(shù)確定。與 TIMEOUT 不同的是,任務(wù)的節(jié)拍計(jì)數(shù)器不復(fù)位。 任務(wù)切換的流程如圖 318 所示 [8]。在此期間,任意數(shù)量的其他任務(wù)可以運(yùn)行。一般采用德國(guó) Keil Software公司提供的集成開發(fā)環(huán)境 μ Vision 3 IDE。 (2) RTX51 Tiny 系統(tǒng) 內(nèi)核 配置 建立了嵌入式應(yīng)用后, RTX51 Tiny 必須要配置。通過改變 中的設(shè)置來定制 RTX51 Tiny 的 系統(tǒng) 配置。 其次是函數(shù)的重入性問題。 ② 具體配置方法 為解決上述問題,本設(shè)計(jì) 禁止循環(huán)任務(wù)切換 ,采用協(xié)助任務(wù)切換的方式進(jìn)行多任務(wù)間的切換。缺省值是 5個(gè)時(shí)鐘節(jié)拍。函數(shù)os_wait 和函數(shù) os_switch_task 的不同之處在于 os_wait 函數(shù) 可以讓任務(wù)等待某一事件的發(fā)生,而函數(shù) os_switch_task 函數(shù) 直接切換到另一個(gè) 準(zhǔn)備 就緒的任務(wù)。 如圖 319所示為雙人模式下的 相關(guān)程序流程。為了使單片機(jī)能輸出美妙的音樂, 曲譜不僅 需要包含音 名 的信息,而且還要包含有節(jié)拍的信息。這些樂譜數(shù)據(jù)的生成是由樂譜生成器來產(chǎn)生的。 此外 STC12C5A60S2 單片機(jī)提供了用 PCA模塊實(shí)現(xiàn) 16 位定時(shí)器的功能。 數(shù)據(jù)處理過程中的相關(guān)計(jì)算如下: (1) 音頻脈沖 的產(chǎn)生方法: 算出某一音 頻的周期( 1/頻率),然后將此周期除以 2,即為半周期 的時(shí)間,然后利用 PCA 定 時(shí)器計(jì)時(shí)此半周 期時(shí)間,每當(dāng)計(jì)時(shí)到后就將輸出脈沖的 I/O 取 反,然后重復(fù)計(jì)時(shí)此半周期 時(shí)間再對(duì) I/O 取反 ,如此就可在 I/O腳上得到此頻率的脈沖。 計(jì)數(shù)脈沖值與頻率的關(guān)系公。 (3) 以 6MHz 晶振為例:要產(chǎn)生頻率為 523Hz,其周期 T=1/523=1912us,半周期為1912/2=956us,因此,只要令 定時(shí)器 計(jì)時(shí) 956us/1us=956。 音樂 播放的 實(shí)現(xiàn)方法 把樂譜中的音符對(duì)應(yīng)的頻率轉(zhuǎn)換成 PCA 定時(shí)器常數(shù),相應(yīng)的節(jié)拍變?yōu)?T1 常數(shù)。 CPU 執(zhí)行時(shí)間被劃分為若干時(shí)間片, RTX51 TINY 為每個(gè)任務(wù)分配一個(gè)時(shí)間片,在一個(gè)時(shí)間片內(nèi)允許執(zhí)行某個(gè)任務(wù),然后 RTX51 TINY 切換到另一個(gè)就緒的任務(wù)并允許它在其規(guī)定的時(shí)間片內(nèi)執(zhí)行。即 按照下列方法進(jìn)行編碼:一個(gè)字節(jié)共八位,高兩位表示節(jié)拍,三四位表示音高,低四位表示音符。我們知道,樂譜中每一個(gè)音符都與某一個(gè)特定的頻率相對(duì)應(yīng),產(chǎn)生某種頻率的輸出就可以得到相應(yīng)音符的聲音。其基本思路是利用 RTX51 Tiny 多任務(wù)實(shí)時(shí)操作系統(tǒng)來完成 多個(gè)事件的準(zhǔn)并行實(shí)行 運(yùn)行。特別地,必須在 每個(gè)任務(wù)的某個(gè)地方調(diào)用 os_wait函數(shù) 或 os_switch_task 函數(shù)。 IMESHARING 指定任務(wù)在進(jìn)行 Roundrobin 切換前執(zhí)行的 RTX51 Tiny 時(shí)鐘節(jié)拍數(shù)。 C51 編譯器允許使用多個(gè)數(shù)據(jù)指針。 ① 在 系統(tǒng) 默認(rèn) 配置 下應(yīng)用 程序設(shè)計(jì) 中出現(xiàn)的 問題 首先, 在雙人模式下,應(yīng)用程序中的兩個(gè)進(jìn)程都需要對(duì) LCD12864 顯示屏進(jìn)行讀賀州學(xué)院本科生畢業(yè)論文(設(shè)計(jì)) 33 寫操作。 默認(rèn) 包含在 RTX51 Tiny 庫(kù)中。 ② 運(yùn)行菜單命令 Project→ Options for Target‘ Target 1’,打開 Target 對(duì)話 框,并在對(duì)話框中選擇 Target 選項(xiàng)卡。 os_wait 函數(shù) 與 os_switch_task 函數(shù) 的所不同是:os_wait 函數(shù) 是讓任務(wù)等待一個(gè)事件,而 os_switch_task 函數(shù) 是立即切換到另一個(gè)就緒的任務(wù)。 如果禁止了循環(huán)任務(wù)處理 (如何禁止此方式在 RTX51 Tiny 系統(tǒng) 配置 一節(jié) 中 再作介紹) ,就必須讓任務(wù)以協(xié)作的方式運(yùn)作, 用戶 可以用 os_wait 函數(shù) 或 os_switch_task函數(shù) 讓 RTX51 Tiny切換到另一個(gè)任務(wù)而不是等待任務(wù)的時(shí)間片用完。 RTX51 TINY 是基于時(shí)間片調(diào)度算法的操作系統(tǒng),它支持的是非搶占式的任務(wù)切換。 ③ INTERVAL:由 os_wait 函數(shù)開始的時(shí)間間隔,其間隔時(shí)間可由定時(shí)節(jié)拍數(shù)確定。 ① SIGNAL:用于任務(wù)之間通信的位,可以用系統(tǒng)函數(shù)置位或清除。該狀態(tài)與“ READY”狀態(tài)相似,但由于是內(nèi)部操作過程使一個(gè)循環(huán)任務(wù)被切換而被冠以標(biāo)記。 (2) 系統(tǒng)調(diào)用函數(shù) 簡(jiǎn)介 RTX51 Tiny 內(nèi)核 完全集成在 KEIL C51 編譯器中,以系統(tǒng)函數(shù)調(diào)用的方式運(yùn)行,因此可以很容易地使用 KEIL C51 語(yǔ)言編寫和編譯一個(gè)多任務(wù)程序,并嵌入到實(shí)際應(yīng)用系統(tǒng)中,內(nèi)核提供 多組 函數(shù)供應(yīng)用程序引用。所有的運(yùn)行 時(shí)庫(kù) 常量
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1