標籤:
京信杯電子設計報告
題目:A題點陣遊戲機
隊員名單:
2014年12月
目錄
1.設計任務………………………………………………..3
1.1基本要求………………………………………………………….........3
1.2發揮部分……………………………………………………………….3
1.3說明 ……………………………………………………………….3
2.方案論證與比較………………………………………3
2.1 顯示部分……………………………………………………………….3
2.2 電路設計……………………………………………………………….3
2.3 電流放大部分………………………………………………………….4
2.4 元件選擇……………………………………………………………….4
3. 總體方案……………………………………………….4
3.1 工作原理……………………………………………………………….4
4.系統硬體設計…………………………………………4
4.1 STC89C58單片機最小系統………………………………………...4
5.系統軟體設計………………………………………….5
5.1 主程式流程………………………………………………………….5
5.2 Flappy bird子程式 ……………………………………………….6
5.3 打飛機程式………………………………………………………….6
6.測試與結果分析……………………………………...7
6.1 基本部分測試與分析……………………………………………….7
6.2 發揮部分測試與分析……………………………………………….7
7.設計總結……………………………………………... 7
8.參考資料……………………………………………...7
附錄……………………………………………………………7
1任務設計
1.1 基本要求:設計並製作點陣遊戲機。
1.1.1 使用16*16點陣實現最基本的顯示功能,能夠顯示數字0~9及全部英文字母;
1.1.2 能夠顯示中文漢字,漢字必須包括參賽隊員的學院和名字。
1.1.3 增加重力感應功能,能夠根據重力自動旋轉螢幕,顯示漢字;
1.1.4 所有的顯示方案均採用滾動顯示,可以看出滾動效果;
1.1.5系統採用電池供電,作品方便手持。
1.2發揮部分:
1.2.1在基本部分的基礎上,設計一個基於按鍵的FLAPPY bird遊戲;
1.2.2 遊戲機伴有相應開機的音樂。
1.2.3 遊戲機具有顯示得分等功能;
1.2.4遊戲機中障礙物的出現頻率或大小必須具有隨機性,否則發揮部分不得分;
1.2.5發揮你的想象力;
1.3 說明
1.3.1 重力感應可用水銀開關設計
1.3.2 推薦使用16*16點陣模組
1.3.3 遊戲中,被控制的小鳥具有重力加速度(非勻速下降)
2、方案論證
2.1 顯示部分:
顯示部分是本次設計最核心的部分,對於16*16點陣顯示有以下兩種方案:
方案一:採用四個鎖存器,便於實現螢幕的旋轉;弊端:布線困難,難以在一塊板子上實現,影響設計美觀。
方案二:採用解碼器,便於布線,但增加了螢幕翻轉難度,螢幕視覺暫留效果欠佳,閃爍明顯.。
鑒於上述原因, 我們採用方案二
2.2.電路設計
本次電路設計因不同於以前科協分割的模組任務,多模組集合在一起,布線難度大,有以下兩種方案供選:
方案一:畫pcb;電路美觀性和元件間的串連部分大大簡化,因未嘗試過此種板,且時間緊迫,故放棄
方案二:採用人工完全等效,即精確到洞洞板上的一點,畫出等效圖
鑒於上述原因,採用方案二
2.3電流放大部分
因電路設計問題,電流達不到點陣,數位管和蜂鳴器同時工作的要求,故須放大電流,有以下兩種方案供選:
方案一:採用三極體放大;三極體在組裝蜂鳴器電路過程中出現,但若用到點陣須32個三極體,大大加重了布線和焊接難度,影響了電路美觀。
方案二:採用鎖存器放大;大大簡化了電路實現難度
鑒於以上原因,選擇方案二。
2.4 元件選擇
選擇58單片機,74LS154N解碼器,16*16點陣,數位管,有源蜂鳴器,12.000晶振,發光二極體,三極體,排阻,電阻,電容,點觸開關,水銀開關和自鎖開關,兩塊3V紐扣電池。
3、總體方案
工作原理:
利用單片機STC89C58單片機作為本系統的中控模組。16*16點陣為主要的顯示模組,把單片機傳來的資料顯示出來,並且可以實現滾動顯示。利用開關按下接地傳遞給I/O口操作訊號。在顯示電路中,主要靠按鍵來實現各種顯示要求的選擇與切換。
4、系統硬體設計(單元電路設計及分析)
4.1 STC89C58單片機最小系統:
最小系統包括晶體振蕩電路和電源部分。圖2為STC89C58單片機的最小系統。
5、系統軟體設計
5.1主程式2
5.2 Flappy bird3
圖3 Flappy bird流程圖
5.3 打飛機程式 4
6、測試及其結果分析
6.1 基本部分測試與分析
基本要求部分的測試與分析:
(1)系統上電後,全屏點亮,沒有暗點。接著顯示隊員資訊。按黃色鍵後切換,進入遊戲。
(2)可以實現螢幕四個方向旋轉。
(3)可以實現文字滾動顯示
6. 2 發揮部分測試與分析:
(1) 當按下開關後播放開機音樂。
(2) 可以實現數位管顯示得分
(3) 遊戲中出現的障礙物具有隨機性,不會出現多次操作現象不變的bug。
(4)增加打飛機遊戲,運行正常
7、設計總結
全心準備了整整一個月,從最開始選定A題信心滿滿,到遇到挫折和時間衝突時信心動搖,再到分工不合理導致隊員個別擔子過重。從這一比賽中,我們收穫的絕不僅是一塊設計精美的板子,也收穫了電子設計的第一課:不拋棄,不放棄,堅持下去總會有收穫。
8、參考資料
[1]《51單片機C語言教程》 郭天祥 編 電子工業出版社
[2]《進階語言程式設計》 電子科技大學出版社
附錄:
遊戲主架程式
#include"head.h" //標頭檔,包括位定義,全域變數的定義和函式宣告
void main()
void music() //開機音樂
void int0() interrupt 1 //音樂函數調用,採用中斷0 控制節拍
void delay1 (unsigned char m) //音樂函數調用,控制頻率延時
void delayms(unsigned char a) //音樂函數調用,豪秒延時子程式
void hanzixianshi() //漢字顯示函數,在遊戲開始之前顯示學院,姓名
void flappy() //flappy bird遊戲
void plane() //飛機遊戲
void bird() // 小鳥遊戲調用,往下掉
void die_or_not() //小鳥遊戲判斷小鳥死不死
void shang() //小鳥遊戲調用,向上飛
void kaihuo() //飛機遊戲調用,發射子彈
void win_or_lose() //飛機遊戲調用,判斷是死還是得分
void zuohanshu() //飛機遊戲調用,左移函數
void youhanshu() //飛機遊戲調用,右移函數
void renew_table() //數組更新
void zhuan(uchar n,uchar k,uchar i0) //翻轉函數,針對不同的n和k,給將要打在屏上的數組(大小為16)賦值
uchar diandao(uchar temp) //由於板子設計的難度,P1口需進行上下顛倒
void delay(uint z) //延時函數
void unit() //滅所有燈
void timer() interrupt 3 //定時器,產生隨機數
void shumaguan(uchar k) //數位管顯示
點陣遊戲機設計報告