电子系统设计与实践报告Word格式.docx

上传人:b****2 文档编号:1269055 上传时间:2023-04-30 格式:DOCX 页数:26 大小:246.34KB
下载 相关 举报
电子系统设计与实践报告Word格式.docx_第1页
第1页 / 共26页
电子系统设计与实践报告Word格式.docx_第2页
第2页 / 共26页
电子系统设计与实践报告Word格式.docx_第3页
第3页 / 共26页
电子系统设计与实践报告Word格式.docx_第4页
第4页 / 共26页
电子系统设计与实践报告Word格式.docx_第5页
第5页 / 共26页
电子系统设计与实践报告Word格式.docx_第6页
第6页 / 共26页
电子系统设计与实践报告Word格式.docx_第7页
第7页 / 共26页
电子系统设计与实践报告Word格式.docx_第8页
第8页 / 共26页
电子系统设计与实践报告Word格式.docx_第9页
第9页 / 共26页
电子系统设计与实践报告Word格式.docx_第10页
第10页 / 共26页
电子系统设计与实践报告Word格式.docx_第11页
第11页 / 共26页
电子系统设计与实践报告Word格式.docx_第12页
第12页 / 共26页
电子系统设计与实践报告Word格式.docx_第13页
第13页 / 共26页
电子系统设计与实践报告Word格式.docx_第14页
第14页 / 共26页
电子系统设计与实践报告Word格式.docx_第15页
第15页 / 共26页
电子系统设计与实践报告Word格式.docx_第16页
第16页 / 共26页
电子系统设计与实践报告Word格式.docx_第17页
第17页 / 共26页
电子系统设计与实践报告Word格式.docx_第18页
第18页 / 共26页
电子系统设计与实践报告Word格式.docx_第19页
第19页 / 共26页
电子系统设计与实践报告Word格式.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子系统设计与实践报告Word格式.docx

《电子系统设计与实践报告Word格式.docx》由会员分享,可在线阅读,更多相关《电子系统设计与实践报告Word格式.docx(26页珍藏版)》请在冰点文库上搜索。

电子系统设计与实践报告Word格式.docx

2.2linux操作系统的常规使用

2.2.1启动Linux系统

启动VMware--》选中Ubuntu12.04---》继续运行虚拟机--》进入桌面系统--》启动命令行

--》双击terminal(ctrl+alt+t)

2.2.2linux常规命令的使用

A.查看某个位置下有什么东西ls[选项][路径]

ls查看当前的位置下有什么东西(刷新)

ls-l查看当前位置下文件的详细信息

drwxrwxr-x文件操作权限(chmod)

ls-a查看当前位置下所有的文件(包含隐藏文件)

ls-la两个功能结合在一起

B.修改工作路径(更改当前所处的文件夹的位置)cd(路径)

cd/回到根目录(起点)

cd/&

&

cdhome&

cdgec

===》cd/home/gec

cd..返回上一级

cd~返回家目录(常规操作位置:

家目录/共享目录)==>

/home/gec

C.得到当前的工作路径

pwd得到当前的位置

D.创建&

删除(文件/目录)

touch文件名1文件名2//创建空白文件

rm文件名1文件名2//删除文件

mkdir目录名1目录名2//创建目录

rm-rf目录名1目录名2//删除目录

E.编辑&

编译&

执行

geditfilename.c//怎么编写源文件(c代码)

gcc/arm-linux-gccfilename.c-ofilename//生成可执行文件(编译)

./filename//运行可执行程序

F.修改文件的为可执行权限

chmod777filename

(3)补充:

路径的组成(文件存储结构:

树状结构)

相对路径:

当前位置下/一级目录/二级目录

绝对路径:

/一级目录/二级目录

2.3windows与Linux的文件共享

虚拟机--》设置--》选项--》共享文件夹--》启用--》添加--》下一步--》配置如下

主机路径(windows):

笔记

名称(LInux):

share(必须进入/mnt/hgfs)

test1.c:

编写九九乘法表,编译,运行起来

#include<

stdio.h>

voidmain()

{

chari,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);

}

\n"

);

return0;

2.4硬件控制

(1)双要素

驱动程序+应用程序(配套出现)

(2)驱动如何使用?

A.得到驱动程序文件led_drv.ko/gec210_beep.ko

B.加载驱动-->

产生设备文件--->

文件IO才能生效

insmodxxx.ko

==>

insmod:

can'

tinsert'

led_drv.ko'

:

Fileexists表示驱动已经存在

C.查看系统下已有的驱动

lsmod

==>

led_drv12030-Live0xbf028000//LED驱动

buzzer_drv14880-Live0xbf022000//蜂鸣器

gec210_beep12980-Live0xbf0e6000//蜂鸣器

rtnet3070ap241240-Live0xbf0d3000

rt3070ap4882611rtnet3070ap,Live0xbf044000(P)

rtutil3070ap220272rtnet3070ap,rt3070ap,Live0xbf037000

ov965088510-Live0xbf02e000

snd_soc_gec210_wm896030840-Live0xbf01c000

snd_soc_wm8960197921snd_soc_gec210_wm8960,Live0xbf011000

D.卸载原有的驱动

rmmodled_drv/buzzer_drv/gec210_beep

(3)应用程序的使用

./led_test

报错:

./led_test

Usage:

./led_test<

led_no>

<

on/off>

led_no=0,1,2,3

test1.c:

把LED和蜂鸣器的驱动加载,使用自带的应用程序进行控制

2.5写代码控制驱动对应的硬件

(1)LED灯

A.打开对应的设备文件:

/dev/leds

B.控制灯的状态

ioctl(led_fd,1,led_namb);

参数2:

灯的状态1亮0灭

参数3:

灯的序号0/1/2/3

C.关闭对应的文件描述符

test2-1:

完成的流水灯的设计。

(10次)

sleep

(1);

==》1s

usleep(1000*1000);

==》1us(1s)

(2)蜂鸣器

/dev/beep_drv

ioctl(fd,GEC210_BEEP_ON);

test2-2:

倒车雷达的实现

5s处于安全距离,5s后,进行一级报警(500ms)

再过5s,进入2级报警状态(200ms)

再过5s,进入3级报警状态(50ms)

2.6人机交互

所有的功能的启动、结束:

都是由用户来进行控制。

(人机交互)

2.6.1触摸屏的开发

linux对于常用输入设备,其开发方式都是一样的===>

输入子系统(鼠标、键盘、触摸屏...)

2.6.2输入子系统的原理

cat/dev/event0

2.6.3程序设计

输入子系统的设备文件:

/dev/event0

开发说明书(头文件):

input.h

(1)打开硬件对应的设备文件

(2)根据说明书提供的原始数据格式,进行读取操作

structinput_event{

__u16type;

__u16code;

__s32value;

};

(3)根据说明书提供的数据分类,进行拆包处理

原始数据

按住时

type=0x3code=0x0value=653

type=0x3code=0x1value=103

type=0x3code=0x18value=255

type=0x0code=0x0value=0

松开

type=0x3code=0x18value=0

A.解决设备类型type

/*

*Eventtypes输入设备当成是event,type的取值范围

*/

#defineEV_SYN0x00

#defineEV_KEY0x01//键盘

#defineEV_REL0x02//鼠标

#defineEV_ABS0x03//触摸屏

B.解决某一个设备下的动作types_code

#defineSYN_REPORT0

#defineSYN_CONFIG1

#defineSYN_MT_REPORT2

#defineSYN_DROPPED3

#defineREL_X0x00

#defineREL_Y0x01

#defineREL_Z0x02

#defineABS_X0x00X坐标

value<

==>

x的坐标值

#defineABS_Y0x01Y坐标

y的坐标值

#defineABS_PRESSURE0x18压力值

value:

>

0:

正在按压中

=0:

手已经松开了

ts.c:

实现手指按下时,坐标的捕捉及输出

打印的条件:

当压力值为0,手指弹开

test2.c:

利用触摸屏结合硬件驱动,进行点灯控制

2.7音视频的播放

(命令行./main./testmadplay)

(1)音视频播放的原理

数据输入:

音频文件/视频文件

黑匣子(播放器):

madplay/mplayer

数据输出:

LCD,耳机接口

(2)播放音乐

madplay1.mp3

mplayermv.mp4

(3)替换MP4播放器

[root@GEC210xzx]whichmplayer

/bin/mplayer

rm/bin/mplayer

test1:

完成命令行播放音乐和视频

2.8音视频的播放

命令行:

只能同时运行一个可执行文件/一条命令

代码内嵌调用命令行:

#include<

stdlib.h>

intsystem(constchar*command);

command:

命令行的写法

video.c

在代码内实现音视频的播放

test3.c:

利用触摸屏+音视频播放,实现小型播放器。

(播放音乐、上一首、下一首、暂停播放、继续播放、前进、后退)

2.9U盘下载

(1)数据放入U盘

(2)插入开发板的USB接口

----udevinsertorremove---sda1---add

(3)U盘数据的所在地?

/mnt/udisk

cp1.mp3/

第3章智能家居的具体实现

3.1智能家居整体设计图

智能家居整体功能如图1所示

3.2智能家居C语言程序

#include<

fcntl.h>

//openwritereadlseekclose

unistd.h>

sys/types.h>

sys/stat.h>

#include"

lcd.h"

api_v4l2.h"

//B.设定人生目标

void*child_fun(void*arg)

{

//定义出存放画面的变量

FreamBufferfreambuf;

unsignedchardata[640*480*3]={0};

while

(1)

//3.从缓冲区中去提取数据

linux_v4l2_get_fream(&

freambuf);

//4.将YUYV进行转换为RGB:

LCD.C

yuyv_to_rgb24(freambuf.buf,data,640,480);

//5.将RGB数据显示到LCD之上

lcd_draw_bmp_for_buf(0,0,data,640,480);

}

voidshow_camera()

{

intx,y;

//1.子功能UI的显示

lcd_draw_bmp(0,0,"

/yinshipin/camera.bmp"

//800*480

pthread_tchild_name;

pthread_create(&

child_name,NULL,child_fun,NULL);

{ts_get_xy(&

x,&

y);

if(x>

599&

x<

800&

y>

0&

y<

160)//继续

{

pthread_create(&

}

elseif(x>

159&

320)//暂停

pthread_cancel(child_name);

}

319&

480)//返回

linux_v4l2_stop_capturing();

break;

lcd_draw_bmp(0,0,"

/yinshipin/menu.bmp"

voidshow_music()

char*music_buf[30]={

"

/yinshipin/yinyue/1.mp3"

/yinshipin/yinyue/2.mp3"

/yinshipin/yinyue/3.mp3"

/yinshipin/yinyue/4.mp3"

};

/yinshipin/music.bmp"

intx,y,count=0;

music_play(music_buf[count]);

//2.获取落点坐标

ts_get_xy(&

399&

500&

299&

400)//上一首

count--;

if(count<

0)count=0;

music_stop(music_buf[count+1]);

music_play(music_buf[count]);

700&

400)//下一首

count++;

if(count>

3)count=3;

music_stop(music_buf[count-1]);

100&

400)//暂停

music_pause(music_buf[count]);

199&

300&

400)//继续

music_continue(music_buf[count]);

400&

music_stop(music_buf[count]);

lcd_draw_bmp(0,0,"

//刷新上一级的UI

voidshow_video()

char*video_buf[30]={

/yinshipin/shipin/1.mp4"

/yinshipin/shipin/2.mp4"

/yinshipin/shipin/3.mp4"

/yinshipin/video.bmp"

video_play(*video_buf);

239&

480)//上一个

video_stop(video_buf[count+1]);

video_play(video_buf[count]);

480)//下一个

2)count=2;

video_stop(video_buf[count-1]);

250&

240)//暂停

video_pause(video_buf[count]);

549&

240)//继续

video_continue(video_buf[count]);

249&

550&

video_stop(video_buf[count]);

voidshow_photo()

char*photo_buf[10]={

/yinshipin/tupian/1.bmp"

/yinshipin/tupian/2.bmp"

/yinshipin/tupian/3.bmp"

/yinshipin/tupian/4.bmp"

/yinshipin/tupian/5.bmp"

/yinshipin/tupian/6.bmp"

/yinshipin/tupian/7.bmp"

/yinshipin/tupian/8.bmp"

/yinshipin/tupian/9.bmp"

/yinshipin/tupian/10.bmp"

/yinshipin/photo.bmp"

480)//上一张

lcd_draw_bmp(0,0,photo_buf[count]);

699&

480)//下一张

9)count=9;

voidshow_home()

intx,y,d1=0,d2=0,d3=0,d4=0;

/yinshipin/home.bmp"

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2