当前位置:网站首页 > 经验分享 > 正文

单片机:基础知识

单片机内部结构

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统

分类:

  • 1、通用型
    按单片机(Microcontrollers)适用范围来区分。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。
  • 2、总线型
    按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。
  • 3、控制型
    按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

51单片机的结构与功能

基本功能:
1.8位数据总线,16位地址总线的CPU;
2.具有布尔处理能力和位处理能力;
3.采用哈佛结构,程序存储器与数据存储器地址空间各自独立,便于程序设计;
4.相同地址的64KB程序存储器和64KB数据存储器;
5.0-8KB片内程序存储器(8031无,8051有4KB,8052有8KB,89C55有20KB);
6.128字节片内数据存储器(8051有256字节);
7.32根双向并可以按位寻址的I/O线;
8.两个16位定时/计数器(8052有3个);
9.一个全双工的串行I/O接口;
10.多个中断源的中断结构,具有两个中断优先级;
11.片内时钟振荡器 。

特点:
1.以微处理器(CPU)为核心;
2.CPU与其他部件间通过三总线连接。
总线: 指能为多个部件服务的信息传送线 。

内部结构
在这里插入图片描述
在这里插入图片描述

单片机外部结构

在这里插入图片描述

一共40根外部引脚如图:

在这里插入图片描述
引脚功能介绍

引脚号 引脚名称 说明
1~8 P1.0~P1.7 端口P1
9 RST 复位信号输入端
10~17 P3.0~P3.7 端口P3,该端口具备第二功能
18 XTAL2 时钟震荡器输出端,内部震荡器输出段
19 XTAL1 时钟震荡器输入端,内部震荡器输入段
20 GND 电源地
21~28 P2.0~P2.7 端口P2
29 PSEN(低) 外部程序存储器从程序存储器中取指令或读取数据时,该信号有效
30 ALE/PROG(低) 地址锁存信号访问外部存储器时,该信号锁存低8位地址;无RAM时,此引脚输出晶振的6分频信号
31 EA(低)/VPP 程序存储器有效地址,EA=1时从内部开始执行程序;EA=0时从外部开始执行程序
32~39 P0.7~P0.0 端口P0
40 VCC 电源正

1、P0口的结构

P0位结构:
在这里插入图片描述

  • 输入缓冲器
    在P0口中,有两个三态的缓冲器,三态门有3个状态,即在其输出端可以是高电平、低电平,同时还有一种高阻状态(或称为禁止状态),要读取D锁存器输出端Q的数据,需要使读锁存器中这个缓冲器的三态控制端有效,下面一个是读引脚的缓冲器,要读取P0.X引脚上的数据,也要使标号为“读引脚”的三态缓冲器的控制端有效,引脚上的数据才会传输到单片机的内部数据总线上。
  • D锁存器
    构成一个锁存器,通常要用一个时序电路,一个触发器可以保存一位二进制数(即具有保持功能),在51单片机的32根I/O口线中,都是用一个D触发器来构成锁存器的。图1-4中的D锁存器,D端是数据输入端,CP是控制端(即时序控制信号输入端),Q是输出端,Q非是反向输出端。
    对于D锁存器来讲,当D输入端有一个输入信号,如果这时控制端CP没有信号(即时序脉冲没有到来),这时输入端D的数据是无法传输到输出端Q及反向输出端的。如果时序控制端CP的时序脉冲到达,这时D端输入的数据就会传输到Q及Q非端。数据传送过来后,当CP时序控制端的时序信号消失时,输出端还会保持着上次输入端D的数据(即把上次的数据锁存起来)。如果下一个时序控制脉冲信号到来,这时D端的数据才再次传送到Q端,从而改变Q端的状态。
  • 多路开关
    在51单片机中,当内部的存储器够用时(即不需要外扩展存储器时,这里讲的存储器包括数据存储器及程序存储器),P0口可以作为通用的输入/输出端口(即I/O)使用,对于8031(内部没有ROM)的单片机,或者编写的程序超过了单片机内部的存储器容量需要外扩存储器时,P0口就作为地址/数据总线使用。那么这个多路选择开关就是用于选择是作为普通I/O口使用还是作为地址/数据总线使用的选择开关了。从图1-4可知,当多路开关与下端接通时,P0口作为普通的I/O口使用;当多路开关是与上端接通时,P0口作为地址/数据总线使用。

利用P0口进行扩展外部存储器和I/O时,P0口将作为地址和数据分时复用,CPU发控制信号,打开与门,使MUX打向上边,形成推拉式结构,数据信号可直接读入或输出到内部总线。利用P0作为通用I/O时,此时P0口是一个准双向口,CPU发控制信号,封锁与门,使上拉管截止,MUX打向下边,与D触发器Q连接。

2、P1口的结构

P1口字节地址为90H,位地址为90H~97H。

P1位结构:
在这里插入图片描述

与P0不同,P1口只能作为I/O口使用,无MUX,但其内部有一个上拉电阻,所以连接外围负载时不需要外接上拉电阻,这一点P1、P2、P3都一样。

3、P2口的结构

P2口字节地址为A0H,位地址为A0H~A7H

P2位结构:
在这里插入图片描述

P2口作为I/O口线时用法与P0口一样,当内部开关拨向另一个方向,即作地址输出时,可以输出程序存储器或外部数据存储器的高8位地址,并与P0口输出的低地址一起构成16位的地址线。

4、P3口的结构

P3口字节地址为B0H,位地址为B0H~B7H。

在这里插入图片描述

P3口作为I/O口线用时同其他的端口相同,也是准双向口,不同的是,P3口的每一位都有另一种功能,也叫第二功能,具体作用在用到时将详细解释。当P3口作为通用I/O口时,准双向口第二功能端保持高电平。

当P3口作为第二功能时,锁存器输出Q=1,如图为P3口第二功能列表:
在这里插入图片描述

5、注意

  • (1)在无片外扩展存储器的系统中,这4个端口的每一位都可以作为准双向通用I/O端口使用。在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口作为双向总线,分时作为低8位地址和数据的输入/输出线。
  • (2)P0口作为通用双向I/O口使用时,必须外接上拉电阻。
  • (3)P3口除了作通用I/O口使用外,各位还具有第二功能。当P3口某一位用于第二功能作输出时,则不能再作通用I/O口使用。
  • (4)当P0~P4端口用作输入时,为了避免误读,都必须先向对应的输出锁存器写入1,使FET截止,然后再读端口引脚,例如以下程序:
    MOV P1, #0FFH
    MOV A, P1

51的程序存储器和数据存储器是独立分开的,数据寄存器除内部数据寄存器外,还可以扩展数据寄存器,并存但访问指令不同

程序寄存器

当EA引脚接高电平,CPU将使用内部程序寄存器,若程序超过内部程序存储器空间时,则CPU会自动从外部程序存储器重读取超过部分的程序代码

数据寄存器

0000H ~ 007FH
1、寄存器组区
0000H~001FH共有32个地址位寄存器组区
每组寄存器组都包括R0、R1、R2、R3、R4、R5、R6、R7等8个寄存器,任何一个时间,都只能使用其中一个寄存器组。
寄存器组的切换,可由程序状态字(PSW)中的RS1、RS0来决定
RS0 RS1 寄存器组 位址
0 0 RB0 0000H~0007H
0 1 RB1 0008H~000FH
1 0 RB2 0010H~0017H
1 1 RB3 0018H~001FH

2、可位寻址区
0020H~002FH 共16字节的存储区为可位寻址区
设置20H存储器地址的位5设置为1:SETB 20H.5
设置20H存储器地址的位5设置为0:CLR 20H.5

3、一般数据与堆栈区
0030H~007FH的80字节为一般数据访问及堆栈区
0080H~00FFH之间的128B位特殊功能寄存器(SFR)
特殊功能寄存器
P0、P1、P2、P3
它们是51的4个输入/输出端口,其地址分别为80H、90H、A0H及B0H。
P0口:该8位都为漏级开路输出,每个引脚可以驱动8个LS型TTL负载;且内部没有上拉电阻,执行输出功能时,外部必须接上拉电阻(10千欧即可);若要执行输入功能,必须先输出高电平,方能读取该端口所连接的外部数据;若系统连接外部存储器,则P0可作为地址总线(A0A7)及数据总线(D0D7)的多功能引脚。
P1口:内部有30千欧上拉电阻,执行输出功能时,不必连接外部上拉电阻;该8位都为漏级开路输出,每个引脚可以驱动4个LS型TTL负载;若要执行输入功能,必须先输出高电平,方能读取该端口所连接的外部数据;
P2口:内部有30千欧上拉电阻,执行输出功能时,不必连接外部上拉电阻;该8位都为漏级开路输出,每个引脚可以驱动4个LS型TTL负载;若要执行输入功能,必须先输出高电平,方能读取该端口所连接的外部数据;若系统连接外部存储器,而外部存储器的地址线超过8条时,则P0口可作为地址总线(A8~A15)引脚。
P3口:内部有30千欧上拉电阻,执行输出功能时,不必连接外部上拉电阻;该8位都为漏级开路输出,每个引脚可以驱动4个LS型TTL负载;若要执行输入功能,必须先输出高电平,方能读取该端口所连接的外部数据;
P3口其他功能:
P3 其它功能 说明
P3.0 RXD 串行口的接收引脚
P3.1 RTD 串行口的传送引脚
P3.2 INT0 INT0中断输入
P3.3 INT1 INT1中断输入
P3.4 T0 timer 0输入
P3.5 T1 Timer 1输入
P3.6 WR 写入外部存储器控制引脚
P3.7 RD 读取外部存储器控制引脚

PCON
PCON作为电源控制寄存器,其地址位87H,其功能是设定CPU的电源方式。
它是一个不可位寻址的寄存器。如图所示:
SMOD ― ― ― GF1 GF0 PD IDL
Bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
其中各位说明如下:
SMOD位为比特率倍增位。当串行端口工作于模式1、模式2、模式3,且使用定时器1为其比特率产生器时,若其为1,这比特率加倍,若为0,这比特率正常。
GF1、GF0位为一般用途标志位,用户可自行设定或清除这两个标志。通常使用这个两个标志作为有中断唤醒闲置模式中的8051系统。
PD位为功率下降模式位。为1时,进入功率下降模式;为0时,结束功率下降模式。
IDL位为闲置模式位。为1时,进入闲置模式;为0时,结束闲置模式。

SBUF
SBUF为串行端口缓冲器,其地址为99H, 这是由使用同一个地址的两个寄存器所构成,其中一个寄存器作为传送数据用的缓冲器,另一个寄存器作为接收数据用的缓冲器。至于如何分辨同一个地址的两个寄 存器,则视指令而定,若是数据传送指令,则自动定位到传送数据用的缓冲器;若是接受数据指令,则自动定位到接收数据用的缓冲器。详细以后再讲咯。IE
IE为中断使能寄存器,其地址为A8H。

PSW
PSW为CPU的程序状态字寄存器,其地址为D0H,其内容如下:
7 6 5 4 3 2 1 0
PSW CY AC F0 RS1 RS0 OV P
PSW.7:本位为进位位(CY),加减法时产生进位或错位,将自行设定为1,否则为0。
PSW.6:本位为辅助进位位(AC),进行加减法运算产生进位或错位,将自行设定为1,否则为0。
PSW.5:本位为用户标志位,用户自行设定。
PSW.4与PSW.3:这两个位为寄存器组选择位(RS1、RS0),其功能如下表所示。
RS1 RS0 寄存器组
0 0 RB0
0 1 RB1
1 0 RB2
1 1 RB3
PSW.2:本位为溢出标志位(OV),运行时,若发生溢出,为1,否则为0。
PSW.1:本位为保留位,没有提供服务。
PSW.0:本位位奇偶位(P),8051采用偶同位,若ACC中奇数个1,则为1,偶数个1,则为0。

ACC
ACC累加器又称为A寄存器,其地址为E0H。
B
B寄存器的地址为F0H,主要功能是配合A寄存器进行乘法或除法运算。进行乘法运算时,乘数放在B寄存器,而运算结果,高8位放在B寄存器;进行除法运算时,除数放在B寄存器,而运算的结果,余数放在B寄存器。若不进行乘/除法运算,B寄存器也可当成一般寄存器使用。

门电路

  • 与门
  • 或门
  • 非门
  • 同或门
  • 异或门
  • 门间的组合电路

在这里插入图片描述

门电路的实现TTL和MOS集成门电路

寄存器和锁存器

  • 触发器分类:
    1、基本R-S触发器
    2、同步RS触发器、同步D触发器
    3、主从R-S触发器、主从JK触发器
    4、边沿触发器:
    上升沿触发器(D触发器、JK触发器)
    下降沿触发器(D触发器、JK触发器)
  • 触发器逻辑功能表示方法:
    特性表、卡洛图、特性方程、状态图、时序图
  • 各种触发器介绍
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

版权声明


相关文章:

  • (超详细)手把手教你在安卓手机上搭建服务器和网站2024-10-20 00:04:32
  • 单片机怎么实现模块化编程?思维+实例+系统教程(实用程度令人发指)2024-10-20 00:04:32
  • 单片机编程软件很简单(11),Keil单片机编程软件在线调试2024-10-20 00:04:32
  • 思科路由器修改密码2024-10-20 00:04:32
  • ngrok的使用(超详细)2024-10-20 00:04:32
  • 原神私人服务器部署教程(Win)2024-10-20 00:04:32
  • vscode读linux源码,vscode搭建linux内核开发环境2024-10-20 00:04:32
  • 安卓手机如何改ip地址教程2024-10-20 00:04:32
  • Ubuntu 20.04 升级最新内核、安装指定内核版本2024-10-20 00:04:32
  • Ubuntu配置静态IP2024-10-20 00:04:32