文档库 最新最全的文档下载
当前位置:文档库 › 1嵌入式课程设计报告1

1嵌入式课程设计报告1

1嵌入式课程设计报告1
1嵌入式课程设计报告1

嵌入式课程设计报告

设计课题:网络视频采集

设计成员:0841903201陈芹

0841903202马歆雨

0841903203倪妮

0841903206王倩

专业:通信工程

学院:计算机科学与工程学院

指导老师:张明

2011年9月

江苏科技大学

一、课程设计目的

1.1 掌握linux开发环境的搭建;

1.2巩固嵌入式交叉编译的开发思想;

1.3掌握嵌入式GUI软件设计技。,.

二、课程设计要求

输入信号为1 路AV 视频信号,要求系统能对 1 路输入信号进行实时采集,数字化处理,压缩,存储,要保证一定的录像质量. 根据设计题目的要求,选择确定ARM 芯片型号,视频采集芯片型号,完成系统硬件设计和程序设计.

三、课程设计内容

设计原理ARM10 系列微处理器为低功耗的32 位RISC 处理器,最适合用于对价位和功耗要求较高的消费类应用.

ARM10 系列微处理器的主要应用领域为:工业控制,Internet 设备,调制解调器设备,移动电话等多种多媒体和嵌入式应用.

视频监控系统总体设计首先需要对系统进行总体规划,将系统划分成几个功能模块,确定各个模块的实现方法.整个视频监控系统采用C/S 结构,从主体上分为两部分:服务器端和客户端.服务器端主要包括S3C4510 平台上运行的采集,压缩,传输程序,客户端是PC 机上运行的接收,解压,回放程序.视频监控终端从摄像头捕获实时的视频信息,压缩之后通过以太网传输到视频监控服务器上.

视频图像采集和打包发送在服务器端完成,图像的接收解包和回放将在客户端完成. 采集图像数据压缩打包发送接收

系统的硬件设计系统采用模块化设计方案,主要包括以下几个模块:主控制器模块,储存电路模块, 外围接口电路模块,电源和复位电路,

S3C4510 主控器模块

主控器模块是整个系统的核心,采用的S3C4510B 处理器.Samsung 公司

的S3C45 10B 是基于以太网应用系统的高性价比16/32 位RISC 微控制器,内含一个由ARM 公司设计的16/32 位ARM7TDMI RISC 处理器核,ARM7TDMI 为低功耗,高性能的16/32 核,

系统存储电路模块

主控器还需一些外围存储单元如Nand Flash,和SDRAM.Nand Flash 中包含Lin ux 的Bootloader,系统内核,文件系统,应用程序以及环境变量和系统配置文件等;S DRAM 读写速度快,系统运行时把它作为内存单元使用.

外围电路模块

外围电路主要是以下几个电路,复位电路图,电源电路图以及JTAG 电路,

三、课程设计设备及工具

硬件:UP-NETARM2410-S嵌入式实验仪、PC机、ov511摄像头;

软件:PC机操作系统REDHAT LINUX 9.0、MINICOM、AMR-LINUX开发环境。

四、设计方案

本次课程设计采用arm10开发平台。该平台采用Samsung公司的处理器S3C2410。该处理器内部集成了ARM公司 ARM920T处理器核的32位微控制器,资源丰富,带独立的16KB的指令Cache和16KB数据Cache、LCD控制器、RAM 控制器、NAND 闪存控制器、3路UART、4路DMA、4路带PWM的Timer、并行I/O 口、8路10位ADC、Touch Screen接口、I2C接口、I2S接口、2个USB接口控制器、2路SPI,主频最高可达203MHz。在处理器丰富资源的基础上,还进行了相关的配置和扩展,平台配置了16MB 16位的Flash和64MB 32位的SDRAM。通过以太网控制器芯片DM9000E扩展了一个网口,另外引出了一个HOST USB接口。通过在USB接口上外接一个带USB口的摄像头,将采集到的视频图像数据放入输入缓冲区中。然后,对缓冲区中的视频数据进行压缩成帧,并把每一帧图片在网页中显示出来,每秒钟刷新两次,得到一个动态的视频界面,然后通过局域网访问该主机的网页,得到网络视频信息。本次课程设计主要是完成得到视频图片及网页刷新的过程。

本次设计要求在局域网环境中进行。

五、开发环境配置

5.1 摄像头驱动加载

在Linux下,设备驱动程序可以看成Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件实现了的细节,使得应用程序可以像操作普通文件一样来操作外部设备,可以使用和操作文件中相同的、标准的系统调用接口函数来完成对硬件设备的打开、关闭、读写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统调用函数。本系统平台使用的嵌入式arm-Linux系统在内核主要功能上与 Linux操作系统没本质区别。

Video4Linux(简V4L)是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数,这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB摄像头等。

ov511的驱动,2.4的内核中就有,所以我们只需重新编译内核,将下边的选项都选上,然后重新烧写内核就可以了。也就是直接静态加载。

(1)在arm linux的kernel目录下make menuconfig。

(2)首先(*)选择Multimedia device->下的Video for linux。加载video4linux 模块,为视频采集设备提供编程接口;

(3)然后在usb support->目录下(*)选择support for usb和usb camera ov511 support。这使得在内核中加入了对采用OV511接口芯片的USB数字摄像头的驱动支持。

(4)保存配置退出。

(5)make dep;make zImage就生成了带有ov511 驱动的内核。

接下来就通过uboot将内核烧到flash里去。这时你将摄像头插上,系统就会提示发现摄像头-ov511+,这说明驱动正常。:-),驱动加载就成功了。

5.2 安装jpeg库

在地址ftp://https://www.wendangku.net/doc/c217435550.html,/graphics/jpeg/jpegsrc.v6b.tar.gz中下载jpeg库的压缩包。

# tar -zxvf jpegsrc.v6b.tar.gz //解压库文件

# cd jpeg-6b

# ./configure --prefix=/usr/local/jpeg6--enable-shared //生成MAKEFILE文件

# make //编译安装文件

#mkdir /usr/local/jpeg6

#mkdir /usr/local/jpeg6/include

#mkdir /usr/local/jpeg

#mkdir /usr/local/jpeg/lib

#mkdir /usr/local/jpeg/bin

#mkdir /usr/local/jpeg/man

#mkdir /usr/local/jpeg/man/man1 //建立生成安装文件的目录

#make install -lib /生成安装文件

#make install //开始安装文件

六、设计过程

6.1 硬件设计

系统的主体设计思想是将视频前端和嵌入式Web服务器整合在一起,摄像头通过USB接口和嵌入式系统板的USB HOST相连,摄像头采集来的视频信号经过压缩后,通过内部总线传送到内置的Web服务器,客户端采用浏览器/服务器结构(即B/S结构),可以通过IE浏览器访问视频Web服务器,以便查看所监控的视频画面,而且,用户还可以控制平台对镜头的动作或对系统进行配置控制。

网络视频采集系统是由视频监控终端和视频监控中心组成,终端使用嵌入式系统加上USB摄像头,在Linux操作系统上运行USB摄像头的驱动和相应的视频采集处理传输程序,得到视频监控画面,并画面通过网络传输,监控中心运行监控软件端,通过Internet浏览器来浏览终端送来的监控画面,其硬件连接图如下所示:

ov511摄像头

Pc机ARM2410

网线

网络视频采集硬件连接图

从图中可以看出,PC机部分可以直接采用IE浏览器,不需要在PC机上运

行其他的软件,主要设计工作是开发板端的设计。视频监控终端主要有两个部分组成,硬件部分包括摄像头和开发平台的选择;软件部分包括系统级软件(Boot Loader,嵌入式操作系统,USB驱动程序)与用户级软件(应用程序)。

6.2 软件设计

Video4linux为应用程序提供了一系列的接口函数,通过这些函数,可以执行打开、读写、关闭等基本操作。设备驱动提供了read、write、open、close 等函数的具体实现,在内核这些函数都可以调用。视频采集流程图如下所示:

开始

打开设备并

初始化

选取采集

方式

采集视频数

图像处理

是否结束采

关闭视频设

结束N

Y

视频采集流程图

利用V4L编写的视频采集程序重要代码如下,下列代码包含采集编码程序一些关键函数。

(1)程序中定义的数据结构

struct _v4l_struct

{

int fd; // 保存打开视频文件的设备描述符

struct video_capability capability;

struct video_picture picture;

struct video_mmap mmap;

struct video_mbuf mbuf;

unsigned char *map; // 用于指向图像数据的指针

int frame_current;

int frame_using[VIDEO_MAX_FRAME]; // 这两个变量用于双缓冲

}; typedef struct _v4l_struct v4l_device;

这些数据结构都是由Video4Linux支持的,它们的用途如下:

*video_capability包含摄像头的基本信息,例如设备名称、支持的最大最小分辨率、信号源信息等;

*voide_picture包含设备采集图像的各种属性,如brightness(亮度)、hue(色调)、contrast(对比度)、whiteness(色度)、color(深度)等;

*video_mmap用于内存映射;

*voido_mbuf利用mmap进行映射的帧信息,实际上是输入到摄像头存储器缓冲中的帧信息,包括size(帧的大小)、frames(最多支持的帧数)、offsets (每帧相对基址的偏移)。

程序中用到的主要系统调用函数有:open("/dev/voideo0",int flags)、close(fd)、mmap(void *start,size_t length,int prot,int flags,int

fd,off_t offset)、munmap(void *start,size_tlength)和ioctl(int fd,int cmd,…)。

前面提到Linux系统中把设备看成设备文件,在用户空间可以通过标准的I/O系统调用函数操作设备文件,从而达到与设备通信交互的目的。当然,在设备驱动中要提供对这些函数的相应支持。这里说明一下ioctl(int fd,int cmd,…)函数,它在用户程序中用来控制I/O通道,其中,fd代表设备文件描述符,cmd代表用户程序对设备的控制命令,省略号一般是一个表示类型长度的参数,也可没有。

(2)采集程序实现过程

首先打开视频设备,摄像头在系统中对应的设备文件为/dev/video0,采用系统调用函数grab_fd =open ("/dev/video0",O_RDWR),grab_fd是设备打开后返回的文件描述符(打开错误返回-1),以后的系统调用函数就可使用它来对设

备文件进行操作了。接着,利用ioct1(grab_fd,VIDIOCGCAP,&grab_cap)函数读取struct video_capability中有关摄像头的信息。该函数成功返回后,这些信息从内核空间拷贝到用户程序空间grab_cap各成员分量中,使用 printf函数就可得到各成员分量信息,例如printf("maxheight=%d",grab_fd.maxheight)获得最大垂直分辨率的大小。不规则用ioct1(grab_fd,VIDIOCGPICT,&grab_pic)函数读取摄像头缓冲中voideo_picture信息。在用户空间程序中可以改变这些信息,具体方法为先给分量赋新值,再调用VIDIOCSPICT ioct1函数,例如:grab_fd.depth=3;

if(ioct1(grab_fd,VIDIOCSPICT,&grab_pic)<0)

{perror("VIDIOCSPICT");return -1;};

完成以上初始化设备工作后,就可以对视频图像截取了,有两种方法:一种是read()直接读取;另外一种 mmap()内存映射。Read ()通过内核缓冲区来读取数据;而mmap()通过把设备文件映射到内存中,绕过了内核缓冲区,最快的磁盘访问往往还是慢于最慢的内存访问,所以mmap ()方式加速了I/O访问。另外,mmap()系统调用使得进程之间通过映射同一文件实现共享内存,各进程可以像访问普通内存一样对文件进行访问,访问时只需要使用指针而不用调用文件操作函数。因为mmap()的以上优点,所以在程序实现中采用了内存映射方式,即mmap()方式。

利用mmap()方式视频裁取具体进行操作如下。

①先使用ioct1(grab_fd,VIDIOCGMBUF,&grab_vm)函数获得摄像头存储缓

冲区的帧信息,之后修改voideo_mmap中的设置,例如重新设置图像帧的垂直及水平分辨率、彩色显示格式。可利用如下语句

grab_buf.height=240;

grab_buf.width=320; 字串8

grab_buf.format=VIDEO_PALETTE_RGB24;

②接着把摄像头对应的设备文件映射到内存区,具体使用

grab_data=(unsigned char*)

mmap(0,grab_vm.size,PROT_READ|PROT_WRITE,MAP_SHARED,grad_fd,0)操作。这样设备文件的内容就映射到内存区,该映射内容区可读可写并且不同进程间可共

享。该函数成功时返回映像内存区的指针,挫败时返回值为-1。

下面对单帧采集和连续帧采集进行说明:

*单帧采集。在上面获取的摄像头存储缓冲区帧信息中,最多可支持的帧数(frames的值)一般为两帧。对于单帧采集只需设置 grab_buf.frame=0,即采集其中的第一帧,使用ioctl(grab_fd,VIDIOCMCAPTURE,&grab_buf) 函数,若调用成功,则激活设备真正开始一帧图像的截取,是非阻塞的。接着使用

ioct1(grab_fd,VIDIOCSYNC,&frame) 函数判定该帧图像是否截取完毕,成功返回表示截取完毕,之后就可把图像数据保存成文件的形式。

七、测试与实现

(1)仔细检查设备的连接,打开电源;

(2)在PC机上的浏览器中地址栏输入开发板地址,网页自动跳到开发板的首页;

(3)在页面上可见摄像头采集到的视频信息。

经验证,本次设计基本达到设计要求。

八、设计心得

本次课程设计通过运用嵌入式技术,图形处理技术等,完成了网络视频的采集过程,进一步熟悉了交叉编译的开发方法,在开发的过程中,遇到很多问题,如驱动无法加载,程序调试出错等,通过重新编译开发板内核、安装图形处理库等,解决了多个问题,在解决问题的过程中,我们对嵌入式的开发过程多了一些细节的认识,为以后的持续学习巩固了基础。

在设计过程中,我们分工合作,一起进步,不只从理论上对嵌入式有了更深的认识,同时从实践中验证了学习的理论知识,对嵌入式有了更深一步的认识。

九、源程序清单

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define WIDTH 640

#define HEIGHT 480

#define DEFAULT_DEVICE "/dev/v4l/video1"

int write_jpeg(char *filename,unsigned char *buf,int quality,int width, int height, int gray) {struct jpeg_compress_struct cinfo;

struct jpeg_error_mgr jerr;

FILE *fp;

int i;

unsigned char *line;

int line_length;

if (NULL == (fp = fopen(filename,"w")))

{

fprintf(stderr,"grab: can't open %s: %s\n",filename,strerror(errno));

return -1;

}

cinfo.err = jpeg_std_error(&jerr);

jpeg_create_compress(&cinfo);

jpeg_stdio_dest(&cinfo, fp);

cinfo.image_width = width;

cinfo.image_height = height;

cinfo.input_components = gray ? 1: 3;

cinfo.in_color_space = gray ? JCS_GRAYSCALE: JCS_RGB;

jpeg_set_defaults(&cinfo);

jpeg_set_quality(&cinfo, quality, TRUE);

jpeg_start_compress(&cinfo, TRUE);

line_length = gray ? width : width * 3;

for (i = 0, line = buf; i < height; i++, line += line_length)

jpeg_write_scanlines(&cinfo, &line, 1);

jpeg_finish_compress(&(cinfo));

jpeg_destroy_compress(&(cinfo));

fclose(fp);

/////////////////////////////////////////////////////////////////////

char fn1[30]="/var/www/pic001.jpg";

char fn2[30]="/var/www/pic002.jpg";

if (NULL == (fp = fopen(fn1,"r"))){

fclose(fp);

remove(fn1);

}

rename(fn2,fn1);

/////////////////////////////////////////////////////////////////////

return 0;

}

//这个函数很通用,它的作用是把buf中的数据压缩成jpeg格式。

struct _v4l_struct

{

int fd; // 保存打开视频文件的设备描述符

struct video_capability capability;

struct video_picture picture;

struct video_mmap mmap;

struct video_mbuf mbuf;

unsigned char *map; // 用于指向图像数据的指针

int frame_current;

int frame_using[VIDEO_MAX_FRAME]; // 这两个变量用于双缓冲

}; typedef struct _v4l_struct v4l_device;

extern int v4l_open(char *, v4l_device *);

extern int v4l_close(v4l_device *);

extern int v4l_get_capability(v4l_device *);

extern int v4l_get_picture(v4l_device *);

extern int v4l_get_mbuf(v4l_device *);

extern int v4l_set_picture(v4l_device *, int, int, int, int, int);

extern int v4l_grab_picture(v4l_device *, unsigned int);

extern int v4l_mmap_init(v4l_device *);

extern int v4l_grab_init(v4l_device *, int, int,int);

extern int v4l_grab_frame(v4l_device *, int);

extern int v4l_grab_sync(v4l_device *);

int v4l_open(char *dev , v4l_device *vd)

{

dev= DEFAULT_DEVICE;

if((vd->fd=open(dev,O_RDWR))<0){perror("v4l_open");return -1;}

if(v4l_get_capability(vd))return -1;

if(v4l_get_picture(vd))return -1; // 这两个函数就是即将要完成的获取设备信息的函数return 0;

}

int v4l_get_capability(v4l_device *vd)

{

if (ioctl(vd->fd, VIDIOCGCAP, &(vd->capability)) < 0) {

perror("v4l_get_capability:");

return -1;

}

return 0;

}

int v4l_get_picture(v4l_device *vd)

{

if (ioctl(vd->fd, VIDIOCGPICT, &(vd->picture)) < 0) {

perror("v4l_get_picture:");

return -1;

}

return 0;

}

int v4l_get_mbuf(v4l_device *vd)

{

if (ioctl(vd->fd, VIDIOCGMBUF ,&(vd->mbuf)) < 0) {

perror("v4l_get_mbuf:");

return -1;

}

return 0;

}

int v4l_set_picture(v4l_device *vd,int br,int hue,int col,int cont,int white)

{

/* if(br)*/ vd->picture.brightness=25000;

/* if(hue)*/ vd->picture.hue=25000;

/* if(col)*/ vd->picture.colour=65535;

/* if(cont)*/ vd->picture.contrast=30000;

/* if(white)*/ vd->picture.whiteness=25000;

if(ioctl(vd->fd,VIDIOCSPICT,&(vd->picture))<0)

{perror("v4l_set_picture: ");return -1;}

return 0;

}

int v4l_grab_picture(v4l_device *vd, unsigned int size)

{

if(read(vd->fd,&(vd->map),size)==0)return -1;

return 0;

}

int v4l_mmap_init(v4l_device *vd)

{

if (v4l_get_mbuf(vd) < 0)

return -1;

if ((vd->map = mmap(0, vd->mbuf.size, PROT_READ|PROT_WRITE, MAP_SHARED, vd->fd, 0)) < 0) {

perror("v4l_mmap_init:mmap");

return -1;

return 0;

}

int v4l_grab_init(v4l_device *vd, int width, int height,int pal)

{

vd->mmap.width = width;

vd->mmap.height = height;

pal= vd->picture.palette;

vd->mmap.format=pal;

vd->frame_current = 0;

vd->frame_using[0] = FALSE;

vd->frame_using[1] = FALSE;

return v4l_grab_frame(vd, 0);

}

//真正获得图像的函数extern int v4l_grab_frame(v4l_device *, int);

int v4l_grab_frame(v4l_device *vd, int frame)

{

if (vd->frame_using[frame]) {

fprintf(stderr, "v4l_grab_frame: frame %d is already used.\n", frame);

return -1;

}

vd->mmap.frame = frame;

if (ioctl(vd->fd, VIDIOCMCAPTURE, &(vd->mmap)) < 0) {

perror("v4l_grab_frame");

return -1;

}

vd->frame_using[frame] = TRUE;

vd->frame_current = frame;

return 0;

}

//在截取图像后还要进行同步操作,就是调用extern int v4l_grab_sync(v4l_device *); 该函数如下

int v4l_grab_sync(v4l_device *vd)

{

if (ioctl(vd->fd, VIDIOCSYNC, &(vd->frame_current)) < 0) {

perror("v4l_grab_sync");

}

vd->frame_using[vd->frame_current] = FALSE;

return 0;

}

int v4l_close(v4l_device *vd)

{

close(vd->fd);

return 0;

//该函数返回0 说明你想要获取的图像帧已经获取完毕。

//图像的位置,存在vd.map+vd.mbuf.offsets[vd.frame_current] 处。其中vd.frame_current=0 ,为

//第一帧的位置,vd.frame_current=1 ,为第二帧的位置。

void bufBRExchange(unsigned char * buf, int bufLength)

{

int i=0;

printf("ECHG SUC\n");//bufLength-=2;

unsigned char temp;

for(i=15;i<921615;i+=3)

{

temp=buf[i];

buf[i]=buf[i+2];

buf[i+2]=temp;

}

}

int main()

{v4l_device vd;

unsigned char* buf;// unsigned char nbuf[1843216];

v4l_open(DEFAULT_DEVICE,&vd);

v4l_mmap_init(&vd);

v4l_grab_init(&vd,640,480,0);

v4l_grab_sync(&vd); // 此时就已经获得了一帧的图像,存在vd.map 中

//buf=(unsigned char*) vd.map+vd.mbuf.offsets[vd.frame_current];

while(TRUE)

{

buf=vd.map+vd.mbuf.offsets[vd.frame_current];

printf("%d\n",vd.mbuf.size);

bufBRExchange(buf,vd.mbuf.size);

//unsigned char echg;

vd.frame_current ^= 1;

v4l_grab_frame(&vd, vd.frame_current);

v4l_grab_sync(&vd);

printf("FRAME 1 OK!\n");

if(-1 == (write_jpeg("/var/www/pic002.jpg",buf,30,640,480,0)))

{

printf("write_jpeg error\n");

exit(1);

}

printf("FRAME 2 OK!\n");

//图像处理函数(vd.map+vd.mbuf.offsets[vd.frame_current] );//循环采集

// 其中vd.map+vd.mbuf.offsets[vd.frame_current] 就是图像所在位置。

}

v4l_close(&vd); }

课程设计报告模板)

课程设计报告模板()

————————————————————————————————作者: ————————————————————————————————日期: ?

课程设计(论文)任务书 软件学院软件+电商专业09级(2)班 一、课程设计(论文)题目基本模型机设计与实现 二、课程设计(论文)工作自2011年6月 20 日起至2011年 6月 24日止。 三、课程设计(论文) 地点:计算机组成原理实验室(5#301) 四、课程设计(论文)内容要求: 1.课程设计的目的 通过课程设计的综合训练,在掌握部件单元电路实验的基础上,进一步掌握整机 概念。培养学生实际分析问题、解决问题和动手能力,最终目标是想通过课程设计的形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。 2.课程设计的任务及要求 1)基本要求? (1)课程设计前必须根据课程设计题目认真查阅资料; (2)实验前准备好实验程序及调试时所需的输入数据; (3)实验独立认真完成; (4)对实验结果认真记录,并进行总结和讨论。 2)课程设计论文编写要求 (1)按照书稿的规格撰写打印课设论文 (2)论文包括目录、绪论、正文、小结、参考文献、附录等 (3)正文中要有问题描述、实验原理、设计思路、实验步骤、调试过程与遇到问题的解决方法、总结和讨论等 (4)课设论文装订按学校的统一要求完成 3)课设考核 从以下几方面来考查:

(1)出勤情况和课设态度; (2)设计思路; (3)代码实现; (4)动手调试能力; (5)论文的层次性、条理性、格式的规范性。 4)参考文献 [1]王爱英.计算机组成与结构[M]. 北京:清华大学出版社, 2007. [2] 王爱英. 计算机组成与结构习题详解与实验指导[M]. 北京:清华大学出版社, 2007. 5)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 实验与调试 3 实验室 撰写论文 1 图书馆 6)任务及具体要求 设计实现一个简单的模型机,该模型机包含若干条简单的计算机指令,其中至少包括输入、输出指令,存储器读写指令,寄存器访问指令,运算指令,程序控制指令。学生须根据要求自行设计出这些机器指令对应的微指令代码,并将其存放于控制存储器,并利用机器指令设计一段简单机器指令程序。将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符 合设计要求,并对程序运行结果的正、误分析其原因。 学生签名: 亲笔签名 2011年6月20 日 课程设计(论文)评审意见 (1)设计思路:优( )、良()、中( )、一般()、差( ); (2)代码实现:优()、良()、中()、一般()、差();

北京科技大学 嵌入式课程设计报告

《嵌入式控制系统》课程设计报告 学院 专业班级 姓名 学号 指导教师 _

目录 摘要 (4)

Abstract (4) 引言 (5) 带中断LED数码管驱动程序设计 (6) 1.设计内容 (6) 1.1 基本功能 (6) 1.2 扩展功能 (6) 1.3创新功能 (6) 2.实验设备 (6) 3.设计功能块说明 (6) 4.设计原理 (7) 4.1 LED发光原理 (7) 4.2 八位LED显示器 (8) 5. 实验步骤 (8) 5.1 驱动程序加载 (8) 5.2 添加控件 (8) 5.3基本功能的实现 (9) 5.4 使用指南 (10) 6. 实验结果 (10) 6.1 基本功能实现结果 (10) 6.2 LED数码管清零功能实现结果 (11) 6.3 中断计数功能实现结果 (12) 6.4 频率设置功能实现结果 (13) 7. 心得体会 (14) 附录 (16)

摘要 通过嵌入式控制系统课程的学习并结合本次课程设计,了解嵌入式系统的开发方法和流程,熟悉Intel XScale硬件平台及其应用处理机的使用方法,熟悉Windows CE嵌入式系统的基本原理、概念。能针对Intel XScale硬件平台、应用需求自行定制、优化WinCE操作系统,并独立编写可在Intel XScale嵌入式设备上运行的应用程序。 本课程设计主要实现了LED数码管的驱动程序,中断计数功能、LED显示清零功能、LED 数字显示频率设置的功能。 关键字:WINCE 中断数码管驱动 Abstract Learning Embedded Control Systems and combining the curriculum design can help us understand the Embedded Control Sy stems’ development methods and processes, and be familiar with Intel XScale Hardware platform and its usage. Know well the basic principles and concepts about WINCE. Design and optimize Windows Embedded Compact and compose Application software program that can operate on the Intel XScale Hardware platform. The main achievement of the curriculum design are drivers for LED, Interrupt Count, clean the results of the LED and set up the display frequency of the LED. Key words: WINCE Interrupt Digital Driving

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

嵌入式实验报告

嵌入式技术 实验报告 系别:计算机与科学技术系 班级:计12-1班 姓名:刘杰 学号:12101020128 总成绩: 评语: 日期:

2.在弹出的对话框中依次选择“cedevice emulator emulator kdstub”。 3.选择“Build OS”菜单的“sysgen”开始构建平台。 1.1.4连接,下载和运行平台 1.选择“Target”菜单下的“Connection option”菜单项。 2.在新的对话框中,配置连接关系 3.选择“Target”菜单下的“attach”菜单项,开始下载。 ?实验结果 操作系统定制成功,能正常运行。 ?结果截图 ?问题总结 由于对实验平台了解不够,致使操作过程中添加和删除组件时不知道该如何下手,影响整个实验进度。 实验1.2: 1.打开Platform Builder,并且打开实验1的工程,在实验1的工程基础上做本实验。

进程显示 IE信息查看

报文监测 实验1.3使用Platform Builder开发应用程序 简单实验步骤 1.打开Platform Builder。 2.选择“File”菜单下的“Open Workspace…”,然后打开实验1中创建的平台,本实验要基于 上面的实验的基础上做。 3.选择“File”菜单下的“New Project or File…”,打开“New Project or File”对话框。 4.在“Projects”选项页中选择“WCE Application”;在“Project Name”中输入项目的名字,例 如“MyApp”。 5.在“New Project Wizard – step 1 of 1”中选择“A typical Hello World Application”,点击“Finish” 按钮。 6.选择“Build”菜单中的“Build MyApp.exe”来编译应用程序。

课程设计报告【模板】

模拟电子技术课程设计报告设计题目:直流稳压电源设计 专业电子信息科学与技术 班级电信092 学号 200916022230 学生姓名夏惜 指导教师王瑞 设计时间2010-2011学年上学期 教师评分 2010年月日

昆明理工大学津桥学院模拟电子技术课程设计 目录 1.概述 (2) 1.1直流稳压电源设计目的 (2) 1.2课程设计的组成部分 (2) 2.直流稳压电源设计的内容 (4) 2.1变压电路设计 (4) 2.2整流电路设计 (4) 2.3滤波电路设计 (8) 2.4稳压电路设计 (9) 2.5总电路设计 (10) 3.总结 (12) 3.1所遇到的问题,你是怎样解决这些问题的12 3.3体会收获及建议 (12) 3.4参考资料(书、论文、网络资料) (13) 4.教师评语 (13) 5.成绩 (13)

昆明理工大学津桥学院模拟电子技术课程设计 1.概述 电源是各种电子、电器设备工作的动力,是自动化不可或缺的组成部分,直流稳压电源是应用极为广泛的一种电源。直流稳压电源是常用的电子设备,它能保证在电网电压波动或负载发生变化时,输出稳定的电压。一个低纹波、高精度的稳压源在仪器仪表、工业控制及测量领域中有着重要的实际应用价值。 直流稳压电源通常由变压器、整流电路、滤波电路、稳压控制电路所组成,具有体积小,重量轻,性能稳定可等优点,电压从零起连续可调,可串联或关联使用,直流输出纹波小,稳定度高,稳压稳流自动转换、限流式过短路保护和自动恢复功能,是大专院校、工业企业、科研单位及电子维修人员理想的直流稳压电源。适用于电子仪器设备、电器维修、实验室、电解电镀、测试、测量设备、工厂电器设备配套使用。几乎所有的电子设备都需要有稳压的电压供给,才能使其处于良好的工作状态。家用电器中的电视机、音响、电脑尤其是这样。电网电压时高时低,电子设备本身耗供电造成不稳定因家。解决这个不稳定因素的办法是在电子设备的前端进行稳压。 直流稳压电源广泛应用于国防、科研、大专院校、实验室、工矿企业、电解、电镀、充电设备等的直流供电。 1.1直流稳压电源设计目的 (1)、学习直流稳压电源的设计方法; (2)、研究直流稳压电源的设计方案; (3)、掌握直流稳压电源的稳压系数和内阻测试方法。 1.2课程设计的组成部分 1.2.1 设计原理

嵌入式课程设计报告

嵌入式课程设计报告设计题目:电子密码锁

、 摘要 随着科技和人们的生活水平的提高,实现防盗的问题也变得尤为突出,传统机械锁构造简单,电子锁的保密性高,使用灵活性好。根据需要设计运用W90P170开发板,制作一款电子密码锁,密码锁通过键盘输入密码,通过在LCD的文字和图片显示当前密码锁的状态。实现设置密码,密码验证,错误密码自锁、图片显示的功能。 目录

一、选题意义及系统功能 (3) 二、硬件设计及描述 (4) 三、软件设计及描述 (5) 四、程序代码 (6) 五、课程设计体会 (11) 六、运行结果 (12) 七、心得体会 (12) 八、参考文献 (13) 九、附录 (13) 一、选题意义及功能描述 1、选题意义 电子密码锁是通过密码输入来控制电路或是芯片工作,从而控制机械的开关闭合、开锁的电子产品。随着科技提高和人们生活水平的提高,对电子密码锁的需求增加。电子密码做较传统的机械锁安全性能更高。 特点如下: (1)保密性好,编程量大,随机开锁的成功率几乎为零。

(2)密码可变,用户可以随时改变密码,防止密码被盗,同时也可以避免人员的更替而使锁的密级下降。 (3)误码输入保护,输入密码多次错误是,系统进行自锁。 (4)无活动零件,不会磨损,寿命长。 (5)使用灵活性好,无需佩戴钥匙,操作简单。 2、功能描述 基本功能: (1)从键盘输入任意6位数字作为密码,将这六位数字经过USI总线存储到Flash芯片中,设置密码完成。 (2)从键盘输入密码,比较键盘输入的密码与Flash中存储的密码是否相同。 (3)如果密码正确,则LED灯点亮;如果密码不正确,则LED灯闪烁,而且如果连续三次输入密码错误则系统锁定,不允许再次输入密码。 扩展功能: (1)首先显示“请输入密码:”,显示密码锁背景图片1。 (2)如果密码正确则显示“密码正确”,显示成功进入系统的背景图片2。 (3)如果密码不正确则显示“密码不正确,请重新输入:” (4)如果连续三次输入密码错误则显示“对不起,您已经连续三次输入密码错误,系统锁定”,显示图片1。

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 :安磊 班级:计科0901 学号: 0909090310 指导老师:宋虹

目录 课程设计容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------ 6 文件系统的层次结构和功能模块 --------------------- 6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录 -------------------------------------------------- 12

课程设计容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小核可编译至 2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统核,它仅仅包含了任务调度,任务管理,时间管理,存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时核,并在这个核之上提供最基本的系统服务,如信号量,,消息队列,存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

嵌入式系统实验报告

实验报告 课程名称:嵌入式系统 学院:信息工程 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师: 开课时间:学年第一学期

实验名称:IO接口(跑马灯) 实验时间:11.16 实验成绩: 一、实验目的 1.掌握 STM32F4 基本IO口的使用。 2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。 3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。 二、实验原理 本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。 三、实验资源 实验器材: 探索者STM32F4开发板 硬件资源: 1.DS0(连接在PF9) 2.DS1(连接在PF10) 四、实验内容及步骤 1.硬件设计 2.软件设计 (1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。 (2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。 (4)新建一个led.h文件,保存在 LED 文件夹下,在led.h中输入相应的代码。 3.下载验证 使用 flymcu 下载(也可以通过JLINK等仿真器下载),如图 1.2所示: 图1.2 运行结果如图1.3所示:

课程设计报告模版

课程设计报告模版

《城市排水处理》 课程设计报告 系别:城市建设系 专业班级:给水排水0601班 学生姓名: 指导教师:段泽琪 (课程设计时间: 6月15日—— 6月19日) 华中科技大学武昌分校

目录 1.课程设计目的 (1) 2.课程设计题目描述和要求 (1) 3.课程设计报告内容 (3) 3.1污水处理工艺方案比较 (3) 3.2主要污水处理构筑物选型 (6) 3.3污水处理构筑物的主要设计参数 (7) 3.4污水处理辅助构筑物设计 (8) 3.5污水处理厂平面布置设计 (8) 3.6 污水处理厂高程布置设计 (9) 3.7 设计计算………………………………………………………………………

10 4.总结……………………………………………………………………………页码 参考文献…………………………………………………………………………页码 (要求:目录题头用三号黑体字居中书写,隔行书写目录内容。目录中各级题序及标题用小四号黑体)

1. 课程设计目的 (1) 经过污水处理厂课程设计,巩固学习成果,加深对《水污染控制》课程内容的学习与理解,使学生学习使用规范、手册与文献资料,进一步掌握设计原则、方法等步骤,达到巩固、消化课程的主要内容; (2) 锻炼独立工作能力,对污水处理厂的主体构筑物、辅助设施、计量设备及污水厂总体规划、管道系统做到一般的技术设计深度,培养和提高计算能力、设计和绘图水平; (3) 在教师指导下,基本能独立完成一个中、小型污水处理厂工艺设计,锻炼和提高学生分析及解决工程问题的能力。 2.课程设计题目描述和要求 2.1 设计题目描述 (1) 设计题目 某城市污水处理厂工艺初步设计。 (2) 设计内容 根据任务书所给定的资料,综合运用所学的基础、专业基础和专业知识,设计一个中小型污水处理厂。 ①确定污水处理方法和工艺流程; ②选择各种处理构筑物形式,并进行工艺设计计算(计算书中要附计算草图); ③估算各辅助构筑物的平面尺寸; ④进行污水厂平面布置和高程布置。

嵌入式实验报告心得

嵌入式实验报告心得 篇一:嵌入式系统原理实验总结报告 嵌入式系统原理实验总结报告 车辆座椅控制系统实验 XX/5/23 嵌入式系统原理实验总结报告 一、技术性总结报告 (一)题目:车辆座椅控制系统实验(二)项目概述: 1.为了实现车辆座椅控制的自动化与智能化。 2.方便用户通过智能手机与车载传感器之间的联动。 3.使车辆作为当今物联网中重要的一个节点发挥作用。 4.通过车辆座椅控制系统实验实现对嵌入式系统原理课程的熟练掌握与对嵌入式系统原理知识的深化记忆。 5. 加强本组学生对嵌入式系统原理的更深层次的理解与运用。 (三)技术方案及原理 本次试验分为软件、硬件两个部分。 1.软件部分。 A.智能手机部分,包括通过智能手机对座椅的控制部分、手机所携带的身份信息部分。 本部分软件使用Java编写,其程序部分为:主程序:package ;

import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ;import ; import ; import ; public class MainActivity extends ActionBarActivity { private Button Up = null; private Button Left = null; private Button Dowm = null; private Button Right = null; private Socket socket = null; private static final String HOST = "";private static final int PORT = 10007; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(; initControl();} private void initControl() {

嵌入式系统课程设计报告

湖北民族学院 信息工程学院 课程设计报告书 题目 :基于A RM的数字式万年历 课程:嵌入式系统课程设计 专业:电子信息科学与技术 班级: 03114411 学号: 031441119 学生姓名:田紫龙 指导教师:易金桥 2017年6 月20 日

信息工程学院课程设计任务书 学号031441119学生姓名田紫龙专业(班级)0314411 设计题目基于 ARM 的数字式万年历 1.能测量温度并且实时显示; 2.具有时间显示功能,能够显示年月日,时分秒,并且可以手动调节时间。 设 3. 具有 12 小时制和 24 小时制切换功能。 计 技 术 参 数 对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集 选用 DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602 液晶显 示模块,可以在LCD1602 上同时显示年、月、日、周日、时、分、秒,还具有 设 时间校准整点灯光提醒等功能。制作仿真和实物。 计 要 求 [1]苏平 . 单片机的原理与接口技术 [M]. 北京 : 电子工业出版社, 2006,1-113. [2]王忠民 . 微型计算机原理 [M]. 西安 : 西安科技大学出版社, 2003,15-55. [3]左金生 . 电子与模拟电子技术 [M]. 北京 : 电子工业出版社, 2004,105-131. [4]新编单片机原理与应用(第二版). 西安电子科技大学出版社, 2007.2 [5]张萌 . 单片机应用系统开发综合实例 [M]. 北京:清华大学出版社, 2007.7 [6] 朱思荣. 51 单片机实现公历与农历、星期的转换[Z].当当电子网 [7]李广弟 . 单片机原理及应用 [M] 北京航空航天大学出版社 ,2004 年 参[8] 王越明 . 电子万年历的设计 [J]. 黑龙江科技信息, 2004 年 考 资 料 2017年 6 月 20 日

南邮嵌入式系统B实验报告2016年度-2017年度-2

_* 南京邮电大学通信学院 实验报告 实验名称:基于ADS开发环境的程序设计 嵌入式Linux交叉开发环境的建立 嵌入式Linux环境下的程序设计 多线程程序设计 课程名称嵌入式系统B 班级学号 姓名 开课学期2016/2017学年第2学期

实验一基于ADS开发环境的程序设计 一、实验目的 1、学习ADS开发环境的使用; 2、学习和掌握ADS环境下的汇编语言及C语言程序设计; 3、学习和掌握汇编语言及C语言的混合编程方法。 二、实验内容 1、编写和调试汇编语言程序; 2、编写和调试C语言程序; 3、编写和调试汇编语言及C语言的混合程序; 三、实验过程与结果 1、寄存器R0和R1中有两个正整数,求这两个数的最大公约数,结果保存在R3中。 代码1:使用C内嵌汇编 #include int find_gcd(int x,int y) { int gcdnum; __asm { MOV r0, x MOV r1, y LOOP: CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE LOOP MOV r3, r0 MOV gcdnum,r3 //stop // B stop // END } return gcdnum; } int main() { int a; a = find_gcd(18,9);

printf("gcdnum:%d\n",a); return 0; } 代码2:使用纯汇编语言 AREA example1,CODE,readonly ENTRY MOV r0, #4 MOV r1, #9 start CMP r0, r1 SUBLT r1, r1, r0 SUBGT r0, r0, r1 BNE start MOV r3, r0 stop B stop END 2、寄存器R0 、R1和R2中有三个正整数,求出其中最大的数,并将其保存在R3中。 代码1:使用纯汇编语言 AREA examp,CODE,READONL Y ENTRY MOV R0,#10 MOV R1,#30 MOV R2,#20 Start CMP R0,R1 BLE lbl_a CMP R0,R2 MOVGT R3,R0 MOVLE R3,R2 B lbl_b lbl_a CMP R1,R2 MOVGT R3,R1 MOVLE R3,R2 lbl_b B . END 代码2:使用C内嵌汇编语言 #include int find_maxnum(int a,int b,int c)

嵌入式系统看门狗实验报告

竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告 篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验 《嵌入式系统原理与接口技术》实验报告 实验序号:4实验项目名称:看门狗实验 1 2 3 4 篇二:嵌入式实验报告 目录 实验一跑马灯实验................................................. (1) 实验二按键输入实验................................................. .. (3)

实验三串口实验................................................. . (5) 实验四外部中断实验................................................. .. (8) 实验五独立看门狗实验................................................. (11) 实验七定时器中断实验................................................. (13) 实验十三ADc实验................................................. .. (15) 实验十五DmA实验................................................. .. (17) 实验十六I2c实验................................................. .. (21) 实验十七spI实

课程设计报告模板

《软件工程》课程设计报告 课程设计题目: 电子科技大学中山学院计算机学院班级: 组长: 其他成员: 指导教师: 实验地点: 完成起止日期:1-16

目录 一、系统可行性研究报告....................................... 错误!未定义书签。 1.引言................................................... 错误!未定义书签。 2 现行系统调查............................................ 错误!未定义书签。 3 新系统概述.............................................. 错误!未定义书签。 4 可行性综合评述.......................................... 错误!未定义书签。 5.方案选择............................................... 错误!未定义书签。 6.项目进度计划(Software Project Schedule).............. 错误!未定义书签。 二、需求规格说明书............................................ 错误!未定义书签。 1、用例模型(用例图)..................................... 错误!未定义书签。 2、用例文档描述........................................... 错误!未定义书签。 3、用例实现(时序图+类图)................................ 错误!未定义书签。 三、设计规格说明书............................................ 错误!未定义书签。 四、测试设计.................................................. 错误!未定义书签。 1、测试范围............................................... 错误!未定义书签。 2、测试覆盖设计........................................... 错误!未定义书签。 3、测试用例............................................... 错误!未定义书签。 五、工作总结.................................................. 错误!未定义书签。 1、本人在项目实现中的分工................................. 错误!未定义书签。 2、个人遇到的困难与获得的主要成果......................... 错误!未定义书签。 3、课程设计完成结果分析与个人小结......................... 错误!未定义书签。 六、附录...................................................... 错误!未定义书签。 1、软件配置............................................... 错误!未定义书签。 2、个人完成的程序模块..................................... 错误!未定义书签。 3、文档清单............................................... 错误!未定义书签。

广东海洋大学嵌入式系统课程设计

《嵌入式系统》设计报告学生姓名 Adao (学号) 所在学院数学与计算机学院 所在班级计科1141 指导教师 成绩

目录 1.课程设计目的 (2) 2.系统分析与设计 (2) 3.系统结构图 (2) 4.实现过程 (3) 5.实验效果 (5) 6.代码分析 (6) 7.系统测试出现的问题和解决的方案 (7) 8.系统优缺点 (7) 9.心得体会 (8) 参考文献 (8)

双按键控制流水灯系统开发 1.课程设计目的: 本次课程设计目的主要是对之前所学习的STM32的某个实验进行更深入的学习与了解,弄懂引脚,端口等相关的配置,对实验原理和具体实现有一定的理解,能做到自己通过原理图和使用库函数等把功能实现出来。我选择的是EXTI-外部中断实验并加以整合,具有一定实用功能的系统,可以对外提供服务。 2.系统分析与设计: 本课程设计所定义的系统主要功能为,通过两个按键KEY1(PA0)、KEY2(PC13)可以实现对流水灯进行同步控制,即一个开关控制产生的灯的状态可以被另一个开关去改变,按键控制需要对两个按键的端口,引脚等进行相关配置,并在两个引脚的中断服务程序中完成对流水灯状态同步控制的操作。本还想通过使用SysTick(系统滴答定时器)功能对流水灯进行精确定时,但由于时间比较匆促,最终没有实现。 3.系统结构图: 图3-1

4.实现过程: 1、GPIO的输入模式有上拉输入模式、下拉输入模式、浮空输入模式和模拟输入模式。GPIO 中的每个引脚可以通过配置端口配置寄存器来配置它的模式。每个引脚的模式由寄存器的4个位控制。 上拉/下拉输入模式:1000 浮空输入模式:0100 模拟输入模式:0000 2、STM32的所有GPIO都可以用作外部中断源的输入端。STM32的中断由中断控制器NVIC 处理。STM32的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表面它的优先级别越高。抢占属性会出现嵌套中断。 3、编写NVIC_Configuration()函数配置NVIC控制器的函数。 static void NVIC_Configuration(uint8_t IRQ) { NVIC_InitTypeDef NVIC_InitStructure; //将NVIC中断优先级分组设置为第1组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* 配置中断源 */ NVIC_InitStructure.NVIC_IRQChannel = IRQ;//设置中断线 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//设置响应优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //对NVIC中断控制器进行初始化 } 4、调用GPIO_EXTILineConfig()函数把GPIOA、Pin0和GDIOC、PIN13设置为EXTI输入线。 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); 5、填写EXTI的初始化结构体,然后调用EXTI_Init()把EXTI初始化结构体的参数写入寄存器。编写EXTI_PA0_Config()函数完成各种需要的初始化。 void EXTI_Pxy_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* config the extiline clock and AFIO clock */

嵌入式系统实验实验报告

嵌入式系统实验实验报告 一、实验目的 1.基本实验

. Word 资料搭建PXA270嵌入式LINUX开发软硬件环境;安装LINUX操 作系统;安装与配置建立宿主机端交叉编译调试开发环境;配置宿主机 PC 机端的minicom(或超级终端)、TFTP服务、NFS服务,使宿主PC机与PXA270开发板可以通过串口通讯,并开通TFTP 和NFS服务。 2.人机接口 键盘驱动;LCD控制;触摸屏数据采集与控制实验; 3.应用实验 完成VGA显示;Web服务器实验;网络文件传输实验;多线程应用实验。 4.扩展应用实验 完成USB摄像头驱动与视频采集;GPS实验;GSM/GPRS通讯;视频播放移植;USB蓝牙设备无线通讯;NFS文件服务器;蓝牙视频文件服务器。 5.QT实验 完成基本嵌入式图形开发环境搭建;“Hello world!”QT初探;创建一个窗口并添加按钮;对象通信:Signal和Slot;菜单和快捷键;工具条和状态栏;鼠标和键盘事件;对话框;QT的绘图;俄罗斯方块;基于QT的GSM手机在嵌入式LINUX下的设计与实现。 二、实验内容 1.人机接口实验 实验十九键盘驱动实验 ?实验目的:矩阵键盘驱动的编写

?实验内容:矩阵键盘驱动的编写 ?作业要求:完成键盘加减乘除运算 ?实验作业源码及注释: #INCLUDE #INCLUDE #INCLUDE #INCLUDE #INCLUDE #INCLUDE #DEFINE DEVICE_NAME “/DEV/KEYBOARD” INT MAIN(VOID){ INT FD; INT RET; UNSIGNED CHAR BUF[1]; INT I,F,J; DOUBLE X; INT A[2]={0}; CHAR PRE_SCANCODE=0XFF; FD=OPEN(DEVICE_NAME,O_RDWR); IF(FD==-1)PRINTF(“OPEN DEVICE %S ERROR\N”,DEVICE_NAME); ELSE{ BUF[0]=0XFF; I=0;F=0; WHILE(1){ READ(FD,BUF,1);

西安邮电大学嵌入式实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:嵌入式系统原理与应用 专业名称:软件工程 班级:1101班 学生姓名: 学号(8位): 指导教师:李宥谋 实验日期:2013年12月25日

实验一流水灯实验 一.实验目的及实验环境 1.实验目的 ●熟悉LPC2000系列ARM7微控制器的GPIO输出控制。 2.实验环境 ●硬件:PC机一台 LPC2131教学实验开发平台一套 ●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。 二.实验内容 使用GPIO口控制8个LED流水灯显示。 三.方案设计 ①启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131 工程模板建立一个工程LedDisp_C。 ②在user组里编写主程序代码main.c。 ③选用DebugInRam生成目标,然后编译链接工程。 ④将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线 短接。 ⑤选择Project->Debug,启动AXD进行JTAG仿真调试。 ⑥全速运行程序,程序将会在main.c的主函数中停止。

⑦单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量 和全局变量。选择System Views->Debugger Internals 即可打开 LPC2000系列ARM7微控制器的片内外寄存器窗口。 ⑧可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程 序运行,观察变量的值,判断LED1~LED8控制是否正确。 四.测试数据及运行结果

相关文档
相关文档 最新文档