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

目錄
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. 程序兼容性說明 6git

 

 

 


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

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存儲器中。
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燈各一個,數碼管兩個,蜂鳴器一個,按鍵六個。windows

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. 團隊分工測試


通訊:軟件模擬I2C通訊協議:鄭鑑優化

硬件搭建:鄭鑑編碼

中斷、定時器控制、操做系統:鄭鑑spa

音頻模塊:軟件解碼MP3文件需考慮解碼速率與CPU主頻、文件系統、DMA控制數據傳輸:鄭鑑操作系統

算法:旋轉算法、消行算法、遊戲結束算法:餘偉淇

界面:餘偉淇

測試:餘偉淇

文檔:餘偉淇


7.2. 績效算法

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

8. 程序兼容性說明
keil4,proteus7.8,zimo211,windows 七、windows10開發環境

 matlab編寫字模提取軟件

相關文章
相關標籤/搜索