哈尔滨工业大学——单片机原理及应用(国家精品课)
单片机是什么?
单片机就是在一片半导体硅片上集成中央处理单元、存储器、串并行 I/O、定时器/计数器、终
端系统、系统时钟电路以及系统总线,所以单片机实质上是用于控制目的的单片微型计算机,
简称单片机。
单片机的两种典型封装形式:
1、双排直插(DIP)
2、方形封装(PLCC 或 TQFP 封装)
单片机的特点:
单片机的定位及典型优势:
测控系统的核心
也称嵌入式控制器、微控制器
习惯称呼:“单片机”
单片机的体积小、价格低,能非常容易的嵌入到工业控制单元,机器人,智能仪器仪表、汽车
电子系统、武器系统、家用电器、办公自动化设备、金融电子系统、玩具、个人信息终端以及
通讯产品中。
单片机的分类:
按用途来分:
通用型:人们通常所说是指通用型单片机。通用型的单片机内部可开发资源全部提供给用户。
专用型:针对特定用途制造的的单片机。全面综合地考虑结构最简化、可靠化和成本最佳化。
例如,各种家用电器中的控制器。
按处理的二进制位数可以分为:8 位单片机、16 位单片机和 32 位单片机。
单片机发展趋势:向高性能化、存储大容量、外围电路内装化等方面发展。
1、增加 CPU 的数据总线宽度
1>例如,16 位机和 32 位机,数据处理能力明显优于 8 位单片机。
2>双 CPU 结构,提高数据处理能力。
2、存储器的发展
1>片内程序存储器—采用闪烁(Flash)存储器,容量可大 128KB。
2>片内数据存储器容量可达数十 KB。
3、片内 I/O 的改进
1>增加 I/O 口驱动能力,直接输出大电流和高电压,以直接驱动 LED 和 VFD(荧光显示器)。
2>特殊串行 I/O 功能,为构成分布式、网络化系统提供方便。
4、低功耗化
1>CMOS 工艺,多种节电工作方式。
CMOS 工艺功耗小,配置有等待状态、睡眠状态、关闭状态等节点工作方式。
2>消耗电流μA 或 nA 量级,电池供电。
3>便携式仪器仪表、消费类电子产品。
5、外围电路内装化
1>片内集成的功能部件多,系统的单片化。
2>一片芯片就是一个“测控”系统。
嵌入式微处理器家族成员主要由嵌入式微处理器、单片机以及 DSP 组成。(Dsp 数字信号处理)
AT89S51 单片机的硬件结构
AT89S51 单片机把控制应用所必需的基本功能部件集成在一个电路芯片上。
片内部件组成:
1> 8 位微处理器(CPU)
2> 数据存储器(128B RAM)
3> 程序存储器(4KB Flash ROM)
4> 4 个 8 位并行 I/O 口(P0 口~P3 口)
5> 1 个全双工异步串口
6> 2 个 16 位定时器/计数器
7> 1 个看门狗定时器
8> 中断系统:5 个中断源、5 个中断向量
9> 特殊功能寄存器(SFR)26 个
10> 低功耗的空闲模式和掉电模式
11> 在线可编程功能 ISP(In System Program)
12> 数据指针 2 个,方便对片外 RAM 的访问
各功能部件通过片内单一总线连接而成,基本结构是 CPU+外围芯片的传统微机结构。
CPU 对各种功能部件控制集中采用特殊功能寄存器(SFR - Special Function Register)的
集中控制方式。
AT89S51 单片机的引脚
引脚按功能分 3 类:
(1) 电源及时钟引脚 - VCC、VSS、XTAL1、XTAL2
(2) 控制引脚 - PSEN*、ALE/PROG*、EA*/VPP、RST(RESET)
(3) I/O 引脚 - P0、P1、P2、P3,为 4 个 8 位 I/O 口
1、电源与时钟引脚
(1) 电源引脚
1> VCC(40 脚):+5V 电源
2> VSS(20 脚):数字地
(2) 时钟引脚
1> XTAL1(19 脚):输入端
·使用片内振荡器,应接外部石英晶体和微调电容
·使用片外振荡器,该脚接外部时钟振荡器输出的信号
2> XTAL(18 脚):片内振荡器反相放大器的输出端
·使用片内振荡器,接外部石英晶体的微调电容
·使用片外振荡器,悬空
2、控制引脚
(1) RST(RESET,9 脚)
复位信号输入,持续时间大于 2 个机器周期的高电平,就可使单片机复位。
正常工作应 ≤ 0.5V
当看门狗定时器溢出输出时,该脚将输出长达 96 个时钟周期的高电平。
(2) EA*/VPP (Enable Address/Voltage Pulse of Programming,31 脚)
1> EA*:第一功能:允许访问外部程序存储器控制,与该脚电平有关
A. EA* = 1
PC 值≤0FFFH 时,单片机读片内 4KB Flash 中的程序,
PC 值>0FFFH (超出片内 4KB Flash 地址范围)时,转向读取片外 60KB(1000H - FFFFH)
程序存储器空间中的程序。
B. EA* = 0
只读取外部程序存储器中的内容,读取地址范围 0000H~FFFFH,片内 4KB Flash 无效。
2> VPP:第二功能,对片内 Flash 编程,按编程电压。
对于 AT89S51 单片机来说,若不使用片内的闪烁存储器,则 EA*脚应该接地。
(3) ALE/PROG*(Address Latch Enable/PROGramming,30 脚)
1> ALE: 第一功能
ALE 为访问外部存储器提供低 8 位地址锁存
在片外地址锁存器中。见图,
此外,单片机运行时,ALE 端一直有脉冲信号,频率为时钟 fosc 的 1/6.
注意,每当 AT89S51 访问外部 RAM 时(执行 MOVX 类指令),要丢失一个 ALE 脉冲。
可用软件来禁止 ALE 输出,将特殊功能寄存器 AUXR(地址 8EH)的第 0 位(ALE 禁止位)置 1,但
ALE 禁止位不影响对外部存储器的访问,即执行指令”MOVC”或”MOVX”时,ALE 仍然有效。
2> PROG*:第二功能,对片内 Flash 编程的编程脉冲输入。
(4) PSEN* (Program Strobe ENable,29 脚)
片外程序存储器读选通信号,低有效。
3、并行 I/O 口 P0~P3 引脚
(1) P0 口: 8 位,漏极开路的双向 I/O 口
作为系统总线用,低 8 位地址总线及数据总线分时复用端口,是双向口。也作为通用 I/O 口,
漏极需加上拉电阻,这是为准双向口。可驱动 8 个 LS 型 TTL 负载。
(2) P1 口:8 位,准双向 I/O 口,具有内部上拉电阻。
注意:P1 口的几只引脚:P1.5/MOSI、P1.6/MOSI 和 P1.7/SCK,可用作片内 Flash 存储器的串
行编程和校验,分别是串行数据输入、输出和移位脉冲引脚。
P1 口可驱动 4 个 LS 型 TTL 负载。
(3) P2 口:8 位,准双向 I/O 口,有内部上拉电阻。
当外扩存储器 I/O 口时,P2 口作为高 8 位地址总线用。
也可作为通用 I/O 使用。
可驱动 4 个 LS 型 TTL 负载。
(4) P3 口:8 位,准双向 I/O 口,具有内部上拉电阻。
可作为通用 I/O 口使用,可驱动 4 个 LS 型 TTL 负载。
P3 口还可提供第二功能:
引 脚
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
第 二 功 能
说 明
RXD
TXD
________
INT0
________
INT1
T0
T1
_____
WR
_____
RD
串行数据输入口
串行数据输出口
外部中断 0 输入
外部中断 1 输入
定时器 0 外部记数输入
定时器 1 外部记数输入
外部数据存储器写选通输出
外部数据存储器读选通输出
综上所述,P0 口如作为总线口,为双向口。如作为通用 I/O 口,为准双向口,这时需加上拉电
阻。而 P1 口、P2 口、P3 口均为准双向口。
注意:P0 口作为总线口使用时为双向口,P0 口线内无上拉电阻,处于高祖“悬浮”态,此时 P0
口为双向三态 I/O 口。作为 I/O 使用,为准双向口,仅有两个状态。
AT89S51 单片机的 CPU
AT89S51 单片机的 CPU 由运算器和控制器等部件构成。
1、运算器
功能:对操作数进行算术、逻辑和位操作运算。
组成:算术逻辑运算单元 ALU、累加器 A、位处理器、程序状态字寄存器 PSW 及两个暂存器等。
(1) 算术逻辑运算单元 ALU
可对 8 位变量逻辑运算(与、或、异或、循环、求补和清零),还可算术运算(加、减、乘、
除)
ALU 还有位操作功能,对位变量进行置“1”、清“0”、求补、测试转移及逻辑“与”、“或”等。
(2) 累加器 A
使用最频繁的寄存器,也可写为 Acc。注意“A”与“Acc”书写的差别。
作用如下:
是输入数据源之一,又是运算结果存放单元。
数据传送多通过 A,数据中转站。为解决“瓶颈堵塞”问题,AT89S51 增加了一部分可不经过累
加器的传送指令。
A 进位标志 Cy 是同时又是位处理机的位累加器
(3) 程序状态字寄存器 PSW
PSW(Program Status Word)位于片内特殊功能寄存器区,字节地址 D0H。
PSW 包含程序运行的状态信息,其中 4 位保存当前指令执行后的状态,供查询和判断。格式如
下:
PSW 格式
PSW 各位功能:
(1) Cy(PSW.7)进位标志位也可写为 C。在算术或逻辑运算时,若有进位/借位,Cy=1;否
则,Cy=0,它也是位处理器中位累加器。
(2) Ac(PSW.6)辅助进位标志位
在 BCD 码运算时,用作十进制运算调整。即当 D3 位向 D4 位产生进位或借位时,Ac=1;否则,
Ac=0。
(3) F0(PSW.5)用户使用的标志位
(4) RS1、RS0(PSW.4、PSW.3)4 组工作寄存器区选择
选择片内 RAM 区中的 4 组工作寄存器区中的某一组为当前工作寄存区。如下表所示。
(5) OV(PSW.2)溢出标志位
执行算术指令时,用来指示运算结果是否产生溢出。如溢出,OV=1;否则,OV=0。
(6) PSW.1 位:保留位
(7) P(PSW.0):奇偶标志位
指令执行完后,A 中“1”的个数是奇数还是偶数。
P=1,A 中“1”的个数为奇数。
P=0,A 中“1”的个数为偶数。
此位对串行通信有重要意义,常用奇偶检验来检验数据串行传输的可靠性。
2、控制器
任务:识别指令,控制单片机各功能部件,保证各部分自动协调工作。
控制器包括:PC、指令寄存器、指令译码器、定时及控制逻辑电路等。功能:控制指令的读入、
译码和执行,对各功能部件进行定时和逻辑控制。
程序计数器 PC 为一独立的 16 位计数器,不可访问。复位时,PC 内容为 0000H,从程序存储器
0000H 单元取指令,执行程序。
PC 工作过程:CPU 取指令时,PC 内容为所取指令的地址,程序存储器按此地址输出指令字节,
同时 PC 自动加 1。
PC 中内容变化轨迹决定程序流向。
顺序执行程序,PC 自动加 1;
执行转移程序或子程序、中断子程序调用时,自动将其内容更改成所要转移的目的地址。
PC 计数宽度决定程序存储器地址范围。单片机的 PC 计数宽度 16 位,可对 216B(64KB)寻址。
AT89S51 单片机的存储空间及分类
AT89S51 单片机的存储空间为哈佛结构,存储空间分为四类:
1> 程序存储器空间
分为片内和片外两部分。
片内 4KB Flash,编程和擦除完全是电气实现的。可用通用编程器对其编程,也可在线编
程。
2> 数据存储器空间
片内有 128B RAM (S2 子系列为 256B);
片内 RAM 不够用时,在片外最多可拓展 64KB RAM。
3> 特殊功能寄存器 SFR (Special Function Register)
各功能部件的控制寄存器及状态寄存器。综合反映了整个单片机基本系统内部实际的工作状
态及工作方式。
4> 位地址空间
1、程序存储器空间
211 个可寻址位。片内 RAM(共 16 个单元,每个单元 8 位,共 128 位) + SFR 区(共 83 位)。
用于存放程序和表格的固定常数。片内为 4KB 的 Flash,地址 0000H~0FFFH。
片外可拓展的程序存储器空间最大为 64KB,地址 0000H~FFFFH。
(1) 程序存储器空间分为片内和片外两部分,访问片内还是片外程序存储器,由 EA*脚电平
确定。
1> EA* = 1,CPU 从片内 00000H 开始取指令,当
PC 没有超出 0FFFH 时,只访问片内 Flash,当 PC
值好处 0FFFH 自动转向片外程序存储器
1000H~FFFFH 内的程序。
2> EA* = 0,不理会片内 4KB Flash 存储器,只
执行片外程序存储器(0000H~FFFFH)中的程序。
(2) 程序存储器 5 个固定单元为各中断源中断入口。见下表。
通常,这 5 个中断入口地址处都存放一条跳转指令跳向对应的中断服务程序,而不是直接存
放中断服务子程序。
2、数据存储器空间
(1) 片内数据存储器:片内 RAM 128 个单元,字节地址为 00H~7FH。
1> 00H~1FH 4 组通用工作寄存器区,每区为 8B:R7~R0。
可用指令改变 PWS 寄存器中的 RS1、RS0 两位来选择。
2> 20H~2FH 的 16 个单元的 128 位可位寻址,也可字节寻
址。
3> 30H~7FH 的单元只能字节寻址,用作存数据以及作为堆
栈区。
(2) 片外数据存储器:片内 RAM 不够用时,需外扩,最多可拓展 64KB 的 RAM。
注意:片内 RAM 与片外 RAM 两个空间是相互独立的,片内 RAM 与片外 RAM 的低 128B 的地址
是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。
3、特殊功能寄存器与位地址空间
(1) 特殊功能寄存器(SFR)——概述
特殊功能寄存器(SFR)映射在片内 RAM 80H~FFH 区域
中,共 26 个。
SFR 的名称及分布见右图。
有些可位寻址,凡是可位寻址的 SFR,字节地址末尾只能是 0H 或 8H。