1、 目录一、 引言2二.CCS简介2三、设计题目3四、设计目的与要求34.1设计目的34.2设计要求3五设计流程图4六总体设计46.1程序设计技术要点4七整体程序设计全部代码15八程序的调试25九.DSP课程设计心得26十参考资料28一、 引言DSP即为数字信号处理器(DigitalSignalProcessing),是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(DigitalProcessor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像
2、处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。二.CCS简介 CCS是TI公司推出的用于开发320系列DSP芯片的集成开发环境,采用Windows风格界面。集编辑、编译、链接、软件仿真、硬件调试及实时跟踪等功能于一体,包括编辑工具、工程管理工具和调试工具等。 CCS有两种工作模式,即软件仿真器模式:可脱离DSP芯片,在PC机上模拟DSP的指令集和工作机制,主要用于前期算法实现和调试。 硬件在线编程模式:可实时运行在DSP芯片上,与硬件开发板相结合在线编程和调试应用程序。 使用CCS开发应用程序的
3、一般步骤: 打开或创建一个工程项目文件 编辑各类文件 对工程项目进行编译 对结果和数据进行分析和算法评估三、设计题目 利用dsp技术和ccs软件编写一个快快吃豆小游戏。 程序功能 快快吃豆游戏是一个经典小游戏,进入游戏后,通过键盘上的上下左右键来控制红色的球(自己)移动方向,在吃掉黄豆的同时要注意躲避绿色的球(敌人),若将地面上的所有黄豆吃完,则游戏成功,进入赢得画面;若不幸碰到敌人则游戏结束,进入输的画面。四、设计目的与要求 4.1设计目的 通过DSP课程设计的综合训练,培养我们实际分析问题、编程和动手能力,据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容;通过调试典型例题或习题积
4、累调试C程序的经验;通过完成辅导教材中的编程题,逐渐编程能力、用计算机解决实际问题的能力。最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容。 4.2设计要求1.分析课程设计题目的要求2.写出详细设计说明3.编写程序代码,调试程序使其能正确运行4.设计完成的软件要便于操作和使用5.设计完成后提交课程设计报告五设计流程图 系统模块图 程序流程图六总体设计6.1程序设计技术要点(1) 敌人的移动过程 为了让游戏中的敌人自己行走,但是又不固定在两点间徘徊,在该游戏中我们采用了randomize函数对敌人的初始位置随机排列,在移动过程中对敌人的移动方向随机赋值,且新的方向不可以和原来的方向
5、相反,若敌人碰到墙壁,则返回原始位置,等待下一次的随机方向。游戏中的技术应用代码如下:void movethem(struct play *them)/*them的移动过程*/int i,loop;rand();/*随机排列,任意打乱*/for(i=0;i5;i+)/*只要控制者在身边就立即靠上去*/if(you.x=themi.x&(themi.y+1)=you.y)themi.y+;else if(you.x=themi.x&(themi.y-1)=you.y)themi.y-;else if(you.y=themi.y&(themi.x+1)=you.x)themi.x+;(themi.
6、x-1)=you.x)themi.x-;elseloop:xxi0=rand()%4+1;/*这里的方向采取随机赋值,原则是新的方向不可以和原来的方向相反*/if(xxi0=1&xxi1=2|xxi0=2&xxi1=1)goto loop;if(xxi0=3&xxi1=4|xxi0=4&xxi1=3)xxi1=xxi0;if(xxi0=1)/*四个方向*/themi.x-;if(athemi.xthemi.y=2)/*假如碰墙壁的话就回到原来的地方等待随机的方向*/themi.x+;goto loop;else if(xxi0=2)themi.x+;if(athemi.xthemi.y=2)t
7、hemi.x-;else if(xxi0=3)themi.y+;themi.y-;else if(xxi0=4)themi.y-;themi.y+;(2) 按键控制游戏 在快快吃豆游戏中,主要使用按键来控制游戏的整个过程,例如按任意键进入游戏界面,按Esc键退出游戏,以及使用上下左右按键来控制红球的移动,因此在快快吃豆游戏中如何响应键盘操作,成为了游戏设计的重中之重。在快快吃豆游戏中根据按键选择进入游戏还是退出游戏。应用代码如下;key=read_key(0);/*接收键盘按键*/if(key=KEY_CANCEL)exit(0);else在游戏实现过程中,接收按键,通过kbhit()函数判断
8、是否有键按下,若无按键按下,函数返回0,则执行循环语句,令游戏界面中敌人随机走动。接收按键相关代码如下:key=read_key(2);while(!read_key()/*当无按键时敌人自己移动 */若有按键按下,则返回对应键值,跳出while循环,再次接收按键之值,进行比较,执行相应的按键功能。6.2实现过程 (1)在css3.3中建立一个c文件。 (2)该游戏的预处理实现部分。对游戏中应用到的系统函数进行“文件”处理,引用头文件。实现代码如下: #include reg5509a.hlcd.hstdlib.h#include stdio.h对项目中应用到的常量进行宏定义,例如,上下左右键
9、以及退出和回车按键的控制码在lcd.h头文件中进行宏定义。#define KEY10x11#define KEY20x12#define KEY30x13#define KEY40x14#define KEY50x21#define KEY60x22#define KEY70x23#define KEY80x24#define KEY90x31#define KEY100x32#define KEY110x33#define KEY120x34#define KEY_CANCELKEY4#define KEY_OKKEY7#define KEY_UPKEY3#define KEY_DOWNKE
10、Y11#define KEY_RIGHTKEY8#define KEY_LEFTKEY6定义数组地图,数组地图中不同的数字代表不同的含义,1代表可以移动的地方,2表示墙壁,3表示红球(自己),4表示绿球(敌人),并自定义了游戏中人物的结构体。 int a1520=2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,1,0,2, 2,1,2,2,2,1,1,2,1,1,0,0,0,1,1,4,1,1,0,2, 2,1,1,0,2,1,1,2,0,1,1,2,2,2,2,2,0,0,0,2, 2,4,
11、1,0,2,1,1,2,1,1,1,0,1,1,1,1,0,1,1,2, 2,1,2,1,2,1,1,2,1,3,2,2,1,1,1,1,2,2,1,2, 2,1,2,1,2,1,1,1,1,1,1,1,1,0,0,0,1,1,1,2, 2,1,2,1,0,1,1,1,1,2,1,0,1,2,2,2,1,1,1,2, 2,1,0,1,0,1,2,1,1,2,1,0,1,2,1,1,4,1,1,2, 2,1,0,2,0,1,2,1,1,2,1,0,1,2,1,1,1,1,1,2, 2,1,0,2,1,1,2,1,1,2,1,0,2,2,1,0,0,0,1,2, 2,1,1,2,1,1,2,1,1,2,1,0,2,1,1,2,2,1,1,2,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1