优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx

上传人:b****1 文档编号:3342993 上传时间:2023-05-01 格式:DOCX 页数:25 大小:23.37KB
下载 相关 举报
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第1页
第1页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第2页
第2页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第3页
第3页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第4页
第4页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第5页
第5页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第6页
第6页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第7页
第7页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第8页
第8页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第9页
第9页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第10页
第10页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第11页
第11页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第12页
第12页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第13页
第13页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第14页
第14页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第15页
第15页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第16页
第16页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第17页
第17页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第18页
第18页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第19页
第19页 / 共25页
优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx

《优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx》由会员分享,可在线阅读,更多相关《优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx(25页珍藏版)》请在冰点文库上搜索。

优质文档武汉大学计算机学院 嵌入式实验报告word范文模板 25页Word文件下载.docx

学习RAM6264的扩展

往RAM中写入一串数据,然后读出,进行比较

(1)根据流程图设计程序。

(2)RAM_CS插孔连到译码输出P2.7插孔,P1.0连接到L0。

(3)调试运行程序RAM.ASM。

对62256进行读写。

若L1灯闪动,表示62256RAM读写正常。

一直亮说明扩

展数据存储器有损坏。

(4)读写正确数码管显示“6264—0”。

若读写错误,数码管显示“6264—E”。

程序框图:

连线图案:

程序解读:

ORG0000H

AJMPSTART;

;

无条件跳转到START

ORG0030H;

START的首地址

START:

MOVSP,#60H;

设置堆栈段,是个过程化语句,因为堆栈的前端一般有其他内容,

;

此程序用不到。

MOVDPTR,#0000H;

DPTR是数据指针寄存器。

扩展数据存储器62256的地址,

从0000H开始测试,共32K,但下面语句只测试了前4K

MOVR6,#0FH

MOVA,#55H;

测试字,本实验只用了55H

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

RAM1:

MOVR7,#0FFH

RAM2:

MOVX@DPTR,A;

MOVX读写数据存储器,把55H写到0000H

CLRP1.0;

清零,即为暗状态

INCDPTR;

DJNZR7,RAM2;

R7减1,如不为零则跳转,内循环!

256DJNZR6,RAM1;

R6减1,如不为零则跳转,外循环!

16

共测试4K

从新给地址0000H,下步读

MOVR6,#0FH;

写多少,读多少

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

RAM3:

RAM4:

MOVXA,@DPTR

CJNEA,#55H,RAM6;

比较前两个操作数,不相等则跳转

SETBP1.0;

INCDPTR

DJNZR7,RAM4

DJNZR6,RAM3

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

RAM5:

CLRP1.0

CALLDELAY;

延迟,实现闪烁!

SETBP1.0

CALLDELAY

SJMPRAM5;

是个死循环

DELAY:

MOVR5,#0FFH

DELAY1:

MOVR4,#0FFH

DJNZR4,$

DJNZR5,DELAY1

RET

RAM6:

SETBP1.0;

1.0口常亮,相当于设置了一个错态!

SJMPRAM6;

短转移,无限循环!

END

思考与改进:

改进程序清单:

OUTBITequ0e101h

CLK164equ0e102h;

段控制口(接164时钟位)

DAT164equ0e102h;

段控制口(接164数据位)

LEDBufequ40h

INequ0e103h

movsp,#60h

MOVDPTR,#0e100H;

8155初始化

MOVA,#03H

MOVX@DPTR,A

MOVDPTR,#8000H;

往6264的8000H-9FFFH单元送入#55HMOVA,#55H

DD:

MOVX@DPTR,A

movr0,dph

CJNer0,#0A0H,DD

MOVDPTR,#8000h

DD1:

MOVXA,@DPTR;

读出数据进行比较CJNEA,#55H,ERR

MOVR0,DPH

CJNER0,#0A0H,DD1

mov40h,#06h;

显示缓冲器初始化mov41h,#05h

mov42h,#06h

mov43h,#04h

mov44h,#10h

mov45h,#00h

START1:

LCALLDISPLAY;

正确的显示“6464-0”SJMPSTART1

ERR:

mov40h,#06h

mov41h,#05h

mov45h,#0Eh;

不正确的显示“6264-E。

”START2:

LCALLDISPLAY

SJMPSTART2

DISPLAY:

setb0d3h

movr0,#LEDBuf

movr1,#6;

共6个八段管movr2,#00100000b;

从左边开始显示Loop:

movdptr,#OUTBIT

mova,#00h

movx@dptr,a;

关所有八段管

mova,@r0

movdptr,#LEDmap

movca,@a+dptr

movB,#8;

送164

DLP:

rlca

movr3,a

movacc.0,c

anla,#0fdh

movdptr,#DAT164

movx@dptr,a

movdptr,#CLK164

orla,#02h

anla,#0fDh

mova,r3

djnzB,DLP

mova,r2

显示一位八段管

movr6,#01

callDelay

mova,r2;

显示下一位

rRa

movr2,a

incr0

djnzr1,Loop

mova,#0

clr0d3h

ret

LEDMAP:

八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

DB40H

Delay:

movr7,#00H;

延时子程序

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

end

实验三嵌入式Linux开发环境熟悉实验

熟悉Linux开发环境,学会基于S3C2410的Linux开发环境的配置和使用。

使用Linux的

armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程。

本次实验使用RedhatLinux9.0操作系统环境,安装ARM-Linux的开发库及编译器。

创建一个新目录,并

在其中编写hello.c和Makefile文件。

学习在Linux下的编程和编译过程,以及ARM开发板的使用和开发环境的设置。

下载已经编译好的文件到目标开发板上运行。

硬件:

UP-NETARM2410-S嵌入式实验平台、PC机Pentium500以上,硬盘10G以上。

软件:

PC机操作系统REDHATLINUX9.0+MINICOM+ARM-LINUX开发环境

1、建立工作目录

2、编写程序源代码

在Linux下的文本编辑器有许多,常用的是vim和Xwindow界面下的gedit等,我们在开发过程中推荐使用vim,用户需要学习vim的操作方法,请参考相关书籍中的关于vim的操作指南。

Kdevelope、anjuta软件的界面与vc6.0类似,使用它们对于熟悉windows环境下开发的用户更容易上手。

实际的hello.c源代码较简单,如下:

我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:

按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc键进入命令状态,再用命令“:

wq”保存并退出。

这样我们便在当前目录下建立了一个名为hello.c的文件。

3、编写Makefile

要使上面的hello.c程序能够运行,我们必须要编写一个Makefile文件,Makefile文件定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要重新编译等等更为复杂的命令。

使用它带来的好处就是自动编译,你只需要敲一个“make”命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还不能体现出使用Makefile的优越性,但当工程比较大文件比较多时,不使用Makefile几乎是不可能的。

下面我们介绍本次实验用到的Makefile文件。

下面我们来简单介绍这个Makefile文件的几个主要部分:

?

CC指明编译器

EXEC表示编译后生成的执行文件名称OBJS目标文件列表CFLAGS编译参数LDFLAGS连接参数all:

编译主入口

与上面编写hello.c的过程类似,用vi来创建一个Makefile文件并将代码录入其中

4、编译应用程序

在上面的步骤完成后,我们就可以在hello目录下运行“make”来编译我们的程序了。

如果进行了修改,重新编译则运行:

5、下载调试

在宿主PC计算机上启动NFS服务,并设置好共享的目录,具体配置请参照前面第一章第四节中关于嵌入式Linux环境开发环境的建立。

在建立好NFS共享目录以后,我们就可以进入MINICOM中建立开发板与宿主PC机之间的通讯了。

如果不想使用我们提供的源码的话,可以再建立一个NFS共享文件夹。

如/root/share,我们把我们自己编译生成的可执行文件复制到该文件夹下,并通过MINICOM挂载到开发板上。

再进入/host目录运行刚刚编译好的hello程序,查看运行结果。

编写了一个最基本简单的hello.c程序来验证实验是否成功,主要是进行了交叉编译,生成了可在目标试验台上运行的目标文件,然后成功建立了宿主机与目标实验台仿真终端连接,然后我们成功为目标试验台建立了linux系统终端窗口,然后通过linux命令建立宿主机与目标试验台的共享连接,为了最终的下载和运行最终的可执行文件。

运行文件后,屏幕正确输出程序运行结果:

hello,world!

本次实验主要是熟悉嵌入式linux开发环境的使用,编写了一个最基本简单的hello.c程序来验证实验是否成功,主要是进行了交叉编译,生成了可在目标试验台上运行的目标文件,然后成功建立了宿主机与目标实验台仿真终端连接,然后我们成功为目标试验台建立了linux系统终端窗口,然后通过linux命令建立宿主机与目标试验台的共享连接,为了最终的下载和运行最终的可执行文件。

这样,我们就完成了本次实验,熟练掌握了嵌入式实验开发的基本步骤,为以后的实验打下良好基础,我们可以在此基础上完成更多实验,编写更加复杂的程序,从而使的我们的实验顺利进行。

实验四串口通信程序设计实验

了解在linux环境下串行程序设计的基本方法。

掌握终端的主要属性及设置方法,熟悉终端I/O函数的使用。

学习使用多线程来完成串口的收发处理。

读懂程序源代码,学习终端I/O函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。

UP-NETARM2410-S嵌入式实验平台、PC机Pentium500以上,硬盘10G以上

1、阅读理解源码

进入exp\basic\03_tty目录,使用vi编辑器或其他编辑器阅读理解源代码。

2、编译应用程序

运行make产生term可执行文件

3、下载调试

切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。

进入exp\basic\03_tty目录,运行term,观察运行结果的正确性。

由于内核已经将串口1作为终端控制台,所以可以看到term发出的数据,却无法看到开发主机发来的数据,可以使用另外一台主机连接串口2进行收发测试。

实验现象:

“ABCDEF.......abcdef.......12345.......”

Linux操作系统从一开始就对串行口提供了很好的支持,为进行串行通讯提供了大量的函数,我们的实验主要是为掌握在Linux中进行串行通讯编程的基本方法。

本实验的程序流程图如下:

图2.3.3串口通讯实验流程图

设置好串口之后,读写串口就很容易了,把串口当作文件读写就可以了。

实验中通过send函数发送数据,函数定义如下:

void*send(void*data)

{

intc='

0'

printf("

senddata\n"

);

while(STOP==FALSE)

c++;

c%=255;

write(fd,&

c,1);

/*stdout*/

usleep(100000);

}

returnNULL;

/*waitforchildtodieoritwillbecomeazombie*/

对应的通过receive函数接受数据,函数定义如下:

void*receive(void*data)

intc;

readmodem\n"

read(fd,&

/*comport*/

write(1,&

exitfromreadingmodem\n"

键盘线程接受键盘输入的数据,发送给send线程,作为其发送数据,通过改变键盘输入数据,可以得到不同结果。

实验五A/D接口转换编程实验

了解在linux环境下对S3C2410芯片的8通道10位A/D的操作与控制。

学习A/D接口原理,了解实现A/D系统对于系统的软件和硬件要求。

阅读ARM芯片文档,掌握ARM的A/D相关寄存器的功能,熟悉ARM系统硬件的A/D相关接口。

利用外部模拟信号编程实现ARM循环采集全部前4路通道,并且在超级终端上显示。

进入/arm2410s/exp/basic/04_ad目录,使用vi编辑器或其他编辑器阅读理解源代码。

换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录。

我们可以通过调节开发板上的三个黄色的电位器,来查看a0、a1、a2的变化。

备注:

驱动程序的加载

在实验台的终端提示符【mnt/yaffs】下进入ad目录

【mnt/yaffs】cdad

【mnt/yaffs/ad】insmods3c2410-adc.o

s3c2410-adcinitialized

出现上述提示即加载成功。

初始值为:

a0=0.0032a1=3.2968a2=3.2968;

通过调节电位器,a0、a1、a2的值相应的发生改变。

设定第1个采用次数为100次,统计一个值n1

再设定第2个采用次数为100次,统计一个值n2

再设定第100个采用次数为100次,统计一个值n100

求统计平均值N=(n1+n2+n3+?

+n100)/100。

以列方式显示结果,按回车键开始采样,在按回车键结束。

采样100个之后,a0、a1、a2值趋于相同。

最后平均值得到结果相同。

实验六D/A接口转换编程实验

(1)

(2)

(3)

(4)

学习D/A转换原理掌握MAX504D/A转换芯片的使用方法掌握不带有D/A的CPU扩展D/A功能的主要方法了解D/A驱动程序加入内核的方法

学习D/A接口原理,了解实现D/A系统对于系统的软件和硬件要求。

阅读MAX504芯片文档,掌握

其使用方法。

进入/arm2410s/exp/basic/05_da目录,使用vi编辑器或其他编辑器阅读理解源代码

运行make产生da可执行文件da_main

切换到minicom终端窗口,使用NFSmount开发主机的/arm2410s到/host目录,然后进入

进入/host/exp/basic/05_da目录,运行./da_main,观察运行结果的正确性。

在输入./da_main后会出现下面的提示信息。

这是由于我们没有指定参数造成的,它的格式为./da_main[da的id号][数字],我们可以通过选择0或1来决定输出到开发板上的哪个D/A接口;

同时还需要在0.0~4.096V之间来选择一个输出电压。

下面的例子是用了开发板上的DA0并且输出1V的电压,我们可以使用万用表对其进行测量。

可以通过选择0或1来决定输出到开发板上的哪个D/A接口;

改进:

将D/A接口转换与A/D接口转换结合在一起,使用第一个按钮输入。

具体程序代码da_main.c如下:

#include<

stdio.h>

fcntl.h>

string.h>

unistd.h>

sys/types.h>

sys/ipc.h>

pthread.h>

sys/ioctl.h>

#include"

s3c2410-adc.h"

#defineADC_DEV"

/dev/adc/0raw"

#defineDA0_IOCTRL_WRITE0x10

#defineDA1_IOCTRL_WRITE0x11

#defineDA_IOCTRL_CLR0x12

#defineMax504_FULL4.096f

char*DA_DEV="

/dev/exio/0raw"

staticintda_fd=-1;

staticintadc_fd=-1;

staticintinit_ADdevice(void)

if((adc_fd=open(ADC_DEV,O_RDWR))<

0){

Erroropening%sadcdevice\n"

ADC_DEV);

return-1;

staticintGetADresult(intchannel)

intPRESCALE=0XFF;

intdata=ADC_WRITE(channel,PRESCALE);

write(adc_fd,&

data,sizeof(data));

read(adc_fd,&

returndata;

staticvoid*comMonitor(void*data)

getchar();

stop=1;

Floatad()

floatd;

pthread_tth_com;

void*retval;

//sets3c44b0ADregisterandstartAD

if(init_ADdevice()<

0)

/*Createthethreads*/

pthread_create(&

th_com,NULL,comMonitor,0);

d=((float)GetADresult(0)*3.3)/1024.0;

usleep

(1);

/*Waituntilproducerandconsumerfinish.*/

pthread_join(th_com,&

retval);

returnd;

intmain(intargc,char**argv)

floatv;

unsignedintvalue;

while

(1){

v=ad();

if(v<

0||v>

Max504_FULL){

DAoutmustbetween:

0to%

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

当前位置:首页 > 医药卫生 > 基础医学

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

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