记忆训练器嵌入式课程设计报告.docx
《记忆训练器嵌入式课程设计报告.docx》由会员分享,可在线阅读,更多相关《记忆训练器嵌入式课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。
记忆训练器嵌入式课程设计报告
上海电力学院
嵌入式系统
课程设计报告
题 目:
记忆训练器
姓名:
王光东
学号:
14105016
院 系:
电子与信息工程学院
专业年级:
电工理论与新技术一年级
2015年 1 月 15 日
1.设计题目:
记忆训练器
屏幕显示记忆内容,然后开始输入倒计时,倒计时期间可以输入记忆内容,若输入正确,则加分,错误或超时则显示提示信号。
2.设计要求和目标
1.1基本要求
1.1.1记忆内容通过键盘输入,键盘各键对应值可以自己定义。
1.1.2屏幕显示倒计时和所输内容,输入内容后需点击确认键,然后程序判断并决定下一步动作。
1.2扩展内容
1.2.1加入不同评分规则,如可基于单个字符对错评分。
1.2.2设置不同游戏级别。
3.硬件模块图和程序流程图
硬件:
PC机,ARM仿真器,S32410实验箱
软件:
KeiluVision
图1.程序流程图
图2.watchdog中断流程图
图3.TSP中断流程图
图4.系统结构框图
4.程序说明
4.1烧入程序运行后,LCD显示开机界面,数码管显示学号,然后按keypad任意键,LCD显示游戏说明(游戏时,你也可以通过按‘FUN’键查看游戏说明),再按任意键,LCD清屏,正式进入游戏。
4.2游戏说明
(1).用keypad选择游戏难度(其中A、B、C键分别对应easy,normal,hard三个难度),按键按下后,会语音(可优化:
加入代码,使可以用keypad的一个键来切换是否语音播报)提示您选择游戏关卡;
(2).用keypad选择游戏关卡(其中0~9键分别对应1~10十个游戏关卡,而且难度递增,每关的难度系数是通过改变记忆时间(显示所有图片正面的时间)和回忆时间(进度条显示的最大时间,也是该关结束后数码管前四位上会显示的时间,即规定时间)来确定的),按键按下后,产生一串随机数,根据这串数据显示出所有图片的正面,并给您留出一定的时间来记忆图片的位置,时间到后,全部翻转到背面(在这之前请不要触摸屏幕);
(3).待图片都翻转过来后,进度条开始倒计时,这时请您根据您刚才的记忆(有些关卡比较难,没有留出记忆时间,其实这样更有意思,因为您可以边找边记,也更利于训练记忆),在规定的时间内找出所有的相同图片,具体步骤如下:
首先点击(请尽量用大拇指,像按指纹一样来点击屏幕)一张图片,待它翻转到正面并看清是什么动物的图片后,根据您的记忆寻找相同动物的图片的位置并点击,如果图片一样,则两张图片一起消失,如果不一样,则都翻转到背面(有待优化:
(1)硬件上的bug,有时会出现,您按的是某处的坐标,而触摸屏测的却是另外一处的坐标,这会导致游戏出错(因为如果图片消失后,那么这些地方不能再被触摸),请用软件解决这个问题;
(2)软件上的小缺点,一张图片如果被一连触摸了两次,程序会判断出您找到了一对图片,并将该图片隐藏,进而出现错误,请解决该问题),如此循环下去,一共分三种结果(要是您能在规定的时间内找出所有的相同图片,则LCD清屏后显示成功图片,数码管前四位显示该关的规定时间且后四位显示您完成该关后还剩余的时间(可优化:
你可以换算出分数并在数码管上显示),并进行语音播报“恭喜你通过了”,该关结束;要是您没能在规定的时间内找出所有图片,则LCD清屏后显示失败图片,数码管前四位显示该关的规定时间且后四位显示“0000”,并进行语音播报“对不起你失败了”,该关结束;正在游戏中时,如果您不想玩这关了,则可通按keypad的任意键使该关停止,此时数码管会在前四位显示该关的规定时间且后四位显示该关停止后还剩余的时间,该关结束(可优化:
您可以加入代码,使按任意键后又可接着玩)。
在每关的最后三秒,都会通过蜂鸣器报警和led闪烁来提醒您时间还剩三秒);
(4).每关结束后,您只需重复
(1)
(2)(3)三个步骤即可继续游戏。
5.主要程序代码说明
5.1主函数:
硬件的初始化,以及大循环的架构
5.2Keypad按键处理函数部分代码
5.3随机数的产生
(1)、方法一:
用变化的看门狗寄存器的值作为srand()函数的形参,使其产生变化的种子给rand()函数使用,从而使得每次调用下面的函数都能产生不同的随机数序列。
voidnormal_Random_series(void);
voidhard_Random_series(void);
(2)、方法二:
用洗牌算法产生随机数,在此不再介绍,请参看函数
voideasy_Random_series(void);
5.4LCD各种显示函数
5.5数码管显示函数
5.6Watchdog计时中断处理函数
部分计时代码
5.7TSP触摸屏中断处理函数部分代码
触摸屏上点击第一张和第二张图片的处理部分
触摸屏上点击的第一张和第二张图片进行比较的处理部分
5.8I2S语音播报函数
5.9报警函数
6.课程设计现象
详见视频。
7.课程设计心得
首先,感谢老师给我们提供了学习嵌入式的这个平台,不远万里,担着很大风险从南汇校区给我们带来了实验箱,后来又给我们补买了电源线,我们都很感动,遇到如此负责有担当的老师,我们深感荣幸。
通过本次课程设计,让我对S3C2410实验箱硬件模块以及keil编程软件有了更加深刻地了解:
硬件上,用到了开发箱的LCD、LED、8-LED、keypad、IIS、蜂鸣器、watchdog、TSP触摸屏等,使我对这些模块的原理有了更深的认识;软件上,通过本次课程设计让我加深了C语言的认识,更是用到了很多指针的知识,更加熟悉了多文件编程方法及技巧,总体上提高了自己的编程能力;在keil的使用上,学会了通过设置断点逐步运行查找程序中的问题及阅读错误提示语句进行纠错的方法。
这次课程设计的完满收工,使我收获很多,首先是提高了我对程序的分析能力、程序结构设计的能力。
其次,在和老师同学的交流中,我明白了个人能力是有限的,集思广益才能获得更大突破,是学习新知识的最有效捷径,闭门造车、夜郎自大是不可取的,另外,有想法就要想方法实现它。
最后,我想说,嵌入式是一门实践性很强的学科,唯有不断的实践才能真正地掌握它,只有多读多想多写,编程能力才能够提高,才能写出更简练、实用高效的代码。
致谢
不得不说,这次课程设计给我带来了无穷的乐趣和十足的成就感,在此我要深深地感谢带我进入嵌入式世界以及给予我的设计做了详细指导的沈文忠老师和谢富强师兄,沈老师和谢师兄广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我深深感动,定会让我终生受益。
感谢一起上课的兄弟姐妹们,我想说有你们的陪伴真好。
最后祝愿我们这门课会越办越好,祝福沈老师和谢师兄身体健康,工作顺利!