乒乓球弹壁模拟实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院嵌入式系统课程设计报告
题目: 乒乓球的弹壁模拟演示
姓名:
学号:
院系:电子与信息工程学院
专业年级:电子信息工程2010级
同组成员:
2013 年7月10日
一、实验目的
ARM9硬件平台程序设计要求通过对ARM硬件体系结构和S3C2410实验箱硬件模块的理解,能够自行创建、设置工程和编写程序代码、编译、调试运行来实现某种简单的应用,如计算器、电子闹钟等。加强对C语言和ARM汇编指令的编程锻炼以及ARM硬件接口功能的理解。
二、实验环境
硬件:PC机,ARM仿真器,S32410实验箱
软件:Keil uVision
三、实验内容
设计题目:乒乓球的弹壁模拟演示
设计要求:
在LCD 屏幕上模拟给乒乓球一初始速度,假设该环境无能量损耗,让乒乓球在该环境下进行弹壁运动。
1.基本要求
(1)该环境设有上下左右四面墙,让乒乓球在该环境下自由运动,碰到墙壁则反弹,否则按照匀速方式运动。
(2)在教学实验箱的LCD 上绘制四面墙和一个乒乓球,按下开始键则给乒乓球一初始速度,指定一个方向开始运动;按下停止键则停止乒乓球的运动;按下暂停键则暂停乒乓球的运动,再按该键则继续运动。
2. 扩展内容
(1)假设该环境有重力,让乒乓球模拟在有重力的环境下运动。
(2)用键盘按键可设定乒乓球的运动速度,也可利用按键在乒乓球运动的过程中给它提速。(3)统计乒乓球碰撞的次数,并将其在LCD 上显示出来。
四、设计思路
1、本次实验所需用到的硬件模块:①LCD(用来显示乒乓球撞壁过程);②键盘(用来控制乒乓球的运动和速度);③LED(用来显示乒乓球的碰撞次数)。
2、因为本次实验要使LCD显示,并通过键盘产生中断控制乒乓球的运动状态和速度,所以本次实验主要同到的.c 文件主要是keyboard.c,lcd.c,led.c和main.c,主要在这几个文件上进行编程。本次实验的关键是如何在LCD中显示乒乓球,乒乓球在碰到壁后如何实现计数加一,如何用键盘产生中断控制乒乓球的状态及速度。
五、软件实现
通过下面的流程图简单介绍本实验的主题软件及功能:
六、模块功能描述:
1.主程序,显示主界面的模块 int main() { sys_init(); lcd_init_app();
uart_printf("\n LCD display Test Example (please look at LCD screen)\n");
lcd_clr_rect(0,0,800,480,BLACK);
//倒计时3秒进入乒乓球弹壁系统的显示界面 Lcd_DspHz24(280,200,GREEN,"欢迎进入乒乓球弹壁模拟演示"); lcd_clr_rect(0,0,800,480,BLACK); Lcd_DspAscII8x16(400,200,WHITE,"3"); lcd_clr_rect(300,150,600,480,BLACK); Lcd_DspAscII8x16(400,200,WHITE,"2"); lcd_clr_rect(300,150,600,480,BLACK);
Lcd_DspAscII8x16(400,200,WHITE,"1");
LCD_Test
lcd.c
keyboard.c
main.c
led.c
显示个人信息,主要是画乒乓球和墙壁(画球子函数) 用键盘读入键值实现中断控制乒乓球的运动状态和速度
显示乒乓球弹壁模拟演示界面,主函数,显示主界面 显示个人信息(学
号),计数乒乓球反弹次数
功能
功能
功能
功能
lcd_clr_rect(300,150,600,480,BLACK);
//调用数码管显示程序,在数码管上显示我的学号
led8_test();
delay(20000); //延迟两秒数码管显示零准备计数iic_write_8led(0x70, 0x17, f_szDigital[0]);
iic_write_8led(0x70, 0x16, f_szDigital[0]);
iic_write_8led(0x70, 0x15, f_szDigital[0]);
iic_write_8led(0x70, 0x14, f_szDigital[0]);
iic_write_8led(0x70, 0x13, f_szDigital[0]);
iic_write_8led(0x70, 0x12, f_szDigital[0]);
iic_write_8led(0x70, 0x11, f_szDigital[0]);
iic_write_8led(0x70, 0x10, f_szDigital[0]);
//进入乒乓球弹壁模拟演示界面
Glib_Rectangle(10,10,790,470,RED);
Glib_Rectangle(11,11,791,471,RED);
Glib_Rectangle(15,15,785,465,BLUE);
Glib_Rectangle(14,14,786,466,BLUE);
Glib_Rectangle(20,20,780,460,GREEN);
Glib_Rectangle(19,19,781,461,GREEN);
Lcd_DspAscII8x16(550,320,GREEN,"20101956");
Lcd_DspAscII8x16(550,350,RED,"2010072");
Lcd_DspHz24(500,150,GREEN,"乒乓球弹壁模拟演示");
Lcd_DspHz24(525,200,BLUE,"电子信息工程");
Lcd_DspHz24(550,280,SH,"苏辉");
Glib_Rectangle(40,40,410,410,RED); //画乒乓球弹壁范围框Glib_Rectangle(39,39,411,411,RED);
Glib_Rectangle(38,38,412,412,RED);
Glib_Rectangle(37,37,413,413,RED);
Glib_Rectangle(36,36,414,414,RED);