一. 简介
将前面几篇文章介绍的几个小游戏整合在一起,加入了简陋的数字时钟和图片显示功能,合在一起作为一个小项目分享给大家,希望大家喜欢。只需要两个外设即可实现----显示屏和红外控制模块
二. 功能介绍
作为一个小项目来说,功能还是比较齐全的。 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文章
403浏览量
17559 -
程序
+关注
关注
117文章
3798浏览量
81500 -
数字时钟
+关注
关注
2文章
151浏览量
20462
原文标题:STM32小项目分享
文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论