当前位置:文档之家› 电子系统设计与实践报告材料

电子系统设计与实践报告材料

《电子系统设计与实践报告》院系电气与信息工程学院专业班级电气151班学生学号学生指导教师叔元完成日期2018年06月28日目录第一章设计目的与任务 (3)1.1 设计目的 (3)1.2 设计项目要求 (3)第一章知识点总结 (3)2.1 搭建开发环境 (3)2.2 linux操作系统的常规使用 (4)2.3 windows 与Linux的文件共享 (5)2.4 硬件控制 (5)2.5 写代码控制驱动对应的硬件 (6)2.6 人机交互 (7)2.7音视频的播放 (9)2.8音视频的播放 (9)2.9 U盘下载 (9)第3章智能家居的具体实现 (10)3.1智能家居整体设计图 (10)3.2智能家居C语言程序 (10)第四章心得体会 (18)第一章设计目的与任务1.1设计目的1掌握Linux系统的常规使用。

2掌握主控板的常规使用。

3掌握使用linnux系统编程代码控制主控板显示屏。

4对所学知识进行项目的验收检测。

1.2设计项目要求智能家居系统通过家庭网络,让系统中的各类设备之间相互联动,为我们营造智能化、舒适化、便利化的生活环境。

智能家居可以让我们解放双手,提高生活水平。

本次实训的要设计缩小版的智能家居,其特点在于操作简单、易于上手、稳定性强,实现实时监控、视频的播放、音乐的播放、图片的显示以及对控制led 灯的开关。

所以本周要学习关于嵌入式的基本入门知识,以及相关软件的使用。

第一章知识点总结2.1 搭建开发环境步骤:一:安装虚拟机,直接双击安装程序,不断下一步,最后要求你输入密钥,安装包里面有破解程序二:解压ubuntu就可以直接使用虚拟机:用软件来模拟真实的电脑,我们的linux操作系统必须在虚拟机上运行ubuntu(乌邦图):linux操作系统一个发行版本的名字使用linux操作系统登陆的时候千万不要用guest身份登陆,要使用yueqian登陆,密码是123456linux跟windows的使用习惯有些不同,作为开发人员我们使用命令来控制linux系统打开命令终端:ctrl+alt+tgecubuntu:~$gec---〉当前用户的名字ubuntu---〉操作系统的名字~ ---〉当前用户的家目录$ ---〉当前用户是个普通用户linux中的这些命令统称shell命令,做系统运维的人就是编写程序用这些命令来自动管理服务器2.2 linux操作系统的常规使用2.2.1启动Linux系统启动VMware--》选中Ubuntu12.04---》继续运行虚拟机--》进入桌面系统--》启动命令行--》双击terminal(ctrl + alt + t)2.2.2 linux常规命令的使用A.查看某个位置下有什么东西ls [选项] [路径]ls 查看当前的位置下有什么东西(刷新)ls -l 查看当前位置下文件的详细信息drwx rwx r-x 文件操作权限(chmod)ls -a 查看当前位置下所有的文件(包含隐藏文件)ls -la 两个功能结合在一起B.修改工作路径(更改当前所处的文件夹的位置)cd (路径)cd / 回到根目录(起点)cd / && cd home && cd gec===》cd /home/geccd .. 返回上一级cd ~ 返回家目录(常规操作位置:家目录/共享目录)==>/home/gecC.得到当前的工作路径pwd 得到当前的位置D.创建&& 删除(文件/目录)touch 文件名1 文件名2 //创建空白文件rm 文件名1 文件名2 //删除文件mkdir 目录名1 目录名2 //创建目录rm -rf 目录名1 目录名2 //删除目录E.编辑&& 编译&& 执行gedit filename.c //怎么编写源文件(c代码)gcc/arm-linux-gcc filename.c -o filename //生成可执行文件(编译)./filename //运行可执行程序F.修改文件的为可执行权限chmod 777 filename(3)补充:路径的组成(文件存储结构:树状结构)相对路径:当前位置下/一级目录/二级目录绝对路径:/一级目录/二级目录2.3windows 与Linux的文件共享虚拟机--》设置--》选项--》共享文件夹--》启用--》添加--》下一步--》配置如下主机路径(windows):笔记名称(LInux):share (必须进入/mnt/hgfs)test1.c:编写九九乘法表,编译,运行起来#include<stdio.h>void main(){char i,j,k;for(i=1;i<=9;i++){for(j=1;j<=i;j++){k=i*j;printf("%d*%d=%d\t",i,j,k);}printf("\n");}return 0;}2.4 硬件控制(1)双要素驱动程序+ 应用程序(配套出现)(2)驱动如何使用?A.得到驱动程序文件led_drv.ko / gec210_beep.koB.加载驱动-->产生设备文件--->文件IO才能生效insmod xxx.ko==>insmod: can't insert 'led_drv.ko': File exists 表示驱动已经存在C.查看系统下已有的驱动lsmod==>led_drv 1203 0 - Live 0xbf028000 //LED驱动buzzer_drv 1488 0 - Live 0xbf022000 //蜂鸣器gec210_beep 1298 0 - Live 0xbf0e6000 //蜂鸣器rtnet3070ap 24124 0 - Live 0xbf0d3000rt3070ap 488261 1 rtnet3070ap, Live 0xbf044000 (P)rtutil3070ap 22027 2 rtnet3070ap,rt3070ap, Live 0xbf037000ov9650 8851 0 - Live 0xbf02e000snd_soc_gec210_wm8960 3084 0 - Live 0xbf01c000snd_soc_wm8960 19792 1 snd_soc_gec210_wm8960, Live 0xbf011000D.卸载原有的驱动rmmod led_drv /buzzer_drv/gec210_beep(3)应用程序的使用./led_test报错:./led_testUsage:./led_test <led_no> <on/off>led_no = 0,1, 2,3test1.c:把LED和蜂鸣器的驱动加载,使用自带的应用程序进行控制2.5 写代码控制驱动对应的硬件(1)LED灯A.打开对应的设备文件:/dev/ledsB.控制灯的状态ioctl(led_fd, 1, led_namb);参数2:灯的状态1亮0灭参数3:灯的序号0/1/2/3C.关闭对应的文件描述符test2-1:完成的流水灯的设计。

(10次)sleep(1); ==》1susleep(1000*1000);==》1us(1s)(2)蜂鸣器A.打开对应的设备文件:/dev/beep_drvB.控制灯的状态ioctl(fd,GEC210_BEEP_ON);参数2:灯的状态1亮0灭C.关闭对应的文件描述符test2-1:完成的流水灯的设计。

sleep(1); ==》1susleep(1000*1000);==》1us(1s)test2-2:倒车雷达的实现5s处于安全距离,5s后,进行一级报警(500ms)再过5s,进入2级报警状态(200ms)再过5s,进入3级报警状态(50ms)2.6 人机交互所有的功能的启动、结束:都是由用户来进行控制。

(人机交互)2.6.1 触摸屏的开发linux对于常用输入设备,其开发方式都是一样的===>输入子系统(鼠标、键盘、触摸屏...)2.6.2输入子系统的原理cat /dev/event02.6.3程序设计输入子系统的设备文件:/dev/event0开发说明书(头文件):input.h(1)打开硬件对应的设备文件(2)根据说明书提供的原始数据格式,进行读取操作struct input_event {__u16 type;__u16 code;__s32 value;};(3)根据说明书提供的数据分类,进行拆包处理原始数据按住时type = 0x3 code = 0x0 value = 653type = 0x3 code = 0x1 value = 103type = 0x3 code = 0x18 value = 255type = 0x0 code = 0x0 value = 0松开type = 0x3 code = 0x18 value = 0type = 0x0 code = 0x0 value = 0A.解决设备类型type/** Event types 输入设备当成是event,type的取值围*/#define EV_SYN 0x00#define EV_KEY 0x01 //键盘#define EV_REL 0x02 //鼠标#define EV_ABS 0x03 //触摸屏B.解决某一个设备下的动作types_code#define SYN_REPORT 0#define SYN_CONFIG 1#define SYN_MT_REPORT 2#define SYN_DROPPED 3#define REL_X 0x00#define REL_Y 0x01#define REL_Z 0x02#define ABS_X 0x00 X坐标value <==> x的坐标值#define ABS_Y 0x01 Y坐标value <==> y的坐标值#define ABS_PRESSURE 0x18 压力值value:>0 : 正在按压中=0 : 手已经松开了ts.c:实现手指按下时,坐标的捕捉及输出打印的条件:当压力值为0,手指弹开test2.c:利用触摸屏结合硬件驱动,进行点灯控制2.7音视频的播放(命令行 ./main ./test madplay)(1)音视频播放的原理数据输入:音频文件/视频文件黑匣子(播放器):madplay / mplayer数据输出:LCD,耳机接口(2)播放音乐madplay 1.mp3mplayer mv.mp4(3)替换MP4播放器[rootGEC210 xzx]which mplayer/bin/mplayerrm /bin/mplayertest1:完成命令行播放音乐和视频2.8音视频的播放命令行:只能同时运行一个可执行文件/一条命令代码嵌调用命令行:#include <stdlib.h>int system(const char *command);command:命令行的写法video.ctest2.c:在代码实现音视频的播放test3.c:利用触摸屏+ 音视频播放,实现小型播放器。

相关主题