单片机简介

前言

什么是单片机,目前还没有一个确切的定义。
普遍认为单片机是将CPU、RAM、ROM、定时器/计数器以及输入输出(I/O)接口电路等计算机主要部件集成在一块芯片上,这样所组成的芯片级微型计算机称为单片微型计算机(Single Chip Microcomputer)。简称为单片微机或单片机。

CPU:中央处理器(CPU,Central Processing Unit)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

RAM:随机存取存储器(英语:Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。

ROM:只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。ROM所存数据通常是装入整机前写入的,整机工作过程中只能读出,不像随机存储器能快速方便地改写存储内容。ROM所存数据稳定 ,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。

I/O:I/O(英语:Input/Output),即输入/输出,通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。

数字电路

  在一个控制系统中,单片机是电路的一部分,单片机中的程序是针对其所在的电路编写的。因此,要对单片机编程并实现一定的功能,必须了解整个系统的电路图。编程时很可能要经常参照电路图。与单片机直接相关的电路都是数字电路。
  简单地说,数字电路就是只有“0”和“1”两种信号的电路。判别信号究竟是“0”还是“1”是通过典雅的大小(常称作“电平”)来判断的。
  RS-232电平标准,以-12V至-5V作为逻辑“1”,以5V至12V作为逻辑“5”。
  还有一个“地”的概念,在电路中“地”并不是通常意义中的地,而是指电路中电压被人为规定为0V的一点。

MCS-51单片机简介

  目前生产单片机的公司很多,其中有影响力的intel公司推出的MCS-51系列等。很多公司的产品都是与MCS-51架构兼容(MCS-51 compatible)的。以下采用的atmel公司的AT89C51/52或AT89C51/52单片机,就是兼容MCS-51架构的单片机。
  以下列出各单片机全称与简称的对应表

全称 简称
AT89C51 C51
AT89C52 C52
AT89C2051 C2051
AT89S51 S51
AT89S52 S52

  C51拥有4096字节(1字节=8位)的片内程序存储器、128字节的RAM、32个I/O口、两个定时器、6个中断源、1个串口等。

C52、C2051的资源与C51比较

名称 片内程序存储器大小 RAM大小 I/O口个数 其他
C51 4096字节 128字节 32个 2个定时器、6个中断源、1个串口等
C52 8192字节 256字节 32个 3个定时器、6个中断源、1个串口等
C2051 2048字节 128字节 15个 2个定时器、6个中断源、1个串口、1个模拟比较器等

  值得注意的是:一片单片机可以反复擦写的次数是有效的,atmel的C系列、S系列单片机,官方声称可重复擦写次数为1000次

引脚

C51-2-1.png

电源引脚

VCC 40 电源引脚
GND 20 接地引脚
工作电压为4V至5.5V

外接晶体引脚

C51-2-2.png

  XTAL1 19 / XTAL2 18:
  XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部震荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率最高可以达到33MHz(C5x系列为24MHz)。电容取30pF±10pF。
  单片机程序指令的执行是以振荡器的振荡来驱动的。在MCS-51架构中,每12个振荡器周期组成一个指令周期(或称机器周期)。单片机执行指令的时间是以指令周期为单位的。不同指令的执行时间可能是不同的,一条指令的执行事件最短为一个指令周期。因此,单片机锁接的振荡器频率越高,它执行指令的速度就越快。

复位RST 9

C51-2-3.png

  在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个引脚保持高电平,单片机便一直处于复位状态。复位后P0~P3口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位引脚由高电平变为低电平时,芯片从ROM的00H处开始运行程序。复位操作不会对内部RAM有所影响。
  当单片机上电时,由于电容的作用,RST引脚会处于短暂的高电平状态,直到电容充电到一定程度时,RST引脚的电平会被8.2K的电阻拉低,单片机开始运行程序。
  图中的按键为手动复位按键,当按下复位按键后,RST引脚会被1K的电阻上拉至高电平,单片机复位,按钮松开后,RST恢复低电平,单片机重新从程序存储器的00H处运行程序。
  手动复位按键在单片机的最小系统中并不是必须的,但对单片机的复位控制会方便些。

输入输出引脚(I/O)

P0端口[P0.0—P0.7]

  P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端。作为输出口时能驱动8个TTL。P0端口要外接上拉电阻。

P1端口[P1.0—P1.7]

  P1是一个带有内部上拉电阻的8位双向I/O端口。输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接受低8位地址信息。除此之外P1端口还用于一些专门功能,具体表现见下表

P1.引脚 兼用功能
P1.0 T2(外部计数器)、时钟输出(C51、S51无此功能)
P1.1 T2EX(定时器2捕捉和重载触发及方向控制)(C51、S51无此功能)
P1.5 MOSI(用于在线编程)(C51、S51无此功能)
P1.6 MISO(用于在线编程)(C51、S51无此功能)
P1.7 SCK(用于在线编程)(C51、S51无此功能)

P2端口[P2.0—P2.7]

  P2是一个带有内部上拉电阻的8位双向I/O端口,输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接受高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间不会改变。

P3端口[P3.0—P3.7]

  P3是一个带有内部上拉电阻的8位双向I/O端口,输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。除此之外P3端口还用于一些专门功能,功能见下表

P3.引脚 兼用功能
P3.0 串行通信输入(RXD)
P3.1 串行通信输出(TXD)
P3.2 外部中断0(INT0)
P3.3 外部中断1(INT1)
P3.4 定时器0输入(T0)
P3.5 定时器1输入(T1)
P3.6 外部数据存储器写选通WR
P3.7 外部数据存储器写选通RD

其他的控制或复用引脚

ALE/-PROG 30

  访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此信号是振荡器频率的1/6)。在访问外部数据存储器时,出现一个ALE脉冲。对Flash存储器编程时,这个引脚用于输入编程脉冲PROG。

PSEN 29

  该引脚时外部程序存储器的选通信号输出端。当S52由外部程序存储器取指令或常数时,每个机器周期输出2个脉冲既两次有效。但访问外部数据存储器时,将不会有脉冲数出。

-EA/VPP 31

  外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使S52只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必须保持低电平。当使用内部的程序存储器时,此引脚应与VCC相连。对Flash存储器编程时,用于施加VPP编程电压。