单片机试验答案.docx
《单片机试验答案.docx》由会员分享,可在线阅读,更多相关《单片机试验答案.docx(52页珍藏版)》请在冰豆网上搜索。
单片机试验答案
由于单片机具有高可靠性、超小型、低价格、容易产品化等特点,在仪器仪表智能化、实时工业控制、实时数据采集、智能终端、通信设备、导航系统、家用电器等控制应用领域,具有十分广泛的用途。
目前在国内单片机应用中,MCS-51系列单片机仍然是一种主流单片机。
为配合《单片机应用技术》课程的教学,使学生尽快了解、掌握89C51单片机的使用,特编写了这本上机指导书(基础篇)。
《单片机》是一门实践性很强的课程,提高教学质量的一个重要环节是上机实习和训练,无论是学习汇编语言程序设计,还是学习接口电路和外设与计算机的连接,或者软硬兼施地研制单片机应用系统,不通过加强动手是不能获得预期效果的。
本实验指导书提供了9个实验的指导性材料,实验还有一些思考题,可以根据课时的安排和教学要求进行取舍。
为了达到某些实验的目的,书中提供的参考程序与实际应用中的程序会有些差别,所以不一定是最优的。
由于时间紧迫,加上编者学识有限,如有不妥之处,欢迎读者批评指正。
编者
实验须知
1.实验前必须阅读教科书的有关部分和本实验指导书,了解实验目的、内容、步骤,做好实验前的准备工作,编写好实验中要求自编或修改的程序;完成实验前要求完成的准备工作后方可以上机实验,否则不得上机操作。
2.各种电源的电压和极性不能接错,严禁带电接线和接插元器件。
通电前须经过指导教师检查认可后方能通电。
3.不准随意拨弄各种与实验无关的旋钮和开关,凡与本次实验无关的任何设备都禁止动用和摸弄,注意安全。
4.严禁用手触摸实验系统印制电路板和元器件的引脚,防止静电击穿
H-R丄芯片。
5.实验中若损坏仪器或元器件,应及时向指导教师报告,听候处理。
6.在实验室内保持安静和卫生,不得随意走动和喧哗,集中精力完成实验。
7.实验完成后,关掉电源,及时整理实验台桌面,保持环境整洁。
8.按规定认真完成实验报告,对实验中出现的现象进行分析,在规定的时间内交上实验报告。
9.凡实验或实验报告未能按规定完成的学生,不能参加本课程的考试或考查。
第一章实验系统介绍
本实验系统采用
EL-MUT-HI型单片机教学实验系统。
1.系统概述
1)微处理器:
89S51,P1口、P3口对用户开放,供用户使用。
2)时钟频率:
6.0MHz
3)存储器:
程序存储器与数据存储器统一编址,最多可达64KB,板载ROM(监控程序27C256)12KB;RAM1(程序存储器6264)8KB供用户下载实验程序,可扩展达32KB;RAM2(数据存储器6264)8KB供用户程序使用,可扩展达32KB。
0000H----2FFFH为监控程序存储器区,用户不可用。
4000H----5FFFH为用户实验程序存储区,供用户下载实验程序。
数据存储器的范围为:
6000H----7FFFH,供用户实验程序使
用。
用户在编写实验程序时要注意,程序的起始地址应为4000H,所用的中断入口地址均应
在原地址的基础上,加上4000H。
用户中断入口地址见表1-1。
表1-1:
用户中断程序入口表
中断名称
8051原中断程序入口
用户实验程序响应程序入口
外中断0
0003H
4003H
定时器0中断
000BH
400BH
外中断1
0013H
4013H
定时器1中断
001BH
401BH
串行口中断
0023H
4023H
2.资源分配
本系统采用可编程逻辑器件(CPLD)EPM7128做为地址的译码。
地址的编译码分为两部分。
一部分为系统CPLD,提供了系统器件(如监控程序存储
器、用户程序存储器、数据存储器、系统显示控制器、系统串行通讯控制器等)的地址译码功能,此外还通过插孔CS0、CS1、CS2、CS3、CS4、CS5提供固定的译码地址给用户使用。
译码地址见表1-2。
另一部分为用户CPLD,它完全对用户开放,用户可通过芯片的JTAG接口与PC机相
LCS6、LCS7输出,供使用。
表1—2:
CPLD地址分配表
地址范围
输出孔/映射器件
性质(系统/用户)
0000H---2FFFH
监控程序存储器
系统*
3000H---3FFFH
数据存储器
系统*
4000H---7FFFH
用户程序存储器
系统*
8000H---CFDFH
LCS0---LCS7
用户
CFE0H
PC机串行通讯芯片8250
系统*
CFE8H
显示、键盘芯片8279
系统
CFA0H---CFA7H
CS0
系统
CFA8H---CFAFH
CS1
系统
CFB0H---CFB7H
CS2
系统
CFB8H---CFBFH
CS3
系统
CFC0H---CFC7H
CS4
系统
CFC8H---CFCFH
CS5
系统
CFD0H---FFFFH
LCS0——LCS7
用户
注:
系统地址中带"*”的表示用户不可用,也不可改,其他系统地址用户可用,但不可改。
3.系统使用方法
RS232接口与PC机
1)用通信电缆将EL-MUT-III型单片机教学实验系统侧面的
的COM口相连接。
2)启动EL-MUT-III型单片机教学实验系统的电源开关,EL-MUT-III型单片机
教学实验系统面板上的LED显示“199502”,几秒后显示P-。
3)双击桌面MCS51快捷图标如图1-1,启动51实验系统,启动后的界面如图1-2。
:
MCS51
图1-1图1-2
4)如需改变串口和波特率,在相应列表框中修改。
点击“确定”按钮后,立即实验系
统面板上的“PRESET”键,面板上的LED显示“C-”,同时PC机屏幕显示“51EL型(80C51)教学实验环境”界面,如图1-3。
图1-351EL型(80C51)教学实验环境界面
5)通过“文件”菜单新建或打开汇编语言文件,也可通过工具按钮口新建汇编文件。
新建汇编文件的扩展名为.ASM。
6)用“编译”菜单下的汇编命令或工具按钮刖对汇编文件进行汇编。
如有错误,应对文件重新编辑,直至汇编无错误为止。
7)用“调试”菜单下的“调试”命令或工具按钮IBL进入“调试”界面,如图1-4。
图1-4“调试”界面
8)用“调试”菜单下各调试命令,如图1-5对汇编文件进行调试,或用工具按钮
.对汇编文件进行调试。
工具按钮的功能如图1-6。
图1-5
9讣H
3IUHII;{卜血电B料滋
irjamws^usyhem戦工曹“g辱茶匱©w述必肖銅霍囚』跚
第二章上机指导
实验一P1口实验
(一)
、实验目的:
1.学习P1口作为输出口的使用方法。
2•延时子程序的编写和使用。
、实验设备:
EL-MUT-HI型单片机实验箱、8051CPU模块。
、实验原理:
实验原理如图2-1-1。
EC
R1
R6
E7
图2-1-1P1口输出实验电路
1.P1口的使用方法
P1口为准双向口,每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”。
89S51在复位时所有口锁存器均置为“1”,如果曾对口锁存器写过
“0”,此时要使它作为一个输入口,则应再次写入一个“1”。
2.延时程序的实现
常用两种方法实现延时程序,一是用定时器中断来实现,二是用指令循环来实现。
在系
统时间允许的情况下可以采用后一种方法。
本实验系统晶振为6.0MHZ,则一个机器周期为12%us=2us。
延时0.1s的程序如下:
MOVR7,
#X
(1)
DEL1:
MOVR6,
#200
(2)
DEL2:
DJNZR6,
DEL2
(3)
程序中X为延时值。
指令MOV、DJNZ需两个机器周期,所以每执行一条指令需要4us。
延时程序中X值应满足下式:
6
4+X(4+200>4+4)=0.1M0
指令
(1)时间指令
(2)时间指令(3)时间指令(4)时间
故X=123.75D=7CH。
将X=123.75D=7CH代入上式,得到实际延时时间约为0.1002S。
3•程序流程图:
程序流程图见图2-1-2和图2-1-3。
开始
|开始
J
1!
点亮LED
点臺]位g
*
延时0.1S
延时01S
▼
片f
熄灭LED
左移位
图2-1-2点亮发光二极管程序流程图图2-1-3左移循环点亮发光二极管程序流程图
四、实验内容与步骤
1•实验内容:
1)P1口做输出口,接八只发光二极管,根据程序流程图2-1-2,编写程序使P1口8个发光二极管同时熄灭-----延时-----点亮。
2)根据程序流程图1-3,编写程序使P1口8个发光二极管每隔一个左移循环点亮。
2.实验步骤:
1)将P1.0〜P1.7分别连接发光二极管L1〜L8。
2)按流程图2-1-2编写程序,对程序进行编辑、汇编直至无语法错误。
3)调试程序:
(1)单步调试,观察并记录相应寄存器内容及发光二极管L1〜L8的状态。
(2)全速运行程序,观察并记录发光二极管L1〜L8的状态。
4)重复2、3步骤,进行实验内容2的实验。
五、实验报告
1•写出使P1口8个发光二极管同时熄灭-----延时-----点亮源程序清单,并对每条指令给予注解。
2.写出使P1口8个LED每隔一个(或二个)左移循环点亮源程序清单,并对每条指令给予注解。
六、思考题
1.改变延时常数,重做实验。
2.修改程序,使LED发光方式、方向等改变。
七、参考程序:
1.点亮8个LED程序清单
ORG
4000H
LJMPSTART
ORG
4100H
START:
MOV
A,#00H
MOV
P1,A
;点亮
8个LED
LCALL
DELAY
;延时
0.1秒
MOV
A,#0FFH
MOV
P1,A
;熄灭
8个LED
LCALL
DELAY
;延时
0.1秒
JMP
START
DELAY
:
MOV
R1,#124
;延时
0.1秒
DEL1:
MOV
R2,#200
DEL2:
DJNZ
R2,DEL2
DJNZ
R1,DEL1
RET
END
2.循环点亮LED程序清单
ORG4000H
LJMPSTART
ORG
4100H
START:
MOV
A,#0FEH
LOOP:
MOV
P1,A
;点亮1个LED
RLA
;左移一位,点亮下一个发光二极管
LCALL
DELAY
;延时0.1秒
JMP
LOOP
DELAY:
MOVR1,#124
;延时0.1秒
DEL1:
MOVR2,#200
DEL2:
DJNZ
R2,DEL2
DJNZ
R1,DEL1
RET
END
实验二P1口实验
(二)
、实验目的:
1.P1口作为输入口的使用方法。
2•掌握数据输入、输出程序的设计方法。
、实验设备:
EL-MUT-HI型单片机实验箱、8051CPU模块
三、实验原理:
+57
1.P1口作为输入口实验原理见图
H
M
•d
M
匚
IS
TO
•4
K7
J«
KB
CLOCK
Pl1
P04*
PCI"
F0.6^
Pl.7
Pl.4
怕
00
U1
DI
02
03
U3B74LS273D404
B5
05
06
IT
07
L_
2
4
5
ED
6
8-
图2-2-1P1口作为输入口实验电路
2•程序流程图:
程序流程图见图2-2-2。
将A的內容送
74LS273显示
图2-2-2
显示P1口状态程序流程图
四、实验内容与步骤:
1.实验内容:
P1口做输入口:
如图2-2-1,P1口的P1.0-P1.8分别接8个单刀双郑开关K1~K8,74LS273
做输出口接八个LED,编写程序读取开关K1-K8状态,并在LED上显示出来。
2.实验步骤:
1)根据图2-2-1连线,CS273接CS0。
2)根据流程图2-2-2编写相应程序,对程序进行编辑、汇编直至无语法错误。
3)调试程序,拨动开关K1-K8,观察并记录程序运行结果。
五、实验报告仿照实验一,写出相应的实验报告。
六、思考题
1.图2-2-1中芯片74LS273的作用是什么?
2.在图2-2-1中,若LED反转1800,电路和程序如何修改?
七、参考程序:
通过LED将P1口的状态显示
实验三P1口实验(三)
、实验目的:
1.掌握P1口既做输入又做输出的使用方法。
2•掌握分支程序的设计方法。
、实验设备:
EL-MUT-HI型单片机实验箱、8051CPU模块
、实验原理:
1.
P1口同时作输入、输出口电路原理见图2-3-1。
图2-3-1P1口同时作输入、输出口实验电路
2•程序流程图:
程序流程图见图2-3-2。
四、实验内容与步骤:
1•实验内容:
图2-3-1为模拟汽车转向灯控制电路图,K1为左转弯开关,L5、L6做为左转弯灯;K2
为右转弯开关,L7、L8做为右转弯灯。
编写程序实现表2-3-1的功能。
表2-3-1:
开关K1、K2功能表
KI
K2
左转弯灯(L5>L5)
右转爲灯(L7、L3)
0
0
灭
灭
a
1
灭
以一定频率闪烁
1
0
以一定频率闪烁
灭
i
I
亮
亮
2.实验步骤:
1)根据图2-3-1连线。
2)输入相应程序,对程序进行编辑、汇编直至无语法错误。
3)调试程序,拨动开关K1-K2,观察并记录程序运行结果。
五、实验报告
仿照实验一,写出相应的实验报告。
六、思考题
当K1K2=11时,左转弯灯和右转弯灯同时闪烁,程序应如何修改?
编程并调试。
七、参考程序:
;P1口同时作输入、输出口实验程序
ORG4000H
LJMPSTART
ORG4100H
START:
SETBP1.0
L0:
MOV
A,P1
ANL
A,#03H
;从P1口读入开关状态,取低两位
CJNE
A,#00H,L1
LJMP
PRG0
L1:
CJNE
A,#01H,L2
LJMP
PRG1
L2:
CJNE
A,#02H,L3
LJMP
PRG2
L3:
CJNE
A,#03H,L4
LJMP
PRG3
L4:
LJMP
L0
PRG0:
MOV
P1,#0FFH
;向P1口输出#OFFH,LED全灭
;此时K2K1=00
LJMP
START
PRG1:
MOV
P1,#0F3H
;只点亮L5、L6,
表示左转弯
ACALL
DELAY
;此时K2K1=01
MOV
P1,#0FFH
;熄灭LED0.5秒
ACALL
DELAY
;延时0.5秒
LJMP
START
PRG2:
MOV
P1,#0CFH
;只点亮L7、L8,
表示右转弯
ACALL
DELAY
;此时K2K1=10
MOV
P1,#0FFH
;熄灭LED0.5秒
ACALL
DELAY
LJMP
START
PRG3:
MOV
P1,#00H
;LED全亮,此时
K2K1=11
LJMP
START
DELAY
:
MOV
R1,#5
;延时0.5秒
DEL1:
MOV
R2,#200
DEL2:
MOV
R3,#126
DEL3:
DJNZ
R3,DEL3
DJNZ
R2,DEL2
DJNZ
R1,DEL1
RET
END
实验四中断实验
、实验目的:
1•外部中断技术的基本使用方法。
2•中断处理程序的编程方法。
3•中断嵌套处理程序的编程方法。
、实验设备:
EL-MUT-III型单片机实验箱、8051CPU模块
、实验原理:
1.
实验原理如图2-4-1。
GNDPl3
LED3
LED4
LED3
LEDC
LED7
LED串
P1J5
P1.7
RQ
n
[
4
半
阳
1
_[
1——
*—
R6
r-L—
1^-
J1f
5V*
图2-4-1外部中断实验电路
2•程序流程图:
程序流程图见图2-4-2。
主程厚
开始
中断服勞程序
初始化
闪烁褂数诙R0
8个LED闪烁5rfc
设定外部中断0
图2-4-2
中断返回
K1中断控制LED程序流程图
四、实验内容与步骤:
1•实验内容:
1)单一外部中断控制:
按K1在INT0端产生中断信号,从而使P1的8个LED同时闪烁5次。
2)两级中断控制(中断嵌套):
按K1使8个LED闪烁后,按K2使LED右循环点亮。
3)根据图2-4-3,编写程序:
-丄的下降沿产生中断,中断服务程序为读入P1.4~P1.7
开关状态,并通过P1.0~P1.3输出。
PL5
7•
K2
二
一
89S51
T4LS132
IWTO
IX
P
图2-4-3
2.实验步骤:
1)按图2-4-1连接线路。
2)根据程序流程图编写程序,编辑程序并进行汇编。
3)用“单步连续运行程序”命令运行程序,观察程序运行等待中断过程,在等待中断
过程时,按K1(K2)键,观察并记录程序运行过程和LED显示情况。
4)对实验内容2编程,重复2-3步骤。
观察并记录程序运行结果。
5)对实验内容3编程,重复2-3步骤。
观察并记录程序运行结果。
6)在中端服务程序中设置断点,重复2-3步骤。
观察并记录程序运行结果。
五、实验报告
1•根据实验1内容写出相应的实验报告。
2.画出实验内容2的程序框图
3•对程序语句加以注解。
六、思考题
1.中断时,需保护现场(如PSW,ACC等寄存器的内容),中断服务程序应如何修改?
2.如何在程序中实现INT1的中断优先权高于INTO中断优先权?
七、参考程序:
;实验四
;INT0中断实验程序
;主程序8个LED熄灭,等待INT0中断
ORG4000H
LJMPSTART
ORG4003H
LJMPEXT0
ORG4013H
LJMPLPT
ORG4100H
START:
MOV
A,#0FFH
MOV
BAH,A
SETB
EX0
SETB
EX1
CLR
IT0
SETB
EA
MOV
SP,#70H
MOV
A,#0FFH
MOV
P1,A
SJMP
$
DELAY:
MOV
R1,#5
DEL1:
MOV
R2,#200
DEL2:
MOV
R3,#126
DEL3:
DJNZ
R3,DEL3
DJNZR2,DEL2
DJNZR1,DEL1
RET
;INT0中断服务程序:
8个LED闪烁5次。
EXT0:
MOV
R0,#10
MOV
A,#00H
LOOP:
MOV
P1,A
CALL
DELAY
CPL
A
MOV
P1,A
DJNZ
R0,LOOP
MOV
A,#0FFH
MOV
P1,A
RETI
LPT:
MOVA,
#01H
SHIF:
LCALLFLASH
RRA
SJMPSHIFT
FLASH:
MOV
P1,A
LCALL
DELAT
MOV
P1,#00H
LCALL
DELAY
DJNZ
R2,FLASH
RET
DELAY:
MOVR5,#200
D1:
MOVR6,#123
NOP
DJNZR6,$
DJNZR5,D1RET
实验五定时器/计数器实验
(一)
、实验目的:
1掌握89S51内部定时器、计数器的使用和编程方法。
2•定时器中断处理程序的编程方法。
、实验设备:
EL-MUT-HI型单片机实验箱、8051CPU模块
、实验原理:
1.实验原理如图2-5-1。
ri3
89S51
P1A
XTAL1
KTAL2
P15
PLU
Pl.T
图2-5-1定时器实验电路
1)定时常数的确定
采用定时器中断方法可实现时间延时,延时时间由主频和定时器方式来确定。
本实验中时钟频率为6.0MHZ,其延时时间最大值约为0.13s(方式一下)。
若要产生
0.5秒延时时间,需采用定时器定时和软件计数的方法来实现。
为此我们可在主程序中设置
软件循环次数初值为05H(用R0)的软件计数器和定时时间为0.1s的定时器。
这样定时器
每隔0.1s产生一次中断,CPU响应中断后将R0中计数值减一,即可实现0.5s延时。
定时器时间常数的确定方法如下:
机器周期=12—晶振频率=12/(6XI06)=2(us)=2X10-6(s)
定时器工作于方式一,设计数初值为X,则有(216-X)X2X10-6s=0.1s,由此可求得
X=15536D=3CB0H。
故初始值为TH=3CH,TL=B0H
2)初始化程序
初始化程序包括定时器初始化和中断系统初始化,即对IP、IE、TCON、TMOD的相应
位进行正确的设置,并将时间常数送入定时器中。
3)设计中断服务程序和主程序
中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一