单片机实验指导.docx
《单片机实验指导.docx》由会员分享,可在线阅读,更多相关《单片机实验指导.docx(101页珍藏版)》请在冰点文库上搜索。
单片机实验指导
第一篇DVCC-51NET单片机综合实验仪
工作原理及仿真器使用说明
§1·1DVCC-51NET单片机综合实验仪工作原理
DVCC-51NET单片机综合实验仪实验内容丰富,但单片机单元部分只占机箱面板左下部的一小部分,如下图照片所示:
图1·1实验仪单片机单元部分
实验仪单片机单元组成主要部分如下:
①40DIP单片机插座。
虽然电路板标明“8031”,但由于第31脚(#EA/VPP)通过100Ω电阻接VCC,
因此它只能使用片内的存储器,而且它的存储空间是程序存储空间与数据存储空间是各自独立编
址的。
它可以使用89C51,89C52,89S51,89S52,89c58等51内核的单片机。
由于它用仿真器内
的SST89C58来仿真实验程序,因此该40针插座一般不插入单片机芯片。
对调试好的实验程序,
可以由专用编程器写入CPU8X51芯片后直接插入该位置,脱离仿真器,独立运行用户实验程序。
②JFZ40针仿真头插座。
插座上有单片机的8位数据总线,16位地址总线,控制总线以及+5V电源线、
地线。
③地址锁存器373芯片,它锁存P0口输出的低8位地址。
④译码器138芯片。
它的输出端Y0~Y7,给出的译码首地址为:
Y0=8000H,Y1=9000H,Y2=A000H,
Y3=B000H,Y4=C000H,Y5=D000H,Y6=E000H,Y7=F000H。
⑤复位电路与3针插座复位选择JR。
上电复位电路由10μF的电解电容与1K电阻构成,JR的2-3
接通时选择上电复位。
JR的1-2接通时选择外部复位,外部复位信号接入插孔RESET上。
⑥插座JZ:
接插用户晶振。
实验仪默认是用仿真板上的晶振,频率为11059200Hz(机器周期为1.085
μS。
实验仪单片机单元组成如下图:
图1·2实验仪单片机单元组成图
§1·2DVCC-51C仿真器
DVCC-51C仿真器是一款简易的仿真器。
图1·3中白色的盒子即为仿真器,它的右端通过40芯排线及40针插座与实验仪单片机单元的JFZ40针仿真头插座相连,它的左端由9针RS-232C插座与PC机相连,由keilc51软件进行仿真。
图1·3DVCC-51C仿真器
该仿真器使用一片SST89C58单片机和一片AT90S8515单片机来实现仿真功能(主CPU和用户CPU),两片CPU之间通过一根I/O引脚通讯(通讯速率在33兆晶振时约100KBPS),主CPU(AT90S8515)负责跟keilc51通讯,用户CPU(SST89C58)只跟主CPU通讯,仿真器结构原理框图如下:
图1·4仿真器结构原理框图
仿真器主要功能和特性:
1、支持串口的仿真功能
2、串口中断用户可以使用
3、不占用定时器2
4、完全仿真p0,p2口
5、支持89C52等嵌入式CPU仿真
6、占用用户堆栈2个字节
7、占用1条I/O:
P3.5
8、ISP在线编程,在线下载
9、仿真频率最高33兆
10、支持同时最多10个断点
11、支持单步,断点,全速运行
12、支持汇编,c语言,混合调试
13、支持KEILC51的IDE开发仿真环境UV1UV2(V5.20V6.02V6.10V6.12V6.14)
14、单步执行时间(60毫秒)
15、程序代码载入(可以重复装载,无需预先擦除用户程序空间)
16、SFR读取速度(128个)200毫秒
17、跟踪记录(tracerecord)256条
18、可以仿真标准的89c51,89c52,89c58等51内核的单片机仿真
§1·3如何用仿真器运行实验程序
参照§1•2节,将PC机、仿真器、实验仪连接在一起。
开启实验仪的电源,启动PC机,然后按下面的步骤一步一步地操作。
点击keiluV2图标,再点击菜单的project,选择openproject。
如图:
图1·5
这里拿keilc51V6.14来说明(keilc51v6.02,v6.10,v6.12的设置跟v6.14是一样的),以实验一为例。
先打开子目录test1中的工程文件mcuio,如图:
图1·6
打开后如下图:
图1·7
选择菜单的Project->OptionforTarget‘对象1’,如图:
图1·8
点击后为:
图1·9
选择Output选项卡,CreateHEXFi的复选按钮应打“√”:
图1·10
选择C51选项卡,define栏应是空的
图1·11
选择Debug选项卡,按钮选择情况如下图:
Use:
KeilMonitor-51Driver。
LoadApplicationatStart:
选择这项之后,keil才会自动装载你的程序代码。
Gotillmain:
调试c语言程序时可以选择这一项,pc会自动运行到main程序处。
图1·12
图中Breakpoint,Watchpoint,Watchpoint&PA(断点、游览点、游览点&PA)可根据情况选择。
上图中点击Settings,打开新的窗口:
图1·13
Port——设置你的串口号,为仿真机的串口连接线COM所连接的串口。
Baudrate——设置为57600,仿真机固定使用57600bps跟keil通讯。
SerialInterrupt——选中它。
CacheOptions:
可以选也可以不选,推荐选它,这样仿真机会运行的快一点。
最后点击OK和确定关闭你的设置。
再点击工具栏的Project从下拉菜单中选择Rebuildalltargetfiles
图1·14
在视窗下部的Build窗口中显示“mcuio”—0Error(s),0Warning表示这个工程所有文件没有错误,也就是你编辑的程序在语法上是正确的(但运行可能有错,或不符合设计要求),下一步可以调试运行了。
图1·15
点击工具栏的Debug菜单,如下图:
图1·16
再点击Start/StopDebugSession命令,就进入仿真调试,可以对你的运行程序和进行调试了。
此时视窗画面如下:
图1·17
窗口中ConnectedtoMonitor-51V1.0表示已连接到仿真机,仿真机的版本号为1.0。
Load"G:
\\测试程序\\test1\\mcuio"表示代码装载成功。
可以进行仿真运行了。
图1·17中,左边是寄存器(Regs)窗口,它在调试中可以跟踪显示工作寄存器和专用寄存器(SFR)的内容。
右边时实验的MCS-51汇编语言源程序,可连续运行。
也可以单步运行、设置断点运行。
可以在此窗口中对程序进行修改,修改后要回到图1•14的菜单。
用Buildtarget命令对源程序进行汇编,并可修改程序中可能出现的错误。
用Rebuildalltargetfiles命令,构建所有的目标文件,然后可按图1·16以后的步骤进行操作。
§1·4用仿真器运行实验程序几点注意事项
(1)用户板的晶振的使用
仿真器侧面有一个8路拨码开关,默认的设置如下图:
图1·15
图示位置开工向上拨为‘ON’,向下拨为‘OFF’。
各开关状态如下表:
表1·1
开关编号
1
2
3
4
5
6
7
8
开关状态
ON
OFF
OFF
OFF
OFF
OFF
OFF
ON
其中的123路拨码开关是设置使用仿真板的晶振还是用用户板的晶振。
默认是用仿真板上的晶振,频率为11059200Hz。
要使用用户板的晶振,须将123路设置为:
1OFF,2ON,3ON。
(2)用户板复位的使用
第4路拨码开关是设置使用仿真板的复位(RESET)还是用用户板的复位(RESET)。
默认是用仿真板上的复位,就是SST89C58的RESET脚不连到用户板。
要使用用户板的复位,也就是SST89C58的RESET脚连到用户板,要将第4路设置为:
ON。
使用看门狗复位时,最好设置为OFF。
(3)板上的电平转换电路使用
第5,6路拨码开关是设置使用仿真板的MAX232做为电平转换,还是用用户板的电平转换。
默认是用用户板上的转换。
要使用仿真板的串口,将第5,6路设置为:
5ON6ON。
(4)8X51单片机口P3.5的使用
由于监控系统要使用P3.5来进行通讯,用户最好不要使用P3.5。
如果使用,可能会影响该引脚的状态,但对监控系统是没有影响的。
这是该仿真机的一个弱点。
P3.5可以用来做输出。
第二篇实验部分
实验一单片机I/O口应用实验
(一)单片机I/O口应用实验
——P3.3口输入P1口输出
一、实验目的
1.学习Keil工具软件进行仿真调试的基本操作。
1.掌握51系列单片机P3口、P1口简单使用方法。
2.学习延时程序的编写和使用。
二、实验内容
1.P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制加一。
(脉冲用
人工拨动开关来实现)
2.P1口做输出口,编写程序,使P1口接的8个发光二极管L0—L7按16进制加一的方式点亮发光二极管。
三、实验说明
1.P1口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知:
当P1口作为输入口时,必须先对它置高电平,使内部MOS管截止,因内部上拉电阻是20KΩ—40KΩ,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据不正确。
2.延时子程序的延时计算。
常用的延时程序采用双重循环子程序来实现:
DELAY:
MOVR6,#00H
DELAY1:
MOVR7,#80H
DJNZR7,$
DJNZR6,DELAY1
RET
延时时间计算如下:
延时时间t=延时程序总周期数n×机器周期T
机器周期T有仿真器的振荡频率11059200Hz决定,因此有:
机器周期T=12÷11059200=1.085(μS)
查指令表可知MOVRn,#data与DJNZRn,rel指令均需用2个机器周期,RET指
令为1个机器周期。
分析上面的程序,忽略执行RET指令的时间,该程序总的机
器周期数为:
((128+1+1)×256)+1)×2
延时时间为:
t=[((128+1+1)×256)+1)×2]×1.085(μS)
=72219.77(μS)
≈72.3(mS)
可以改变R6,R7设定的初值来改变延时时间。
四、实验原理图
图(1-1)
图中9根粗黑线段在实验仪上需用两端带插头的软导线连接。
五、实验程序框图
图(1-3)
图(1-2)
六、实验程序
实验源程序mcuio.ASM如下:
ORG0000h
1.AJMPHA1S
ORG0030H
2.HA1S:
MOVA,#00H
3.HA1S1:
JBP3.3,HA1S1
4.MOVR2,#20H
5.LCALLDELAY
6.JBP3.3,HA1S1
7.HA1S2:
JNBP3.3,HA1S2
8.MOVR2,#20H
7.LCALLDELAY
9.JNBP3.3,HA1S2
10.INCA
11.PUSHACC
12.MOVP1,A
13.POPACC
14.AJMPHA1S1
15.DELAY:
PUSH02H
16.DELAY1:
PUSH02H
17.DELAY2:
PUSH02H
18.DELAY3:
DJNZR2,DELAY3
19.POP02H
20.DJNZR2,DELAY2
21.POP02H
22.DJNZR2,DELAY1
23.POP02H
24.DJNZR2,DELAY
25.RET
END
七、实验步骤
1、P3.3用插针连至K1,P1.0~P1.7用插针连至L0~L7。
2、调试、运行程序mcuio.ASM。
3、开关K1每拨动一次,L0~L7发光二极管按16进制方式加一点亮。
八、实验要求
1.在PC机上利用Kiel工具软件在实验机上连续运行mcuio程序。
2.在PC机上利用Kiel工具软件在实验机上单步执行mcuio程序。
3.用双重循环延时程序替代原mcuio.ASM程序中的延时程序,即第15~25句,并在
实验机上运行。
4.按指导教师的要求写实验报告。
九、思考探讨的问题
1.mcuio.ASM程序中第2~6句的用意是什么?
2.第15,16,17,19,21,23句中的02H是什么意思?
3.假定1机器周期为1μS,估算mcuio.ASM程序中的延时程序DELAY的延时时间。
(二)并行I/O接口8255A应用
一、实验目的
1.了解8255A芯片的引脚功能。
2.掌握8255A可编程并行接口芯片基本输入/输出方式0的应用方法
3.掌握利用方式0控制A口、B口、C口输入输出的编程方法。
二、8255A的工作原理
8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,图2·1是8255A的引脚图。
图2·18255A的引脚图
8255A内部有3个8位I/O端口:
A口、B口、C口;这三个口可以分为各有12位的两组:
A和B组,A组包含A口8位和C口的高四位,B组包含B口8位和C口的低4位;即:
①A组的引脚为:
PA.7~PA.0与PC.7~PC.4
②B组的引脚为:
PB.7~PB.0与PC.3~PC.0
8255A有2根地址线,因此它有4个实用地址,由于实验仪8255A的片选信号CS’接地址译码器74LS138的Y0,Y0的起始地址为8000H,因此3个平行口及工作方式控制字的地址为:
PA的地址————8000H
PB的地址————8001H
PC的地址————8002H
工作方式控制字————8003H
8255A芯片有8根数据线。
由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以8根数据线直接和单片机系统数据总线相连。
可以用MOVX指令传送工作方式控制字和输入/输出数据(信号)。
8255A芯片有三种工作方式:
方式0:
基本输入/输出
方式1:
选通输入/输出
方式2:
双向输入/输出
在本实验中我们只讨论和使用工作方式0,即基本输入/输出方式。
在该方式下的A口8位和B口8位可以由输送入8255A的工作方式控制字来决定是输入还是输出。
C口分成高4位(PC7~PC4)和低4位(PC3~PC0)两组,也由控制字决定其输入或输出。
需注意的是:
该方式下,只能将C口其中一组的四位全部置为输入或输出。
方式0的工作方式控制字的格式如下:
图2·28255A的方式0的工作方式控制字的格式
如果想设置PA为输出,PB口为输入,则控制字为‘10000010B’。
只要执行下面的指令:
MOVDPTR,#8003H
MOVA,#82H
MOV@DPTR,A
就可以使8255A工作在PA为输出,PB口为输入的状态。
(此时,PC.7~PC.4为输出,PC.3~PC.0为输出)
本实验的PA为输入,PB口为输出,则控制字为‘10010000BH’。
只要执行下面的指令:
MOVDPTR,#8003H
MOVA,#90H
MOV@DPTR,A
就可以了。
(此时,PC.7~PC.4为输出,PC.3~PC.0为输出)
图2·2的格式中最高位是特征位。
为‘1’表示是工作方式控制字,为‘0’,表示是PC口的按位置1/置0控制字,其格式如下:
图2·38255A的按位置1/置0控制字
例如:
如果要设置PC.2为‘1’,置1/置0控制字为‘00000100’,可以执行下面的指令:
MOVDPTR,#8003H
MOVA,#90H
MOV@DPTR,A
三、实验内容
1.基本实验:
用8255A的PA口做输入口,PB口做输出口,控制PA口状态从PB口输出显示。
2.扩展实验:
根据要求,设计使发光二极管按不同方式闪烁的实验程序,并上机运行。
四、实验说明
通过PA口接8个开关K1~K8,开关向上为输入高电平,即逻辑‘1’。
向下为输入低电平,即逻辑‘0’。
PB口通过74LS240(8路,反相)接8个发光二极管的阴极,PB口输出‘1’,经74LS240反相输出‘0’,驱动发光二极管发光(参看实验一,图1·1)。
从PA口读入8位开关的状态送PB口显示,拨动K1~K8,PB口上接的8个发光二极管L0~L7对应显示K1~K8的状态。
五、实验接线图
基本实验与扩展实验的接线图是一样的,如下图所示:
图2·4并行I/O接口8255A应用实验接线图
六、基本实验程序框图
图2·5并行I/O接口8255A基本实验程序流程图
七、基本实验程序
org0000h
ajmpmain
org0030h
main:
movsp,#60h
movdptr,#8003h
mova,#90h;方式0,PA口输入、PB口输出
movx@dptr,a
m:
movdptr,#8000h
movxa,@dptr
lcalldelay
movdptr,#8001h
movx@dptr,a
lcalldelay
ajmpm
delay:
movr6,#00h
djnzr6,$
ret
end
八、实验步骤
1、8255芯片的PA0~PA7插孔依次接在开关K1~K8。
2、8255芯片的PB0~PB7插孔依次接发光二极管L0~L7。
3、8255芯片的片选8255CS’插孔接译码输出Y0。
4、调试、运行程序8255.ASM程序(在test3的文件夹中)。
拨动开关,相对应的发光二极管显示其状
态。
九、扩展实验
1.实验接线图不变,可以通过设计软件,可以使发光二极管按设计的要求进行发光。
下面这个程序是
如果K1拨上,从右向左轮流每次亮1个发光二极管;如果K2拨上,从右向左轮流每次亮2个发光二极管。
(下面程序仅供参考)
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVDPTR,#8003H
MOVA,#90H;方式0,PA口输入、PB口输出
MOVX@DPTR,A
M:
MOVDPTR,#8000H;本句至AJMPM,为检测K1或K2开关是否拨上,
MOVXA,@DPTR;即PB.0或PB.1是否输入为高电平。
JZM
LCALLDELAY
JZM
MOV30H,A
ANLA,#01H
JNZN1
MOVA,30H
ANLA,#02H
JNZN2
AJMPM
N1:
MOVA,#01H;如果K1拨上,从右向左轮流每次亮1个发光二极管。
MOVDPTR,#8001H
MOVX@DPTR,A
L1:
LCALLDELAY
RLA
MOVX@DPTR,A
SJMPL1
N2:
MOVA,#03H;如果K2拨上,从右向左轮流每次亮2个发光二极管。
MOVDPTR,#8001H
MOVX@DPTR,A
L2:
LCALLDELAY
RLA
MOVX@DPTR,A
SJMPL2
DELAY:
MOVR6,#00H;延时子程序
D1:
MOVR7,#0A0H
DJNZR7,$
DJNZR6,D1
RET
END
2.(选做)编写一个程序,按下K1键,L0,L1两个发光管亮,并不停地闪烁。
按下K2键,L2,L3两个发光管亮,并不停地闪烁。
十、实验要求
1.在PC机上利用Kiel工具软件在实验机上连续运行基本实验8255程序。
2.在PC机上利用Kiel工具软件在实验机上单步执行基本实验8255程序,只运行十步,观察SFR中的内容的变化。
3.在PC机上利用Kiel工具软件在实验机上连续运行扩展程序1。
4.(选做)编写扩展实验2的程序,并上机调试运行。
5.按指导教师的要求写实验报告。
十一、思考探讨的问题
1.基本实验程序中:
MOVSP,#60H,这一句的用途是什么?
将#60H换成#20H会出现什么问
题?
2.扩展实验1中,下面这段程序:
M:
MOVDPTR,#8000H
MOVXA,@DPTR
JZM
LCALLDELAY
JZM
两条JZM指令的用意是什么?
3.假定1机器周期为1μS,扩展实验1的延时程序DELAY的延时时间是多少?
实验二数据存贮器及定时器/计数器实验
(一)数据存贮器62256扩展实验
一、实验目的
1、学习片外存贮器扩展方法。
2、学习数据存贮器不同的读写方法。
二、单片机数据存储器扩展原理
单片机数据存储器扩展,就是单片机如何与数据存储器接口。
下图为数据存储器62256与51系列单片机接口电路(8031,8051,80C51……接口电路与此相同)。
存储器62256为32K8位的数据存储器(RAM),他有主要有14根地址线、8根数据线、片选信号线CS’、读信号线RD’、写信号线WR’,他与单片机接口如下图3·3。
由图可见他的地址空间为0000~7FFFH。
CE’
图3·1数据存储器62256与51系列单片机接口电路
三、实验内容
1.基本实验:
使用一片62256RAM,作为片外扩展的数据存贮器,先对其0000H~0EF1H单元写入
“01010101”(55H),然后将0000H~0EF1H单元内容依次读出,检查是否为“01010101”。
若正
确,发光二极管L1闪烁发光,否则L1始终是亮的。
2.扩展实验:
将上面的“检查是否为‘01010101’。
若正确,发光二极管L1闪烁发光,否则L1始终
是亮的。
”改成“若正确,发光二极管L0,L2,L4,L6为一组,L1,L3,L5,L7为一组,轮流闪烁发
光,否则L0~L7全亮”
四、实验说明
本实验采用的是55H(0101,0101)或AAH(1010,1010)来对存储器进行读写操作。
一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实验调试用户电路时非常有效。
编写的程序对片外扩展的数据存贮器进行读写操作,若L1灯闪动说明RAM读写正常。
五、