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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于MINIGUI的LED简易控制Word格式.docx

1、1、掌握嵌入式系统开发环境建立和使用;2、掌握嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;3、MiniGUI在PC上的安装、移植4、Linux基本输入输出驱动程序设计编译与移植5、基于MiniGUI的基本输入输出应用编程编译与移植6、编写设计说明书(方案的确定、设计环节的考虑及必要说明等)及设备的使用说明;7、结合课程设计,绘制有关图纸,并详细分析.四、设计流程与时间安排1、工作流程 工作流程主要有开发环境搭建、驱动程序设计、应用程序设计及最终调试。2、设计时间安排: (共1.5周)序号项目具 体 内 容时间(天)1基础知识1)讲解设计任务;2)熟悉Ubuntu的使用;3)熟悉TQ2

2、440试验系统的使用;4)掌握嵌入式系统开发环境建立和使用;2MINIGUI的环境搭建及编程1)minigui的环境搭建2)minigui的移植(IAL,GAL)3)minigui的编程的学习43驱动程序的编写1)LED驱动程序的编写及移植2)键盘驱动,成为Minigui的IAL实现4个按键,一个enter,一个tab,一个向上键,一个向下键界面应用程序的编写1)界面程序的编写界面的内容与LED控制有关2)定时器编程5软硬件调试设计综合调试6完成设计说明书设计说明书五、设计思路:基础知识的回顾复习,包括:嵌入式系统开发环境建立和使用,嵌入式系统基本驱动、应用程序的设计调试和编译移植方法.。Mi

3、niGUI在pc机上的安装。(可参照minigui用户手册)参照Minigui技术白皮书和Minigui编程指南学习基于 MiniGUI的应用界面编程方法。运行minigui演示程序,设计界面,开始界面编程。交叉编译环境的建立,及MiniGui在TQ2440上的移植开始综合调试六、设计流程:6.1、 MiniGUI在X86上安装和运行1、准备工作建立工作目录:mkdir /minigui-free cd /minigui-free复制源文件压缩包到工作目录:cp /mnt/hgfs/D/* /minigui-free解压文件:tar zxvf libminigui-1.6.10.tar.gzt

4、ar zxvf minigui-res-1.6.10.tar.gztar zxvf mg-samples-1.6.10.tar.gz2、MiniGUI库安装1 进入目录:cd libminigui-1.6.10/2 配置:./configure 在x86上运行只需默认配置即可,配置完成后即可生成Makefile3 编译:make 成功后即可生成必要的库文件等。4 安装:make install 在x86上安装库文件。3、MiniGUI资源安装进入目录:cd minigui-res-1.6.10/安装: 必要资源文件的复制安装等操作。4、MiniGUI例子编译cd mg-samples-1.6.

5、10/2 编译:编译src目录下的例子程序,用于验证MiniGUI是否安装成功。 即可在src目录下生成可执行文件5、安装qvfb 使用qt的qvfbapt-get install qt3-dev-tools-embedded6、配置MiniGUI.cfgvi /usr/local/etc/MiniGUI.cfg 修改如下部分为system# GAL engine and default optionsgal_engine=qvfbdefaultmode=800x480-16bpp# IAL engineial_engine=qvfbmdev=/dev/input/micemtype=IMPS

6、2fbconqvfbdisplay=07运行MiniGUI例子程序1 打开qvfb:qvfb -width 800 -height 480 &2 运行helloword:src/helloworld出现此窗口说明运行成功。8、问题1.错误1:Permission denied解决方法:权限不够,使用root用户登录。2.错误2: 出现符号未找到等编译错误 解决方法:make clean 后在make6.2、Minigui交叉编译环境的建立1、安装交叉编译器arm-linux-gcc2、在/ minigui-free下新建目录nfsroot #cd / minigui-free#mkdir nf

7、sroot3、建立交叉编译的lib修改libminigui -1.6.10下的configure文件,在文件头添加CC= arm-linux-gccCPP= arm-linux-cppLD= arm-linux-ldAR= arm-linux-arRANLIB= arm-linux-ranlibSTRIP= arm-linux-strip将libcorss.sh拷到libminigui -1.6.10文件夹中libcorss.sh文件内容如下:#/bin/sh./configure -prefix=/minigui-free/nfsroot/ -host=arm-linux -target=a

8、rm-linux运行脚本#./ libcorss.sh之后可以查看到/ minigui-free/nfsroot下面生成了etc、lib、include三个目录4、建立交叉编译的res修改minigui-res-1.6.10下的config.linux文件的第11行TOPDIR=/home/nick/minigui-free/nfsroot将rescorss.sh 拷到minigui-res-1.6.10文件夹中rescorss.sh文件内容如下:#!/bin/sh运行脚本#./ rescorss.sh可以查看/ minigui-free/nfsroot下面生成usr目录5、修改mg-samp

9、les-1.6.10下的configure文件,在文件头添加将samplecorss.sh拷到mg-samples-1.6.10文件夹中samplecorss.sh文件内容如下:./configure -host=arm-linux -target=arm-linux -prefix=/minigui-free/nfsroot/ LDFLAGS=-L/opt/minigui/temp/lib CPPFLAGS=-I/minigui-free/nfsroot/include CFLAGS=-I/opt/minigui-free/nfsroot/includeMake运行脚本#./ simplec

10、orss.sh可以查看/ minigui-free/ mg-samples-1.6.10/src下生成了可执行文件6.3、建立超级终端1)pc机与开发板串口相连2)开始-附件-通信-超级终端(波特率115200,数据位8,奇偶校验:无,停止位1,数据控制流:无)6.4、移植1)将/ minigui-free/nfsroot/etc下的Mingui.cfg文件拷到开发板/etc目录下。2)将/ minigui-free/nfsroot /lib下的所有文件拷贝到开发板/usr/lib目录下3)将pc机/ minigui-free/nfsroot/usr/local/lib中所有内容拷贝到开发板的

11、/usr/local/lib下12、把/ minigui-free /mg-samples-1.6.10/src中任意可执行文件和资源文件拷贝到开发板的/usr/minigui下面,没有这个目录自己建一个,最后运行科执行程序,观察开发板上的lcd显示情况,若能出现相应串口,则证明移植成功。问题1.环境变量为无效路径:先用echo $PATH查询环境变量,发现无效路径后,在$vi.bash_profile#修改用户环境变量文件,环境变量更改后,在用户下次登陆时生效。如果想立刻生效,则可执行下面的语句:$source用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用

12、户有效,并且是“永久的”2.在移植文件时要注意文件所在位置,如将/ minigui-free/nfsroot /lib下的所有文件拷贝到开发板/usr/lib目录下时要注意是将lib下的所有文件拷贝到开发板/usr/lib目录下,而不是拷贝lib文件夹七、界面编程7.1基本的编程概念MiniGUI是一个图形用户界面支持的系统,通常的GUI编程概念均适用于MiniGUI编程,如窗口和事件驱动编程等。7.2头文件Com.c的开始所包括的四个头文件分别是: minigui/gdi.hminigui/window.h他们是所有的MiniGUI应用程序都必须包括的头文件。7.3程序入口点一个C程序的入口

13、点为main函数,而一个MiniGUI程序的入口点为MiniGUIMain,该函数原型如下:int MiniGUIMain (int argc, const char* argv)main函数已经在MiniGUI的函数库中定义了,该函数在进行一些MiniGUI的出始化工作之后调用MiniGUIMain函数。7.4进入消息循环在函DialogBoxIndirectParam (&DlgInitProgress,hWnd,DialogBoxProc,0L) 和函数static int DialogBoxProc (HWND hWnd, int message, WPARAM wParam, LPA

14、RAM lParam)的MSG_INITDIALOG进行消息的循环。其中: 1、hwnd 消息发往的窗口的句柄。 2、message 消息标识符。 3、wParam 一个32位的消息参数,其含义是根据消息的不同而不同。 4、IParam 一个32位的消息参数,去含义是取决于消息的类型。7.5窗口过程函数窗口过程函数是MiniGUI程序的主体部分,应用程序实际所做的工作大部分都发生在窗口的过程函数中,以为GUI程序的主要任务是接收和处理窗口收的各种消息。7.6程序的推出用户单击窗口右上角的关闭按钮时窗口过程函数将收到一个MSG_CLOSE消息。7.7对话框编程基础在MiniGUI中,对话框是一类

15、特殊的主窗口,这中主窗口只关注与用户的交互向用户提供输出消息,但更多的是用于用户输入。对话框可以理解为子类化之后的主窗口。它针对对话框的特殊性进行了特殊设计。/* *对话框定义*static DLGTEMPLATE DlgInitProgress= /*定义对话框模板. 用static类型数据,使该数据的定义只在所在文件中有效,以免因为名字空间污染造成潜在的编译或连接错误*/ WS_BORDER|WS_CAPTION, /*对话框风格,WS_BORDER创建有边框的窗口 ,WS_CAPTION创建含标题栏的主窗口*/ WS_EX_NONE, /*对话框扩展风格,WS_EX_NONE表示无扩展风

16、格*/ 0,0,800,480, /*对话框位置,左上角坐标(0,0),800、 MY_LED_CONTROL, /*对话框标 0, /*对话框图标 0, /*对话框菜单 9, /*对话框中控件个数。 NULL, /*pointer to 0 /*附;这个函数就是对话框的一个基本定义了。其中9是包含的控件数,如果包含的控件没有填入正确的个数,那么Qt不会正常显示。7.8对话框的回调函数static int DialogBoxProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam) /*对话框过程函数,用来接收和处理所有发送到该窗口的消

17、息*/ int number; /*用来存从旋钮数字框获得的数值*/ static int t=0; int num; /*存放定时时间*/ switch(message) case MSG_INITDIALOG:return 1;case MSG_PAINT: return 1; case MSG_TIMER: case MSG_COMMAND: switch (wParam) break; case MSG_CLOSE: return DefaultDialogProc (hWnd, message, wParam, lParam);使用的几个消息:MSG_INITDIALOG: 建立对话

18、框和控件之后,发送到回调函数的MSG_PAINT: 窗口重绘时发送到窗口过程。MSG_TIMER:timer专用。MSG_COMMAND:传递wParam参数。MSG_CLOSE:关闭时发送。文本框回调函数用于频率的获取。7.9控件编程基础较为复杂的GUI系统中,都带有预定义的控件集合,他们是人机交互的主要元素。而此次实验用到的控件分别是静态框、按钮、旋钮组合和框static CTRLDATA CtrlInitData= /*控件数组*/ static, /*控件类型*/ WS_VISIBLE|SS_SIMPLE, /*控件风格,WS_VISIBLE创建初始可见的窗口,SS_SIMPLE显示单

19、行文本*/ 100,270,150,40, /*控件位置*/ ID_TEXT1, /*控件ID*/Please input frequency, /*控件内容*/ 0, /*附加值*/ WS_EX_NONE /*控件扩展风格*/ , , WS_VISIBLE|SS_SIMPLE, 605,270,150,40, ID_TEXT2,HZ 0, WS_EX_NONEbutton WS_VISIBLE|WS_TABSTOP, /*WS_TABSTOP支持Tab键*/ 135,160,80,60, ID_LED1,LED1 WS_VISIBLE|WS_TABSTOP, 285,160,80,60, I

20、D_LED2,LED2 435,160,80,60, ID_LED3,LED3 585,160,80,60, ID_LED4,LED4 285,360,80,60, ID_START,START 435,360,80,60, ID_STOP,STOP CTRL_COMBOBOX, WS_VISIBLE|WS_TABSTOP|CBS_AUTOSPIN|CBS_AUTOLOOP, /*CBS_AUTOSPIN创建旋钮数字框,CBS_AUTOLOOP框中的数字将自动循 环显示*/ 435,270,80,40, ID_COMBOBOX,0, /*旋钮数字框初始值*/ 0, WS_EX_NONE在上面的

21、定义中,我们可以通过坐标来改变他们的位置,使控件能摆放到合适的位置上去。7.10可以看到运行的界面如下图所示7.11 问题Linux系统运行很卡,通过top指令查询进程,再用kill杀掉没用的进程,使系统顺畅运行。八、调试结果:按led控制灯的亮灭,黑的为灭,绿的为亮,通过输入频率,再按start键,流水灯开始按一定频率亮灭。再按stop键,就结束了流水灯。九、设计总结: 本学期为期两周的嵌入式课程设计在不知不觉中结束了,虽说这次课程设计时间不是很长,但是感觉自己收获颇丰,不仅学习到了一些新知识,回顾了以前的一些快要遗忘的知识点,通过这次的课程设计进一步巩固嵌入式系统的基本知识、嵌入式应用系统

22、的基本结构、进一步掌握了嵌入式系统开发环境建立和使用、MINIGUI界面程序编程、Linux下硬件驱动的编程、学会查阅有关专业资料及设计手册、掌握了嵌入式系统基本驱动、应用程序的设计调试和编译移植方法;、MiniGUI在PC上的安装、移植、Linux基本输入输出驱动程序设计编译与移植、基于MiniGUI的基本输入输出应用编程编译与移植。 开发过程中遇到许多问题,主要原因是对于基本知识掌握的不够牢固,所以一旦遇到问题就会摸不着头脑,不知道从何下手。在软件编译过程中最为棘手的问题,我觉得就是链接库的问题,每一个都有相当复杂的依赖关系,由于我们对嵌入式开发的经验不足,有时候很难能知道库依赖于哪个软件

23、中,比较常用的办法是下载安装与名称相关的软件,如lib*库等等。即可解决大部分在软件编译中,出现的错误。对于配置,也是一个非常容易出错的地方,不同的软件配置是不一样的,但通过上网查资料和向老师和同学的请教。终于对整个设计有了进一步的理解也更深层次的了解了整个的设计思路,更通过学习掌握了Minigui的设计方法。 总之,虽然这次课程设计,使我进步不少,但同时也看到了自己还有非常大的差距,所以更需加倍努力。附录:附录一:程序:#include /*包括 MiniGUI 常用的宏以及数据类型的定义*/ /*包含了全局的和通用的接口函数以及某些杂项函数的定义*/ /*包含了 MiniGUI 绘图函数的

24、接口定义*/minigui/control.h /*包含了libminigui 中所有内建控件的接口定义*/string.hstdlib.hunistd.h /*包含了许多UNIX系统服务的函数原型*/sys/ioctl.h /*提供对I/O控制的函数*/#include#define ID_LED1 101 /*定义各个控件与定时器的ID号*/#define ID_LED2 102#define ID_LED3 103#define ID_LED4 104#define ID_TEXT1 105#define ID_TEXT2 106#define ID_START 107#define I

25、D_STOP 108#define ID_COMBOBOX 109#define ID_TIMER 110static int a,b,c,d=0; /*定义LED灯的初始值*/static int fd_led; /*定义文件描述符*/HWND hMainWnd; /*定义主窗口句柄*/static void draw_circular(HWND hdig,int x,int y,int r,int which) /*自定义一个画圆函数,x、y、r、which分别表示圆心坐标、半径、颜色*/ HDC hdc; /*定义设备上下文句柄*/ int color; color=(which=0)?PIXEL_green:PIXEL_black); hdc=BeginPaint(hdig); /*获得设备上下文句

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

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