一. 簡介
將前面幾篇文章介紹的幾個小游戲整合在一起,加入了簡陋的數字時鐘和圖片顯示功能,合在一起作為一個小項目分享給大家,希望大家喜歡。只需要兩個外設即可實現----顯示屏和紅外控制模塊
二. 功能介紹
作為一個小項目來說,功能還是比較齊全的。 1. 上電開機后,會進行一段開機動畫的加載。 2. 然后是主界面的顯示,一共包括三個部分,時鐘、游戲和相冊。 3. 通過紅外按鍵進行選擇。 4. 時鐘 :一個簡單的時分秒的顯示(#^.^#)。 5. 游戲 :游戲下面又有一個界面顯示,用來選擇對應的游戲,貪吃蛇,俄羅斯方塊和2048,都是一些常規的游戲。 6. 相冊:一個簡單的二值相冊(經過邊緣檢測后的圖像)顯示,包括了我預先存儲的三張圖片。 7. 貪吃蛇:貪吃蛇部分有必要單獨拿出來說說,其中加入了算法部分,利用A*算法,可以自動尋找到食物的位置,并指導貪吃蛇的移動。算法的學習與貪吃蛇結合也是一個值得學習的點,同時也是一個難點。 以上就是本次小項目全部功能了。
三. 實現框架介紹
這次的設計為裸機程序,所以只能采用前后臺系統的方式來實現。
前臺為我們的應用程序,后外為我們的中斷回調函數,里面主要用來紅外模塊數據的接收,以及時間的產生(貪吃蛇的移動以及俄羅斯方塊的下落)。
前臺程序簡要介紹
以貪吃蛇部分為例,進入到貪吃蛇部分后,就是清屏將上一個部分的顯示清除掉,然后是貪吃蛇的初始化以及使能定時器4,用來記錄數據,然后就是一個while循環了。根據不同的按鍵狀態調用不同的函數。退出這個部分也很簡單,修改當前的狀態,然后break就可以了。其他部分都是如此。
else if(CurrMode == Snake) //貪吃蛇游戲 { LCDDMAFullOn(BackGround); SnakeInit(); TIM_Cmd(TIM4,ENABLE); while(1) { if(KEYState == KEYLEFT) DirectionChange(MoveLeft); else if(KEYState == KEYRIGHT) DirectionChange(MoveRight); else if(KEYState == KEYUP) DirectionChange(MoveUp); else if(KEYState == KEYDOWN) DirectionChange(MoveDown); else if(KEYState == KEYRETURN) { CurrIndex = 0; SnakeDestory(); TIM_Cmd(TIM4,DISABLE); CurrMode = Main; break; } } }
2. 后臺程序簡要介紹
本次主要用到了兩個后臺程序,一個是紅外數據的接收
void EXTI0_IRQHandler(void){ if(EXTI_GetITStatus(EXTI_Line0) != RESET) { uint8_t data; data = InfraredDataRecv(); if(data == InfraredLeft) KEYState = KEYLEFT; else if(data == InfraredRight) KEYState = KEYRIGHT; else if(data == InfraredUp) KEYState = KEYUP; else if(data == InfraredDown) KEYState = KEYDOWN; else if(data == InfraredReturn) KEYState = KEYRETURN; delay_ms(10); /*清除標志位 */ EXTI_ClearITPendingBit(EXTI_Line0); }}另外一個是定時器中斷,其作用可以看注釋
void TIM4_IRQHandler(void){ if(TIM_GetITStatus(TIM4,TIM_IT_Update) == SET) //判斷是否發生中斷 { if(CurrMode == Snake)SnakeGame();//蛇的移動 else if(CurrMode == Tetris) { TetrisFlag = 1; //俄羅斯方塊下落標志 } else if(CurrMode == Clock) {DClockFlag=1;//數字時鐘加一標志 } TIM_ClearITPendingBit(TIM4,TIM_IT_Update); //清除中斷標識 }}
-
框架
+關注
關注
0文章
396瀏覽量
17268 -
程序
+關注
關注
115文章
3719瀏覽量
80356 -
數字時鐘
+關注
關注
2文章
149瀏覽量
20248
原文標題:STM32小項目分享
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論