嵌入式系统实验指导书6个实验.docx

上传人:b****6 文档编号:3331868 上传时间:2022-11-21 格式:DOCX 页数:26 大小:983.77KB
下载 相关 举报
嵌入式系统实验指导书6个实验.docx_第1页
第1页 / 共26页
嵌入式系统实验指导书6个实验.docx_第2页
第2页 / 共26页
嵌入式系统实验指导书6个实验.docx_第3页
第3页 / 共26页
嵌入式系统实验指导书6个实验.docx_第4页
第4页 / 共26页
嵌入式系统实验指导书6个实验.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

嵌入式系统实验指导书6个实验.docx

《嵌入式系统实验指导书6个实验.docx》由会员分享,可在线阅读,更多相关《嵌入式系统实验指导书6个实验.docx(26页珍藏版)》请在冰豆网上搜索。

嵌入式系统实验指导书6个实验.docx

嵌入式系统实验指导书6个实验

嵌入式系统

实验要求

1.进入实验室前完成的部分

1)认真阅读实验指导书,弄懂实验原理和实验内容。

2)编写实验所要用到的程序,将其放在U盘上。

3)写出预习报告。

2.进入实验室后完成的部分

1)建立工程,加入已准备好的程序文件。

2)对程序进行调试,修改错误,获得要求的结果。

3)保存调试后的程序。

3.实验结束后的部分

对实验结果进行分析、总结,写出实验报告。

实验报告内容及格式

1.实验目的

2.实验设备

3.实验原理及环境

4.实验内容

只做文字叙述,程序部分放在程序清单中。

流程图也可不画。

5.程序清单

本实验使用的完整程序。

如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。

6.实验步骤

7.实验总结

主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。

此项为实验成绩评定的重要依据。

实验1KeilC51的使用(汇编语言)

实验目的:

初步掌握KeilC51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。

实验设备:

ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

实验原理及环境:

在计算机上已安装KeilC51软件。

这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序。

如果程序有对硬件的驱动,就需要与硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。

实验内容:

1.掌握软件的开发过程:

1)建立一个工程项目选择芯片确定选项。

2)加入C源文件或汇编源文件。

3)用项目管理器生成各种应用文件。

4)检查并修改源文件中的错误。

5)编译连接通过后进行软件模拟仿真。

6)编译连接通过后进行硬件仿真。

2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。

3.在2的基础上,实现同时在P1.0和P1.1上各输出一个频率同为1Hz但电平状态相反的方波。

预习要求:

1.熟悉使用KeilC51的步骤。

2.理解实验内容2中程序的工作原理。

3.编写实验内容3所需要的程序。

实验步骤:

以下假定你在E:

\TEST文件夹下学习、运行Keil

1.建立一个工程项目选择芯片确定选项

如图1-1所示:

Project→

NewProject→

输入工程名test→

保存工程文件(鼠标点击保存按钮)

图1-1创建工程名

弹出下一界面。

如图1-2所示:

选CPU厂家(Atmel)→

选CPU型号(89C51),

选好后确定

图1-2选厂家,选CPU型号

接着选晶振频率及生成HEX文件等。

如图1-3所示:

Project→

OptionsforTarget‘Target1’…→

在Target中→

更改CPU晶振频率为12MHz→⑤在Output中→⑥选择生成HEX格式其它采用缺省设置→⑦选好后确定。

图1-3选晶振频率及生成HEX文件等窗口

2.建立汇编源文件

如图1-4所示:

File→

New,

弹出源文件编辑窗口。

输入以下源文件:

ORG0000H

AGAIN:

CPLP1.0

MOVR0,#10;延时0.5秒

LOOP1:

MOVR1,#100

LOOP2:

MOVR2,#250

DJNZR2,$

DJNZR1,LOOP2

DJNZR0,LOOP1

SJMPAGAIN

END

图1-4进入编辑源文件窗口

源程序编写完后,

File→

SaveAs将文件以test.asm保存在E:

\test目录下,获得汇编语言源程序。

3.用项目管理器生成(编译)各种应用文件

点击Target1前之+号→出现

SourceGroup1→

点击它并按鼠标右键会生弹出下拉菜单见图1-5编译文件文件窗口→选择

AddFilestoGroup‘SourceGroup1’→

点击add向项目中添加Test.asm源文件→⑥点击close关闭AddFilestoGroup‘SourceGroup1’窗口→

在SourceGroup1前会出现一个+号→

点击之弹出test.asm文件名点击该文件名→

主窗口中会出现该程序

图1-5进入编译文件文件窗口

编译:

Project→Buildtarget就会生成一系列到文件如OBJ文件LST文件HEX文件等。

4.检查并修改源文件中的错误

如果在源文件中存在错误在Output窗口中会出现错误提示信息,你可以在源程序中进行修改,然后存盘后重新Build观察错误提示信息。

5.编译连接通过后进行软件模拟仿真

Debug→Start/StopDebugSession进入软件模拟的仿真窗口,可使用单步、设断点来进行调试和除错。

6.编译连接通过后进行硬件仿真

实验箱的仿真串口必须与PC机串口连接,通电,拨位开关K10必须拨在B端,连接P10和L00,连接P11和L01,设置硬件实时仿真调试选项:

Project→OptionsforTarget‘Targetl’→Debug.硬件实时仿真调试选项窗口,见图1-5选硬件仿真选项,按确定按钮确定。

图1-5硬件实时仿真调试选项窗口

进入硬件实时调试窗口后,可打开各种观察窗口,进行单步断点运行到光标连续执行等操作,无误后可连续运行观察LED发光管的显示效果。

注意退出时须按单片机的复位按键SS10,在进行硬件连接前最好也先按单片机的复位按键SS10。

7.修改以上程序,实现同时在P1.0和P1.1上各输出一个频率为1Hz但电平状态相反的方波。

重要提示:

1.指令中的“,:

;”是西文字符,切不可使用中文符号;数字“0”与字符“o”不可混淆。

2.以上菜单操作都可以点击工具栏中的相应图标快速实现。

3.退出硬件连接可以按SS10,在进行硬件连接前最好也按一次SS10。

4.生成源文件的方法:

从键盘上输入源文件;

用其他编辑软件(包括MicrosoftWord)编辑源文件,然后复制到KeilC51文件窗口中,使Word文档变为TXT文档,这种方法最好,可方便输入中文注释;

也可装入在其它编辑软件中编辑的源文件如:

*.asm/*.a51/*.c...等。

实验2十六进制与十进制的转换

实验目的:

实践汇编语言顺序结构的编程方法,掌握十六进制数转换成十进制数的编程实现,掌握单步运行程序的基本技巧。

实验设备:

ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

实验原理及环境:

将十六进制数转换成十进制数有多种方法,比较典型的是用待转换数除以权值的方法,即依次除以100、10,则各次的商和最后的余数就是所需要的十进制数。

实验内容:

将放在片内RAM30H中的2位十六进制数转换成3位十进制数,按照从高位到低位的顺序分别放入31H~33H中(即非压缩的BCD码)。

在本实验中,要求使用单步方式运行,以便观察各单元的变化过程。

预习要求:

理解实验原理,熟悉实验环境。

编写实现本实验要求的程序,并生成*.asm文件,将这个文件放在U盘上备用。

实验步骤:

1.建立一个工程,将在预习中做好的*.asm文件加入。

2.调出存储器编辑窗口,将30H单元修改成某一值。

3.在希望停下来的指令上设断点,然后运行,在断点处停下来后,再单步运行,可以看到各单元的变化情况。

运行完最后一条指令后,在31H~33H中应获得30H中十六进制数对应的十进制数。

重要提示:

1.指令中的“,:

;”是西文字符,切不可使用中文符号;数字“0”与字符“o”不可混淆。

2.本实验可以不用硬件连接,以软件仿真的方法即可进行。

3.程序的起始地址必须为0000H(以后各实验均同)。

4.对程序修改后必须退出连接,进行编译后再重新进行连接才能生效(以后各实验均同)。

5.调出存储器编辑窗口方法是:

操作View→MemoryWindow,或点工具栏中的相应图标。

6.存储器编辑窗口可以编辑3个空间,可以用Adress调出。

在Adress中键入d:

xxH或0Xxx将从地址xxH开始显示片内RAM的低128字节和特殊功能寄存器SFR;在Adress中键入i:

xxH或0Xxx将从地址xxH开始显示片内RAM;在Adress中键入c:

xxxxH或0Xxxxx将从地址xxxxH开始显示程序存储器;在Adress中键入x:

xxxxH或0Xxxxx将从地址xxxxH开始显示片外RAM。

7.将鼠标指针放在存储器编辑窗口中的某个数据上点击右键,在弹出的窗口中点ModifyMemoryat……可以修改其值。

如果要修改连续多个单元,可以在数据之间用“,”隔开。

8.设断点可以用Debug中的Insert/RemoveBreakpoint或点击工具栏中的相应图标快速实现。

运行可用Go。

6.单步运行可以用Debug中的Step(纯单步)、StepOver(将子程序调用作为一条指令运行)或点击工具栏中的相应图标快速实现。

10.在运行过程中如果希望中止当前运行,从头开始,可以点击工具栏中的RST图标实现。

实验38段LED显示器动态显示

实验目的:

掌握8段LED显示器的使用及显示程序的设计方法。

实验设备:

ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

实验原理及环境:

1.实验箱上有6位8段LED显示器,采用动态方式驱动。

即使一位LED显示器显示内容一段时间,然后下一位LED显示器显示内容一段时间……,周而复始。

只要刷新频率不小于50Hz,就可以获得清晰稳定的显示效果。

2.MCS-51CPU通过一片8255对8段LED显示器进行段驱动和位驱动,8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。

3.LED显示器的各段由8255的B口驱动,低电平对应段发光,高电平对应段熄灭。

各段的驱动位如图3-1,各显示字的字形代码如下所示:

显示字字形代码显示字字形代码显示字字形代码0C0H0.40H-BFH

1F9H1.79H灭FFH

2A4H2.24H

3B0H3.30H

499H4.19H

592H5.12H

682H6.02H

7F8H7.78H

880H8.00H

990H9.80H

A88HA.08H

B83HB.03H

图3-18段LED各段控制位

CC6HC.46H

DA1HD.21H

E86HE.06H

F8EHF.0EH

4.LED显示器的各位由8255的A口驱动,低电平对应位发光,高电平对应位熄灭。

LED显示器对应位口位

左起第一位D0

左起第二位D1

左起第三位D2

左起第四位D3

左起第五位D4

左起第六位D5

实验内容:

1.编写一个6位LED显示器驱动子程序(在主程序中已对接口芯片8255做好必要的初始化)。

字形表按0~F、0.~F.、-、灭的顺序排列。

该子程序的要求如下:

入口:

待显示数(00H~1FH)放在20H~25H(分别对应显示器的左起第1~第6位)中。

出口:

每位LED显示0.5mS后返回。

占用:

R0、R1、R2、A、PSW、DPTR。

显示子程序的流程图如图3-2和图3-3:

Y

图3-2显示子程序流程图

图3-3显示子程序的详细流程图

2.子程序自身无法运行,为了运行这个子程序,另编写一个主程序。

这个主程序的功能是首先对8255进行初始化,然后就反复调用显示子程序,显示20H~25H中的待显示内容。

首先在20H起始的6个字节中置入00H~0FH,然后连续运行此程序,应显示0~F;在20H起始的6个字节中置入10H~1FH,然后连续运行此程序,应显示0.~F.;若置入20H、21H,则显示-、灭。

图3-4显示主程序流程图

3.按以下框图编写一段程序,运行后会在显示器上应出现连续向左移动的0~F。

图3-5实验内容3流程图

预习要求:

理解实验原理,熟悉实验环境。

编写实现本实验要求的程序,并生成*.asm文件,将这个文件放在U盘上备用。

实验步骤:

1.将P0.0~P0.7与JD0~JD7连接起来。

开关KC倒向上方。

2.建立一个工程,将在预习中做好的实验内容1和2的程序拷贝到一个*.asm文件加入。

3.编译后与单片机硬件连接,运行。

4.在20H起始的6个字节中置入00H~0FH中的任意6个值,然后连续运行此程序,应显示0~F中的6个数字;在20H起始的6个字节中置入10H~1FH中的任意6个值,然后连续运行此程序,应显示0.~F.中的6个数字。

5.如果运行结果不正常,可以用设断点、单步运行的方法查找错误所在,修改后重新编译、与单片机硬件连接,运行。

直至获得正确的结果。

6.建立一个工程,将在预习中做好的实验内容1和3的程序拷贝到一个*.asm文件加入。

7.编译后与单片机硬件连接,运行。

8.观察LED显示器,应从右向左依次出现0、1、2、3……

重要提示:

1.指令中的“,:

;”是西文字符,切不可使用中文符号;数字“0”与字符“o”不可混淆。

2.软件延时可以用循环程序实现,单片机的时钟为12MHz,每条指令的执行时间可以从教材的附表中查出。

3.程序的起始地址必须为0000H(以后各实验均同)。

4.退出硬件连接可以按SS10,在进行硬件连接前最好也按一次SS10。

5.对程序修改后必须退出硬件连接,进行编译后再重新进行硬件连接才能生效。

6.调用显示子程序330次可以用双重循环实现。

且使用的计数单元与显示子程序中用到的不能冲突。

7.开关KC倒向上方。

实验4矩阵键盘的使用

实验目的:

掌握矩阵键盘的使用及键盘扫描程序的设计方法。

实验设备:

ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

实验原理及环境:

实验箱上有一个16键的矩阵键盘,分为4行×4列。

4行分别连接到一片8255(与8段LED显示器的段驱动和位驱动共用)的PC0~PC3,4列分别连接到8255的PC4~PC7。

8255的A口、B口、C口、控制口的地址分别为片外RAM的4000H、4001H、4002H、4003H。

第4列(PC7)

 

第3列(PC6)

第2列(PC5)

第1列(PC4)

PC3

00H

01H

02H

03H

第4行

PC2

04H

05H

06H

07H

第3行

PC1

08H

09H

0AH

0BH

第2行

PC0

0CH

0DH

0EH

0FH

第1行

00H

01H

02H

03H

列驱动

图4-1键盘布置及键值

选择列驱动码使某一列为低电平而其它列为高电平,再读取行输入,若该列有键按下则相应的位便是低电平。

每个键均安排一个键值,如图4-1所示。

实验内容:

1.编写一个键盘扫描子程序(在主程序中已对接口芯片8255做好必要的初始化)。

这个程序对键盘作一次扫描,若无键按下,返回时累加器A中为FFH,若有键按下,返回时A中为该键键值,键盘扫描子程序流程图如图4-2所示。

 

 

图4-2键盘扫描子程序流程图

其中,查键值子程序可以自行编写,也可以使用下面这个查键值子程序,这个子程序的参数如下:

入口:

行列关键值码放在累加器A中,高4位是列驱动码(被扫描列的对应位为0,其余位均为1),低4位是行状态(按下键的对应位为0,其余位均为1)。

出口:

键码放在A中带出。

占用:

R1、A、PSW、DPTR。

程序清单如下:

;查键值子程序,起始地址为KEY20

KEY20:

PUSHACC;暂存关键值

MOVR1,#00H;查键值自变量清0

KEY21:

JNBACC.4,KEY22;计算列数

RRA

INCR1

SJMPKEY21

KEY22:

MOVA,R1;按每列4个键计算

MOVB,#4

MULAB

MOVR1,A

POPACC;恢复关键值

KEY23:

JNBACC.0,KEY24;计算行数

RRA

INCR1

SJMPKEY23

KEY24:

MOVDPTR,#KEYTAB;读取键值

MOVA,R1

MOVCA,@A+DPTR

RET

KEYTAB:

DB0FH,0BH,07H,03H

DB0EH,0AH,06H,02H

DB0DH,09H,05H,01H

DB0CH,08H,04H,00H

2.键盘扫描子程序自身无法运行,为了运行这个子程序,另编写以下程序:

ORG0000H

MOVSP,#6FH

MOVR0,#5;延时0.5秒

LOOP1:

MOVR1,#200

LOOP2:

MOVR2,#250

DJNZR2,$

DJNZR1,LOOP2

DJNZR0,LOOP1

MOVDPTR,#4003H;8255初始化

MOVA,#10000001B;A口、B口方式0输出,C口高4位输出,低4位输入

MOVX@DPTR,A

LOOP3:

LCALLDISP;调用显示子程序DIS,设显示子程序入口为DISP

LCALLKEY;调用键盘扫描子程序,设键盘扫描子程序入口为KEY

CJNEA,#0FFH,LOOP4;如果有键按下转

SJMPLOOP3

LOOP4:

MOV20H,21H

MOV21H,22H

MOV22H,23H

MOV23H,24H

MOV24H,25H

MOV25H,A

SJMPLOOP3

其中显示子程序使用实验3中的显示子程序。

程序运行后,每按一键便从显示器的右端移入一个对应的数。

预习要求:

理解实验原理,熟悉实验环境。

编写实现本实验要求的程序,并生成*.asm文件,将这个文件放在U盘上备用。

实验步骤:

1.将P0.0~P0.7与JD0~JD7连接起来。

开关KC倒向上方。

2.建立一个工程,将在预习中做好的实验内容1和2的程序以及实验5中的显示子程序拷贝到一个的*.asm文件加入。

3.编译后与单片机硬件连接,运行。

4.按下键盘上的各键,相应的数字会出现在LED显示器上。

重要提示:

1.指令中的“,:

;”是西文字符,切不可使用中文符号;数字“0”与字符“o”不可混淆。

2.软件延时可以用循环程序实现,单片机的时钟为12MHz,每条指令的执行时间可以从教材的附表中查出。

注意使用的计数单元不要与程序中其他处所使用的单元发生冲突。

3.程序的起始地址必须为0000H(以后各实验均同)。

4.退出硬件连接可以按SS10,在进行硬件连接前最好也按一次SS10。

5.对程序修改后必须退出硬件连接,进行编译后再重新进行硬件连接才能生效。

6.若有键按下,则读回的行状态中对应的位是0,否则对应的位就会是1。

7.判断列驱动码是否超出,可以用检测0位的方法实现。

8.在调用查键值子程序时,要保证累加器A的高4位是本次扫描的列驱动码,低4位是本次扫描读入的行状态。

9.“读行状态直到键松开”,是反复读入行状态,直到读入的各位状态都为“1”。

注意只有低4位是有效的,要将无用且不定的高4位滤掉。

10.开关KC倒向上方。

实验5A/D转换

实验目的:

掌握用ADC0809实现A/D的方法。

实验设备:

ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

实验原理及环境:

电位器W1将+5V电压分压后送入ADC0809的输入IN4~IN7,调节电位器W1可以获得0~+5V的电压输入。

ADC0809的接口参数如下:

输入电压范围0~+5V

启动IN4A/D转换写任意数到8004H取转换结果读8004HEOC通过一个反相器输出

实验内容:

设计一个程序,将IN4输入的0~+5V模拟电压转换成数字量,再将这个2位十六进制转换成3位十进制数,放在LED显示器的第四~六位显示。

其中显示子程序可以用实验3中的子程序。

判断转换是否结束可以将ADC0809的EOC(经反相器)引入到P1.0,然后查询P1.0的状态。

 

 

图5-1实验7程序流程图

预习要求:

理解实验原理,熟悉实验环境。

编写实现本实验要求的程序,并生成*.asm文件,将这个文件放在U盘上备用。

实验步骤:

1.将P0.0~P0.7与JD0~JD7连接起来。

开关KC倒向上方。

2.将P0.0~P0.7与U9D0~U9D7连接起来。

3.将P1.0与EOC连接起来。

4.建立一个工程,将在预习中做好的实验程序*.asm文件加入。

5.编译后与单片机硬件连接,运行。

6.旋转电位器W1,LED显示器上的数字应在000000~000255之间变化(因受电位器的调节范围限制,有可能小于这个范围)。

重要提示:

1.指令中的“,:

;”是西文字符,切不可使用中文符号;数字“0”与字符“o”不可混淆。

2.EOC是经过一个反相器后输出的,所以要注意转换完成后检测到的是低电平。

3.调用显示子程序32次可以用循环实现,使用的计数单元与显示子程序中用到的不能冲突。

4.开关KC倒向上方。

实验6D/A转换

实验目的:

掌握用DAC0832实现D/A转换的方法。

实验设备:

ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装KeilC51的计算机一台。

实验原理及环境:

DAC0832的连接使用单缓冲方式,D/A转换口地址为6000H。

当输入数字量为0~255时,输出电压0~+5V。

可以用这个电压驱动一个微型直流电动机,使它的转速在最慢到最快之间变化。

实验内容:

设计一个程序,在主程序中向P1.0输出频率为1Hz的方波,同时使用定时器1定时中断,在中断服务程序中用D/A转换器输出周期为20秒的三角波。

用一个工作寄存器存放电压值,使用定时器定时中断,每中断一次将电压值送D/A转换器并加1,直到最大值后再改为减1。

周而复始,这样就可以输出三角波。

这个三角波用来控制一个微型直流电动机的转速。

 

图6-1实验6主程序流程图

 

 

N

 

N

N

N

 

图6-2实验6定时器1程序流程图

 

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

当前位置:首页 > 高等教育 > 研究生入学考试

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

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