单片机接口技术实验指导书6个实验.docx

上传人:b****8 文档编号:9103023 上传时间:2023-02-03 格式:DOCX 页数:32 大小:983.90KB
下载 相关 举报
单片机接口技术实验指导书6个实验.docx_第1页
第1页 / 共32页
单片机接口技术实验指导书6个实验.docx_第2页
第2页 / 共32页
单片机接口技术实验指导书6个实验.docx_第3页
第3页 / 共32页
单片机接口技术实验指导书6个实验.docx_第4页
第4页 / 共32页
单片机接口技术实验指导书6个实验.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

单片机接口技术实验指导书6个实验.docx

《单片机接口技术实验指导书6个实验.docx》由会员分享,可在线阅读,更多相关《单片机接口技术实验指导书6个实验.docx(32页珍藏版)》请在冰豆网上搜索。

单片机接口技术实验指导书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和L0,连接P11和L1,设置硬件实时仿真调试选项:

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中十六进制数对应的十进制数。

ORG0000H

MOVA,30H

MOVB,#100

DIVAB

MOV31H,A

MOVA,B

MOVB,#10

DIVAB

MOV32H,A

MOV33H,B

END

重要提示:

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口驱动,低电平对应段发光,高电平对应段熄灭。

各段的驱动位如图5-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

图5-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。

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

Y

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

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

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

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

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

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

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

图5-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

列驱动

图6-1键盘布置及键值

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

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

实验内容:

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

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

 

 

图6-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,#(ADD_8255+3);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

启动IN0~IN7A/D转换写任意数到8000H~8007H取转换结果读8000H~8007HEOC通过一个反相器输出

实验内容:

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

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

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

 

 

图7-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。

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

这个三

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

当前位置:首页 > 解决方案 > 学习计划

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

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