单片机实验指导书版 附C51源码Word格式文档下载.docx
《单片机实验指导书版 附C51源码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书版 附C51源码Word格式文档下载.docx(105页珍藏版)》请在冰豆网上搜索。
该单片机实验板是一款高性能、低价格的开发板,可用于教学、毕业设计、电子竞赛等。
也是广大单片机爱好者、开发工程师首选的8051开发板。
二、产品特征
本书中所有程序均在单片机基本实验板(如图11所示)上调试通过,根据所选择的MCU不同,程序下载方式分为串行口和JTAG两种方式。
如果选用SST89E564RD2单片机,可以采用串行口IAP方式下载程序,如图11所示;
如果选用VRS51L3174单片机,则必须采用JTAG接口下载,如图12所示。
图11SST89E564RD2工作实物图
图12VRS51L3174工作实物图
为便于读者了解单片机实验板各部分功能和I/O口资源分配,在图13中给出了详细结构示意图,以下对其基本结构按照组成部分分别加以说明。
图13单片机基本实验板结构示意图
1.P1口LED指示灯
P1.0~P1.7每个I/O口上都连接一个LED发光二极管,根据图13中二极管连接方式,则当I/O口输出低电平时,发光二极管被点亮,例如,发光二极管D0、D2同时点亮,其余熄灭时,P1口上数据为0xFA。
通过该部分可以实现I/O口基本操作控制、流水灯显示实验项目。
2.简易逻辑测试电路
在输入端接出测量探针,通过发光二极管的亮、灭判断测量点电平高低,因此简易逻辑测试电路可以用作基本电平测量。
3.键盘控制
键盘控制电路中4个按键KB1~KB4分别对应I/O端口P3.2~P3.5,其中KB1和KB2用于INT0和INT1中断控制,KB3和KB4可以用于T0和T1的门控或脉冲计数输入。
通过键盘控制可以实现外部中断控制、定时器门控方式、脉冲计数实验项目。
4.复位电路
提供上电复位和按键复位两种方式。
5.时钟电路
提供单片机系统外接无源晶体振荡器,一般采用12MHz晶振。
6.通信电路
通信电路采用通用RS232和USB转串行口两种方式。
其中通用RS232连接方式采用MAX232芯片,通过普通串行口电缆和PC机连接;
USB转串行口方式用于笔记本电脑或者没有串行口的PC机,它通过PL2303HX芯片连接单片机系统和计算机的USB接口,在计算机中虚拟出一个串行口用于通信,适配器实物图如图14所示。
图14USB转串行口适配器
7.数码管显示电路
数码管显示电路中采用6个共阴极七段式数码管组成,通过单片机P0口送入所需要显示内容的段码码值,P2口的控制信号经过74HC245增强驱动后连接数码管的公共端(COM端),控制所需要选中的数码管。
利用数码管显示电路可以实现I/O口基本操作控制、电子时钟实验项目,并可以结合串行口、键盘完成综合设计实验。
8.电源系统
实验板电源可采用USB或外接DC+5V电源两种供电模式。
9.JTAG下载器
采用JTAG调试模式时需要辅助配套JTAG下载器,如图15所示。
图15JTAG下载器实物图
10.51单片机适配模块
如图16所示,51单片机适配模块适用于QFP封装通用51系列单片机,但由于铁电公司新推出的VRS51L3174单片机和普通单片机有所区别,所以在焊接该适配模块的时候需要根据所采用的MCU作一定调整(具体说明在适配模块电路板上有详细说明)。
图1651单片机适配模块实物图
11.其它
拨码开关控制:
S0:
控制P0口上拉电阻
S1:
控制P1口上拉电阻
S2:
控制蜂鸣器开关
S3:
RTS控制开关
第2章
单片机实验开发板及开发软件简介
1.1电路外观
单片机实验开发板电路布局如图21。
图21单片机实验开发板电路布局
1.2功能特点
单片机实验板集成有常用的硬件资源,并且为用户提供了多种选择,使用用户可以进行各种相关的实验。
1、通过PC机USB端口提供电源,电压为5V。
2、采用RS232通信方式,可以和计算机直接通信。
3、复位方式采用上电复位,按键复位及串行口RTS端复位。
4、8个LED,6个数码管,4个按键,1个蜂鸣器。
5、可扩展IIC接口芯片。
1.351开发软件KEILuVision2
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。
C51编译器的功能不断增强,使用户可以更加贴近CPU本身及其他的衍生产品。
C51已被完全集成到Vision3的集成开发环境中,这个集成开发环境包含:
编译器、汇编器、实时操作系统、项目管理器、调试器。
Vision3IDE可为它们提供单一而灵活的开发环境。
详见《单片机原理及C51应用》教材第八章。
第3章
指令系统实验
实验1熟悉软件开发流程
一、实验目的
1学会使用Keil-C51编程软件,并进行编译调试程序,熟悉单片机实验板;
2学会观察各个特殊功能寄存器中数据的变化;
3掌握单片机在执行过程中PSW的状态;
4学会用汇编语言编写数据传送以及加减乘除等运算类指令程序;
5学会下载程序。
二、实验设备
1微机一台
2Keil-C51编程软件
3单片机实验板
4数据下载线
三、开发工具
KeiluVision2IAP专用下载工具TurboFASTCOMUltraEdit-32
四、实验内容
(一)单片机的开发流程
1建立一个工程项目,选择芯片类型,确定选项;
2建立C源文件或汇编源文件;
3用项目管理器生成各种应用文件;
4检查并修改源文件中的错误;
5编译连接通过后进行软件模拟仿真;
6用编程器或用软件把程序载入单片机;
7硬件测试。
(二)KeiluVision2软件的学习
以下假定你在“D:
\单片机实验”目录下学习
1、建立一个工程项目选择芯片确定选项
(1)在工程菜单下选新建工程一项
(2)键入工程文件名dpjsy1然后保存
(3)CPU选择Atmel公司下的89C51,按确定键
(4)接着选晶振频率及生成HEX文件等操作:
工程目标Target1属性在目标Target1属性选项中,可以更改CPU晶振频率在输出选项中,选择生成HEX。
2、建立汇编源文件或C源文件
文件新建弹出源文件编辑窗口,进入编辑源文件窗口
在文件窗口中编辑源程序
将文件以“dpjsy1.asm”汇编文件或“dpjsy1.c”C源文件保存在“D:
\单片机实验”目录下
3、用项目管理器生成各种应用文件
点击Target1前之“+”号,出现SourceGroup1点击它,按鼠标右键会
弹出下拉菜单,出现一个编译文件窗口,选择增加文件到组SourceGroup1,向项目中添加dpjsy1.asm源文件在SourceGroup1前会出现一个“+”号,点击之弹出dpjsy1.asm文件名点击该文件名主窗口中会出现该文件编辑窗口。
编译(Project->
ReBuildalltargetfiles或点击快捷图标
)就会生成一系列的文件如OBJ文件、LST文件、HEX文件等
4检查并修改源文件中的错误
如果在源文件中存在错误在输出窗口中会出现错误提示信息,你可以在源
程序中修改后存盘,然后重新编译(Build)观察错误提示信息,直到没有错误(最好没有警告)
5编译连接通过后,进行软件模拟仿真
点击“开始/停止调试”进入软件模拟的仿真窗口,
在存储器#1窗口中观察程序存贮区中的内容时,在窗口上方地址栏中输入C:
0000H回车,即可。
在存储器#1窗口中观察数据存贮区中的内容时,在窗口上方地址栏中输入d:
观察P1口的状态:
点击“外围设备->
I/O-Ports->
Port1”
在程序中某一行设置断点的方法光标到该行按鼠标右键在弹出菜单中选“设置/删除断点”
然后按鼠标左键,在该行首出现红色方块标志,说明该行已设置断点。
6用编程器或用软件把程序载入单片
调试结束后,将生成的“工程名.HEX”文件载入芯片即可。
7硬件测试
(三)UltraEdit软件的学习
UltraEdit是一套功能强大的文本编辑器可以编辑文字HexASCII码可以取代记事本内建英文单字检查C++及VB指令突显可同时编辑多个文件而且即使开启很大的文件速度也不会慢软件附有HTMLTag颜色显示搜寻替换以及无限制的还原功能一般大家喜欢用其来修改EXE或DLL文件众多的游戏玩家喜欢用它来修改存盘文件或是可执行文件
1.十六进制编辑模式
UltraEdit具有十六进制编辑功能编辑二进制代码文件就不用退回DOS下用古老PCTOOLS了我们可以打开一个文件然后选择Edit菜单下的HexEdit文件就变为十六进制的了做了相应的修改后你可以用同样的方法将退出十六进制编辑状态
2.同时编辑多个文件
如果要同时修改很多文件可以将其全部选中然后用右键菜单中的UltraEdit-32命令可以一次全都打开打开多个文件后在工具条下面会出现文件切换条你既可以用鼠标单击相应条目来切换文件也可以按下Ctrl+F6键或Ctrl+Shift+F6键按顺序切换
3.保存为项目文件
如果我们经常要修改一些文件可以将这些文件全部打开然后保存为一个项目文件以后只要打开这个项目文件就自动打开了此项目下的所有文件现在已打开了好几个文件选择Project菜单下的NewProject/Workspace就能将这些文件保存为一个项目文件以后可以直接打开所保存的项目文件进行编辑
4.支持多种文件格式
UltraEdit支持的文件包括*.txt*.doc*.Bat*.iniC语言源程序*.c和*.cpp头文件*.h和*.hppHTML语言*.html和*.htmJAVA语言*.java和*jav这些文件类型基本覆盖了所有的常见文件类型我们还可以让UltraEdit打开指定类型的文件添加方法为单击Advanced菜单选configuration在FileAssociation选项卡中可以的添加
新的文件类型单击File菜单下的Conversions可以展开UltraEdit的文本格式转换菜单这里提供了UNIX/MAC与DOSEBCDIC与ASCIIOEM与ANS之间文本的相互转换
(四)串行口调试软件“TurboFASTCOM”的学习
熟悉软件的使用;
打开要载入的HEX程序,按“下载”键即可。
(五)汇编指令训练
将下列汇编程序编译调试,记录程序执行过程中各个寄存器的数据。
1.数据传送类指令训练:
ORG0000H
MOVA,#34H;
A=(),PSW=()
MOV30H,#52H;
30H=()
MOV01H,#45H;
01H=(),R1=()
MOV31H,R1;
31H=()
MOVPSW,#18H;
PSW=(),R1=()
MOVR1,#30H;
R1=()
MOV67H,@R1;
67H=()
MOVA,#82H
SWAPA;
A=()
MOVR0,#49H
XCHA,R0;
A=(),R0=()
MOVR1,#30H
XCHDA,@R1;
A=(),R1=(),30H=()
SJMP$
END
2.算术运算类指令训练
ORG0000H
MOVA,#85H
ADDCA,#97H;
DAA;
CLRC
MOVA,#47H
SUBBA,#67H;
INCA;
MOVA,33H
MOVB,44H
MULAB;
A=(),B=(),PSW=()
MOVA,93H
MOVB,14H
DIVAB;
END
3.逻辑运算类指令运算
MOVA,#67H
RLA;
SETBC
RLCA;
RRA;
A=()
CPLA;
MOVR2,#56
MOVA,#72H
ANLA,#66H;
ORLA,R2;
XRLA,#44;
END
4.IO端口实验
调试下面程序,用软件仿真P1口状态
STARR:
MOVA,#01H;
置初值
OUT:
MOVP1,A;
向P1口送数
ACALLDELAY;
调用延时子程序
CPLA;
(A)反向
LJMPOUT;
继续从P1口输出
DELAY:
MOVR3,#0AH;
延时子程序
DL:
MOVR2,#0FFH
NOP
DJNZR2,$
DJNZR3,DL
RET
五、思考题
1.INCA与ADDA,#01H有何不同?
2.写出复位后各寄存器的状态
实验2汇编程序设计实验一
1学会用汇编语言编写控制跳转类指令程序;
2学会使用Kei-C51编程软件,并进行调试;
3查看和分析汇编软件各个特殊功能寄存器的状态。
2单片机实验板
3数据下载线
用汇编语言设计以下程序。
1加法
(1)不带进位加法指令
编程计算34H与46H之和,送P1口,观察结果。
(2)带进位加法指令
计算34H与46H之和,送P1口,观察结果
(3)BCD码加法
计算BCD码34H与99H相加,,送P1口,观察结果
2减法
(1)计算34H与46H之差,送P1口,观察结果
(2)减一指令,送P1口,观察结果
3乘法
计算45H与34H之积,送P1,P2口,观察结果
4除法
计算45H除以04H,送P1,P2口,观察结果
5数据传送
P2FFH
R038H
A03H
1、BCD码加法如何调整结果。
2、加1和减1指令对PSW寄存器的影响如何。
实验3.汇编程序设计实验二
3学会调用子程序;
4掌握控制跳转类指令转移条件以及转移后的地址。
1.清零程序
(1)实验题目:
把2000H-20FFH的内容清零。
(2)算法:
用连续或单步方式运行程序,检查2000-20FF中执行程序前后的内容变化。
。
(3)程序框图
图31实验3程序框图
(一)
2.拆字程序
把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
用连续或单步方式运行程序,检查2000—2002H中内容变化情况。
图32实验3程序框图
(二)
3.拼字程序
把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节。
单步或用断点方式运行程序,检查2002H内容变化情况。
图33实验3程序框图(三)
4.数据区传送子程序
把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。
在R2、R3中输入源首址(例如0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如1FFFH),运行程序,检查0000-1FFFH中内容是否和2000-3FFFH中内容完全—致。
(3)程序框图
图34实验3程序框图(四)
5.数据排序实验
编写并调试一个排序子程序,其功能为用冒泡法将内容RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。
把8051中RAM50H-5AH中放入不等的数据,运行本实验程序后检查50-5AH中内容是否按从小到大排列。
图35实验3程序框图(五)
6.查找相同数个数
在2000—200FH中查出有几个字节是零,把个数放在2100H中。
在2000—200FH的几个单元中填入零,运行本程序后检查2100H中是几个单元数。
图36实验3程序框图(六)
7.数据排序
在片内数据存储区70H至7FH单元写入随机数,将此组数据从下到大排序,使之成为有序数列。
本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在
数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序。
图37实验3程序框图(七)
(4)编写程序,上机调试
1、注意执行控制转移类指令后PC寄存器的值的变化。
2、R0~R7和RAM地址的关系如何?
第4章
单片机应用实验
实验4流水灯实验
一、题目要求:
实现LED灯的循环闪亮
二、算法要求:
1.每次闪亮一个灯,
2.亮的LED从左到右移,熄灭,
3.亮的LED从右到左移,熄灭,返回2循环。
三、实验电路
图41实验四实验电路示意图
四、实验说明:
1.P1口是准双向口。
它作为输出口时与一般的双向口使用方法相同,当P1口用为输入口时,必须先对它置“1”。
若不先对它置“1”,读入的数据可能是不正确的。
2.延时子程序的延时计算问题。
对于程序
DELAY:
MOVR6,#200
DEL1:
MOVR7,#250
DEL2:
DJNZR7,DEL2
DJNZR6,DEL1
RET
由指令表可知MOV、DJNZ指令均需用两个机器周期,在采用12MHz晶振时,一个机器周期时间长度为
,所以该段程序执行时间约为:
3.有余力的同学可进一步考虑信号灯控制能否达到如霓虹灯的效果,并通过编程实现。
1、1K欧的电阻的作用是什么。
2、P1端口采用的是低电平驱动,为什么不采用高电平驱动。
实验5定时计数器实验
1了解MCS-51单片机中定时/计数器的基本结构、工作原理和工作方式;
2掌握定时/计数常数的设定;
3定时/计数器中断的应用。
2Keil-C51编程软件
四、实验原理
1.实验电路
图42实验五电路连接示意图
2.定时器/计数器模型
定时器/计数器模型如下图。
图438051单片机的定时/计数器组成
(1)对计数脉冲可选择来自单片机内部振荡器或是由单片机外部引脚输入的外部脉冲;
(2)计数器的主体是一个加1计数器,它对进入脉冲进行加1计数(其计数长度由程序
设定,但不能超过16位);
(3)计数器是否计数由控制信号确定(通过TCON寄存器中的TRx置位来启动计数);
(4)计数器溢出时(进位),置一个溢出标志TFx并触发中断系统产生中断请求,也可
以由用户查询TFx来判断溢出与否。
TFx可以由程序或是中断服务程序复位(清0)。
3.定时器方式设置
定时/计数器方式寄存器TMOD的地址为89H,其各位的意义如下图:
图44定时/计数器方式寄存器
M1、M0:
定时/针数器为工作方式选择,具体如表41所示。
表41定时/计数器的工作方式
M1
M0
工作方式
说明
方式0
13位计数器(THx高八位及TLx低五位);
1
方式1
16位计数器;
方式2
可自动重新装入初值的8位计数器;
方式3
将定时器0分为两个8位计数器。
定时器T1工作于此方式下时相当于关闭T1。
T0工作于方式3时T1可以工作于其他方式,此时常用做串行口时钟。
定时器T0有0、1、2、3共四4种工作方式,定时器T1只有0、1、2共三种工作方式。
C/
:
定时/计数选择。
1为定时,定时脉冲由内部振荡器12分频后提供;
0为计数,对由T0的引脚(P3.4)或T1的引脚(P3.5)输入的外部脉冲进行计数,计数的最高频率为内部振荡器的1/24。
GATE:
门控位。
确定控制信号由TRx位还是由
引脚控制。
4.定时器的控制
定时/计数器控制寄存器T