单片机试验讲义改Word下载.docx
《单片机试验讲义改Word下载.docx》由会员分享,可在线阅读,更多相关《单片机试验讲义改Word下载.docx(40页珍藏版)》请在冰豆网上搜索。
RAM用来存放运算的中间结果和采集的数据等。
51系列单片机P0、P2口作为16位地址总线,可在片外分别扩展64K×
8位EPROM和64K×
8位RAM。
共计2×
64K存储器。
从逻辑的角度看,存储器地址空间可分为三类:
1片内外统一编址0000H~FFFFH的64K字节的ROM空间,采用16位地址。
2片外64K字节RAM地址空间。
地址也从0000H~FFFFH,采用16位地址。
3片内256字节RAM地址空间,采用8位地址。
这256字节被分成两个区域:
00H~7FH地址是真正的RAM区,CPU可以读、写各种数据。
而80H~FFH地址是专门用作特殊功能寄存器的区域,共安排了21个8位特殊功能寄存器SFR。
MCS-51系列单片机存储器结构如图1-2所示。
由图1-2可见,上述三个存储器地址空间有重叠区,为区别这三个不同的逻辑空间,MCS-51的指令系统设计了三种不同的数据传送类指令操作码加以区别:
(1)CPU访问片内外64K地址空间ROM用MOVC指令;
(2)CPU访问片外64K地址空间RAM用MOVX指令;
(3)CPU访问片内RAM的256个字节地址空间用MOV指令。
3.定时器/计数器
51系列弹片机有两个定时器/计数器,即定时器/计数器0和1。
它们既可以编程作为定时器,也可以编程作为计数器使用。
若计数计的是内部晶振的驱动时钟,它就是定时器;
若计数计的是输入引脚的脉冲信号,它就是计数器。
定时器和计数器都是加1计数的,定时器实际上也是以计数方式工作,只是它对固定频率的脉冲计数,由于脉冲周期固定,由计数值可以计算出时间。
用于控制和确定各定时器/计数器的功能与操作模式的寄存器有:
模式控制寄存器TMOD;
控制寄存器TCON。
4.中断
中断是指当计算机执行正常程序时,由于系统中出现某些需要紧急处理的情况或特殊请求时,计算机打断当前正在运行的程序,转而对这些紧急情况进行处理,处理完毕后,计算机返回原来被打断的运行程序继续执行。
终端控制方式使CPU在平时可以利用充分的时间去处理主要事件,而当外界有特殊情况需要处理时CPU也不会错过,以次提高工作效率。
在编制实时性要求较高的程序时,采用中断方式是非常必要的。
51系列单片机有5个中断源,可分为2个优先级,每个中断源的优先级都是可编程的。
51系列单片机的5个中断源是:
★外部中断请求0,由
输入;
★外部中断请求1,由
★片内定时器/计数器0溢出中断请求;
★片内定时器/计数器1溢出中断请求;
★片内串行口发送/接受中断请求。
控制中断的寄存器主要有:
中断允许寄存器IE;
中断优先级寄存器IP。
关于这两个寄存器的用法请同学们参考有关的书籍
1.3MCS-51系列单片机指令系统
MCS-51系列单片机指令系统共有111条指令,其中单字节指令49条,双字节指令45条,三字节指令17条。
从指令执行的时间看,单机器周期(12个震荡周期)指令64条,双机器周期(24个震荡周期)指令45条,只有乘、除2条指令的执行时间为4个机器周期(48个震荡周期)。
若晶振为12MHZ,则指令功能的执行时间分别为1μs,2μs,4μs。
MCS-51的硬件结构中有一个布尔处理机,指令系统中相应地设计了一个处理布尔变量的指令子集。
在这一指令子集中,有丰富的位操作指令,这些指令与位操作部件结合在一起,构成了一个比较完整的位处理器,即布尔处理机。
有了位处理器就可以把大量的硬件组合逻辑用软件来代替,方便地用于各种逻辑控制。
具体的指令助记符及含义请同学们参考有关的书籍。
1.4MCS-51系列单片机的引脚及功能
在MCS-51系列单片机中,各种型号芯片的引脚功能是互相兼容的,其封装形式一般是采用双列直插式的,也有采用方形的封装方式的。
图1-3是双列直插式芯片的引脚图。
这40条引脚按功能分可分成三大部分:
1.电源及时钟
VSS(20)—电源地线,工作时接地;
VCC(40)—电源,外接+5V;
XTAL1(19)和XTAL2(18)—外接晶体引脚。
在使用单片机内部振荡电路时,用来外接石英晶振和微调电容,在使用外部脉冲时,用来输入时钟脉冲。
2.控制或与其它电源复用引脚
RST/VPD(9)—此脚有两个功能:
第一功能是上电复位信号输入线。
当RST引脚上出现两个机器周期的高电平时将使单片机复位。
第二功能是备用电源输入端。
当主电源发生故障时,VPD将为RAM提供备用电源,保证RAM信息不丢。
(29)—外部程序存储器ROM的读选通信号。
在CPU访问外部程序存储器时,
=0的有效信号自动生成。
ALE/
(30)—此引脚有两个功能:
第一功能是外部地址低8位锁存有效信号输出端。
在CPU访问外部存储器时,ALE的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为震荡频率的1/6。
因此,它可作为对外输出的脉冲,或用于定时的目的。
第二功能
是对8751片内EPROM编程时的编程脉冲输入端。
/VPP(31)—此引脚也是双功能脚。
第一功能是片外ROM选择信号输入端。
当
=0时,CPU从片外ROM读取指令;
=1时,CPU从片内ROM读取指令。
第二功能VPP是对片内有EPROM的8751来说,此引脚接21V的编程电源VPP。
3.I/O口线
P0口—8位三态双向口。
在单片机外扩存储器或I/O接口时,作为地址总线低8位A7~A0和数据总线D7~D0。
P0口能驱动8个TTL门电路,但在驱动MOS电路时若作为地址/数据总线使用可以直接驱动而不必外加上拉电阻。
对8031单片机来讲,P0口只能做地址/数据复用总线,而对于有内部ROM的单片机,P0口可作通用I/O端口,此时在驱动NMOS电路时要外接上拉电阻。
P1口—8位准双向并行I/O口。
P1口能驱动4个TTL门电路。
并且不需外加电阻就能驱动MOS电路。
P2口—8位准双向口。
作为地址总线高8位A15~A8,与P0一起形成16位地址总线。
驱动能力同P1、P2口也能做通用I/O端口使用。
P3口—8位准双向口。
P3口是一个多用途端口,除可作通用I/O端口外,它的每条引脚还有第二功能,这些功能见表1-1。
其驱动能力同P1。
P3口的第二功能表1-1
口线
第二功能标记
第二功能注释
P3.0
RXD
串行数据输入端
P3.1
TXD
串行数据输出端
P3.2
外部中断0请求输入端
P3.3
外部中断1请求输入端
P3.4
T0
定时器/计数器0的外部输入端
P3.5
T1
定时器/计数器1的外部输入端
P3.6
外部数据存储器写选通端
P3.7
外部数据存储器读选通端
第二章伟福仿真器简介
2.1功能简介
伟福仿真器是南京伟福实业有限公司推出的单片机开发装置,所谓单片机开发装置是指能够承担单片机开发(调试、测试、软件编写等)工作的仪器或系统。
伟福仿真器的主要功能如下:
1.主机+仿真头组合
通过更换不同的仿真头可对不同类型的单片机进行仿真。
2.双平台
仿真器支持DOS和WINDOWS版本。
其中WINDOWS版本功能强大,支持ASM、C、PLM语言混合编程;
有项目管理功能,为用户的资源共享、课题重组提供方便;
有丰富的窗口显示方式,多方位、动态地显示仿真的各种过程。
3.双工作模式
可工作于软件模拟仿真(不要仿真器也能模拟仿真)和硬件仿真两种状态下。
4.双CPU结构,100%不占用户资源。
全空间硬件断点,不受任何条件限制。
5.双集成环境
编辑、编译、下载、调试全集中在一个环境下,统一的界面,包含一个项目管理器、一个编辑器,为编译和调试提供了方便。
2.2操作步骤
如上所述,伟福仿真软件可对文件进行编辑、编译、仿真等,在编译中可提示编译中的错误;
有单步运行功能,可及时观察指令的执行情况;
在调试界面的窗口可看到地址数据、总线状态及I/O端口数据传送情况等。
可在无仿真器的情况下进行软件仿真,使用较为方便。
使用伟福仿真器的操作步骤如下:
1.在开始菜单的程序中或桌面上双击“WAVE”,出现如图2-1所示窗口:
2.单击“好”。
3.在菜单栏中单击“文件”并选择下拉菜单中的“新建文件”选项,或用快捷键
,如图2-2所示。
4.在右边空白处编写程序,编写完后,再在“文件”的下拉菜单中选择“保存文件”,此时要注意,在输入文件名时必须写入后缀asm、c或plm,分别对应汇编文件、C文件或PLM/51文件。
注意:
用C编写的文件,文件名不能用中文,也不能存在中文名的子目录中,且字长不能超过8个字符。
5.程序编写完并保存后,首先单击菜单栏中的“仿真器”,在下拉菜单中选择“仿真器设置”,出现如图2-3所示的窗口,单击“仿真器”选项,选择K51/T或K51/S(由仿真器的型号决定),然后单击“语言”选项,在“编译器选择”中,选择“伟福汇编器”,若使用C编写的文件,则要选择“Keilc(V4或更低),英特尔PL/M51,英特尔汇编器”,然后单击“好”。
6.单击“项目”,选择“编译”,或用快捷键
,编译后的程序如图2-4上面右边窗口所示。
同时观察信息窗口,若无错误,信息窗口显示如图2-4下面窗口所示信息,若有错误,按信息窗口中的信息提示改正错误,直至正确为止。
7.合上伟福仿真器电源,单击“仿真器”,在下拉菜单中选择“仿真器设置”,出现如图2-5所示窗口,单击“通信设置”,将“使用伟福软件模拟器”前面的“✓”去掉,再在端口选择中选择仿真器与计算机连接的串口号,单击“好”。
8.将仿真器与计算机连接好,外部电路连接好,在图2-6所示的窗口中单击“执行”,在下拉菜单中选择“全速执行”,或使用快捷键,便可在硬件电路中看到程序运行的结果。
以上是使用伟福仿真器进行软、硬件仿真的大致过程,伟福仿真器还有许多功能,在使用中也还有许多的快捷键,详情请同学们参阅伟福仿真器的说明书。
注:
伟福仿真器的说明书及应用可登陆其网站下载,网址为:
www.wave-
第三章单片机基本系统试验
实验一P1口作为输出口实验
一.实验目的
了解P1口作为输出方式使用时,CPU对P1口的操作方式。
二.实验设备
1.计算机一台;
2.AY-USB-51F开发板一套;
三.实验原理
P1口作为8位准双向口,每一位可独立定义为输入/输出。
CPU对P1的操作可以是字节操作,也可以是位操作。
实验中P1口接8个发光二极管,通过编写不同的程序控制8个发光二极管的不同状态,以了解CPU对P1口的操作指令。
四.实验内容与步骤
(一)编制8个发光二极管右移循环点亮程序并运行。
1.编写程序,编写完后在伟福仿真器软件模拟状态下,进行软件仿真(参考第二章仿真器操作步骤的5、6),软件仿真成功后,往下进行。
若仿真有问题。
按所提示的问题进行修改,直至成功。
2.将实验板连接好后,进行写器件操作,观察运行结果,若有问题再进行调试。
每次写新的程序前,要先擦除芯片。
3.参考程序
(1)汇编语言编写的右移循环点亮程序
ORG0000H
IOO:
MOVA,#01H;
选第一个发光管
L1:
MOVP1,A;
送P1口
ACALLDL;
调延时
RRA;
右移
AJMPL1
DL:
MOVR7,#00H
DL1:
MOVR6,#0FFH;
延时
DL6:
DJNZR6,DL6
DJNZR7,DL1
RET
(2)C语言编写的隔一个右移循环点亮程序(注意:
此程序中的P要大写)
#include<
reg51.h>
voiddelay(intms)//延时子程序。
{inti,j;
for(i=0;
i<
=ms;
i++)
for(j=o;
j<
=120;
j++)
;
}
voidmain(void)
{while
(1)
{P1=0xfe;
delay(300);
//按位控制每个发光二极管,使其间隔一个循环点亮。
P1=0xfa;
P1=0xea;
delay(300);
P1=0xaa;
P1=0xfd;
P1=0xf5;
P1=0xd5;
P1=0x55;
(二)编制8个发光二极管隔两个右移循环点亮程序并运行。
按图3-1接线。
按
(一)的相应步骤编写并运行程序。
(三)编制8个发光二极管同时亮延时灭的循环程序并运行。
实验二定时器/计数器实验
学习单片机的定时/计数功能,掌握怎样通过修改软件来改变定时器的工作模式及定时时间。
2.AY-USB-51F开发板一套;
1.概述
MCS-51内部有两个可编程的16位定时器/计数器T0、T1。
可以工作于定时器方式或外部事件计数器方式。
工作方式的选择由特殊功能寄存器TMOD中的M1M0控制位决定。
工作于定时器方式时,寄存器内容每个机器周期增量一次。
所以可以把定时器看作是在对机器周期计数。
一个机器周期由12个振荡周期组成,则计数速度是振荡频率的1/12。
当采用12MHZ的晶振时,计数速率为1MHZ。
工作于“计数器”方式时,计数脉冲来自相应的外部输入引脚,如果在P3.4或P3.5引脚上有个“1”到“0”的跳变,则寄存器内容增量一次。
需要用两个机器周期,即24个振荡周期,才能识别一个从“1”到“0”的跳变,因此,最高计数速率为振荡频率的1/24。
当采用12MHZ的晶振时,最高计数频率为500KHZ。
2.定时器/计数器的计数初值计算
设系统晶振频率为12MHZ,则计数频率为1MHZ,对于不同的工作模式,定时器最大时间间隔不同,现以模式0为例,说明定时器/计数器的计算方法。
模式0为13位定时器,它的最大时间间隔为213×
1μs=8.192ms,当需要定时时间为yms时,计数寄存器的初值x按下面的公式计算:
(213-x)×
1μs=y×
1000μs
例:
在模式0下,要求用定时器/计数器0产生定时0.5ms,求计数寄存器的初值x。
解:
带入公式得:
(213-x)×
1μs=0.5×
求得x=7692=1111000001100B。
高8位赋给TH0,低5位赋给TL0。
则计数寄存器的初值为:
TH0=F0H,TL0=0CH。
其余模式定时器/计数器的计数初值计算以此类推。
四.实验内容及步骤
(一)用定时器T0产生0.5ms定时,并在P1.0输出周期为1ms的方波。
晶振为12MHZ。
T0工作于模式“0”。
1.编写程序,编写完后在伟福仿真器软件模拟状态下,进行软件仿真,软件仿真成功后,往下进行。
若仿真有问题,按所提示的问题进行修改,直至成功。
(1)汇编语言编写的程序
TIM:
MOVTL0,#0CH;
送初值
MOVTH0,#0F0H
SETBTR0;
启动T0
LP:
JBCTF0,LP1;
查询定时到否
AJMPLP
LP1:
CPLP1.0;
P1.0求反
(2)C语言编写的程序(注意程序中的大、小写)
#include<
reg51.h>
sbitP10=P1^0;
voidclock_initial()
{TR0=0;
TF0=0;
/*清TF0位*/
TH0=0xF0;
/*装载计数初值*/
TL0=0x0C;
TR0=1;
}/*启动定时器/计数器0*/
voidmain()
{TMOD=0x00;
/*定时器0,模式0*/
for(;
;
)
{clock_initial();
do{}while(!
TF0);
/*查询、等待TF0置位*/
P10=!
P10;
}/*定时时间到,P1.0翻转*/
}
(二)使定时器T0工作于模式1,编制定时器1ms定时,P1.0输出2ms方波的程序。
按
(一)的相应步骤编写并运行程序。
实验三 中断实验
通过实验了解单片机中断原理、中断过程、中断方式(电平触发方式、边沿触发方式)的选择及编程方法。
利用R-S触发器边沿触发INT0(P3.2)口,使产生中断,每请求一次中断,转到中断服务程序,控制P1口的8个发光二极管隔一个循环点亮。
(一)编制P1口发光二极管隔一个亮程序作为中断服务程序
1.编写程序,编写完后在伟福仿真器软件模拟状态下进行软件仿真,软件仿真成功后,往下进行。
2.将实验板连接好后,进行写器件操作,观察运行结果,若有问题再进行调试。
3.中断脉冲由实验板上的K1-K8按钮产生,引起中断后便进入中断服务程序,观察程序运行结果。
4.参考程序
(1)用汇编语言编写的程序
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0
MAIN:
SETBP3.2
SETBIT0;
置外部中断INT0
SETBEX0
SETBEA;
开中断
HERE:
AJMPHERE;
中断等待
INT0:
MOVA,#55H;
中断服务
MOVP1,A;
P1口LED隔一个亮
RETI
(2)用C语言编写的程序
#include<
voidstartset(void)
{
IE=0;
IP=0x0b;
IT0=1;
EX0=1;
EA=1;
INT0=1;
voiddelay(intms)/*延时子程序*/
for(j=0;
j++);
voidlight(void)/*中断响应,使每发生一次中断,就多点亮一个发光二极管*/
{EX0=0;
P1=P1<
<
1;
delay(500);
IE0=0;
{startset();
if(INT0==0)light();
(以下实验需用单片机仿真器做)
第四章单片机扩展及接口实验
实验一数据存储器扩展实验
掌握单片机内部RAM和外部RAM之间的数据传送的特点和应用,掌握存储器扩展方法。
二. 实验设备
2.伟福仿真器一台;
3.5V稳压电源一台;
4.单片机实验板一块。
三. 实验原理
1.数据存储器RAM概述
MCS-51系列单片机内部有128字节的RAM存储器,但在实时数据采集系统中,仅靠片内128字节的RAM是不够的,因此需外扩RAM。
常用的外部数据存储器由静态RAM(StaticRandomAccessMemory—SRAM)和动态RAM(DynamicRandomAccessMemory—DRAM)两种,本实验只讨论静态RAM。
MCS-51单片机扩展外部数据存储器的地址是由P0口和P2口提供的,因此最大寻址范围为64KB(0000H—FFFFH)。
2.静态RAM芯片6264简介
6264是8K×
8位的静态RAM,它采用COMS工艺制造,单一+5V电源,额定功耗200mW,典型读取时间200ns,封装形式为DIP28,其引脚排列如图4-1所示。
其中,A0~A12为地址线;
I/O0~I/O7为数据线(双向);
为片选线1,低电平有效;
CE2为片选线2,高电平有效;
为读允许信号线,低电平有效;
为写信号线,低电平有效。
四. 实验内容及步骤
(一)编写数据传送程序,使8031内部RAM30H~3FH置初值10H~1FH,然后送到外部RAM的2000H~200FH中。
再将20