单片机实训教材修改.docx
- 文档编号:25180310
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:88
- 大小:205.21KB
单片机实训教材修改.docx
《单片机实训教材修改.docx》由会员分享,可在线阅读,更多相关《单片机实训教材修改.docx(88页珍藏版)》请在冰豆网上搜索。
单片机实训教材修改
第二章:
MCU核心实验
实验一:
程序阅读
一、实验目的
通过示例程序,要求学员对每条程序加注释,帮助学员熟悉指令的基本格式,养成良好的编程习惯。
实验二:
LED闪灯、花样灯实验
一、实验目的
通过LED闪灯、花样灯实验,帮助学员熟悉51单片机程序的编写方法、调试方法,了解单片机怎么工作,对一些基本指令有一定的了解,巩固51单片机编译环境的使用。
培养学员良好的编程习惯,学习程序调试方法,引导学员编程思维。
二、实验要求
1、基本实验
1.实验名称:
单灯500MS闪烁(演示)
实验要求:
以学习板为开发平台,P1.0外接的LED1实现灯的闪烁,时间间隔500MS。
考察知识点:
编译环境的使用,延时程序的熟悉,对基本指令的理解
2.实验名称:
单灯200MS闪烁
实验要求:
以学习板为开发平台,P1.0外接的LED1实现灯的闪烁,时间间隔200MS。
考察知识点:
编译环境的使用,延时程序的编写。
3.实验名称:
单灯400MS亮,600MS灭
实验要求:
以学习板为开发平台,P1.0外接的LED1实现灯的闪烁,时间实现400MS亮,600MS灭。
考察知识点:
延时程序的熟练
2、扩展实验
1.实验名称:
单灯左移(演示)
实验要求:
以学习板为开发平台,P1口外接的LED实现8个灯的“单灯
左移”,时间间隔1S。
考察知识点:
了解移位指令,相等判断循环,复习延时子程序
2.实验名称:
单灯右移
实验要求:
以学习板为开发平台,P1口外接的LED实现8个灯的“单灯右
移”,时间间隔500MS。
考察知识点:
右移的应用;相等判断循环、减一判断循环、CY判断循环的应用;延时程序的熟悉。
3、趣味实验
1、实验名称:
花样灯
实验要求:
控制P1口8个LED实现单灯左移,单灯右移,双灯霹雳灯,时间间隔1S。
实验步骤:
1)单灯左移
2)单灯右移
3)双灯霹雳灯
2、实验名称:
LED亮度控制
实验要求:
控制P1口8个LED,第一个灯最亮,最后一灯最暗,并实现
霹雳灯功能。
实验步骤:
1)单灯亮到暗,暗到亮的循环。
2)实现8个灯第一个最亮,最后一个最暗。
3)实现单灯霹雳灯。
4)结合1到3。
三、基本功能要求部分参考电路图
硬件说明:
使用杜邦线连接P1与LED端口J9,J9D1-D8脚分别接P1.0-P1.7
四、基本功能要求部分参考流程图
五、基本功能要求部分实验知识点
1.编译环境的熟悉
2.指令的基本应用和理解
3.常见语法错误的修改与程序的调试
六、基本功能要求部分实验重点和难点
1.基本指令的理解
2.程序调试的入口点
七、基本功能要求部分思路分析
1.这是我们单片机起航后的第一个实验,首先来看题目的要求:
怎么样在题目中找到出口点。
2.基本要求1实现500MS灯的闪烁,重点掌握延时程序的计算方法。
延时程序我们可以执行指令,消耗时间的方法来延时(至于使用定时器延时,将在以后的课程中介绍得到)。
3.综上所述基本要求与扩展要求的基本思路就是:
赋初值、延时、带进位左移、循环。
八、基本功能要求部分程序可能出现的问题
1.没有一个灯亮,(开发板上短路块没接到相应位置)
2.显示相反(初值赋值相反)
3.全亮(延时时间过短问题)
4.只亮一个灯(延时死循环)
5.出现先亮一个灯、再全亮、再返回(延时子程序没返回)
九、基本功能要求部分参考源程序
参考程序1:
;///////////////////////////////////////////
;程序功能:
本程序实现LED1500MS闪烁,低电平点亮
;硬件连接:
使用杜邦线连接P1与LED端口J9
;///////////////////////////////////////////////
;///////////////程序开始/////////////////////
ORG0000H;程序的起始地址为0000H
LJMPMain;程序无条件跳转到Main
ORG0030H;Main处代码的起始地址为0030H
;////////////////主程序/////////////////////////////////
Main:
CLRP1.0;点亮LED1
CALLDelay;延时500MS
SETBP1.0;关LED1
CALLDelay;延时500MS
LJMPMain
;/////////延时子程序(1s)/////////////////////////
;输入:
无
;输出:
无
;实现的功能:
延时1S
Delay:
MOVR7,#04;延时子程序
D1:
MOVR6,#0FFH
D2:
MOVR5,#0F4H
DJNZR5,$
DJNZR6,D2
DJNZR7,D1
RET;子程序返回指令
;//////////////程序结束////////////////////////
END
程序理解(示例):
本程序实现的功能:
利用延时,实现灯500MS闪烁
本程序可取的地方:
模块化的主程序,程序整体格式。
本程序有待思考的地方:
延时子程序是否可修改时间
整体理解:
程序体现的思维能力一般,但在程序格式上面,值得大家学习。
子程序的模块化,方便以后程序之间相互的调用,以及以后程序的阅读,
若同学们能按照此格式进行程序的编写,可大大缩短调试程序的时间,也可大大缩短产品的开发时间。
程序理解:
本程序实现的功能:
本程序可取的地方:
本程序有待思考的地方:
整体理解:
参考程序2:
;///////////////////////////////////////////
;程序功能:
本程序实现P1口的单灯1S左移,低电平点亮
;硬件连接:
使用杜邦线连接P1与LED端口J9
;///////////////分配单元地址////////////////////////
LedDatEQU30H
OutPutEQUP1
;////////////////程序开始////////////////////////////
ORG0000H;程序的起始地址为0000H
LJMPStart;程序无条件跳转到Start
ORG0030H;Start处代码的起始地址为0030H
;//////////////主程序//////////////////////////////////
Start:
MOVLedDat,#0FEH;分配单元地址内容初始化
Main:
MOVP1,LedDat;将地址内的内容送到显示口
CALLDelay;调用延时子程序1S
MOVA,LedDat;将地址内的内容进行左移
RLA
MOVLedDat,A;将左移后的内容再送回到LedDat
CJNEA,#0FEH,Main;比较移动后的内容是否为0FEH
LJMPStart;等于则程序重新开始
;/////////延时子程序(1s)/////////////////////////
;输入:
无
;输出:
无
;实现的功能:
延时1S
;////////////////////////////////////////////////////////
Delay:
MOVR7,#08;延时子程序
D1:
MOVR6,#0FFH
D2:
MOVR5,#0F4H
DJNZR5,$
DJNZR6,D2
DJNZR7,D1
RET;子程序返回指令
;////////////////程序结束//////////////////////////
END
程序理解:
本程序实现的功能:
本程序可取的地方:
本程序有待思考的地方:
整体理解:
备注:
十、学习总结反馈
1、今天老师讲授了哪些知识点:
2、你掌握了哪些知识点,掌握到了什么程度:
3、哪些知识点你没了解(详细描述):
4、今天看到了哪些好的程序(详细描述写得好的地方):
5、今天你完成了哪些事情,哪些没完成:
6、明天的计划,以及昨天的计划,是否完成:
7、心得体会,给自己鼓励的话:
8、给你自己今天的表现,打个分数(总分:
100分)
分数:
每天一点点,相信自己能成功!
日期:
实验二:
数码管显示实验
一、实验目的
通过数码管显示实验,帮助学员学习数码管静态显示与动态显示原理,巩固基本指令、了解基本程序架构以及查表方法的使用、散转分支的原理与基本应用。
培养学员良好的编程习惯和程序结构,学习程序调试方法,引导学员编程思维。
二、实验要求
1、基本实验
1.实验名称:
静态显示(演示)
实验要求:
以学习板为开发平台,通过数码管,使用查表的方法,实现0-9
的循环显示。
时间间隔1S。
考察知识点:
静态显示原理,查表方法的使用,码表的建立
2、实验名称:
静态显示
实验要求:
以学习板为开发平台,通过数码管,使用查表的方法,实现
0-9.9-0的循环显示。
时间间隔1S。
考察知识点:
静态显示原理,查表方法的使用,码表的建立
3、实验名称:
动态显示12(演示)
实验要求:
以学习板为开发平台,通过数码管,使用查表的方法,实现:
第一个数码管显示1,1S后第二个数码管显示2,实现十位与个位的分离,再循环显示第一个。
考察知识点:
片选的使用,十位与个位分离显示。
4、实验名称:
动态显示1
实验要求:
以学习板为开发平台,通过数码管,使用查表的方法,实现:
第一个数码管显示1,1S后第二个数码管显示2,1S后第三个数码管显示3,实现百位十位个位的分离,再循环显示第一个。
考察知识点:
片选的使用,百位、十位与个位分离显示。
5、实验名称:
动态显示4
实验要求:
在实验三的基础上,调整延时时间,让数码管显示123456。
考察知识点:
动态显示原理
2、扩展实验
实验名称:
0-991S加减计数,
实验要求:
以学习板为开发平台,实现数码管从0加到99,再从99减到0形成循环,时间间隔1S.
实验步骤:
1)0-991S加计数
2)99-01S减计数
3、趣味实验
实验名称:
城市英雄
实验要求:
以学习板为开发平台,实现显示:
城市英雄,按笔画写“日”字等花样数码管动态显示。
三、基本功能要求部分参考电路图
图2:
共阳数码管内部连接图
图3:
共阴数码管内部连接图
硬件说明:
将J3接P0口,J3的8-1脚分别接P0.0-P0.7;;P2.2接J2B端子,表示段码锁存;P2.3接J2A端子,表示位码锁存
独立共阳数码管J6接P1口
四、基本功能要求部分参考流程图
五、基本功能要求部分实验知识点
1.静态显示原理
2.动态显示原理
3.查表的使用方法
4.散转分支的使用方法
5.常见语法错误的修改与程序的调试
六、基本功能要求部分实验重点和难点
1.动态显示的原理以及应用与调试
2.散转分支的使用方法与原理
3.程序调试的入口点
4.怎么写程序以及怎么样规划程序架构
七、基本功能要求部分思路分析
入口点:
实验基本要求必须使用查表,那你必须具备查表的知识。
基本要求1
要求中提到了显示0-9,时间间隔1S,需要了解延时程序怎么写(基础知识点2:
延时)显示的时候,要求显示0或者其他数字(基础知识点3:
数码管原理)首先显示0,隔1S后,显示1,那么我们可以把0-9放到表中,通过查表递增的方法,显示出0-9,但同时要注意他只显示0-9,共10个数。
基本要求3
要求第一个数码管显示1,第二个显示2……基本要求1要求的是在第一个数码管上显示0-9,而这里是显示2个数码管,相对来说只是片选的不同,在查表加一的同时,实现片选下一位,但同时要注意他只显示2个数码管。
基本要求4
要求第一个数码管显示1,第二个数码管显示2,第三个数码管显示3。
基本要求3是实现十位与个位的分离,而这里是实现百位、十位、个位的分离,与基本要求3原理一样,只是增加了一位片选。
基本要求5
这是一个最简单的动态显示,它利用的是人的视觉差,(就像一个灯泡闪烁频率过大的时候,我们会感觉它一直在亮着)(基础知识点:
动态显示原理)
八、基本功能要求部分程序可能出现的问题
以上三个实验,问题出现次数最多的是动态显示,最常见的问题有:
1、数码管闪烁,让人感觉很全部在显示“8”(延时的问题)
2、显示乱码,数码管开下一位片选的时候,没清数码管,会产生干扰,一些基本的语法错误
九、基本功能要求部分参考源程序
参考程序1:
;///////////////////////////////////////////
;程序功能:
本程序利用查表的方法实现P1口外接数码管显示0-9
;硬件连接:
独立共阳数码管J6接P1口
;/////////开始自定义及初始化////////////////
OutPutEQUP1
CountEQU10
DatEQU30H
ORG0000H
LJMPStart
ORG0030H
Start:
CLRA
MOVDat,#0
MOVR4,#Count
Main:
CALLDisplay;显示
CALLDispose;处理
CALLDelay
DJNZR4,Main
LJMPStart
;///////////////显示子程序///////////////////
;输入:
"Dat"
;输出:
"P1口"
;实现的功能:
把Dat的数输出到P1口显示
Display:
MOVA,Dat
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVOutPut,A
RET
;///////////////处理子程序///////////////////
;输入:
"Dat"
;输出:
"Dat"
;实现的功能:
将Dat的内容加1
;//////////////////////////////////////////////////
DisPose:
MOVA,Dat
INCA
MOVDat,A
RET
;/////////延时子程序(1s)/////////////////////////
;输入:
无
;输出:
无
;实现的功能:
延时1S
;//////////////////////////////////////////////
Delay:
MOVR5,#08H
D1:
MOVR6,#0FFH
D2:
MOVR7,#0F4H
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
;////////表的制作////////////////////////
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
;/////////结束///////////////////////////
END
程序理解:
本程序实现的功能:
本程序可取的地方:
本程序有待思考的地方:
整体理解:
参考程序2:
;///////////////////////////////////////////
;程序功能:
本程序利用散转分支直接送数据实现P1口静态显示0-9
;硬件连接:
独立共阳数码管J6接P1口
;///////////////////////////////////////
OutPutEQUP1
CountEQU10
DatEQU30H
ORG0000H
LJMPStart
ORG0030H
Start:
CLRA
MOVDat,#0
MOVR4,#Count
Main:
CALLTurn_Branch;散转分支
CALLDispose
CALLDelay
DJNZR4,Main
LJMPStart
;///////////////散转分支子程序///////////////////
;输入:
"A"
;输出:
"SUB"
;根据A的值散转到SUB位置,若A为0,散转到SUB0
;/////////////////////////////////////////////////////
Turn_Branch:
CLRC
RLCA
MOVDPTR,#TAB
JMP@A+DPTR
TAB:
AJMPSUB0
AJMPSUB1
AJMPSUB2
AJMPSUB3
AJMPSUB4
AJMPSUB5
AJMPSUB6
AJMPSUB7
AJMPSUB8
AJMPSUB9
;///////////////显示子程序///////////////////
;输入:
"A"
;输出:
"SUB"
;根据A的值散转到SUB位置,并显示具体值
;/////////////////////////////////////////////
SUB0:
MOVOutPut,#0C0H;P1直接显示0
RET
SUB1:
MOVOutPut,#0F9H;P1直接显示1
RET
SUB2:
MOVOutPut,#0A4H;P1直接显示2
RET
SUB3:
MOVOutPut,#0B0H;P1直接显示3
RET
SUB4:
MOVOutPut,#99H;P1直接显示4
RET
SUB5:
MOVOutPut,#92H;P1直接显示5
RET
SUB6:
MOVOutPut,#82H;P1直接显示6
RET
SUB7:
MOVOutPut,#0F8H;P1直接显示7
RET
SUB8:
MOVOutPut,#80H;P1直接显示8
RET
SUB9:
MOVOutPut,#90H;P1直接显示9
RET
;///////////////处理子程序///////////////////
;输入:
"Dat"
;输出:
"Dat"
;实现的功能:
将Dat的内容加1
;////////////////////////////////////////////
Dispose:
MOVA,Dat
INCA
MOVDat,A
RET
;/////////延时子程序(1S)/////////////////////////
;输入:
无
;输出:
无
;实现的功能:
延时1S
;////////////////////////////////////////////////////
Delay:
MOVR5,#08H
D1:
MOVR6,#0FFH
D2:
MOVR7,#0F4H
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
RET
;/////////结束///////////////////////////
END
程序理解:
本程序实现的功能:
本程序可取的地方:
本程序有待思考的地方:
整体理解:
参考程序3:
;///////////////////////////////////////////
;程序功能:
本程序利用散转分支与查表的方法实现P1口显示0-9
;硬件连接:
独立共阳数码管J6接P1口
;/////////开始自定义及初始化////////////////
OutPutEQUP1
CountEQU10
DatEQU30H
ORG0000H
LJMPStart
ORG0030H
Start:
CLRA
MOVDat,#0
MOVR4,#Count
Main:
CALLTurn_Branch;散转分支
CALLDispose;处理
CALLDelay
DJNZR4,Main
LJMPStart
;///////////////散转分支子程序///////////////////
;输入:
"A"
;输出:
"SUB"
;根据A的值散转到SUB位置,若A为0,散转到SUB0
;////////////////////////////////////////////////////
Turn_Branch:
RLA
MOVDPTR,#TAB
JMP@A+DPTR
TAB:
AJMPSUB0
AJMPSUB1
AJMPSUB2
AJMPSUB3
AJMPSUB4
AJMPSUB5
AJMPSUB6
AJMPSUB7
AJMPSUB8
AJMPSUB9
;///////////////显示子程序///////////////////
;输入:
"A"
;输出:
"SUB"
;根据A的值散转到SUB位置,并显示具体值
;///////////////////////////////////////////
SUB0:
CALLDisplay
RET
SUB1:
CALLDisplay
RET
SUB2:
CALLDisplay
RET
SUB3:
CALLDisplay
RET
SUB4:
CALLDisplay
RET
SUB5:
CALLDisplay
RET
SUB6:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 教材 修改
![提示](https://static.bdocx.com/images/bang_tan.gif)