51单片机的基础知识——单片机简介

仅用于学习交流!!!

仅用于学习交流!!!

仅用于学习交流!!!

一、什么是单片机

单片机,即单片微型计算器,简称为单片机。用专业术语来讲单片机就是在一块硅片上集成了微处理器、存储器以及各种输入/输出(I/O,I指的是input,O指的是output)口的芯片。通俗点讲,单片机是一块集成芯片,这块集成芯片具有一些特殊的功能,通过编程我们可以用这块单片机的I/O口的高低电平变化来实现自己想要完成的功能。因而单片机的学习是需要一定的编程基础的,编程时我们一般会使用C语言或者汇编语言。

我们常说的51单片机和52单片机一般指的是以80C51为内核的单片机,下面我主要讲解的是以80C51为内核的单片机。

图1-1 51单片机

二、51单片机分类及标识:

51单片机芯片的制造厂商并不只有一家,而且51单片机的型号也并不只有一种。下面是主流的51单片机的制造厂商和单片机型号:

制造厂商

51单片机型号

AT(Atmel)

AT89C51,AT89C52,AT89C53,AT89C55,AT89LV52,AT89S52,AT89LS53等等

Philips(飞利浦)

P80C54,P80C58,P87C54,P87C58,P87C524,P87C528等等

Winbond(华邦)

W78C54,W78C58,W78E54,W78E58等等

Intel(英特尔)

i87C54,i87C58,i87L54,i87L58,i87C51FB,i87C51FC等等

Siemens(西门子)

C501-1R,C501-1E,C513A-H,C503-1R,C504-2R等等

STC(宏晶)

STC89C51RC,STC89C52RC,STC89C53RC,STC89LE51RC,STC89LE52RC,STC12C5412AD等等

各种51单片机能够实现的功能都大同小异,学会其中一种,对于其他内核相同的型号都能触类旁通,平时我们使用的最多的芯片类型就是国产的STC宏晶公司生产的STC89C51RC和STC89C52RC芯片(上面表格加粗标识),下面我以STC89C52RC为例讲解。

图2-1 单片机标号 STC89C51RC 40C-PDIP40 1902CBK441.C90C

单片机的标号都有着一定的意义,如STC89C52RC 40C-PDIP40 1902CBK441.C90C中:

STC——前缀,表示芯片为STC公司生产的,其他类似的前缀还有AT,P,W,i,C等。

8——表示该芯片内核为80C51。

9——表示内部含Flash E²PROM存储器。其他如80C51中0表示内部含有MaskROM(掩模ROM)存储器;如87C51中7表示内部含有EPROM存储器(紫外线可擦除ROM)。

C——表示改器件为CMOS产品。还有如89LV52和89LE58中的LV和LE都表示该铲平为低电压产品(通常为3.3V电压供电);而89S52中的S表示该芯片含有可串行下载功能的Flash存储器,既具有ISP可在线编程功能。

5——固定不变。

2——表示芯片内部程序存储空间的大小,1为4KB,2为8KB,3为12KB,即该数乘上4KB为该芯片内部的程序存储空间大小。一般来说芯片的内部程序存储空间越大,芯片的价格也就越高。

RC——STC单片机内部RAM(随机读写存储器)为512B。还有如RD+表示内部RAM为1280B。

40——表示芯片外部晶振最高可接入40MHz。对AT单片机数值一般为24,表示其外部晶振最高位24MHz。使用时,一般外接12MHz晶振或者11.05926MHz晶振。

I——产品级别,表示芯片使用温度范围。I表示工业用产品,温度范围为-40℃~+85℃。其他如C表示商业级,温度范围为0℃~+70℃;A表示汽车用产品,温度范围为-40℃~+125℃;M表示军用产品,温度范围为-55℃~+150℃。

PDIP40——产品封装型号。PDIP40表示双列直插式40脚。其他的芯片封装类型还有PLCC(带引线的塑料芯片封装)、QFP(塑料方型扁平式封装)、PFP(塑料扁平组件式封装)、PGA(插针网格阵列封装)以及BGA(球栅阵列封装)等等。

1902——表示表示本批芯片生产日期为19年第2周。

CBK441.C90C——芯片的生产工艺。

三、STC89C51RC芯片各管脚功能说明

STC89C51RC共有40个管脚,芯片的半圆形缺口朝上,管脚的编号从左边开始逆时针排序。每个管脚都有着自己的功能。下面是STC89C51RC的原理图:

图3-1 STC89C51RC芯片原理图

  • 1~8脚为P1口(P1.0~P1.7)——内部带有上拉电阻的8位准双向I/O口。注意STC89C52中P1.0和P1.1还有着特殊功能,P1.0为定时/计数器2的输入口,P1.1为定时/计数器2的工作方式选择。

  • 9脚为RST——复位管脚。高电平有效,当输入连续两个机器周期的高电平后,就可以完成复位操作。

  • 10~17脚位P3口(P3.0~P3.7)——内部带有上拉电阻的8位双向准I/O口,P3口除了作为一般的I/O口使用外,还具有特殊功能,具体见下表:

  • 口线

    特殊功能

    信号名称

    P3.0

    RXD

    串行输入口

    P3.1

    TXD

    串行输出口

    P3.2

    INT0

    外部中断0输入口

    P3.3

    INT1

    外部中断1输入口

    P3.4

    T0

    定时器0外部输入口

    P3.5

    T1

    定时器1外部输入口

    P3.6

    WR

    写选通输出口

    P3.7

    RD

    读选通输出口

  • 18~19脚分别为XTAL1和XTAL2——都是时钟电路引脚。XTAL1接外部晶振和微调电容的一端,XTAL2接外部晶振和微调电容的另一端,需要接地使用。

  • 20脚GND——接地端。

  • 21~28脚为P2口(P2.0~P2.7)——内部带上拉电阻的8位准双向I/O口。在访问外部程序存储器时,它作为存储器的高8位地址线。

  • 29脚PSEN——外部程序存储器读选通信号,低电平有效。CPU从外部存储器取指令时,它在每个机器周期中两次有效

  • 30脚ALE——地址锁存允许端。在拓展外部程序存储器时,用于控制地址锁存器P0口输出的低8位地址,从而实现数据与低位地址的复用;在正常使用时,ALE通常以时钟频率的1/6的固定频率向外输出正脉冲信号。由于芯片内部的空间越来越大,一般不拓展外部程序存储器。

  • 31脚EA——程序存储器地址允许输入端。当EA为高电平时,CPU优先执行片内程序存储器指令,再执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。一般使用时,EA接高电平,但对于8031,由于器无片内程序存储器,故EA必须接低电平。

  • 32~39脚P0口(P0.0~P0.7)——漏极开路的8位准双向I/O口,内部没有上拉电阻,使用时需要外接上拉电阻,一般常接10kΩ的电阻,即阻值为103的排阻。同时它为低8位地址线和8位数据线的复用端口。

  • 40脚VCC——电源端,接+5V。

  • 四、80C51单片机的结构

    1. 80C51单片机逻辑结构

    80C51单片机采用的时经典的计算机体系结构框架,即在一台计算机有运算器、控制器、存储器、输入设备和输出设备5个基本部分组成。80C51单片机在一块芯片上集成了中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、定时/计数器和多功能I/O口等。80C51单片机的系统结构框图如下图所示。

    图4-1 80C51单片机系统结构框图

    由上图可以看出,单片机内部结构主要包含下列部件:

  • 一个8位CPU;

  • 一个时钟电路(振荡器和时序OSC);

  • 4KB程序存储器;

  • 256B数据存储器;

  • 两个16位定时/计数器;

  • 64KB扩展总线控制电路;

  • 4个8位并行I/O口;

  • 一个可编程串行接口;

  • 5个中断源,其中包含两个优先级嵌套中断。

  • 2. 80C51单片机内部结构

    80C51单片机内部结构图如下图所示:

    图4-2 80C51单片机芯片内部结构框图

    注:MCS-51就是80C51

    (1)CPU

    CPU即中央处理器的简称,是单片机的核心部件,它完成各种运算和控制操作,CPU由运算器和控制器两部分电路组成。

    Ⅰ 运算器电路

    运算器电路包括ALU(算术逻辑单元)、ACC(累加器)、B寄存器、状态寄存器、暂存器1和暂存器2等部件,运算器的功能是进行算术运算、逻辑运算、位变量处理和数据传送。运算器电路以ALU为核心单元,可以完成半字节、单字节及多字节数据的运算操作,器中包括加、减、乘、除、十进制调整等算术运算以及与、或、异或、求补和循环等逻辑操作,同时还具有一般微处理器所不具备的未处理功能,运算结果的状态由状态寄存器保存。

    Ⅱ 控制器电路

    控制器电路包括程序计数器PC、PC加1寄存器、指令寄存器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等(各部分具体作用后面会讲)。控制电路完成指挥控制工作,协调单片机各部分正常工作。

    (2)定时/计数器

    80C51单片机内有两个16位的定时/计数器,可以用于定时控制、延时以及对外部事件的计数和检测等。

    (3)存储器

    80C51系列单片机的存储器包括数据存储器和程序存储器,两者地址空间相互独立,物理结构也不同。

    (4)并行I/O口

    80C51单片机共有4个8位的I/O口(P0、P1、P2和P3),每条I/O线都能独立地用作输入或输出。

    (5)串行I/O口

    80C51单片机具有一个采用通用异步工作方式地全双工串行通信接口。串行I/O口为RXD(P3.0)和TXD(P3.1),其中RXD为串行数据输入端,TXD为串行数据输出端。

    (6)中断控制系统

    80C51共有5个中断源,分为高级和低级两个中断优先级,具体关系见下表:

    中断源

    中断服务程序入口地址

    中断标指

    自然优先级顺序

    中断号

    外部中断0

    0003H

    IE0

    0

    定时/计数器0

    000BH

    TF0

    1

    外部中断1

    0013H

    IE1

    2

    定时/计数器1

    001BH

    TF1

    3

    串行通信口

    0023H

    RI或TI

    4

    定时/计数器2

    002BH

    TF2

    5

    注:定时/计数器2是STC89C52RC才有。

    (7)时钟电路

    80C51芯片内部有时钟电路,但晶体振荡器和微调电容必须外接。时钟电路为单片机产生是时钟脉冲序列。晶体振荡器一般接12MHz或者11.05926MHz的晶振,微调电容典型值为30pF。

    (8)总线

    以上所有组成部分都是通过总线连接起来的。系统的地址信号、数据信号和控制信号通过总线传送的,总线结构减少了单片机的连线和引线,提高了集成度和可靠性。总线类型有I²C总线、SPI总线、CAN总线、USB总线和单总线(1-Wire)等。

    五、80C51内部数据存储器(内部RAM)

    80C51内部RAM有256个单元,通常在空间上分为两个区:低128个 单元(00H~7FH)的内部数据RAM区和高128个单元(80H~0FFH)的专用寄存器SFR区。

    图5-1 内部数据RAM区及详图

    1. 80C51的内部数据存储器

    (1)内部RAM低128单元

    80C51低128单元式真正的内部数据RAM区,式一个多功能复用性数据存储器,按照其用途可以分为工作寄存区(00H~1FH)、位寻址区(20H~2FH)和用户RAM区(30H~7FH)。

    Ⅰ 工作寄存器区(00H~1FH)

    工作寄存器区也称为通用寄存器,该区域共有4组寄存器,每组由8个寄存单元构成,每个单元有8位,每一组均以R0~R7作为寄存器编号,共32个单元,单元地址为00H~1FH。

    在任何时刻,CPU只能使用其中一组通用寄存器,称为当前通用寄存器组,有程序状态寄存器PSW中RS1和RS0位的状态组合确定。通用寄存器为CPU提供了就近存储数据的便利,提高了工作速度,也为编程提供了方便。

    Ⅱ 位寻址区(20H~2FH)

    内部RAM的20H~2FH共16个单元,计16×8=128位,位地址为00H~7FH。位寻址区既可以作为一般的RAM区进行字节操作,也可以对单元的每一位进行操作,因此称为位寻址区,是位寻址区是存储空间的一部分。下表为位寻址区的地址。

    注:MSB为最高有效位,LSB为最低有效位。

    Ⅲ 用户RAM区(30H~7FH)

    所剩80个单元即为用户RAM区,单元地址位为30H~7FH,这些单元可以作为数据缓冲器使用。在一般应用中把堆栈设置在该区域中,栈顶的位置由堆栈指针SP指示。

    对内部RAM低128单元的使用作几点说明 :

  • 80C51的内部RAM 00H~7FH单元可以采用直接寻址或间接寻址方式实现数据传送;

  • 内部RAM 20H~2FH单元的位地址空间可实现位操作,当前工作寄存器组可通过软件对PSW中的RS1、RS0位的状态设置来选择。

  • (2) 内部RAM高128单元

    内部RAM高128单元是供给专用寄存器使用的,因此称之为专用寄存器区(也称为特殊功能寄存器区,SFR区),单元地址为80H~0FFH。80C51共有22个专用寄存器,其中程序计数器PC在物理上是独立的,没有地址,故不可寻址,它不属于内部RAM的SFR区。其余的21个专用寄存器都属于内部RAM的SFR区,是可寻址的,它们的单元地址离散地分布于80H~0FFH。下表为除了PC外的21个专用寄存器一览表。

    Ⅰ 程序计数器PC(Program Counter)

    PC是一个16位计数器,其内容为单片机将要执行的指令机器码所在存储单元的地址。PC具有自动加1的功能,从而实现程序的顺序执行。由于PC是不可寻址的,因此用户无法对它直接进行读/写操作,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。PC的寻址范围为64KB,及地址空间为0000~0FFFFH。

    Ⅱ 累加器ACC或A

    累加器ACC是8位寄存器,是最常用的专用寄存器,功能强,地位重要。它即可存放操作数,又可以存放运算的中间结果。80C51系列单片机中许多指令的操作数来自累加器ACC。累加器非常繁忙,是单片机的执行程序瓶颈,制约了单片机工作效率提高。

    Ⅲ 寄存器B

    寄存器B是8位寄存器,主要用于乘、除运算。乘法运算时,B中存放乘数,乘法操作后高8位结果存于B寄存器中。除法运算时,B中存放除数,除法操作后,余数存于寄存器B中。寄存器B也可作为一般寄存器使用。

    Ⅳ 程序状态字PSW

    程序状态字是8位寄存器,用于指示程序运行状态信息。其中有些位是根据程序执行结果由硬件自动设置,而有些位可由用户通过指令方法设定。PSW中各标志位及定义如下。

  • CY——进(借)位标志位,也是位处理器的为累加器C。在加减运算中,若操作结果的最高位有进位或借位时,CY由硬件自动置1,否则清0。在位操作中,CY作为位累加器C使用,参与进行位传送、位与、位或等位操作。另外某些控制转移类指令也会影响CY位状态。

  • AC——辅助进(借)位标志位,在加减运算中,当操作结果的低4位向高4位进位或借位时,此标志位由硬件自动置1,否则清0。

  • F0——用户标志位,由用户通过软件设定,用以控制程序转向。

  • RS1,RS0——寄存器组选择位。用于选择使用当前通用寄存器组的组号。RS1和RS0的状态有软件设置,选中的寄存器位当前通用寄存器组。通用寄存器组一共有4组,具体关系见下表。

  • RS1

    RS0

    寄存器组

    R0~R7地址

    0

    0

    组1

    00~07H

    0

    1

    组2

    08~0FH

    1

    0

    组3

    10~17H

    1

    1

    组4

    18~1FH

  • OV——溢出标志位。在带符号数(补码数)的加减运算中,OV=1表示加减运算的结果超出了累加器A的8位符号数表示范围(-128~+127),产生溢出,因此运算结果是错误的。OV=0,表示运算结果正常,未超出表示范围;乘法时,OV=1,表示结果大于255,结果分别存放在寄存器A、B中。OV=0,表示结果未超出255,结果只存在A中;除法时,OV=1,表示除数为0。OV=0,表示除数不为0。

  • P——奇偶标志位,表示执行结果中“1”的个数是偶数个,还是奇数个。

  • Ⅴ 数据指针DPTR

    数据指针DPTR是16位寄存器,它是80C51中唯一一个16位寄存器。编程时,既可以将其作为16位寄存器使用,也可以将其作为两个8位寄存器使用。DPH为DPTR的高8位寄存器,DPL为DPTR的低8位寄存器。DPTR通常在访问外部数据存储器或I/O接口时作为地址指针使用,寻址范围位64KB。

    Ⅵ 堆栈指针SP

    堆栈指的是一个对数据实行“后进先出”操作的区域,它是微型计算机必不可少的一部分。为了保证堆栈区的数据能够按“后进先出”的规则来操作,专门设置了一个存放地址的寄存器来管理,这个寄存器就是堆栈指针SP。51系列单片机的堆栈指针SP是8位寄存器。51系列的单片机的堆栈是当数据存入栈堆时,地址自动加1,所以是向上生长型堆栈。

    ①堆栈的功能主要是保护现场和保护端点。

    ②堆栈的设置,51系列单片机系统复位时,(SP)=07H。由于89C51片内RAM区有限,所以栈顶越小,栈的深度就越深。为便于4组工作寄存器都能够正常使用,一般将在初始化时,将栈顶设置在30H。

    ③堆栈使用方式共有两种:一种时自动方式,在调用子程序或中断时,返回地址自动进栈。等到程序返回时,断点再自动弹回PC。这种方式无须用户操作;另一种是指令的方式,进栈指令为PUSH,出栈指令为POP。

    Ⅶ 电源控制及波特率选择控制寄存器PCON

    PCON为8位寄存器,主要用于控制单片机工作于控制单片机工作于低功耗模式。80C51系列单片机的低功耗方式有待机和掉电保护方式两种。待机和掉电保护都由专用寄存器PCON的有关位来控制。PCON寄存器不可位寻址,只能字节寻址。

  • PD:掉电保护位,(PD)=1,进入调电保护方式。

  • IDL:待机方式位,(IDL)=1,进入待机方式。

  • Ⅷ 并行I/O端口P0~P3

    专用寄存器P0、P1、P2、P3分别时并行I/O口P0~P3中的数据锁存器。

    Ⅸ 串行数据缓冲器SBUF

    串行数据缓冲器SBUF是串行口的一个专用寄存器,由一个发送缓冲器和一个接收缓冲器组成。两个缓冲器再物理上独立,但公用一个地址(99H)。SBUF用来存放要发送的或已接收的数据。

    Ⅹ 定时/计数器专用寄存器

    80C51系列单片机中有两个16位的定时/计数器T0和T1,它们分别由两个独立的8位计数器组成,T0由专用寄存器TH0、TL0组成,T1由专用寄存器TH1、TL1组成。

    Ⅺ 控制类的专用寄存器

    IE、IP、TMOD、TCON、SCON寄存器是中断系统、定时/计数器、串行口的控制寄存器,包含控制位和状态位。控制位是编程写入的控制操作位。

    对专用寄存器的字节寻址作以下几点说明:

  • 21个可字节寻址的专用寄存器离散分散在内部RAM高128单元,其余的空闲单元为保留区,无定义,不可使用。

  • 程序计数器PC是唯一不可寻址的专用寄存器,PC不占用内部RAM单元,它在物理上是独立。

  • 对专用寄存器只能使用直接寻址方式,在指令中可写成寄存器符号或单元地址形式。

  • (3)专用寄存器的位寻址

    在21个可寻址的专用寄存器中,由11个专用寄存器,它们的字节地址都能被8整除,可以进行位寻址,即可对这些专用寄存器单元的每一位进行位操作,每一位有固定的位地址。下表列出了可位寻址的专用寄存器的每一位的位地址,表中字节地址带括号的专用寄存器不可位寻址。

    六、 80C51内部程序存储器(ROM)

    大部分51系列单片机内部都有一定容量的程序存储器ROM,如80C51芯片内部有4KB掩模ROM存储单元,STC89C51芯片内部配置了4KB Flash ROM,它们的地址范围为0000H~0FFFH。ROM可用来存放固定的程序或数据,如系统程序、常数表格等等。

    1. 片内与片外程序存储器的选择

    80C51的程序计数PC时16未的计数器,所以能寻址64KB ROM的任何单元。

    (1)EA引脚接高电平

    当EA引脚接高电平时,对于基本型单片机,首先在片内程序存储器中取指令,当PC的内容超过0FFFH时,系统会自动转到片外的程序存储器中取指令,外部程序存储器的地址从1000H开始编址。

    对于增强型单片机,首先在片内程序存储器中取指令,当PC的内容超过1FFFH时,系统才转到片外程序存储器中取指令。

    (2)EA引脚接低电平

    当EA引脚接低电平时,单片机自动转到片外程序存储器中取指令(无论片内是否有程序存储器),外部程序存储器的地址从0000H开始编址。

    2. 程序存储器的几个特殊单元

    程序存储器低端的一些地址被固定地用于特定地入口地址。

    其中一组特殊单元是0000H~0002H。系统复位后,(PC)=0000H,单片机从0000H单元开始执行程序。如果不是从0000H开始,就要在这3个单元中存放一条无条件转移指令,以便转去执行指定的应用程序。

    另外,在程序存储器中有各个中断源的入口地址,分配如下:

  • 0003H~000AH――外部中断0中断地址区

  • 000BH~0012H――定时/计数器0中断地址区

  • 0013A~001AH――外部中断1中断地址区

  • 001BH~0022H――定时/计数器1中断地址区

  • 0023H~002AH――串行中断地址区

  • ,图6-1 程序存储器地段的一些地址

    每个中断地址区有8个地址单元,可以存放中断服务程序,但8个单元通常难以存下一个完整的中断服务程序,因此往往需要在中断地址区首地址中存放一条无条件转移指令,转去中断服务程序真正的入口地址。

    从002BH开始的单元才是用户可以随意使用的程序存储器。

    七、 80C51单片机的最小系统

    单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的以单片机为核心元件的可以正常工作的具有特定功能的单片机系统,是单片机的核心电路。80C51单片机最小系统包括电源电路、复位电路以及晶振电路。

    1.电源电路

    电源电路指的是给单片机供电的电路。STC89C51芯片的工作电压是+5V,若要使其正常工作那么需要给40脚VCC提供+5V的直流电压,同时将20脚GND接地。

    2. 复位电路

    单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。

    单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。

    复位电路由按键复位和上电复位两部分组成。

    (1)上电复位

    STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。

    (2)按键复位

    按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。

    3.晶振电路

    晶振电路指的是为单片机提供所需时钟频率的电路,一般由晶振和两个电容组成。STC89C51的晶振一般选用11.05926MHz或者12MHz的晶振。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 51单片机的基础知识——单片机简介

    发表评论