1. 程式人生 > >拉登是我罩的隊_軟體需求規格說明書

拉登是我罩的隊_軟體需求規格說明書

目錄
1. 引言 1
1.1. 編寫目的 1
1.2. 專案背景 1
2. 軟硬體需求 1
2.1. 硬體部分 1
2.2. 軟體部分 2
3. 模擬電路圖 2
4. 初步設計 2
4.1. 總流程 2
4.2. I2C通訊 4
5. 資料處理 4
5.1. 資料儲存 4
5.2. 編碼 4
5.3. 解碼 4
6. 獨特的想法 5
6.1. 使用I2c通訊 5
6.2. 編碼 5
6.3. 優化操作 5
7. 團隊分工與績效演算法 5
7.1. 團隊分工 5
7.2. 績效演算法 5
8. 程式相容性說明 6

 

 

 


團隊Github地址:https://github.com/kielingpao/team_work

1. 引言
1.1. 編寫目的
本文件編寫目的在於闡述專案的背景、意義,功能和需求分析、一些初步設計,資料處理,和一些程式相容性分析。
1.2. 專案背景
俄羅斯方塊是一款非常經典的遊戲,它曾經造成的轟動與經濟價值可以說是遊戲史上的一件大事。不少同齡朋友的童年都經歷過玩遊戲機,其中俄羅斯方塊是非常熱門的,幾乎家喻戶曉。這次做俄羅斯方塊可以說是為了緬懷童年,但是更重要的是,紀念青春。
2. 軟硬體需求
2.1. 硬體部分
(1) 硬體部分分為主機和遙控器,分別由兩個微控制器進行控制。
(2) 微控制器1:負責顯示遊戲的介面。使用數碼管顯示當前得分,使用不同顏色LED燈表示遊戲過程中和遊戲結束,使用液晶屏顯示介面,這個液晶的介面包括顯示遊戲區域、下一個方塊、得分、排行榜。另外還配有蜂鳴器,當方塊可以消除一行或多行的時候,蜂鳴器鳴響一秒;當遊戲結束的時候,蜂鳴器鳴響三秒。
(3) Ampire12864液晶:本程式所選擇的LCD是AMPIRE128×64的漢字圖形型液晶顯示模組,可顯示漢字及圖形。
(4) 微控制器2::負責控制遙控器操作。按鍵除去復位按鍵之外有六個:確定,左,右,加速,旋轉,暫停。使用者只需要操作遙控器則可進行遊戲。使用者根據按下“左,右”鍵來控制降落方塊的位置和形狀;通過按下“加速”鍵加速降落方塊的移動;通過按下“旋轉鍵”來控制降落方塊的形狀。
(5) 通訊:主機與遙控器之間使用 I2C 通訊,實現遙控器控制方塊的移動及旋轉。這個I2c通訊使用at24c02晶片作為中介,主要通過I2C通訊把資訊發給e2prom暫時儲存起來,然後e2prom也使用i2c通訊方式把資訊傳送給另外一個微控制器。I2C通訊是硬體部分的亮點。
(6) AT24C02晶片:排行榜和通訊都有用到AT24C02晶片,記錄所有在該程式進行遊戲的得分資料,即使是斷電,得分資料依然儲存在e2prom儲存器中。晶片如圖所示:

圖表 2
AT24C02晶片簡介:AT24C02為I2C匯流排序列EEPROM儲存器,它的儲存容量為4k位(4096位),儲存器的內部結構為512×8位,晶片具有防寫,可靠性高,擦寫次數可達100萬次,資料斷電儲存100年不變。
2.2. 軟體部分
(1) 降落的方塊真正的隨機化,可以實現隨機降落不同形狀的方塊。並且可以在螢幕上顯示下一個。
(2) 降落的方塊不可以越過障礙方塊。當已落下的方塊高度超過螢幕高度的時候遊戲結束。
(3) 當已落下的方塊之間填滿一行或多行的時候,則可以得到相應的得分,當消去1行的時候得1分;消去2行得2分;當同時消去3行的時候,得到6分;同時消去4行的時候,得到8分。
(4) 實現多種關卡,不同的起始情況,第二關加快了遊戲速度和增加了障礙方塊。在達到指定分數後顯示勝利標題,並切換進入下一關卡。
(5) 降落的方塊在越過一定位置的時候有機率切換方塊的形狀,以此來增加遊戲難度和豐富遊戲內容,增加可玩性。
(6) 實現了排行榜,得分資料通過i2c通訊方式寫進e2prom儲存器中。


3. 模擬電路圖
元器件有:兩個配置有11.0592HZ晶振、復位電路、電源的AT89C51微控制器,一排10K上拉電阻,一塊AT24C02晶片,藍色LED燈、綠色LED燈各一個,數碼管兩個,蜂鳴器一個,按鍵六個。

4. 初步設計
4.1. 總流程

圖表 4
(1) 程式初始化部分
a) 程式一開始就啟動定時器,但是沒有開中斷,為了通過定時器獲取隨機數種子,而且只有在遊戲進入按鍵迴圈的時候才需要靠中斷來控制方塊下降和重新整理遊戲區域。
b) LCD液晶也初始化,開螢幕顯示、開游標、設定顯示起始行、設定頁地址、列地址。
c) I2c的資料線和時鐘線拉高,隨時準備通訊。
d) 控制數碼管顯示分數零。
(2) 遊戲主體
a) 按鍵迴圈,獲取按鍵資訊控制方塊的移動旋轉快速下降和遊戲暫停。
b) 當程式檢測遊戲結束或者得分超過指定分數的時候,分別設定遊戲結束標誌位和過關標誌位,while迴圈檢測到這兩個標誌位就退出按鍵迴圈。
c) 如果是遊戲結束標誌位,則新一輪遊戲速度不變、沒有障礙方塊,如果是過關標誌位,則加快遊戲速度、設定障礙方塊。
4.2. I2C通訊
兩個微控制器之間使用i2c通訊。一般微控制器之間不適用i2c通訊,因為微控制器本身不具備i2c匯流排介面,所以只能根據I2c協議模擬時序進行通訊。初步設想微控制器2負責把按鍵資料使用i2c通訊方式傳送到e2prom的固定地址,然後e2prom也使用i2c通訊把資訊傳給微控制器1,然後微控制器1把一個無關資料放回該地址通知微控制器2已經收到了資料。
5. 資料處理


5.1. 資料儲存
1. 使用I2c通訊和e2prom AT24C02晶片儲存資料。
2. 微控制器2的按鍵資料通過i2c通訊寫進e2prom的特定地址,微控制器1每次需要按鍵資料的時候就通過這個地址取得資料。
3. 遊戲初始化的時候,使用i2c通訊方式讀取e2prom中的分數排名資訊,然後將排行榜顯示在液晶上面。
4. 遊戲結束的時候,使用i2c通訊方式讀取e2prom中儲存的得分排名資料,判斷得分是否能進排行榜,如果能則把資料i2c通訊寫進e2prom。
5.2. 編碼
使用編碼的思想。將方塊資料編碼為unsigned int兩個位元組16位型別,16位代表4*4,剛好可以代表一個方塊,並且每一位(也就是方塊的每一個方格點)代表液晶的4*4的畫素點。遊戲區域編碼為一個unsigned int陣列,陣列元素為16個,也就是16行,每一位也代表液晶的4*4畫素點。16個整型陣列就代表的整個遊戲區域,能代表液晶遊戲部分40*64的畫素點。所有的遊戲操作移動旋轉、判斷覆蓋、消行、遊戲結束等等全部進行編碼成整形資料,直接對這個陣列操作,而不是直接對液晶操作。
5.3. 解碼
每隔一定時間將遊戲區域資料進行解碼,反應在液晶上面。由於液晶每次寫資料都是在某一頁的某一列寫一個位元組,也就是豎的八行,寫資料是位元組倒序的,方塊方格點代表液晶的4*4畫素點,所以每次讀取編碼的豎著的兩位(方格點),若是11,則在液晶部分依次寫1111 1111, 1111 1111, 1111 1111, 1111 1111。若是10,則在液晶部分依次寫0000 0000,0000 0000,1111 1111, 1111 1111。若是01,則在液晶部分依次寫1111 1111, 1111 1111,0000 0000,0000 0000。若是00,則在液晶部分依次寫0000 0000,0000 0000,0000 0000,0000 0000。依此類推,直到遊戲區域全部重新整理。
6. 獨特的想法

6.1. 軟體模擬I2C通訊協議
51微控制器本身不具備I2C匯流排,不支援I2C通訊,要使用I2C通訊就要對微控制器根據I2C協議的時序進行模擬。一般微控制器與微控制器之間的通訊方式是串列埠通訊。那種通訊能實現即時通訊,不需要使用中介,不需要延時。
排行榜的得分資訊也是用I2c通訊方式儲存在rom儲存器中,所以即使是斷電,資訊仍然能保留不丟失。
6.2. 編碼用最少的數字儲存全部資訊
用最少的數字儲存全部資訊,只需要18個整型變數就可以表達整個遊戲的所有內容和資料。在需要的時候進行解碼。將方塊和遊戲區儲存在整型陣列中,每一位代表液晶的4*4畫素點,移動、旋轉、下降都是對這個陣列進行操作,而不是直接對液晶進行操作。定時器每隔一定時間對這些資料的每一位進行解碼,檢測每一位,若該位為1則在液晶上寫4*4的黑點,若該位為0則在液晶上寫4*4的白點,把每一位資料都反應在液晶上。這樣處理起來很容易,而且可以成為一個通用的方法,以後處理液晶我都可以使用這種思想,把區域編碼,用陣列儲存,然後再在液晶外面、數組裡面進行任何我需要的操作,需要顯示的時候,再把資訊解碼顯示到液晶上面。
6.3. 其他優化操作
使用定時器中斷每隔一定時間重新整理遊戲區域,而不是對整個液晶進行重繪。
只有在定時器中斷重新整理遊戲區的時候才需要操作液晶,其他任何遊戲操作都不需要處理液晶的實現,只是對陣列這個簡單的地方進行操作。
7. 團隊分工與績效演算法
7.1. 團隊分工
通訊:鄭鑑
演算法:鄭鑑
介面:餘偉淇
測試:餘偉淇
文件:餘偉淇
7.2. 績效演算法

成員的績效 = 團隊獲得的分數 + 個人的團隊貢獻分
在專案alpha 和 beta 階段評審後, 團隊會得到一個專案分數(每個成員都會得到同樣的分數,做為自己的原始分數的一部分)。團隊成員的努力程度不同,達成目標的程度不同,幫助同伴的付出不同,那就要在“團隊貢獻分” 上有所區分。 所有人貢獻分的總和為 20N,其中N為團隊的人數。 在alpha/beta 之後,團隊按照自己制定的規則,把 (20N)瓜分給每人,這就是 “團隊貢獻分”。
要求:請每人閱讀教材 “人、績效和職業道德”一章,然後團隊開一個討論會,協商討論團隊貢獻分的分配規則。每人得分為自然數,並且每個人分數不能相同。 請寫一個團隊部落格詳細說明每個團隊的成員計劃如何幫助團隊完成任務,以及團隊貢獻分的分配規則。

8. 程式相容性說明
keil4,proteus7.8,zimo211,windows 7、windows10開發環境

 matlab編寫字模提取軟體