单片微型计算机(Single Chip Microcomputer)简称单片机,是把组成微型计算机的主要功能部件(CPU、RAM、ROM、I/O口、定时/计数器、串行口等)集成在一块芯片中,构成一个完整的微型计算机。
单片机主要面对测控对象,突出的是控制功能,所以它的芯片内集成了很多面向测控对象的接口电路,如ADC(Analog to Digital Converter,模数转换器)、DAC(Digital to Analog Converter,数模转换器)、高速I/O口、PWM(Pulse Width Modulator,脉冲宽度调制器)、WDT(Watch Dog Timer,监视定时器,俗称“看门狗”)等。这些接口电路已经突破了传统的微型计算机体系结构,所以单片机也称MCU(Micro-Controller Unit,微控制器)。
单片机的种类十分广泛,现在市场上主流的有PIC系列、STM32系列、AVR等等。51系列单片机是对所有兼容Intel 8031指令系统的单片机的统称,它们都是Intel公司1981年制造8位MCU Intel 8051衍生兼容品,其指令集称为MCS-51。这里以此为例介绍单片机工作原理。
引脚及功能
51单片机的通常采用的是40引脚的双列直插式封装(Dual In-line Package,DIP),引脚功能的定义如上图所示。
除去基本的电源引脚,其中:
* VSS:电源引脚,需要接地(GND)。
* XTAL1、XTAL2(External Crystal):时间引脚,在片内XTAL1是振荡器反相放大器和时钟发生器的输入端,XTAL2是振荡器反相放大器的输出。分别外接由两个电容与晶振的并联谐振时钟电路时,XTAL1接外部晶振和微调电容的一端,XTAL2接外部晶振和微调电容的另一端;使用外部时钟时,XTAL1接地或悬空,XTAL2引脚接外部时钟的输入。
* RST(Reset):复位引脚,出现持续两个机器周期的高电平将导致单片机复位。
* ALE/PROG(Address Latch Enable/):作ALE,为地址锁存允许控制,用于在访问外部存储器时锁存P0口输出的低8位地址,脉冲的频率大约为振荡器频率的1/6。作PROG,当内部程序存储器(EPROM)编程时,由此输入编程脉冲信号。
* PSEN(Programme Store Enable):外部程序存储器选通信号。
* EA/Vpp(External Enable):作EA功能,为外部程序存储器使能信号,低电平时,只能访问外部程序存储器。作Vpp,对EPROM编程时,用以施加编程电压。
* P0、P1、P2、P3:四个并行I/O口,每并行口8个引脚。
I/O口结构及功能
51单片机的32个I/O引脚,组成P0~P3四个8位的并行双向I/O口,内部的**特殊功能寄存器(Special Function Register,SFR)**P0~P3分别是它们的端口锁存器,此外每个口还分别包含一个输出驱动器和输入缓冲器。四个并行口可以按字节操作,也可以按位操作。
P0
可作一般I/O口使用,应用系统采用外部总线结构时,也可以分时复用作为双向数据总线(Data Bus)和低8位地址总线(Address Bus)。
上图为P0口某一位的结构原理图。
当P0作I/O口时,CPU发出控制信号C=0,封锁与门,使场效应管V2截至,同时将下面的数据选择器(Multiplexer,MUX)拨到下方,将锁存器的 Q¯¯¯ 端与场效应管(Field Effect Transistor)V1的栅极接通。
输出数据时,内部总线数据经锁存器、MUX、V1输出到引脚;输入数据后,上下两个三态输入缓冲器用以内部的读操作,分别实现读引脚和读锁存器。
要注意的是,P0口作为I/O口输出时,由于输出级为漏极开路电路,需要外接上拉电阻,才能输出高电平;输入后读取数据时,V1导通将输入的高电平拉为低电平造成误读,所以在进行输入操作前,要先向端口输出锁存器写“1”。
当P0口作地址/数据总线时,CPU发出控制信号C=1。由P0输出地址/数据信息时,与门打开,MUX将CPU内部地址/数据总线反向后与V1的栅极接通,V1和V2两个FET管构成推拉式输出电路,负载能力大大加强;输入数据时,是由下面的三态输入缓冲器进入内部数据的。
P1
四个I/O口中功能最简单,可做一般I/O口使用。其某一位的结构原理图如下。
其内部已有上拉电阻,可直接输出高电平,驱动拉电流负载。和P0一样,端口输入后读取数据时,要先向端口输出锁存器写“1”。
P2
可作一般I/O口使用,在应用系统采用外部总线结构时,仅用作高8位地址总线。其某一位的结构原理如下图:
MUX打向左边时,作一般I/O口使用,此时于前面介绍的I/O口工作原理基本一致。Q输出为0时V1导通,外部引脚输出低电平;输出1时V1截止,由于存在内部上拉电阻,外部引脚输出高电平。输入后也可分为读引脚状态和读锁存器状态。而且端口输入后读取数据时,要先向端口输出锁存器写“1”。
P3
可作一般I/O口使用外,每个引脚都具有第二功能。其某一位的结构原理如下图:
作一般I/O口用,原理同P2。使用引脚的第二功能时,对应的锁存器里必须为“1”,否则图中的与非门输出始终为1,V1导通,引脚始终在低电平,不能正常工作。
每个引脚的第二功能如下表:
引脚 | 第二功能 | 说明 |
---|---|---|
P3.0 | RXD(Receive External Data) | 串行输入端 |
P3.1 | TXD(Transmit External Data) | 串行输出端 |
P3.2 | INT0(Interrupt) | 外部中断0 |
P3.3 | INT1 | 外部中断1 |
P3.4 | T0(Timer) | 计数器0外部输入 |
P3.5 | T1 | 计数器1外部输入 |
P3.6 | WR(Write Enable) | 外部数据存储器写选通 |
P3.7 | RD(Read Enable) | 外部数据存储器读选通 |
四个I/O口中,P1、P2、P3口可驱动4个LS TTL(Low-power Schottky TTL,低功耗肖特基TTL)负载,即输出电流不小于400uA; P0口的输出缓冲器可驱动8个LS TTL负载,作一般I/O使用时为开漏输出,需要外加上拉电阻,做数据/地址总线使用时不需要外加上拉电阻。
内部微体系结构
51系列单片机内部包含:
- 运算器(包括逻辑运算器ALU(Arithmetic and Logic Unit)、累加器ACC(Accumulator)、寄存器B、程序状态字寄存器PSW(Program Status Word))、程序计数器PC(Program Counter)、指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)、数据指针DPTR(Data Pointer)等组成的8位CPU。
- 4KB ROM 程序存储器、128B RAM 数据存储器
- 可寻址64K