本章的标题是点亮LED,虽然任务很简单,但是需要了解的单片机基础知识却很多,特别是对于初学者,刚开始要在头脑中建立一个单片机的概念,然后通过点亮一个LED小灯来增加初学者对单片机的兴趣和自信。
1.1单片机的内部资源
在这里所讲到的单片机内部资源,和传统单片机书籍中讲单片机内部结构不同,这里讲到的内部资源,是指作为单片机用户,单片机提供给用户可使用的东西。总结起来,主要是三大资源:
(1)Flash——程序存储空间,早期单片机是OTPROM。
(2)RAM——数据存储空间。
(3)SFR——特殊功能寄存器。
早期的单片机中,主要是用OTPROM(One Time Programmable Read-Only Memory,即一次可编程只读存储器)来存储单片机的程序,程序只能写入一次,如果发现错了,没办法,只能换一片重新写入。随着技术的发展,Flash以其可重复擦写且容量大、成本低的优点成为现在绝大多数单片机的程序存储器。对于单片机来说Flash最大的意义是断电后数据不丢失,这个概念类似于计算机的硬盘,保存了电影、文档、音乐等文件,把电源关掉后,下次重新开计算机,所有的文件都还照样存在。
RAM是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数据,跟计算机的内存是相似的概念,其实最典型的比喻是计算器。用计算器计算加减法,一些中间的数据都会保存在RAM里边,断电后数据丢失,所以每次打开计算器都是从归零开始计算。但是它的优点是读写速度非常快,理论上是可无限次写入的,即寿命无限,不管程序怎么运行怎么读写,它都不会坏。
第三个资源是SFR,特殊功能寄存器。这个概念可能刚开始理解不了,但需要记住。单片机有很多很多特殊功能,每个功能都会对应一个或多个SFR,用户就是通过对SFR的读写来实现单片机的多种多样的功能的。
讲到这里,首先来了解一下51单片机。通常一说到51单片机,指的都是兼容Intel MCS-51体系架构的一系列单片机,而51是它的一个通俗的简称。全球有众多的半导体厂商推出了无数款这一系列的单片机,比如Atmel的AT89C52,NXP(Philips)的P89V51,宏晶科技的STC89C52……具体型号千差万别,但它们的基本原理和操作都是一样的,程序开发环境也是一样的。这里要分清楚51这个统称和具体的单片机型号之间的关系。
单片机内部资源的三个主要部分清楚了,那么就选择STC89C52RC这款单片机来进行学习。STC89C52RC是宏晶科技出品的一款51内核的单片机,具有标准的51体系结构,全部的51标准功能,程序下载方式简单,方便学习。它的资源情况:Flash程序空间是8K字节(1K=1024,1字节= 8位),RAM数据空间是512字节,SFR后边会逐一提到并且应用。
1.2单片机最小系统
什么是单片机最小系统呢?单片机最小系统是指用最少的原件组成单片机可以工作的系统。单片机最小系统的三要素就是电源、晶振、复位电路,如图2-1所示。

图2-1 单片机最小系统电路
这张最小系统的电路图节选自Kingst51开发板原理图,下面就照这张电路图来具体分析最小系统的三要素。
1.2.1电源
这个很好理解,电子设备都需要供电。目前主流单片机的电源分为5V和3.3V这两个标准,当然现在还有对电压要求更低的单片机系统,一般多用在一些特定场合,在学习中不做过多的关注。
STC89C52需要5V的供电系统,Kingst51开发板是使用USB口输出的5V直流电直接供电的。从图2-1可以看到,供电电路在38脚和16脚的位置上,38脚接的是+5V,通常也称为VCC或VDD,代表的是电源正极,16脚接的是GND,也可称为VSS,代表的是电源的负极。+5V和GND之间还有个电容,作用下节课介绍。
此处普及一个看电路原理图的知识。电路原理图是为了表达这个电路的工作原理而存在的,很多器件在绘制的时候更多考虑的是方便原理分析,而不是表达各个器件实际位置。比如原理图中的单片机引脚图,引脚的位置是可以随意放的,但是每个引脚上有一个数字标号,这个数字标号代表的才是单片机真正的引脚位置。
单片机通常有不同的封装形式,所谓的不同封装可以理解为,同样是加了水的面,但是捏成不同的形状的馒头,只是表现形式不同,实现的功能完全一致。在2014年《手把手教你学51单片机--C语言版》(第1版)时所设计的Kingst51开发板采用了DIP40封装,是一种双列直插式的封装形式。目前编写第3版的时候,决定采用QFP-44的封装形式,是一种方形扁平式,如图2-2所示。
除部分单片机开发板还采用DIP40封装外,当前现实中的产品几乎见不到这种封装的身影了。一方面QFP封装体积更小,密度更高,集成度更高,占据空间更少;另外一方面产品设计要考虑成本,QFP封装采用SMT表面贴技术焊接,而DIP封装采用波峰焊或者手工焊接,后者单个引脚的焊接费用接近前者的10倍。这样一片DIP40封装的单片机的焊接费可能都会超过一片单片机的价格,因此在实际产品开发当中除特殊需求外(比如散热性能考虑),很少采用DIP封装形式的芯片了。无限接近实际项目,从单片机封装选择开始。
图2-2可以看出,DIP封装的1脚在其最左上角,逆时针旋转引脚号依次增加,一直到右上角是最大引脚号40脚。QFP封装中,有一个小圆圈的位置为1脚,逆时针旋转引脚号依次增加,一直旋转一圈到最大引脚号44脚。图2-2的封装图就是单片机实际引脚的位置。

图2-2 单片机封装图
1.2.2晶振
晶振,又叫晶体振荡器,从这个名字就可以看出来,它注定一生都要不停振荡的。它起到的作用是为单片机系统提供基准时钟信号,类似于部队训练时喊口令的人,单片机内部所有的工作都是以这个时钟信号为步调基准来进行工作的。STC89C52RC单片机的14脚和15脚是晶振引脚,接了一个11.0592M的晶振(它每秒钟振荡11059200次),外加两个20pF的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定。
1.2.3复位电路
在图2-1左侧是一个复位电路,接到了单片机的4脚RST(Reset)复位引脚上,这个复位电路如何起作用后边再讲,现在着重讲一下复位对单片机的作用。单片机复位一般分为三种情况:上电复位、手动复位、程序自动复位。
假如单片机程序有100行,当某一次运行到第50行的时候,突然停电了,这个时候单片机内部有的区域数据会丢失,有的区域数据可能还没丢失。那么下次打开设备的时候,用户希望单片机能正常运行,所以上电后,单片机要进行一个内部的初始化过程,这个过程就可以理解为上电复位,上电复位保证单片机每次都从一个固定的相同的状态开始工作。这个过程跟打开计算机电源开机的过程是一致的。
当单片机的程序运行时,如果遭受到意外干扰而导致程序死机,或者程序跑飞的时候,就可以按下一个复位按键,让程序重新初始化重新运行,这个过程就叫做手动复位,最典型的就是计算机的重启按钮(目前大多数电脑都没有重启按钮了,而是通过长按开机键关闭电源的方式)。
当程序死机或者跑飞的时候,单片机往往有一套自动复位机制,比如看门狗,具体应用以后再了解。在这种情况下,如果程序长时间失去响应,单片机看门狗模块会自动复位重启单片机。还有一些情况是程序故意重启复位单片机。
电源、晶振、复位构成了单片机最小系统的三要素,也就是说,一个单片机具备了这三个条件,就可以运行下载的程序了,其他的比如LED小灯、数码管、蜂鸣器等设备都是属于单片机的外部设备,即外设。最终完成用户想要的功能就是通过对单片机编程来控制各种各样的外设实现的。
审核编辑 黄宇