ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:180.59KB ,
资源ID:6251218      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6251218.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于某嵌入式系统地工程实训报告材料.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于某嵌入式系统地工程实训报告材料.docx

1、基于某嵌入式系统地工程实训报告材料等级:工程实践训练项目名称 物联网应用 专业班级 自动化1301 姓 名 黄奎伦 学 号 * 指导教师 汪超,谢一峰(粤嵌) 2016年12月24日心得体会 22电气信息学院工程实践训练评分标准 23第1章 实训目的与任务1.1 工程实践训练目的本次自动化工程实践训练第一部分是实训装置的使用说明,讲述了系统的组成、硬件的特点和技术指标、软件的使用介绍。第二部分是实训项目部分,叙述了实训的原理、步骤及注意事项等。通过对实训装置各个仪表的原理、工作情况及实验原理、软硬件的详细介绍,通过实际操作让我们对复杂过程控制系统实训装置有一个充分的认识,又有益于我们对工业生产

2、现场控制系统的了解。培养学生的工程实践能力,进一步提高学生分析和解决实际问题的能力。1.2 实训项目要求 轻松的益智游戏对缓解生活压力调节情绪具有重要的意义。2048这款小游戏是一款流行的数字游戏,游戏设计初衷是一款益智类的游戏,其特点在于轻松,简单,有趣。因此,开发要求做到各项功能要完备、操作要简便、易学易用。所以本周的工程实训要求自己设计一个2048小游戏,以及学习关于嵌入式的基本入门知识。第2章 知识点总结2.1 嵌入式系统嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁减,以适应应用系统对功能、可靠性、成本、体积和功耗等有严格要求的专用计算机系统。2.2 Linux操作系统介绍

3、Linux是一套免费使用和自由传播的类UNIX操作系统,其创始人为美国著名黑客 -林纳斯托瓦兹。它能运行主要的UNIX工具软件、应用程序和网络协议,且支持32位和64位硬件,是一个性能稳定的多用户网络操作系统。 操作系统:操作系统是计算机系统中最基本的系统软件,它用于有效地管理系统资源,并为用户使用计算机提供了便利的环境。 ubuntu是一个基于linux的免费开源桌面PC操作系统。2.3 交叉开发 一般来说,研发嵌入式产品,由于从产品成本及功能专用性角度出发考虑。嵌入式产品一般只有程序的运行环境,而并没有程序的编译开发环境。 所以,我们一般在通用电脑上用各种编译开发软件把程序编译调试好后,再

4、下载到开发板或相关产品上去运行。 这个过程,我们称之为交叉开发。2.4 SecureCRT的设置与连接(1)获取连接上的端口号 用串口线连接好开发板后,启动开发板。在设备管理器中,查找识别出的端口。 若不能正确识别端口(有感叹号),则需要安装驱动。(2)SecureCRT的设置 点击快速连接,并进行设置 a.协议: Serial b.端口: 你电脑识别出的端口号 c.波特率: 115200 d.把数据流控制中的RTS/CTS(R)勾去掉 其它保持默认设置2.5 C程序的交叉编译及运行由于ARM处理器与Inter处理器其设计架构有本质区别。所以要在arm开发板上运行的程序,则必须要用专用的编译器

5、来编译。(1)在文本编辑软件中编写好C源代码文件,并保存到共享文件夹中。= hello.c(2)在Ubuntu系统的共享目录中,用arm-linux-gcc编译器对hello.c进行编译,使生成一个可执行程序。 arm-linux-gcc hello.c o hello= hello(3)下载到开发板中 rz(4)运行hello这个程序 chmod +x hello ./hello2.6 函数的定义返回类型 函数名(输入参数列表) 函数语句;/指令序列 。 返回类型:函数返回值(return语句后面那个表达式值的类型)一般是单值类型,函数也可以没有返回值(void) 函数名:C语言标识符。把一

6、个名字与特定的功能模块相关联 输入参数列表:功能模块的输入。格式如下:参数类型 参数名1 , 参数类型2 参数2,函数也可以没有参数。主调函数:调用其他函数的函数被调函数:被别人调用的函数 “实际参数”: 在函数调用过程中,主调函数传递给被调函数的输入参数值,我们称之为“实际参数”,简称”实参”。“形式参数”: 函数定义时,参数列表中的参数。我们称之为”形式参数”,简称”形参”。 2.7 Linux文件IO函数#include #include #include open用来打开一个文件 int open(const char *pathname, int flags) pathname: 要

7、打开或创建的文件名(带路径名) flags: 打开标志。告诉系统,是以何种方式打开这个文件 O_RDONLY : read only O_WRONLY : write only O_RDWR : read/write 以上三个标志选其一。返回值: 如果成功返回文件描述符(0,后续所有对文件的操作都必须 通过它,因为它代表这个文件。) 失败返回-1, 并且errno被设置。2.8 LCD显示原理 屏幕由y行且每行x个像素点的矩阵组成;在屏幕上显示图像,就是给每个像素点显示一种颜色。 颜色值,可以量化: Color = xGreen + yBlue + zRed 我们向屏幕设备文件 /dev/fb

8、0 中写入各点颜色值就可以让屏幕显示相应的图片了第3章 2048游戏的设计流程图 N Y N Y 第4章 相关的c语言游戏程序#include #include #include #include #include /*perror, errno ,.*/#include /*abs的头文件*/#include /*printf*/#include #include #include #include /*time */#include #define LCD_WIDTH 800#define LCD_HEIGHT 480#define LCD_BYTESPERPIXEL 4 /每个像素点占几

9、个字节#define LCD_SIZE (LCD_WIDTH * LCD_HEIGHT *LCD_BYTESPERPIXEL)#define MATRIX_X0 0 /整个棋盘的左上角顶点的x轴坐标#define MATRIX_Y0 0 /整个棋盘的左上角顶点的y轴坐标#define PIECE_SIZE 100 /棋子的像素点大小#define BOARDSIZE 4 / 整个棋盘的大小BORADSIZE * BOARDSIZE#define MOVE_LEFT 1#define MOVE_RIGHT 2#define MOVE_UP 3#define MOVE_DOWN 4unsigned

10、 char bmpdataLCD_SIZE ; /读bmp 图片数据临时数组 int game_over = 0;/游戏结束的标志,1表示游戏结束 /0表示游戏不结束/棋盘矩阵int matrixBOARDSIZEBOARDSIZE = 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0 ;int *plcd = NULL;/指向framebuffer(屏幕显存第一个点的内存)/* lcd_draw_point:在屏幕坐为(x, y)这个点,填充color 这个颜色值。 x: x轴坐标 y:y轴坐标 color:要填充的辨色值 返回值: 无返回值。*/void lcd_dra

11、w_point(int x, int y, int color) int *p = plcd; if (x = 0 & x =0 & y =0 & x0+w=0 & y0+h=0 & h=0) int i,j; for(i=x0;ix0+w;i+) for(j=y0;jy0+h;j+) LCD_draw_point(i,j,color); else printf(draw dect failed!x0=%d y0=%d w=%d h=%dn,x0,y0,w,h); /将所有的图片名保存到一个数组中const char * bmpfiles = military_font_7_2.bmp, /

12、2 military_font_7_4.bmp, / 4 military_font_7_8.bmp, /8 military_font_7_16.bmp, / 16 military_font_7_32.bmp, military_font_7_64.bmp, military_font_7_128.bmp, military_font_7_256.bmp, military_font_7_512.bmp, military_font_7_1024.bmp, military_font_7_2048.bmp, military_font_7_4096.bmp, military_font_7

13、_8192.bmp, military_font_7_16384.bmp, military_font_7_32768.bmp, military_font_7_65536.bmp,;/* get_bmpfiles_index:根据你要显示的数字(2,4,8,16,.) 返回你对应的文件名的下标 返回值: 返回 x对应的文件名在数组bmpfiles的下标*/int get_bmpfiles_index(int x)/* draw_bmp_byname:把一张bmp图片显示在屏幕上特定的位置 bmpfile:要显示的bmp图片的文件名 x0: 在屏幕上显示的左上角顶点的x轴坐标 y0: 在屏幕上

14、显示的左上角顶点的y轴坐标 w: 位图宽度 h: 位图高度 返回值: 无返回值.*/void draw_bmp_byname(const char *bmpfile, int x0, int y0, int w, int h) int fd; int x, y; fd = open(bmpfile, O_RDONLY); if (fd = -1) perror(open bmpfile error:); return ; lseek(fd, 54, SEEK_SET); read(fd, bmpdata, w*h*3); close(fd); int i = 0; for (y = 0; y

15、h; y+) unsigned char r,g ,b; int color; for (x = 0; x w; x+)/已知图片色深为24位 b = bmpdatai+; g = bmpdatai+; r = bmpdatai+; color = (r 16) | (g 8) | b; lcd_draw_point(x0+ x, y0 + (h -1 - y) ,color); /* draw_matrix:把棋盘矩阵在屏幕上显示出来*/void draw_matrix() int i, j; for (i = 0; i BOARDSIZE; i+) for (j = 0; j = 1,x

16、= 3 int x = (random() % 3) + 1; int i; for(i = 0; i 30) & (abs_x 2 * abs_y) close(fd); return MOVE_RIGHT; else if(x_cz 2 * abs_y) close(fd); return MOVE_LEFT; else if(y_cz 30) & (abs_y 2 * abs_x) close(fd); return MOVE_UP; else if(y_cz 2 * abs_x) close(fd); return MOVE_DOWN; else x1 = y1 = -1; conti

17、nue; close(fd);/* change_matrix:根据手指滑动(direction), 变换棋盘矩阵*/int change_matrix() int direction = get_finger_direction(); if (direction = MOVE_LEFT) fin_left(); else if (direction = MOVE_RIGHT) fin_right(); else if (direction = MOVE_UP) fin_up(); else fin_down(); /* fin_left:手指左划后棋子移动及合并的方式*/void fin_l

18、eft() /int fin = get_finger_direction(); int i, j;/i为矩阵行下标,j为矩阵列下标 int value, save_zero; for(i = 0; i BOARDSIZE; i+) value = 0; save_zero= 0; for(j = 0; j BOARDSIZE ; j+) if (matrixij = 0) continue; if (value = 0) value = matrixij; else if (value = matrixij)/合并 matrixisave_zero+ = value * 2; value =

19、 0; else matrixisave_zero+ = value; value = matrixij; matrixij = 0; if (value != 0) matrixisave_zero = value; /* fin_right:手指上划后棋子移动及合并的方式*/void fin_right() int i, j;/i为矩阵行下标,j为矩阵列下标 int value; int save_zero; for(i = 0; i = 0 ; j-) if(matrixij = 0) continue; if(value = 0) value = matrixij; else if(value = matrixij) matrixisave_zero- = 2 * value; value = 0; else matrixisave_zero- = value; value = matrixij; matrixij

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1