使用單晶片 HT32F1656 以及 16*16點矩陣,所開發出的一套結合紅綠燈元素的養寵物小遊戲。
使用單晶片HT32F1656及其擴充板做開發。
透過軟體-keil µVision
編譯單晶片,結合16*16點矩陣與擴充板上的七段顯示器、Led、指撥開關、按鈕,所開發出的一套養寵物遊戲。
- 遊戲內容
- 裝置設計
- 使用元件
- 介面配置
- LED點矩陣設計
- Decoder Data Sheet 研究
- 動畫編碼
- 程式設計
- 有限狀態機設計(FSM Design)
- 程式流程圖
- Main程式碼
- Prototype
- 小綠人會遵守紅燈停、綠燈行的交通守則來顯示動畫。
- 過程中,小綠人的能量會逐漸下降,並有一定機率會生病。
- 玩家須細心照顧小綠人,確保小綠人在執行任務的過程中能免於死亡。
-
使用元件
- 介面配置
16x16點矩陣是利用2個74HC138D, 2個74HC595D 所控制,2種decoder的功能都是可以利用3隻PIN腳控制8bit的輸出,由2個138 decoder控制「行」,2個 595 decoder控制「列」,並藉由視覺暫留的方式,將圖形呈現出來。
圖像顯示流程圖
74HC595D:
使用16x16點矩陣上的DI
,CLK
,LAT
腳位來輸出入 —— DI腳用於傳輸每bit的LED是否亮(HIGH=亮,LOW=不亮);CLK腳用於shift register clock,上升時發送data出去;LAT腳用於鎖存剛發送出來的data,給後面的138解碼器做掃描讀取資料用。
每張圖共由32組8bit編碼 所組成,每次發送一組8bit的data出去(eg.0xF4),接著由138解碼器掃描輸出LED。因為速度很快,足以在人眼上產生視覺暫留效果,達到圖形顯現。
595解碼器主要負責程式碼Send
的部分。
74HC595D Decode訊號傳輸流程
void Send( unsigned char dat) //* LEDARRAY_G(138 IC) need be HIGH level(close)
{
...
}
74HC138D:
使用16x16點矩陣上的G,A,B,C,D腳位,D腳位是用來選擇2個138解碼器的其中一個,G腳位則是致能端,須在每次讀取圖形資料時關閉(G腳位設為HIGH為關閉,G=0x10)以避免重影。A,B,C腳位則可以組合出8種8bit的輸出,來掃描前端595解碼器所存入的data,最後將G腳位開啟致能,顯是圖形。
138解碼器主要負責程式碼Scan_Line
的部分。
74HC138D Decode輸出表
void Scan_Line( unsigned char m) //Scan colum
{
switch(m)
{
...
}
}
LED Matrix為共陽的16進制編碼,人物走動動畫共有7張圖,人物靜止動畫共有4張圖,人物餵食共2張圖,人物醫療共5張圖,人物生病共7張圖,以及人物死亡1張圖,總共有26張圖,26個矩陣,832個8bit編碼,6656個bit要數。編碼著實耗費時間體力!
請查閱:圖形編碼文件檔
有限狀態機(縮寫:FSM),用於表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。
- Main主程式流程圖
- 生病程式流程圖
- 紅燈程式流程圖
- 綠燈程式流程圖
- 黃燈程式流程圖
請參照此:Main程式碼