MCS51单片机实验指导书.docx
- 文档编号:3946308
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:60
- 大小:242.55KB
MCS51单片机实验指导书.docx
《MCS51单片机实验指导书.docx》由会员分享,可在线阅读,更多相关《MCS51单片机实验指导书.docx(60页珍藏版)》请在冰豆网上搜索。
MCS51单片机实验指导书
MCS-51单片机
实验指导书
主编 陈永健
编者 林建华魏有法
闽南理工学院实践教学中心
二0一0年九月
前言
单片机实验是掌握编程应用的一门重要实践课程,为今后开展电子科技制作、创新设计以及研发打下坚实基础。
学习本实验课程对巩固和加深课堂教学内容,提高学生实际工作技能,培养科学作风,为学习后续课程和从事实践技术工作奠定基础具有重要作用。
为适应电子科学技术的迅猛发展和教学改革不断深入的需要,实验中心购置了新型单片机、微机接口一体化仿真实验箱,并编写了这本相应的实验指导书。
本书以《单片机原理及应用课程教学基本要求》中确定的教学实验要求为基础,包括了《单片机原理与接口技术》课程全部实验内容。
实验系统采用达爱思DAIS仿真集成开发环境、基于8032CPU的51单片机。
MCS-51单片机实验是基于汇编语言(助记符语言)的编程语言、是一门面向计算机的硬件的语言,学好本实验课程对今后学习KLC编程、VHDL、C++等高级语言打下扎实基础,为后继单片机课程的学习提供程序编程的基础。
实验内容的安排遵循由浅到深,由易到难的规律。
考虑不同层次需要,既有测试、验证的内容,也有设计、研究的内容。
实验只提供设计要求及程序思路(流程图),由学生自己完成方案选择、实验步骤及程序编写等,充分发挥学生的创造性和主动性。
在编写本书中,闽南理工学院实践中心主任李梅审阅并提出许多宝贵意见,同时得到电子教研室林建华等老师的帮助与支持。
在此表示中心感谢。
编者:
陈永健
2010年9月
MCS-51单片机实验指导
本实验指导是为适应各大专、本科院校开设单片机原理与应用方面的课程设置需要而编写,供学生编程用。
完成本实验指导中的实验,可使学生基本掌握MCS-51单片机的结构原理、程序框图和实验步骤。
免除了主讲教师和实验辅导老师为设计、准备调试实验线路和实验程序所需的工作量,节约宝贵的时间。
一、实验指导书中所列的实验程序已经固化到系统管理CPU中,在“P.”状态下,按动“0”键→再按“EV/UN”键,将程序传送到以0000H为起始地址的RAM中。
因实验程序中采用子程序形式较多,要互相调用,所以必须把程序全部传送到实验系统中,对中断入口等地址的指令按照实验要求输入。
其中MCS-51实验程序地址范围:
0000~1FFFH,您可以通过系统自带的键盘显示输入各种命令运行系统RAM中的实验程序,显示实验结果完成各个实验项目。
二、实验接线图上的粗实线表示用户在实验时要用导线连接起来。
三、所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据贵校(院)的教学要求,选择相应实验。
四、对同一问题的解决办法往往不是唯一的欢迎用户在使用本书过程中提出最为优秀的实验方案,指示错误和不足,希望用户反馈给我们,以便及时修改。
第一部分基础性实验(软件实验)
实验一 清零程序1
实验二拆字与拼字程序3
实验三数据区传送子程序和数据排序实验6
实验四查找相同数个数9
实验五码型转换实验11
实验六八段数码管显示14
实验七键盘扫描显示实验18
第二部分综合设计性实验(硬件实验)
实验八P1口使用实验25
实验九中断控制实验31
实验十8255控制交通灯实验36
实验十一D/A输出方波41
实验十二A/D转换实验44
实验十三I/O口扩展实验49
实验十四外部存储器扩展实验52
实验十五步进电机实验56
第三部分附录
附录一Dais系统介绍60
附录二DaisMCS-51开发软件使用说明62
附录三可编程接口芯片引脚图63
实验一清零程序
一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容
把片内RAM的20H~2FH的16个单元的内容清零。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
三、实验原理
1、实验流程
2、实验程序
;将片内RAM的20~2F单元清零
org0
clra;清零ACC
movr0,#0;计数器初值
movr1,#20h;RAM地址
loop:
mov@r1,a;将0送(R1)
incr1
incr0;字节数加1
cjner0,#16,loop;不到16个字节再清
sjmp$
end
四、实验设备
1、Dais-MCS51仿真开发系统
2、微型计算机
3、8031CPU实验板
五、实验步骤及报告
1、确认实验箱正常工作。
2、在PC联机状态下,点击“
”,输入程序,并保存。
3、编译、连接、装载,用连续或单步运行程序。
4、运行结果检查:
1)单步运行时,每走一步,可观察其运行结果,此程序单步运行时会出现问题,发现并解决它。
2)连续运行状态下,应按“
”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后在用相应的命令键观察与检查结果。
5、记录观察片内RAM的20H~2FH执行前后的结果及数据。
6、记录汇编调试成功的程序并分析其设计思路,写出个人体会及收获。
六、预习思考题
修改程序,把片内RAM的20H~2FH的内容改成0FFH。
七、实验注意事项
1、实验过程中禁止用手触摸集成芯片引脚或拨插芯片,未经允许不得私自更换CPU。
2、若有实验连线前应先关掉实验箱电源开关,待检查无误后方可通电。
3、实验箱通电后打开计算机Dais-MCS51仿真开发系统并注意观察工具栏的联机图标,绿色图标代表无连接应检查通信电缆线是否接好(或在软件界面更换串口及波特率)。
4、若程序汇编成功后,当前PC值未指定在第一条指令(即在第一条指令底色出现蓝色)将无法正常运行。
实验二拆字与拼字程序
一、实验目的
掌握汇编语言设计和调试方法。
二、实验内容
1、将片内RAM的20H内容拆开,高位送21H,低位送22H。
2、将20H的低位、21H的低位送22H的高位、低位。
三、实验原理
1、实验流程
2、实验程序(将程序补充完整并添加注释)
拆字程序
ORG0
MOVA,20h
ANLA,#0FH
MOV21H,A
MOVA,20H
ANLA,
SJMP$
END
拼字程序
ORG0
MOVA,20H
ANLA,#0FH
MOVB,A
MOVA,21H
ANLA,
MOV22H,A
SJMP$
END
四、实验设备
1、Dais-MCS51仿真开发系统
2、微型计算机
3、8031CPU实验板
五、实验步骤及报告
1、确认实验箱正常工作。
2、在PC联机状态下,点击“
”,输入程序,并保存。
3、编译、连接、装载,用连续或单步运行程序。
4、运行结果检查:
1)在单步运行时每走一步可观察其运行结果。
2)在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~2002h中内容变化情况。
5、记录观察到的结果及数据,回答思考题。
6、记录汇编调试成功的程序并分析其设计思路,写出个人体会及收获。
六、预习思考题
使用其它方法编程实现如用SWAP指令。
七、实验注意事项
1、实验过程中禁止用手触摸集成芯片引脚或拨插芯片,未经允许不得私自更换CPU。
2、若有实验连线前应先关掉实验箱电源开关,待检查无误后方可通电。
3、实验箱通电后打开计算机Dais-MCS51仿真开发系统并注意观察工具栏的联机图标,绿色图标代表无连接应检查通信电缆线是否接好(或在软件界面更换串口及波特率)。
4、若程序汇编成功后,当前PC值未指定在第一条指令(即在第一条指令底色出现蓝色)将无法正常运行。
实验三数据区传送子程序和数据排序实验
一、实验目的
1、熟悉MCS-51指令系统,掌握程序设计方法。
2、掌握循环指令的使用,利用冒泡法进行数据处理。
二、实验内容
1、把片内RAM的20H起始的16逐步形成单元传送到30H地址空间。
2、编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。
三、实验原理
1、数据区传送实验流程
2、数据排序流程图
3、实验程序(将程序补充完整并添加注释)
(1)数据区传送子程序
ORG0
MOVR0,
MOVR1,
MOVR7,
LOOP:
MOVA,@R0
MOV,A
DJNZR7,LOOP
SJMP$
END
(2)数据排序实验
org0
movr3,#50h;起始地址
start:
mova,r3;指针送r0
movr0,a
movr7,#10h;长度送r7
clr00h;标志位为0
mova,@r0
ql2:
incr0
movr2,a
clrc
mov22h,@r0
cjnea,22h,ql3;相等吗?
setbc
ql3:
mova,r2
jcql1;大于交换位置
setb00h
xcha,@r0
decr0
xcha,@r0
incr0;大于交换位置
ql1:
mova,@r0
djnzr7,ql2
jb00h,start;一次循环中有交换继续
sjmp$;无交换退出
end
四、实验设备
1、Dais-MCS51仿真开发系统
2、微型计算机
3、8031CPU实验板
五、实验步骤及报告
1、在PC联机状态下,点击“
”,输入程序,并保存。
2、编译、连接、装载,用连续或单步运行程序。
3、运行结果检查:
1)在单步运行时每走一步可观察其运行结果。
2)在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查片内50~5Ah中内容是否按从小到大排列。
4、记录实验前及实验后的结果及数据并以表格的形式列出。
5、记录汇编调试成功的程序并分析其设计思路,写出个人体会及收获。
六、预习思考题
修改程序把50~5Ah中内容按从小到大排列。
七、实验注意事项
1、实验过程中禁止用手触摸集成芯片引脚或拨插芯片,未经允许不得私自更换CPU。
2、若有实验连线前应先关掉实验箱电源开关,待检查无误后方可通电。
3、实验箱通电后打开计算机Dais-MCS51仿真开发系统并注意观察工具栏的联机图标,绿色图标代表无连接应检查通信电缆线是否接好(或在软件界面更换串口及波特率)。
4、若程序汇编成功后,当前PC值未指定在第一条指令(即在第一条指令底色出现蓝色)将无法正常运行。
实验四查找相同数个数
一、实验目的
熟悉汇编语言编程。
二、实验内容
在片内RAM的2000H-200FH中查出有几个字节是0,把数量放在30H中。
三、实验原理
1、程序流程
2、实验程序(将程序补充完整并添加注释)
org0
movr7,#16;查找16个字节
movr1,#00h
movr0,#20h
;*************************************
;在此处填入程序
;*************************************
sjmp$
end
四、实验设备
1、Dais-MCS51仿真开发系统
2、微型计算机
3、8031CPU实验板
五、实验步骤及报告
1、在PC联机状态下,点击“
”,输入程序,并保存。
2、编译、连接、装载,用连续或单步运行程序。
3、运行结果检查:
1)单步运行时,每走一步,可观察其运行结果。
2)在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查30h中是几个单元数。
六、预习思考题
修改程序,查找其他内容。
七、实验注意事项
1、实验过程中禁止用手触摸集成芯片引脚或拨插芯片,未经允许不得私自更换CPU。
2、若有实验连线前应先关掉实验箱电源开关,待检查无误后方可通电。
3、实验箱通电后打开计算机Dais-MCS51仿真开发系统并注意观察工具栏的联机图标,绿色图标代表无连接应检查通信电缆线是否接好(或在软件界面更换串口及波特率)。
4、若程序汇编成功后,当前PC值未指定在第一条指令(即在第一条指令底色出现蓝色)将无法正常运行。
实验五码型转换实验
一、实验目的
1、掌握简单的数值转换算法,基本了解数值的各种表达方法。
2、了解BCD值和ASCII值的区别,掌握如何将BCD值转换成ASCII值,并学习如何查表进行数值转换及快速计算。
二、实验内容
1、将给定的一个二进制数,转换成二进制编码的十进制(BCD)码。
将A的内容拆为三个BCD码,并存入CPU内部存储区20H开始的三个单元。
2、将ACC的内容拆为二个ASCII码,并存入20H开始的二个单元。
三、实验原理
1、实验流程
(1)二进制码转换到BCD码
2、实验程序
(1)数制转换:
二进制到BCD转换
;将ACC拆为三个BCD码,并存入cup内部存储区20H开始的三个单元
Resultequ20h
org0
Start:
mova,#123;置初值
callBinToBCD
sjmp$
BinToBCD:
movb,#100
divab
movResult,;除以100,得百位数
mova,b
movb,
divab
movResult+1,;余数除以10,得十位数
movResult+2,;余数为个位数
ret
end
(1)数制转换:
二进制到ASCII转换
;将ACC拆为二个ASCII码,并存入20H开始的二个单元
Resultequ20h
org0
Start:
mova,#1ah
callBinToHex
sjmp$
BinToHex:
movdptr,
;暂存A
swapa
anla,;取高四位
;查ASCII表
movResult,a
mova,b;恢复A
anla,#0fh;取低四位
;查ASCII表
movResult+1,
ret
ASCIITab:
;定义数字对应的ASCII表
db'09ABCDEF'
end
四、实验设备
1、Dais-MCS51仿真开发系统
2、微型计算机
3、8031CPU实验板
五、实验步骤及报告
(一)二进制到BCD转换
1、在实验系统与PC联机状态下,编译、连接、下载。
2、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键检查存入20H开始的三个片内RAM单元。
(二)二进制到ASCII转换
1、在实验系统与PC联机状态下,编译、连接、下载。
2、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键检查存入20H开始的二个片内RAM单元。
六、预习思考题
如何将BCD转换成二进制码?
七、实验注意事项
1、实验过程中禁止用手触摸集成芯片引脚或拨插芯片,未经允许不得私自更换CPU。
2、单步运行时若有弹出反汇编窗口应检查通信串口。
3、实验箱通电后打开计算机Dais-MCS51仿真开发系统并注意观察工具栏的联机图标,绿色图标代表无连接应检查通信电缆线是否接好(或在软件界面更换串口及波特率)。
4、若程序汇编成功后,当前PC值未指定在第一条指令(即在第一条指令底色出现蓝色)将无法正常运行。
实验六八段数码管显示
一、实验目的
1、了解数码管动态显示的原理
2、了解用总线方式控制数码管显示。
二、实验内容
熟利用实验系统提供的显示设备,动态显示一行数据。
本实验系统提供了6位八段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
三、实验原理
1、程序流程
2、实验程序(将程序补充完整并添加注释)
;**********************************************
; 八段数码管显示程序
;**********************************************
cs8255equ0ffffh;8255命令控制口
outsegequ0fffch;字形控制口
outbitequ0fffdh;字位/键扫控制口
LEDBufequ60h;显示缓冲
Numequ70h;显示的数据
DelayTequ75h;延迟参数
org0
Start:
movsp,#40h
movNum,#0
movdptr,#CS8255
mova,#88h;命令字:
A,B口输出
movx@dptr,a;8255初始化
MLoop:
incNum
mova,Num
movb,a
movr0,#LEDBuf
FillBuf:
mova,b
anla,#0fh
movdptr,#LEDMap
movca,@a+dptr;数字转换成显示码
mov@r0,a;显示在码填入显示缓冲
incr0
incb
cjner0,#LEDBuf+8,FillBuf
movDelayT,#100
DispAgain:
callDisplayLED;显示
djnzDelayT,DispAgain
ljmpMLoop
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
DisplayLED:
movr0,#LEDBuf
movr1,#8;共8个LED八段管
movr2,#b;从左边开始显示
Loop:
movdptr,#OUTBIT
clra
movx@dptr,a;关所有八段管
mova,@r0
movdptr,#OUTSEG
movx@dptr,a
movdptr,#OUTBIT
mova,r2
movx@dptr,a;显示一位八段管
movr6,#01
callDelay
mova,r2;显示下一位
rra
movr2,a
incr0
djnzr1,Loop
movdptr,#OUTBIT
clra
movx@dptr,a;关所有八段管
ret
LedMap:
;八段管显示码
db0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h
db080h,090h,088h,083h,0c6h,0a1h,086h,08eh
end
四、实验设备
1、Dais-MCS51仿真开发系统
2、微型计算机
3、8031CPU实验板
五、实验步骤及报告
1、在联机状态下,编译、连接、下载并用连续方式运行,利用实验系统的显示设备动态显示数据。
2、按“暂停图标”,系统无条件退出该程序运行返回监控状态。
3、分析数码显示原理,写出个人收获与体会。
六、预习思考题
画出实验电路原理图。
七、实验注意事项
1、实验过程中禁止用手触摸集成芯片引脚或拨插芯片,未经允许不得私自更换CPU。
2、本实验只能用连续运行方式观察结果。
3、实验箱通电后打开计算机Dais-MCS51仿真开发系统并注意观察工具栏的联机图标,绿色图标代表无连接应检查通信电缆线是否接好(或在软件界面更换串口及波特率)。
4、若程序汇编成功后,当前PC值未指定在第一条指令(即在第一条指令底色出现蓝色)将无法正常运行。
实验七键盘扫描显示实验
一、实验目的
1、掌握键盘和显示器的接口方法和编程方法。
2、掌握键盘扫描和LED八段码显示器的工作原理。
二、实验内容
本实验系统自带一个8×4的键盘,在判断有键按下后,要有一定的延时,防止键盘抖动。
在上一个实验的基础上,利用实验系统提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来。
实验程序可分成三个模块。
①键输入模块:
扫描键盘、读取一次键盘并将键值存入键值缓冲单元。
②显示模块:
将显示单元的内容在显示器上动态显示。
③主程序:
调用键输入模块和显示模块。
三、实验原理
1、程序流程图
2、实验程序(将程序补充完整并添加注释)
;**********************************************
; 键盘扫描显示实验
;**********************************************
cs8255equ0ffffh;8255命令控制口
outsegequ0fffch;字形控制口
outbitequ0fffdh;字位/键扫控制口
in_keyequ0fffeh;键盘读入口
ledbufequ7eh;显示缓冲/回车前光标位置
ledbufrequ77h;回车后光标位置
blnpntequ50h;闪动指针单元
org0
ledgd:
movsp,#60h
movdptr,#cs8255
mova,#89h;命令字:
a,b输出、c输入
movx@dptr,a;8255初始化
;清显示缓冲单元
ldegd:
movblnpnt,#ledbuf
mova,#10h
movr0,#ledbufr
legs:
mov@r0,a
incr0
cjner0,#ledbuf,legs
inca;送待令符“p.”
mov@r0,a
ledt:
callxeg2;调闪动显示、键扫消抖子程序
cjnea,#10h,leg0;比较键值
leg0:
jncldegd;如果是功能键则返回闪动的“P.”
acallxeg3;送当前led光标闪动单元
sjmpledt;完成送数操作返回显示键扫入口
;刷新光标单元调正闪动指针
xeg3:
movr4,a;暂存键值
movr0,#blnpnt;光标单元
mova,@r0
movr1,a
mova,r4;恢复键值
mov@r1,a
mova,#ledbufr;回车后光标位置
cjnea,01h,xg30;r1
decr1
mova,#ledbuf;回车前光标位置
sjmpxg31
xg30:
decr1
mov
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 单片机 实验 指导书