基于s3c44b0ARM飞机游戏课程设计报告

上传人:B**** 文档编号:51481560 上传时间:2022-01-26 格式:DOCX 页数:32 大小:188.60KB
收藏 版权申诉 举报 下载
基于s3c44b0ARM飞机游戏课程设计报告_第1页
第1页 / 共32页
基于s3c44b0ARM飞机游戏课程设计报告_第2页
第2页 / 共32页
基于s3c44b0ARM飞机游戏课程设计报告_第3页
第3页 / 共32页
资源描述:

《基于s3c44b0ARM飞机游戏课程设计报告》由会员分享,可在线阅读,更多相关《基于s3c44b0ARM飞机游戏课程设计报告(32页珍藏版)》请在装配图网上搜索。

1、课设报告题目:飞机大战班级:姓名:学号:指导老师:日期:年月日目录1摘要 .32.1功能需求 .32.2设计要求 .33硬件设计及描述 .43.1总体描述 .43.2系统总体框图 .43.3 各部分硬件介绍 .43.31 输入模块 .43.32 输入模块 .54软件设计流程及描述 .64.1程序流程图 .64.2主要函数模块及功能 .74.2.1 控制飞机模块 .74.2.2 碰撞检测模块 .85功能实现 .10液晶显示 .106心得体会 .121 摘要三星公司推出的16/32 位 RISC 处理器S3C44B0X 为手持设备和一般类型的提供了一种高性能低成 本的解决 方案。为了降低整 个系统

2、的成本,S3C44B0X 内部集成了丰富的片内外设,包括:8K 的 cache,可选的片内SRAM,LCD控制器,带有握手信号的双同道UART,4 同道DMA, 系统管理器(片选逻辑, FP/EDO/SDRAM 控制器 ),带有 PWM 功能的5 通道定时器, I/O端口, RTC 实时时钟, 8 通道 10 位 ADC,IIC 、IIS 总线接口,同步SIO 接口以及用于时钟管理的PLL 锁相环。S3C44B0X 极低的功耗以及简单, 只能的全静态设计使其非常适合对成本和功耗敏感的项目。 同时 S3C44B0X 还采用了一种新的总线结构, 即 SAMBAII( 三星 ARM CPU 嵌入式微

3、处理器总线结构 )S3C44B0X 通过集成全面、通用的片内外设,大大减少了系统电路中除处理器外的器件需求,从而最小化系统成本。2.1功能需求1. 以动漫的形式显示开机界面和加载游戏进入。2. 以位图的方式显示不同飞机的图像,开机界面。3. 使用碰撞检测机制,实现飞机与飞机,飞机与子弹的检测。4. 实现按键的控制,对子弹的发送和飞机的上下左右的自由控制。5. 敌机的随机出现,并实现无限架敌机,且游戏主界面需每次出现三架飞机,供我机击落。6. 对击落的敌机实现计数, 随着敌机击落的不同数量设置不同的难度级别。7. 飞机实现三次的生命值,即有三次机会。2.2设计要求1. 界面流畅,操控飞机灵活。2

4、. 碰撞检测的算法设计3 硬件设计及描述3.1总体描述在实验开发板上,根据功能需求,设定了控制模块由具有在线编程功能, 低功耗,输入模块由按键和触屏控制,加载,通过按键实现飞机的上下移动, 避开与敌机的相撞,机击毁。ARM7 为控制核心,通过触屏实现游戏的子弹的发射可以将敌3.2系统总体框图按键模块信号输入ARM7信号输出液晶显示3.3 各部分硬件介绍3.31 输入模块矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。如图 6 7所示,一个 3 X 3的行、列结构可以构成一个有 9个按键的键盘。同理一个 4 X 4的行、列结构可以构成一个含有 16个按键的键盘等

5、等。很明显,在按键数量较多的场合,矩阵键盘与独立式按键键盘相比,要节省很多的 IO口。按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到 VCC 上。平时无按键动作时, 行线处于高电平状态, 而当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。 列线电平如果为低,则行线电平为低; 列线电平如果为高, 则行线电平亦为高。 这一点是识别矩阵键盘按键是否被按下的关键所在。 由于矩阵键盘中行、 列线为多键共用, 各按键均影响该键所在行和列的电平。因此各按键彼此将相互发生影响,所以必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。3.32 输入模块L

6、CD屏是中间夹有一些液晶材料的两块玻璃板,在此夹层的各个节点上通以微小的电流,就能够让液晶显现出图案,诸如计算器上的数字、PDA 上的文本、笔记本电脑显示器上的图像之类的东西。 LCD 的主要特点:首要的是它们体积轻而且薄,只有几英寸厚。 LCD 第二大优点就是能耗少,比 CRT 显示器少 90%。其三, LCD 的文本和图表显示要比 CRT 显示器上的清晰。目前的不足之处也是显而易见的,如视角窄,颜色表现力欠佳。图为 S3C44BOX 中内置的 LCD 控制器的逻辑框图, 它用于传输显示数据并产生必要的控制信号,如 VFRAME ,VLINE ,VCLK ,和 VM 。除了控制信号,还有显示

7、数据的数据端口VD7 : 0。 LCD 控制器包含REGBANK , LCDCDMA , VIDPRCS ,和 TIMEGEN 。REGBANK 具有 18 个可编程寄存器, 用于配置 LCD 控制器。 LCDCDMA 以自动地将显示数据从帧内存中传送到 LCD 驱动器中。为专用DMA,4 软件设计流程及描述4.1程序流程图开始初始化在 LCD 上显示游戏开始界面触摸 LCD ?Y加载游戏,进入游戏界面定时器开始工作,敌机自由滑落游戏开始碰撞检测飞机生命值为零?Y结束界面,显示击毁敌机数游戏结束图 4-1系统程序流程图4.2主要函数模块及功能控制飞机模块开始按键值 Key 为2?N按键值 Ke

8、y 为*?N按键值 Key 为0?N按键值 Key 为#?NY飞机向上Y飞机向左Y飞机向下Y飞机向右Y按键值 Key 为1?飞机发射子弹N结束采用扫描法判断按键的按下,根据对按键的不同键值实现对飞机的上下左右控制,每按一次,飞机均移动十个像素的位置。部分实现代码如下:key = Key_Get();switch(key) case 2:LCD_Clear_Plane(planeX,planeY, planeX+40, planeY+40);planeY -=10;break;case *:LCD_Clear_Plane(planeX,planeY,planeX+40,planeY+40);pl

9、aneX-=10;break;case 0:LCD_Clear_Plane(planeX,planeY,planeX+40,planeY+40);planeY+=10;break;case #:LCD_Clear_Plane(planeX,planeY,planeX+40,planeY+40);planeX+=10;break;case 1:OrnotDrawBullet();break;碰撞检测模块分别实现飞机与飞机的碰撞检测和飞机和子弹的碰撞检测。下图分别为两个检测的流程图。开始飞机撞毁?Y生命值减一生命值 maxy)(minx maxx )或者玩家游戏的飞机默认设置为三次机会,即有三次生

10、命值,当判断生命值5 ?敌机加速击毁数10 ?敌机加速游戏结束子弹的发射靠按键的按下实现,与敌机碰撞同样采用飞机与飞机的碰撞,当子弹与飞机碰撞的时候, 接触部分会出现局部的爆炸, 继而出现大爆炸, 同时随着击毁敌机的数量增多,游戏的难度增加,敌机下落的速度增加。5 功能实现液晶显示游戏初始化后,开机界面的显示。进入游戏界面,实现对敌机的打击。生命值的统计,击毁敌机数6 心得体会这次课程设计最大的收获就是只有把理论运用到实践中我们才能真正掌握所学的知识,在实践中,通过一系列问题的出现与解决,我对 ARM 有了更好的认识和理解,同时让我的动手能力有了一定的提高。本次课程设计是以小组合作的形式进行,

11、 在这个过程中我们小组成员之间互相学习,互相帮助,团结协作,弥补彼此的不足,经过成员间的讨论及请教其他小组成员,我们的问题迎刃而解。7 源代码/* Copyright (c) 2004 上海双实科技有限公司* All rights reserved.* 文件名称: main_lcd.c* 文件标识:程序实现体* 摘要:本文件是对 lcd 功能的测试* 当前版本: 1.0* 作者:刘征* 完成日期:* 取代版本:*作者:* 完成日期:*/*bmp 头文件*/#include 44b0x.h#include 44bConfig.h#include define.h#include LCD_Cont

12、rol.h#include LCD_BMP.h#include bmp_Color256.h/*key 头文件*/#include uart.h#include key.h#include #include /*Touch 头文件*/#include TouchPanel.h#define DISABLE_TIMER2(rTCON &= 0x1000)#define ENABLE_TIMER2(rTCON |= 0x1000)#define ENABLE_TOUCH(rPDATE &= 0xfe);/*变量*/extern GUI_BITMAP *pBitmap;char key = 0;/

13、键值int planeX=145,planeY=200;/ 初始飞机坐标int a5,b5,c5,d5;int i = 0 ,m = 0;int color2;int ArmyX3 ,ArmyY3,live_Army3;int live_plane = 1;/ 飞机生命值int Random1 = 80 , Random2 = 200 ,Random3 = 120;int Count ;int liveHeart3;int liveCount = 3;int AccSign1 = 1 , AccSign2 = 1 , AccSign3 = 1 , AccSign4 = 1;int HeartS

14、ign=1;/int live_Army = 1;/敌机生命值/*函数声明*/void LCD_Clear_Plane(int x0, int y0, int x1, int y1);void LCD_Clear_Bullet(int x0, int y0, int x1, int y1);void drawPlane(int x, int y, int arm);void changeColor(int a)int b;if(a = 0)b = a + 1;if(a = 1)b = a - 1;LCD_Draw_FillRect(70, 2, 75, 37,colora);LCD_Draw_

15、FillRect(70, 40, 75, 77,colorb);LCD_Draw_FillRect(70, 80, 75, 117,colora);LCD_Draw_FillRect(70, 120, 75, 157,colorb);LCD_Draw_FillRect(70, 160, 75, 197,colora);LCD_Draw_FillRect(70, 200, 75, 237,colorb);LCD_Draw_FillRect(245, 2, 250, 37,colora);LCD_Draw_FillRect(245, 40, 250, 77,colorb);LCD_Draw_Fil

16、lRect(245, 80, 250, 117,colora);LCD_Draw_FillRect(245, 120, 250, 157,colorb);LCD_Draw_FillRect(245, 160, 250, 197,colora);LCD_Draw_FillRect(245, 200, 250, 237,colorb);/*画飞机*/* 清除飞机运动轨迹*/void LCD_Clear_Plane(int x0, int y0, int x1, int y1)int x,y;for(x = x0;x = x1; x+)for(y = y0;y = 5)i = 0;/避免越界void

17、 avoidCrossLine()if(planeX 205)planeX = 205;if(planeY 200)planeY = 200;void movePlane()int minx3;int miny3;int maxx3;int maxy3;int k = 0;key = Key_Get();switch(key) case 2:LCD_Clear_Plane(planeX,planeY,planeX+40,planeY+40);planeY-=10;break;case *:LCD_Clear_Plane(planeX,planeY,planeX+40,planeY+40);pl

18、aneX-=10;break;case 0:LCD_Clear_Plane(planeX,planeY,planeX+40,planeY+40);planeY+=10;break;case #:LCD_Clear_Plane(planeX,planeY,planeX+40,planeY+40);planeX+=10;break;case 1:OrnotDrawBullet();break;avoidCrossLine();for(;k0)? ArmyXk + 2:planeX; minyk = (ArmyYk + 2 - planeY 0)? ArmyYk + 2:planeY; maxxk

19、= (ArmyXk - 10 - planeX 0)? planeX + 40:ArmyXk + 30; maxyk = (ArmyYk + 2 - 10 - planeY 0)? planeY + 40:ArmyYk +30 + 2;for(k = 0;k maxxk | minyk maxyk)elseif(live_plane = 1 & live_Armyk = 1)/live_plane = 0;live_Armyk = 0;LCD_Clear_Plane(ArmyXk,ArmyYk,ArmyXk+30,ArmyYk + 30);drawBonb(planeX - 10,planeY

20、 - 10, 0);Delay(2000);LCD_Clear_Plane(planeX-10, planeY- 10, planeX+ 25,planeY + 18);LCD_Clear_Plane(planeX, planeY , planeX + 40, planeY + 40);LCD_Clear_Plane(ArmyXk, ArmyYk + 2, ArmyXk + 30,ArmyYk + 30 + 2);drawBonb(planeX - 10, planeY - 10 , 1);Delay(2000);LCD_Clear_Plane(planeX-10,planeY-10,plan

21、eX+30,planeY + 20);/ planeX=-40,planeY=-40;liveCount -;if(liveCount 1)live_plane = 0;if(live_plane = 1)drawPlane(planeX,planeY ,1);void LCD_Clear_Bullet(int x0, int y0, int x1, int y1)LCD_Clear_Plane(x0, y0, x1, y1);/*子弹*/void draw_Bullet()int j;LCD_Draw_FillRect(a0, b0, c0, d0,0x00);LCD_Draw_FillRe

22、ct(a1, b1, c1, d1,0x00);LCD_Draw_FillRect(a2, b2, c2, d2,0x00);LCD_Draw_FillRect(a3, b3, c3, d3,0x00);LCD_Draw_FillRect(a4, b4, c4, d4,0x00);Delay(800);LCD_Clear_Bullet(a0, b0, c0, d0);LCD_Clear_Bullet(a1, b1, c1, d1);LCD_Clear_Bullet(a2, b2, c2, d2);LCD_Clear_Bullet(a3, b3, c3, d3);LCD_Clear_Bullet

23、(a4, b4, c4, d4);for(j = 0;j 5; j+)for(m = 0;m = ArmyXm & aj = ArmyYm & bj 0)bj -= 10;dj -= 10;if(bj 0)aj = 0;bj = 0;cj = 0;dj = 0;void ArmyMove(int x, int y, int a)LCD_Clear_Plane(x, y, x+30, y+30);drawPlane(x,y+2,0);/ Delay(800);/画三个红心void LiveHeartDraw()int k;liveHeart0 = 0;liveHeart1 = 20;liveHe

24、art2 = 40;Lcd_GotoXY(1,3);Lcd_printf(RED, 生命值 :);for(k = 0; k 215)Random1=80;Random3+=10;if(Random3215)Random3=120;void _irq Timer3_Int(void)/*Clear flag */rI_ISPC = BIT_TIMER3;Random2+;if(Random2215)Random2=80;if(live_Army0 = 1)ArmyMove(ArmyX0, ArmyY0, 0);ArmyY0 += 2;if(ArmyY0 240 )ArmyY0 = -4;Army

25、X0 =Random1;if(live_Army0 = 0)ArmyY0 = -4;ArmyX0 =Random1;live_Army0 = 1;if(live_Army1 = 1)ArmyMove(ArmyX1, ArmyY1, 0);ArmyY1 += 2;if(ArmyY1 240 )ArmyY1 = -2;ArmyX1 = Random2;if(live_Army1 = 0)ArmyY1 = -2;ArmyX1 =Random2;live_Army1 = 1;if(live_Army2 = 1)ArmyMove(ArmyX2, ArmyY2, 0);ArmyY2 += 2;if(Arm

26、yY2 240 )ArmyY2 = -4;ArmyX2 =Random3;if(live_Army2 = 0)ArmyY2 = -4;ArmyX2 =Random3;live_Army2 = 1;void _irq Timer4_Int(void)/*Clear flag */rI_ISPC = BIT_TIMER4;draw_Bullet();void Timer2_Init(void)rTCON&=0xffff0fff;rTCFG0&=0xffff00ff;rTCFG0|=0xf900;rTCFG1&=0xfffff0ff;rTCFG1|=0x00000200;rTCNTB2=32 * 1

27、20;rTCON|=0x00002000;rTCON&=0xffff0fff;rTCON|=0x0000c000;SetISR(pISR_TIMER2,(int)Timer2_Int);EnableIrq(BIT_TIMER2);ENABLE_TIMER2;void Timer3_Init(void)rTCON&=0xfff0ffff;rTCFG0&=0xffff00ff;rTCFG0|=0xf900;rTCFG1&=0xffff0fff;rTCFG1|=0x00002000;rTCNTB3=32 * 100;rTCON|=0x00020000;rTCON&=0xfff0ffff;rTCON|

28、=0x000c0000;SetISR(pISR_TIMER3,(int)Timer3_Int);EnableIrq(BIT_TIMER3);rTCON|=0x00010000;void Timer4_Init(void)rTCON&=0xff0fffff;rTCFG0&=0xff00ffff;rTCFG0|=0xf900;rTCFG1&=0xfff0ffff;rTCFG1|=0x00020000;rTCNTB4= 32 * 200;rTCON|=0x00200000;rTCON&=0xff0fffff;rTCON|=0x00c00000;SetISR(pISR_TIMER4,(int)Time

29、r4_Int);EnableIrq(BIT_TIMER4);rTCON|=0x00100000;/开机动漫void drawBackground()BMP_Init(backPlane);GUI_DrawBitmap(pBitmap,60,180);Delay(10000);LCD_Clear_Plane(60, 180, 95, 215);BMP_Init(bonb1);GUI_DrawBitmap(pBitmap,60,180);Delay(7000);LCD_Clear_Plane(60, 180, 90, 210);BMP_Init(backPlane);GUI_DrawBitmap(

30、pBitmap,130,180);Delay(10000);LCD_Clear_Plane(130, 180, 165, 215);BMP_Init(bonb1);GUI_DrawBitmap(pBitmap,130,180);Delay(7000);LCD_Clear_Plane(130, 180, 165, 210);BMP_Init(backPlane);GUI_DrawBitmap(pBitmap,210,180);Delay(10000);LCD_Clear_Plane(210, 180, 245, 215);/进度条void drawProgressBar()int x = 10,

31、y = 120, n = 0;LCD_Clear_Plane(0, 0, 320, 240);Lcd_GotoXY(8,6);Lcd_printf(RED, 正在进入游戏,请稍候.);LCD_DrawRect(10, 120, 300, 140, GREEN);for(;n 5; n+)LCD_Draw_FillRect(x, y, x + 58,y + 20,GREEN);Delay(10000);x += 58;LCD_Draw_FillRect(0, 0, 320, 240,0xff);Timer2_Init();Timer3_Init();/ Timer4_Init();/清空右边小心加速字幕void Right_Words()Lcd_GotoXY(35,7);Lcd_printf(RED, 小 );Lcd_GotoXY(35,8);Lcd_printf(RED, 心 );Lcd_GotoXY(35,9);Lcd_printf(RED, 加 );Lcd_GotoXY(35,10);Lcd_printf(RED, 速 );De

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!