《嵌入式软件开发》课程设计报告

上传人:第*** 文档编号:55640319 上传时间:2018-10-03 格式:DOCX 页数:27 大小:754.75KB
返回 下载 相关 举报
《嵌入式软件开发》课程设计报告_第1页
第1页 / 共27页
《嵌入式软件开发》课程设计报告_第2页
第2页 / 共27页
《嵌入式软件开发》课程设计报告_第3页
第3页 / 共27页
《嵌入式软件开发》课程设计报告_第4页
第4页 / 共27页
《嵌入式软件开发》课程设计报告_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《《嵌入式软件开发》课程设计报告》由会员分享,可在线阅读,更多相关《《嵌入式软件开发》课程设计报告(27页珍藏版)》请在金锄头文库上搜索。

1、嵌入式软件开发课程设计报告课题名称:课题名称: 基于 ARM11 开发平台小球碰撞设计与实现 专业班级:专业班级: 计算机科学与技术 指导教师评语:签名: 年 月 日嵌入式软件开发课程设计报告目目 录录1、使用技术介绍12、需求分析33、概要设计44、详细设计55、成果展示116、设计总结137、附录16嵌入式软件开发课程设计报告1一、使用技术介绍1.1 LCD 显示屏技术液晶显示屏,英文通称为 LCD(Liquid Crystal Display) ,是属于平面显示器的一种。用于电视机及计算机的屏幕显示。LCD 液晶显示器的工作原理,在显示器内部有很多液晶粒子,它们有规律的排列成一定的形状,

2、并且它们的每一面的颜色都不同分为:红色,绿色,蓝色。这三原色能还原成任意的其他颜色,当显示器收到电脑的显示数据的时候会控制每个液晶粒子转动到不同颜色的面,来组合成不同的颜色和图像。1)分辨率:显示器支持的像素多少,一般采用屏幕的宽 x 高表示,如:800x600,1600x1200, 480x320。2) “像素” (Pixel) 是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的,是用来计算数码影像的一种单位,是计算机屏幕上所能显示的最小单位。3)颜色深度:显示一个像素点的位数;4)颜色:单色、伪彩色、彩色、真彩色像素颜色是由红(Red)、绿(Green)、蓝(

3、Blue)三种颜色组成,即所谓 RGB。对于16 位深颜色来说,采用 565 格式表示颜色,其中 Red 占高 5、Green 占 6 位、Blue占低 5 位。每个像素占 VRAM 中的 2 个字节。 对于 24 位深颜色,RGB 分别占用 8 位,每个像素占用 VRAM 中的 3 个字节。1.2 电阻式触摸屏技术电阻式触摸屏是一种传感器,基本上是薄膜加上玻璃的结构,薄膜和玻璃相邻的一面上均涂有 ITO(纳米铟锡金属氧化物)涂层,ITO 具有很好的导电性和透明性。当触摸操作时,薄膜下层的 ITO 会接触到玻璃上层的 ITO,它将矩形区域中触摸点(X,Y)的物理位置转换为代表 X 坐标和 Y

4、坐标的电压,如图 1.2。而完成点选的动作,并呈现在屏幕上。很多 LCD 模块都采用了电阻式触摸屏,这种屏幕可以用四线、五线、七线或八线来产生屏幕偏置电压,同时读回触摸点的电压。运算公式: T_w = T_x2 T_x1 T_h = T_y2 T_y1 L_x = (T_x2-T_x)*L_w / T_wL_y = (T_y T_y1)*L_h / T_h嵌入式软件开发课程设计报告2图 1.21.3 五点校准法 为了方便理解,我们首先引入 2 个概念,坐标和逻辑坐标。物理坐标就是触摸屏上点的实际位置,我们通常以液晶上点的个数来度量。逻辑坐标就是触摸屏上这一点被触摸时 A/D 转换后的坐标值。由

5、于电阻式触摸屏的电压成线性均匀分布,那么 A/D 转换后的坐标也成线性。假如我们将液晶最左下角点对应的解摸屏上的点定为物理坐标原点 A 其物理坐标记为(XA=0,YA=0) ,其逻辑坐标记为(XLA,YLA) (不一定为 0) 。那么触摸屏上任意一点 B的逻辑坐标可表达为:XLB=XLA+KXXB ,YLB=YLA+KYYB。其中 KX、KY 分别为触摸屏 X 方向和 Y 方向的因子系数,这就像弹簧一样,拉力与弹簧伸长正比。KX、KY 可能为正,也可能为负,这根据具体触摸屏安装的方向和特性。每个液晶触摸屏,我们也应该单独计算每一个触摸屏的 K 系数。 如果 A 点不是坐标原点,也是任意一点可以

6、表达成:XLB=XLA+KX(XB-XA),YLB=YLA+KY(YB-YA)。我们可以推出计算 K 系统的公式:KX=(XLB-XLA)/(XB-XA),KY=(YLB-YLA)/(YB-YA) 。 在液晶上固定的位置显示五个点,因为是固定的位置,所以这五个点的物理坐标是预知的。这五个点不应太靠边,因为边缘点对应的触摸屏线性一般不太好。 (1) 首先在 ABCDE 对应的位置逐步用尖状物触摸,得到五个点的逻辑坐标。 (2) 分别比较 A 和 C、B 和 D 的横坐标,如果差值不在允许范围(你自己规定一个即可,比如 5) ,则重复操作(1) (2)步。 (3) 分别比较 A 和 B、C 和 D

7、 的纵坐标,如果差值不在允许范围(你自己规定一个即可,比如 5) ,则重复操作(1) (2) (3)步。 (4)用 2 组数据计算 X 向 K 系数平均值 KX=(XLB-XLA)/(XB-XA)+(XLD-XLD)/(XD-XC)/2 (5)用 2 组数据计算 Y 系数平均值 KY=(YLA-YLC)/(YA-YC)+(YLB-YLD)/(YB-YD)/2 嵌入式软件开发课程设计报告3(6)将 C 点逻辑坐标作为基坐标,根据式 2-2 则触摸屏上任意一点 F 逻辑坐标与基坐标的关系为:XLF=XLC+KX(XF-XC) YLF=YLC+KY(YF-YC)根据这个公式,我们也可逆推出 F 点的

8、物理坐标 XF=(XLF-XLC)/KX+XC YF=(YLF-YLC)/KY+YC (7) 用公式 2-4 求出 E 点逻辑坐标,并与(1)步得到的 E 点坐标比较,如果差值不在允许范围(你自己规定一个即可,比如 5) ,则重复操作以上步骤直到满足要求。 (8) 将基坐标 XLC、YLC、XC、YC 和 KX、KY 记录在存储设备,触摸屏校正完成。二、需求分析2.1 功能需求主要功能:实验设计在基于嵌入式 Linux 操作系统,arm11 开发平台上进行相关操作,要求在 LCD 显示屏内,分别控制 2 个不同颜色的小球在 LCD 屏矩形显示区内不停地运动,当小球碰到边界时,反射改变运动方向,

9、当两个小球相碰时,小球改变运动方向,并统计碰撞的次数。图 2.1 小球碰撞界面 2.2 界面需求实验界面简洁,显示为一个矩形边框,界面中有两个个小球,小球通过撞击边框和相互碰撞不断运动。开始碰撞:运行程序会出现小球碰撞程序主界面,如图 2.2,点击开始碰撞进入小球碰撞程序;退出:点击退出,返回退出小球碰撞界面,如图 2.3嵌入式软件开发课程设计报告4图 2.2 程序主界面图 2.主界面图 2.3 退出小球碰撞界面三、概要设计 3.13.1 系统组成系统组成 小球碰撞系统基于 ARM11 平台,利用 Linux 系统的调用和 PC 机的调试通过使用触 摸屏在 LED 显示屏上显示两个小球相撞。如

10、图 3.1 图 3.1 系统组成图1.ARM11 处理:采用 real6410 基于 ARM11 嵌入式处理器内核,主频 800MHz; 2.LCD 显示器:4.3 寸,分辨率 480272,16 位 RGB565 彩色; 3.触摸屏:电阻式,支持 40964096; 4.网络:以太网,支持 100Mbps,TCP/IP 协议; 3.2 功能模块工程文件夹:ball嵌入式软件开发课程设计报告5头文件程序:gui.h;ts.h主控模块:main.c触摸校准模块:ts.c通过主控模块 main.c 来调用图形库 gui.h 和校准模块 ts.c,以及小球碰撞函数, 来在显示屏上实现小球碰撞功能,如

11、图 3.2。图 3.2 功能模块图四、详细设计4.1 main()函数:main 函数:程序入口,调用显示屏、触摸屏等初始化函数,显示主界面,等待触摸操作,转相应的功能处理。如图 4.1函数原型:int main(int agrc, char *argv);输入参数:argc 整型,命令行以空格分隔的字符串个数;argv 指针的指针型, 指向存放字符串的开始地址。返回值:整型,0 表示正常,非 0 表示异常嵌入式软件开发课程设计报告6图 4.1 main 函数流程图4.2 ball_move()函数:void ball_move()函数:实现画出小球并让小球运动,当两个小球碰壁或相撞时,小球向

12、反方向弹开并计算碰撞次数,运动到初始位置时,小球停止。如图 4.2函数原型:void ball_move(ball_t *b )输入参数:b 结构体指针类型 通过 b 的值来判断小球碰撞的次数返回值:无返回值小球运动算法:1)初始化:w=480; h=272; x=old_x=100; y=old_y=100; r=16; x_dir = 1; y_dir = -1; 2)如果 x = w,则 x_dir = -1 碰到右边界,向左运动;4)如果 y= h 则 y_dir = -1 碰到下边界,向上运动;6)更新圆心坐标:x += x_dir; y += y_dir;7)在原来位置用背景色画(

13、即清除) ;8)在新位置用前景色画圆;9)延时一段时间,使圆停留在屏幕上显示;10)old_x = x; old_y = y;11)如果运动到初始位置,则退出,否则跳转到 2)图 4.2 ball_move 函数流程图4.3 get_hotpoint(int x, int y)函数:get_hotpoint()函数:获得触摸屏幕上的热点,并判断是不是点击相应的位置,是返回一个值,不是返回-1,如图 4.3嵌入式软件开发课程设计报告8函数原型:get_hotpoint(int x, int y);输入参数:x 整型,获得 x 坐标y 整型,获得 y 坐标。返回值:整型,返回 r-v 表示正常,返

14、回-1 表示异常图 4.3 获得热点函数流程图4.4 小球函数所需要的相关函数1) 创建子进程 fork():一个进程,包括代码、数据和分配给进程的资源。pid_t pid; pid = fork(); /创建子进程if (pid = -1) exit(-1); /创建失败if (pid = 0) /子进程else /父进程嵌入式软件开发课程设计报告92) 延时函数 usleep():函数原型:int usleep(useconds_t usec); 参数:usec : 延时时间值,微秒。包含头文件#include 3) 进程之间共享内存通信:创建或获取一个共享内存:命令格式:shmget(k

15、ey,size,flag) 功能:获得一个内部标识为 shmid 的共享存储区语句格式:Int shmid = int shmget(key_t key, int size, int flag ); 参数说明:key共享存储区关键字,可以由用户指定,如果使用 IPC_PRIVATE,其值由系统产生size存储区的大小(字节数) 。如果存储区定义为字符型,则大小为定义的字符个数;如果存储区定义为整型,大小可以使用 sizeof(int)加以定义。flag用户设置的标志或访问方式,与消息缓冲 shmget 中的含义相同,在实验中,可以使用 0666|IPC_CREAT,表示任意进程可读写。返回值:嵌入式软件开发课程设计报告10正确返回:共享存储区的内部标识符 shmid错误返回:-14) 将共享内存附接到进程虚拟地址空间:命令格式:字符型共享内存:Shmat( int shmid, char *shmaddr, int msgflg, ulong *raddr); 数值型共享内存:Shmat( int shmid, int *shmaddr, int msgflg,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号