单片机实验指导书伟福.docx
《单片机实验指导书伟福.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书伟福.docx(68页珍藏版)》请在冰豆网上搜索。
![单片机实验指导书伟福.docx](https://file1.bdocx.com/fileroot1/2023-1/8/e9940211-801f-48b9-b57e-edb492ecd67d/e9940211-801f-48b9-b57e-edb492ecd67d1.gif)
单片机实验指导书伟福
前言
《单片机原理及应用》是电子、自动化控制等相关专业的一门专业必修课,随着交通技术的不断发展,单片机在交通控制、信息等方面的应用也越来越广泛。
由于单片机实践性强,理论与实际结合紧密,传统的教学方法不能较好的适应教学的需要。
为提高教学效果,我们从最简单的实际问题出发,设计了一些由易到难,由纯软件到要求硬、软件结合,综合性较强的题目。
每个题目的内容分为两个部分:
基础部分:
给出源程序,要求学生在阅读分析理解的基础上,画出程序流程图,完成题目内容(包括编辑源程序、编译仿真调试、实际运行通过);提高部分:
在充分掌握第1部分内容的基础上,独立编程完成功能要求更高的课题程序。
要求学生课外理解、编写提高部分的程序,上机调试通过。
我们采用提出任务——学习相关知识——解决实际问题——总结提高这样一个教学过程,使学生在解决实际问题的过程中学习提高,培养较强的实践能力。
这种从实践——理论——再回到实际的探索性的教学方法,能有效的提高学生的学习兴趣,符合人们的客观认知规律。
我们通过四章的内容来完成单片机实验课程:
第一章介绍伟福硬件仿真器及其仿真软件,即程序开发环境
第二章介绍实验开发板的功能、电路原理
第三章程序设计从基础程序设计到应用实例设计,其中包括12个实际课题
第一节开发软件的使用
第二节基础程序设计
一、算术运算题
1.加、减法基本运算程序
2.乘、除法基本程序
3.二-十进制调整基本程序
二、控制转移和子程序调用
第三节应用实例设计
一、简单单片机应用实例设计
二、按钮控制发光二极管
三、定时器实现流水灯控制
四、MCS-51存储器系统设计
五、MCS-51I/O接口设计与应用
六、串口通讯
七、参考课题
第四章附录部分
附录一PC与MCU串行通信的应用设计方法
附录二 KEILC51编译器简介
附录三串行接口LED数码管及键盘管理器件ZLG7289A的原理与应用
第一章 仿真器及仿真软件简介
第一节伟福硬件仿真器简介
伟福仿真器采用主机+POD(仿真头)组合的形式构成,通过更换POD,可以对各种CPU进行仿真。
对于不同的应用场合,用户可选择不同的CPU,而不需要更换主机,伟福仿真软件WINDOWS版本支持本公司多种仿真器。
支持多类CPU仿真。
仿真器则采用主机+POD组合,通过更换不同的POD,可对各种不同类型的单片机进行仿真。
为用户提供了一种灵活的多CPU仿真系统。
其主要特点表现在以下几个方面:
1.双平台
DOS版本和WINDOWS版本。
其中WINDOWS版本功能强大。
中、英文界面可任选,用户源程序的大小不再有任何限制,支持ASM,C,PLM语言混合编程,具有项目管理功能,为用户的资源共享,课题重组提供强有力的手段。
支持点屏显示,用鼠标左键点一下源程序中的某一变量,即可显示该变量的数值。
有丰富的窗口显示方式,多方位,动态地显示仿真的各种过程,使用极为便利。
本操作系统一经推出,立即受到广大用户的喜爱。
2.双工作模式
.软件模拟仿真(不要仿真器也能模拟仿真)。
.硬件仿真。
双CPU结构,100%不占用户资源。
全空间硬件断点,不受任何条件限制,支持地址、数据、外部信号、事件断点、支持实时断点计数、软件运行时间统计。
3.双集成环境
编辑、编译、下载、调试全部集中在一个环境下。
多种仿真器,多类CPU仿真全部集成在一个环境下。
可仿真51系列,196系列,PIC系列,飞利蒲公司的552.LPC764.DALLAS320,华邦438等51增强型CPU。
为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。
他们由不同的厂家开发,相互不兼容,使用不同的界面。
学习使用都很吃力。
伟福WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build和调试工具并提供一个与第三方编译器的接口。
第二节仿真头介绍
1.PODH8X5X仿真头
图1-1PODH8X5X仿真头示意图
图1-2仿真器与PODH8X5X仿真头连接图
PODH8X5X运用PHILIPS授权的HOOKS技术,用PHILIPS芯片作为仿真芯片,来仿真各类与MCS51兼容的MCU,仿真头的原有的P87C52可仿真通用的8X5X系列芯片,可将P87C52换成PHILIPS的P89C51Rx+或P89C51Rx2来仿真相应的MCU,也可以换成PHILIPS的P89C66x用于仿真PHILIPS的P89C66x系列MCU。
因为P89C51RD2和P89C66X内部带有扩展RAM,可以借用P89C51RD2或P89C66x来仿真带扩展RAM的CPU,例如Winbond的78E58B、78E516。
PODH8X5X可以从外部引入仿真电源,来仿真2.7V~5.5V用户电压,当用户需要仿真低电压时,将“电源选择跳线”接成“外部电源接入”方式即可。
仿真头的低电压由用户板提供。
注意:
当用户想仿真低电压时,仿真头上的仿真CPU必须能工作于低电压状态。
2.仿真器外形示意图
仿真器外形如图1-3所示。
仿真器使用9针串行口,与PC机用两头为孔的串行电缆连接。
对于一些只有USB口而没有串口的计算机,可以使用USB转串口电缆将USB转成串行口。
图1-3 仿真器外形示意图
第三节仿真软件的安装
1.将光盘放入光驱,光盘会自动运行,出现安装提示。
2.选择“安装WINDOWS”软件。
3.按照安装程序的提示,输入相应内容。
4.继续安装,直至结束。
第四节快速入门
1.建立新程序
选择菜单[文件|新建文件]功能,出现一个文件名为NONAME1的源程序窗口,在此窗口中输入以下程序。
见图1-4。
ORG0H
MOVA,#0H
MOVP1,#0H
Loop:
INCP1
CALLDelay
SJMPLoop
Delay:
MOVR2,#3H
MOVR1,#0H
MOVR2,#0H
DLP:
DJNZR0,DLP
DJNZR1,DLP
DJNZR2,DLP
RET
END
输出程序后的窗口如图1-4,现在要做的是将此文件存盘。
2.保存程序
选择菜单[文件|保存文件]或[文件|另存为]功能给出
文件所要保存的位置,例如:
C:
\WAVE6000\SAMPLES文件夹,再给出文件名MY1.ASM。
保存文件。
文件保存后,程序窗口上文件名变成了:
C:
\WAVE6000\SAMPLES\MY1.ASM。
3.建立新的项目
选择菜单[文件|新建项目]功能新建项目会自动分三步走。
A)加入模块文件。
如图1-5,在加入模块文件的对话框中选择刚才保存的文件MY1.ASM,按打开键。
如果你是多
模块项目,可以同时选择多个文件再打开。
B)加入包含文件。
如图1-6,在加入包含文件对话框中,选择所要加入的包含文件(可多选)。
如果没有包含文件,按取消键。
C)保存项目。
如图1-7,在保存项目对话框中输入项目名称。
MY1无须加后缀。
软件会自动将后缀设成“.PRJ”。
按保存键将项目存在与你的源程序相同的文件夹下。
项目保存好后,如果项目是打开的,可以看到项目中的“模块文件”已有一个模块“MY1.ASM”,如果项目窗口没有打开,可以选择菜单[窗口|项目窗口]功能来打开。
可以通过仿真器设置快捷键或双击项目窗口第一行选择仿真器和要仿真的单片机。
如图1-8所示。
4.设置项目
选择菜单[设置|仿真器设置]功能或按“仿真器设置”快捷图标或双击项目窗口的第一行来打开“仿真器设置”对话框。
见图1-9。
在“仿真器”栏中,选择仿真器类型和配置的仿真头以及所要仿真的单片机。
在“语言”栏中,“编译器选择”根据本例的程序选择为“伟福汇编器”。
如果你的程序是C语言或INTEL格式的汇编语言,可根据你安装的Keil编译器版本选择“KeilC(V4或更低)”还是“KeilC(V5或更高)”。
按“好”键确定。
当仿真器设置好后,可再次保存项目。
图1-9
5.编译你的程序
选择菜单[项目|编译]功能或按编译快捷图标或F9键,编译你的项目。
见图1-10。
在编译过程中,如果有错可以在信息窗口中显示出来,双击错误信息,可以在源程序中定位所在行。
纠正错误后,再次编译直到没有错误。
在编译之前,软件会自动将项目和程序存盘。
在编译没有错误后,就可调试程序了,首先我们来单步跟踪调试程序。
图1-10
6.单步调试程序
选择[执行|跟踪]功能或按跟踪快捷图标或按F7键进行单步跟踪调试程序单步跟踪就一条指令一条指令地执行程序,若有子程序调用,也会跟踪到子程序中去。
你可以观察程序每步执行的结果,“=>”所指的就是下次将要执行的程序指令。
由于条件编译或高级语言优化的原因,不是所有的源程序都能产生机器指令。
源程序窗口最左边的“o”代表此行为有效程序,此行产生了可以指行的机器指令。
见图1-11。
程序单步跟踪到“Delay”延时子程序中,在程序行的“R0”符号上单击就可以观察“R0”的值,观察一下“R0”的值,可以看到“R0”在逐渐减少。
因为当前指令要执行256次才到下一步,整个延时子程序要单步执行3x256x256次才能完成,单步执行太慢了。
没关系,我们有“执行到光标处”的功能,将光标移到程序想要暂停的地方,本例中为延时子程序返回后的“SJMPLoop”行。
选择菜单[执行|执行到光标处]功能或F4键或弹出菜单的“执行到光标处”功能。
程序全速执行到光标所在行。
如果想下次不想单步调试“Delay”延时子程序里的内容,可以按F8键单步执行就可以全速执行子程序调用,而不会一步一步地跟踪子程序。
F8F8F8F8F8F8F8......是不是太烦了?
那就移动光标到暂停行再按F4,如果程序太长,每次这样移来移去,是不是也太累?
那就设置断点吧。
如图1-12。
将光标移到源程序窗口的左边灰色区,光标变成“手指圈”,单击左键设置断点,也可以用弹出菜单的“设置/取消断点”功能或用Ctrl+F8组合键设置断点。
如果断点有效图标为“红圆绿勾”,无效断点的图标为“红圆黄叉”。
断点设置好后,就可以用全速执行的功能,全速执行程序,当程序执行到断点时,会暂停下来,这时你可以观察程序中各变量的值,及各端口的状态,判断程序是否正确。
见图1-13,1-14。
本例是将P1端口加一,然后延时,再重复,这样若P1就是一个二进制加法器,若P1口接发光二极管,就会闪亮。
不过到此为止,我们都是用软件模拟方式来调试程序。
如果想要用仿真器硬件仿真。
就要连接上仿真器。
7.连接硬件仿真
按照说明书,将仿真器通过串行电缆连接计算机上,将仿真头接到仿真器,检查接线是否有误,确信没有接错后,接上电源,打开仿真器的电源开关。
图1-15
参见第4步,设置项目,在“仿真器”和“通信设置”栏的下方有“使用伟福软件模拟器”的选择项。
将其前面框内的勾去掉。
在通信设置中选择正确的串行口。
按“好”确认。
如果仿真器和仿真头设置正确,并且硬件连接没有错误,就会出现如图的“硬件仿真”的对话框,并显示仿真器、仿真头的型号及仿真器的序列号。
表明仿真器初始化正确。
如果仿真器初始化过程中有错,软件就会再次出现仿真器设置对话框,这时你应检查仿真器、仿真器的选择是否有错,硬件接线是否有错,检查纠正错误后,再次确认。
直至显示如图1-16所示的硬件仿真确认对话框。
我们现在用硬件仿真方式来调试这个程序,因为程序是对P1端口加1操作,我们可以打开外设的端口来观察P1口。
如图1-17所示。
方法是选择主菜单[外设|端口]功能打开端口窗口。
重新编译程序,全速执行程序,因为有断点,程序会暂停在断点处。
我们观察端口窗口的P1口值,会发生变化。
再次全速执行,观察P1口的变化。
同时也可以用电压表去测量仿真头的P1管脚,可以看到P1管脚也随之发生变化。
点击端口窗口的P1口的白框来改变P1口的值,再次运行程序,P1从改变后的值加1。
(P1口的值也可以从SFR窗口观察、修改)如果用户已经有写好的程序,可以从第3步“新建项目”开始,将你的程序加入项目,就能以项目方式仿真了。
如果用户不想以项目方式仿真,则要先关闭项目,再打开你的程序,并且要正确设置仿真器、仿真头,然后再编译、调试程序。
第五节在伟福中安装第三方编译器
在伟福中编译KEILC51编的程序时,需要安装第三方编译器即KEILC51的编译软件。
方法如下:
先将C51编译软件安装在C目录下,然后,将“仿真器设置”按图1-18进行设置即可。
图1-18
第二章 单片机实验开发板简介
单片机实验开发板是专为单片机初学者设计的一种学习及开发板,可完成多个与实际结合的单片机学习与开发实例,帮助单片机初学者快速入门单片机技术。
第一节 功能模块介绍
单片机实验开发板由以下电路部分组成:
单片机最小系统电路,发光二极管显示电路,共阴极数码管显示电路,按键输入电路,7289输入输出扫描驱动电路,四路光电隔离电路,存储器扩展电路,A/D转换芯片电路,D/A转换电路,串行通讯接口电路,并行接口电路,门电路阵列。
其功能框图如图2-1所示。
图2-1 单片机实验开发板功能框图
第二节 实验开发板的功能
一、实验开发板的特点
该实验开发板上设置了《单片机原理与应用》课程所涉及的所有硬件器件,利用它既可以进行最小系统、流水灯、基本输入输出、中断、定时、计数器等基础单片机课题的设计,也可进行ZLG7289接口芯片、实时时钟电路、与PC机进行串行通讯等流行的有一定综合性的单片机应用学习和开发设计。
该实验板采用地址全开放方式,即所有芯片的片选及读、写线均需用户连接,地址由用户定义,接口芯片采用全开放方式,完全由用户用接插线来完成电路的组建。
这种方式加强了对硬件知识的理解和掌握。
二、实验开发板可完成的部分实验
1.单灯闪烁实验
实验目的:
通过该实验学习I/O口的基本知识,掌握P1口单个引脚作为输出口使用的方法,学习软件延时的编程方法。
2.流水灯实验
实验目的:
通过该实验进一步学习I/O口的知识,掌握P1口作为输出口使用的方法,学习移位指令的用法。
3.按钮控制灯的实验
实验目的:
通过该实验学习单片机引脚作为输入的使用方法,掌握51类单片机引脚“准”双向I/O口的特性。
4.定时器控制的流水灯实验
实验目的:
学习定时/计数器的结构,掌握定时器的编程使用方法。
5.计数器程序
实验目的:
学习51单片机计数器功能的应用,掌握计数方式编程的方法。
6.用中断方式实现定时器控制的流水灯实验
实验目的:
学习中断的概念,了解使用中断编程的一般方法,掌握采用中断方式进行定时器编程的方法。
7.外中断实验
实验目的:
学习外部中断的概念和编程方法。
8.串口通讯实验
实验目的:
学习串行通讯的有关原理,51单片机串行口的结构、串行口编程的方法。
9.键盘实验
实验目的:
学习键盘知识,了解键盘编程的方法,掌握一种编程方法。
10.LED接口实验
实验目的:
学习LED显示接口技术,学习各种显示程序编制的方法。
利用实验板上提供的其他硬件资源,同学们可以根据需要开发出更多的其它题目,在此不一一列出。
第三节 电路原理
电路原理图如图2-2-1、图2-2-2所示。
图2-2-1
图2-2-2
实验板插针座与器件引脚对应表
J2:
针座序号
1
2
3
4
5
6
7
8
8031P1口
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
J3:
针座序号
1
2
3
4
5
6
7
8031P3口
P3.3
P3.2
P3.5
P3.4
P3.7
P3.6
PSEN
J4:
针座序号
1
2
3
4
5
6
7
8
8031P2口
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
J5:
针座序号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
引脚名称
EOC
ALE
OE
START
CS
CS
WR1
WR
RD
G
2G
OE
WE
CE
芯片名称
0809
8255
0832
8255
373
244
6264
J6:
针座序号
1
2
3
4
5
6
7
8
74LS244
1A1
1A2
1A3
1A4
2A1
2A2
2A3
2A4
J7:
针座序号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
引脚名称
C7
C6
C5
C4
C3
C2
C1
C0
B7
B6
B5
B4
B3
B2
B1
B0
芯片名称
8255PC口
8255PB口
J7:
针座序号
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
引脚名称
A7
A6
A5
A4
A3
A2
A1
A0
8Q
7Q
6Q
5Q
4Q
3Q
2Q
1Q
芯片名称
8255PA口
74LS373
J8:
针座序号
1
2
LM741
OUT
G
J9:
针座序号
1
2
3
4
5
6
7
8
8031P0口
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
J10:
针座序号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
引脚名称
H
G
F
E
D
C
B
A
6
5
4
3
2
1
器件名称
数码管-----段
数码管----位
J11:
针座序号
1
2
3
4
5
6
U12引脚
1
2
3
4
5
6
J12:
针座序号
1
2
3
4
5
6
U12引脚
13
12
11
10
9
8
J13:
针座序号
1
2
3
4
5
6
U13引脚
1
2
3
4
5
6
J14:
针座序号
1
2
3
4
5
6
U13引脚
13
12
11
10
9
8
J15:
针座序号
1
2
3
4
5
6
U14引脚
1
2
3
4
5
6
J16:
针座序号
1
2
3
4
5
6
U14引脚
13
12
11
10
9
8
J17:
针座序号
1
2
3
4
5
6
U15引脚
1
2
3
4
5
6
J18:
针座序号
1
2
3
4
5
6
U15引脚
13
12
11
10
9
8
J19:
针座序号
1
2
3
4
5
6
7
8
器件引脚
25
24
23
22
21
20
19
18
器件名称
ZLGDS-----位控
J20:
针座序号
1
2
3
4
5
6
7
8
器件引脚
17
16
15
14
13
12
11
10
器件名称
ZLGDS-----段控
J21:
针座序号
1
2
3
器件引脚
7
8
9
器件名称
ZLG----计
J22:
针座序号
1
2
3
4
5
6
7
8
器件引脚
H
G
F
E
D
C
B
A
器件名称
数码管段
J23:
针座序号
1
2
3
4
5
6
器件引脚
低
高
器件名称
数码管位
J24:
针座序号
1
2
3
4
5
器件引脚
1
2
3
4
G
器件名称
光耦输入
J25:
针座序号
1
2
3
4
器件引脚
1
2
3
4
器件名称
光耦输出
J26:
针座序号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
器件序号
8
7
6
5
4
3
2
1
8
7
6
5
4
3
2
1
器件名称
发光二极管
键盘
J27:
针座序号
1
2
3
4
5
6
7
引脚名称
IN0
IN1
IN2
IN3
IN4
IN5
IN6
器件名称
ADC0809
1、发光二极管显示电路模块
实验板上的8个发光二极管正极已接到电源正端,负极连到了板上插座J26的8个插孔,这样,这些发光二极管亮的条件就是对应引脚为低电平,即如果将P1口某引脚与任一插孔相连,并输出为0,则相应的灯亮,如果输出为1,则相应的灯灭。
例如:
将P1口与J26上二极管对应的插孔相连,并输入
MOV P1,#0FH
该行程序将使发光二极管D1-D4熄灭,而D5-D8点亮。
2、数码管接口模块
实验板上的Q1~Q14构成了6位LED数码管驱动电路,这里LED数码管采用了共阴型的,共阴型数码管的笔段(即对应abcdefgh7段)引脚是二极管的正极,所有二极管的负极连在一起,构成公共端,即字位端。
对于这种数码管的驱动,要求在字形端提供电流,为此,使用了PNP型三极管作为字形端的驱动,共使用8只三极管Q7~Q14。
所有三极管的发射极连在一起,接到正电源端,它们的基极则分别连到插座J10的1~8端,这样,当J10的1~8中某位是低电平时,三极管导通,电源给所有位的相应字段数码管供电;而哪位数码管点亮,