您现在的位置:e-works > 智造书屋 > 书籍列表 > 51单片机快速上手 > 单片机概述

第一章 单片机基础知识

第一节 单片机概述

1.1.1  嵌入式系统与单片机

   现代的高科技产品机电一体化是其主要特点。机电一体化的结构要素很多,与人体对比,有5大要素是必需的,人体的5大要素及功能如图1-1、图1-2所示,机电一体化系统的5大要素及功能如图1-3、图1-4所示。

    机电一体化系统的动力部分,就像人体内脏产生能量去维持生命运动一样,为系统提供能量和动力功能,去驱动执行机构,使系统正常运转。
    传感器部分,就像是人的五官,将检测到的信息传递给大脑,再由大脑作出相应的反应一样,其功能就是将系统运行中所需要的各种参数及状况检测出来,变成一种可以测定的物理量,传递到信息处理部分,经过处理后根据需要作出“反应”。
    机械结构部分,就像人体的肌、筋、腱、骨骼接受大脑指挥去驱动四肢运动一样,在控制部分的指挥下,去驱动各执行部分完成各种动作和功能。
    执行机构部分,就像人的四肢由大脑指挥去完成每项任务和工作一样,当接到信息处理部分发出的命令后,去执行指令所要求的功能和动作。
    控制器部分,就像人的大脑指挥和控制全身运动并能记忆、思考和判断问题一样,将来自传感器的检测信息集中、存储并进行处理,然后按照一定的程序和节奏发出各种指令去指挥和控制整个系统运行。
    由图1-3可知,控制器是整个机电一体化产品的核心,它经常由微型计算机系统来充当,在某些产品当中,体积微小的微型计算机系统嵌入到对象体系中,因此被称为嵌入式系统。
    (1)嵌入式系统的定义
    嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可剪裁,能适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统,以及用户应用软件等部分组成。通常嵌入式系统都被嵌入在主要设备之中。IEEE对于嵌入式系统的定义是:用于控制、监视或者辅助操作机器和设备的装置(An Embedded system is the devices used to control, monitor, or assist the operation of equipment, machinery or plants)。“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的3个基本要素。对象系统则是指嵌入式系统所嵌入的宿主系统。
    按照上述嵌入式系统的定义,只要满足定义中3要素的计算机系统,都可称为嵌入式系统。嵌入式系统按形态可分为设备级(工控机)、板级(单板、模块)和芯片级。
    国际上公认的通用嵌入式处理器有3大类:微控制器(Micro Controller Unit,MCU)、数字信号处理器(DSP)和微处理器(Micro-Processor Unit,MPU),见表1-1。TI公司曾把处理器比作汽车:DSP是跑车,追求的是速度;MPU是轿车,追求的是经济性与速度的折中;MCU是满足特殊用途的车。

  

    (2)以单片机为核心的嵌入式系统的特点由图1-3可知,控制器是整个机电一体化产品的核心,它经常由微型计算机系统来充当,在某些产品当中,体积微小的微型计算机系统嵌入到对象体系中,因此被称为嵌入式系统。
    (1)嵌入式系统的定义
    嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可剪裁,能适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统,以及用户应用软件等部分组成。通常嵌入式系统都被嵌入在主要设备之中。IEEE对于嵌入式系统的定义是:用于控制、监视或者辅助操作机器和设备的装置(An Embedded system is the devices used to control, monitor, or assist the operation of equipment, machinery or plants)。“嵌入性”、“专用性”与“计算机系统”是嵌入式系统的3个基本要素。对象系统则是指嵌入式系统所嵌入的宿主系统。
    按照上述嵌入式系统的定义,只要满足定义中3要素的计算机系统,都可称为嵌入式系统。嵌入式系统按形态可分为设备级(工控机)、板级(单板、模块)和芯片级。
    国际上公认的通用嵌入式处理器有3大类:微控制器(Micro Controller Unit,MCU)、数字信号处理器(DSP)和微处理器(Micro-Processor Unit,MPU),见表1-1。TI公司曾把处理器比作汽车:DSP是跑车,追求的是速度;MPU是轿车,追求的是经济性与速度的折中;MCU是满足特殊用途的车。
    1)由于系统规模较小,其本身不具有自我开发能力,需借助专用的开发工具进行系统的开发和调试,使得实际应用系统简单实用、成本低、效益好。
    2)系统配置以满足对象的控制要求为出发点,使得系统具有较高的性能价格比。
    3)应用系统通常将程序驻留在ROM中,无需软硬磁盘作软件载体,使系统不易受到干扰,可靠性高,使用方便。
    4)系统小巧玲珑,控制功能强,体积小,便于安装于被控设备之内,如数控机床、机器人、洗衣机、电冰箱、电饭锅等典型的机电一体化设备和产品。
    

1.1.2  单片机发展

    20世纪跨越了3个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。这种电脑通常是指个人计算机,简称PC。它由主机、键盘和显示器等组成。还有一类计算机,它把智能赋予各种机械,称为单片机。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,所以通常都藏在被控机械的“肚子”里。嵌入了单片机的产品,常在产品名称前冠以形容词“智能型”,如智能型洗衣机等。
    单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑,以及鼠标等电脑配件中都配有1~2个单片机。而PC中也会有为数不少的单片机在工作。汽车上一般配备40多个单片机,复杂的工业控制系统上甚至可能有数百个单片机在同时工作。单片机是一种在线式实时控制计算机,在线式就是现场控制,需要有较强的抗干扰能力,较低的成本,这也是单片机和离线式计算机(如家用PC等)的主要区别。

分页


    单片机由专用微处理器芯片发展而来。最早的设计理念是通过将大量外围设备和微处理器集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对系统要求严格的控制设备当中。Intel的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机的出现是随着微型计算机及其微处理器芯片在智能测控系统中的应用而发展起来的。
从时间上来讲,单片机诞生于20世纪70年代末,1973年TI公司注册了世界上第一个单片机专利。若从8位单片机芯片出现开始,大致可归纳为以下4个阶段。
    (1)第一阶段(1976~1978):单片机的探索阶段
    以Intel公司的MCS-48为代表。该系列单片机早期产品在芯片内集成有8位微处理器、1KB程序存储器(ROM)、64B数据存储器(RAM)、24根I/O线和1个8位定时/计数器。
    此阶段单片机的主要特点是:在单个芯片内完成了微处理器、存储器、I/O接口、定时/计数器、中断系统和时钟等部件的集成。但存储器容量较小,寻址范围小(不大于4KB),无串行接口,指令系统功能不强。 
    (2)第二阶段(1978~1982):单片机的完善阶段
    Intel公司在MCS-48基础上推出了完善的、典型的单片机MCS-51系列。该系列单片机在芯片内集成有8位微处理器、4KB程序存储器(ROM)、128B数据存储器(RAM),4个8位并行口、1个全双工串行口和2个16位定时/计数器。其寻址范围最大为64KB,并集成有控制功能较强的布尔处理器(完成位处理功能)。它在以下几个方面奠定了典型的通用总线型单片机体系结构:设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有多机通信功能的串行通信接口;微处理器外围功能单元的集中管理模式;体现工控特性的位地址空间及位操作方式;指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
    此阶段单片机的主要特点是:结构体系完善,性能已大大提高,面向控制的特点进一步突出。
    (3)第三阶段(1982~1990):8位单片机的巩固发展及16位单片机的推出阶段
以Intel公司推出的MCS-96系列单片机为代表,该系列单片机在芯片内集成有16位微处理器、8KB程序存储器(ROM)、232B数据存储器(RAM)、4个8位并行口、1个全双工串行口和2个16位定时/计数器。其寻址范围最大为64KB。片上还有8路10位AD转换器、1路PWM(D/A)输出及高速I/O部件等。
该阶段单片机的主要特点是:片内面向测控系统外围电路增强,使单片机可以方便灵活地用于复杂的自动测控系统及设备。至此,“微控制器”的称谓更能反映单片机的内在本质。
(4)第四阶段(1990至今):微控制器的全面发展阶段
    随着单片机在各个领域全面深入的发展和应用,出现了高速、大寻址范围、运算能力强的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。20世纪90年代后,随着消费电子产品的发展,单片机技术得到了巨大的提高。随着Inteli960系列,特别是后来的ARM(Advanced RISC Machines)系列的广泛应用,32位单片机迅速取代了16位单片机的高端地位,并且进入主流市场。目前,高端的32位单片机主频已经超过300MHz,性能直追20世纪90年代中期的专用处理器,而价格也非常便宜。当代单片机系统不仅在裸机环境下开发和使用,大量专用的嵌入式操作系统已被广泛应用在单片机上,而作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
    1997年,系统单芯片(System-on-Chip,SoC)的重要概念被提了出来。使用SoC技术设计系统的核心思想,就是要把整个应用电子系统全部集成在一个芯片中。SoC技术除了那些无法集成的外部电路或机械部分以外,将其他所有的系统电路全部集成在一起,如图1-5所示。从某种意义上说,SoC为单片机应用提供了更广阔的应用技术,并赋予了单片机更强大的生命力。因为,如果整个SoC目标系统的核心是一个单片机,那么,这个系统设计成功之后就不仅是真正意义上的单片机,而且还实现了真正的系统单片机。这正是单片机强大生命力的根源。

    在未来相当长的时期内,8位单片机仍将是市场的主流产品,这是因为单片机主要是以功能为主的,注重的是产品的可靠性、经济性和嵌入性,如果能用4位或8位单片机满足应用需求,就没必要用16位单片机。而多年的应用实践已经证明,80C51的系统结构合理、技术成熟。因此,许多单片机芯片生产厂商倾力于提高80C51单片机产品的综合功能,使它的处理能力比20世纪80年代提高了数百倍,从而形成了80C51的主流产品地位,而且它的换代产品也如雨后春笋,而且功能更加丰富。但随着移动通信、网络技术、多媒体技术等高科技产品进入家庭,在此领域32单片机将大显身手。因此32位单片机将会与8位单片机并驾齐驱。
    随着微电子技术的迅速发展,目前各个公司研制出了能够适用于各种应用领域的单片机。高性能单片机芯片市场也异常活跃,新技术使单片机的种类、性能不断提高,应用领域迅速扩大。单片机性能的提高和改进,有以下几个方面。
    (1)微处理器的改进
    1)采用双微处理器结构,提高了芯片的处理能力,如Rockwell公司的R6500/21和R65C29单片机均采用双微处理器结构,大大提高了系统的处理能力。
    2)增加了数据总线宽度,从8位、16位到32位,提高了数据处理的能力。
    3)采用精简指令集(RISC)结构和流水线技术,类似于高性能的微处理器,这类单片机的运算速度比标准的单片机高出10倍以上,提高了运行速度,能够实现简单的DSP功能,适合于做数字信号处理。
    4)串行总线结构,将外部数据总线改为串行传送方式,提高了系统的可靠性。
    (2)存储器的改进
    1)增大了片内存储器的容量,有利于提高系统的可靠性。
    2)片内采用E2PROM和Flash,可在线编程,读/写更方便,可对某些需要保留的数据和参数长期保存,提高了单片机的可靠性和实用性。
    3)采用编程加密技术,可更好地保护知识产权。开发者希望软件不被复制、破译,可利用编程加密位或ROM加锁方式,达到程序保密的目的。
    (3)内部资源增多
    单片机内部资源通常由其片内功能体现出来,单片机片内资源越丰富,用它构成的单片机控制系统的硬件开销就越少,产品的体积就越小,可靠性就越高。近年来,世界各大半导体厂家热衷于开发增强型8位单片机,这类增强型单片机不仅可以把微处理器、RAM、ROM、定时器/计数器、I/O接口和中断系统等电路集成到片内,而且片内新增了A/D转换器、D/A转换器、监视定时器、DMA通道和总线接口等,有些厂家还把晶振和LCD驱动电路也集成到芯片之中。所有这些都有力地拓宽了8位单片机的应用领域。
    (4)I/O接口形式增多、性能提高
    1)增加了驱动能力,减少了外围驱动芯片的使用,直接驱动LED、LCD显示器等,简化了系统设计,降低了系统成本。
    2)增加了异步串行通信口,提高了单片机系统的灵活性。
    3)增加了逻辑操作功能,具有位寻址操作,增强了操作和控制的灵活性。
    4)带有A/D、D/A转换器,可直接对模拟量信号输入和输出。
    5)并行I/O端口设置灵活,可以利用指令将端口的任一位设置为输入、输出、上拉、下拉和悬浮状态。
    6)带有PWM输出,直接驱动小型直流电动机,大大方便了使用。
    (5)低电压和低功耗
    几乎所有的单片机都有WAIT、STOP等省电运行方式。允许使用的电压范围越来越宽,一般在3~6V范围内工作,可用电池作的电源。低电压供电的单片机电源下限可达1~2V。目前,0.8V供电的单片机已经问世。低功耗化的效应不仅是功耗低,而且还带来了产品的高可靠性、高抗干扰能力,以及产品的便携化。
    例如,美国微芯公司(Microchip)的PIC6C5X系列单片机正常工作电流为2mA,空闲方式(3V32MHz)下为15mA,待命工作状态(2.5V电源电压)下为0.6mA,采用干电池供电十分方便。如图1-6所示为微芯公司发布的一款6引脚单片机。

 

分页    (6)CMOS化
    近年,由于CHMOS技术的进步,大大地促进了单片机的CMOS化。CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以进行功耗精细管理。因为单片机芯片多数是采用CMOS(金属栅氧化物)半导体工艺生产的。CMOS电路的特点是低功耗、高密度、低速度和低价格。
    (7)低噪声与高可靠性
    为了提高单片机的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片机厂家在单片机内部电路中都采用了新的技术措施。
    (8)嵌入式Internet技术
    有的单片机为了构成控制网络或形成局域网,内部含有局部网络控制模块CAN,如Motorola公司的68000系列等,美国Cygnal公司最新的C8051F060系列等。这类单片机在控制系统较为复杂时,可构成一个控制网络。目前,嵌入式单片机已在工业的各个领域和日常生活中都得到了广泛的应用,但大多数嵌入式系统尚处于单独应用阶段。如果将这些互相独立的分散的嵌入式系统连接到Internet上,就可方便、低廉地将信息传送到世界上的任何地方。这种嵌入式Internet能非常容易地实现远程数据采集,远程控制,自动收发Email。不久的将来,家庭信息交互、自动控制、远程升级、远程维护等都可在Internet上实现,这种家电网络化技术将会改变人们的生活方式,提高人们的生活质量,带动相关产业的迅猛发展。
    (9)串行总线结构
    随着Philips公司开发的I2C(Inter-Integrated Circuit)总线、Freescale公司(原Motorala公司半导体部)推出的串行外围接口(Serial Peripheral Interface,SPI)等串行总线及接口的引入,可大大减少引脚数量,简化系统结构。随着单片机应用系统中的串行扩展技术的较大发展,单片机的并行接口技术日渐衰退。目前许多原有带并行总线的单片机系列,推出了删去并行总线的非总线型单片机。

1.1.3  单片机编程语言的选择

    从应用的角度看,51系列单片机常用的编程语言有PL/M、C51和汇编3种。

1.PL/M

    PL/M是Intel从8080微处理器开始为其系列产品开发的编程语言。它很像PASCAL,是一种结构化语言,但它使用关键字去定义结构。总的来说,PL/M是“高级汇编语言”,可详细控制代码的生产。但对51系列单片机,PL/M不支持复杂的算术运算、浮点变量,而且无丰富的库函数支持。学习PL/M无异于学习一种新语言,因此学习它的人较少。

2.C51

    C51是一种主要用于51单片机系统的标准C语言的变体。它也是高级语言。其主要特点如下:
    1)8051存储器具有哈佛结构,程序与数据存储器分立,还可以进行位寻址。
    2)片上的数据和程序存储器空间过小且同时存在着向片外扩展的可能。
    3)片上集成的外围设备通过寄存器控制。
    4)51单片机的派生门类特别多,且要求C语言对它们的每一个硬件资源都能进行操作。
    上述特点都是过去以台式PC为基础的C语言所没有的。经过Keil/Franklin、Archmeades、IAR、BSO/Tasking等公司不懈的努力,C语言终于在20世纪90年代开始成熟,成为专业化的单片机高级语言。过去长期困扰人们的所谓“高级语言产生代码过长,运行速度太慢,因此不适合单片机使用”的致命缺点已被克服。目前,51单片机上的C语言代码长度,已经做到了汇编水平的1.2~1.5倍。至于执行速度的问题,只要有好的仿真器的帮助,找出关键代码,进一步人工优化,就可达到十分完美的程度。如果谈到开发速度、软件质量、结构严谨和程序坚固等方面,则C语言的优越性绝非汇编语言所能比拟的。
    用C语言写程序的优点如下:
    1)C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。
    2)应用程序的可移植性。C语言是与硬件无关的通用程序设计语言。C语言本身并不包括输入/输出语句,但C语言需要通过输入/输出语句同硬件打交道,而只有输入/输出语句中最底层的几个函数才与硬件设计有关。考虑到将来产品更新换代,需要更强有力的单片机时,用C语言写的程序往往可以直接移植,只需要重新编译一下就可以了,而如果整个应用程序都用汇编语言来编写,将来的移植几乎是不可能的。
    3)便于程序调试。应用程序的调试可以直接使用C语言。例如,C语言中的一个典型的按格式输出函数printf(),是程序调试的有力工具。程序中的各个参数,包括一些中间变量都可以用这个函数在屏幕上显示出来,这比汇编语言程序调试中设断点的方法轻松多了。
    4)C语言库函数丰富。C语言提供了许多有用的库函数,例如,数学运算、码的转换、各种格式的输入/输出等。为应用编写的一些汇编语言程序也可以放在库里,作为开发下一个产品的资源。
    5)源程序易读,易于修改。
    6)C51提供了复杂的数据类型,如数组、结构、联合、枚举和指针等,极大地增强了程序处理能力和灵活性。
    7)提供了auto、static和const等存储类型和专门针对51单片机的data、idata、pdata、xdata和code等存储类型,自动为变量合理地分配地址。
   8)提供了small、compact和large等编译模式,以适应片上存储器的大小。
   9)可方便地接受多种实用程序的服务,如片上资源的初始化有专门的实用程序自动生成;又如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等。
    

3.单片机汇编语言

    和C51语言相比,汇编语言的特点为:
   1)汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是,不同的微处理器,其汇编语言可能有所差异,所以不易移植、可重用性低。可重用性即上次为某个项目编写的程序,这次稍微改一下就可以用。
    2)汇编语言的一条指令对应一个机器码,每一步执行什么动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。
    3)直接操作硬件,对单片机底层和接口时序很清楚。
    因而适合汇编语言的程序内容为:
    1)系统的初始化,包括初始化单片机和各模块的控制寄存器,配置硬件相关的端口定义,以及设置堆栈指针建立C语言程序运行的环境等。
    2)中断向量的初始化,中断服务的入口和出口及开中断、关中断等,而中断服务程序本身可用C语言编写,在汇编程序中调用C语言编写的子程序完成中断服务。
    3)用汇编语言编写输入/输出函数,在C语言程序中调用这些函数。
总之,用汇编语言编写与硬件有关部分的程序,用C语言编写与硬件无关部分的程序,处理好两部分程序之间的参数传递是成功的关键。
    因此,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。
    而对于单片机的初学者来说,若想深入掌握单片机精髓,则应该从汇编语言学起。因为汇编语言是最接近机器码的一种语言,学好它可以加深初学者对单片机各个功能模块的了解,从而打下扎实的基础。
 

分页

1.1.4  单片机仿真软件

    Proteus软件是由英国Labcenter Electronics公司开发的EDA工具软件,已有近20年的历史。该软件集成了高级原理布图、混合模式SPICE电路仿真、PCB设计,以及自动布线来实现一个完整的电子设计系统。它是一种混合电路仿真工具,包括模拟电路仿真、数字电路仿真、单片机及其外围电路组成的仿真等。Proteus软件由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件。ISIS是一个操作简便且功能强大的原理绘图工具,它整合了SPICE的仿真模型,拥有超过8000个元件的庞大库结构。ARES则可将ISIS的仿真原理图生成PCB版图。Proteus软件的主要特点如下:
    1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;具有各种虚拟仪器,如示波器、逻辑分析仪和信号发生器等。
    2)支持主流单片机系统的仿真。目前支持的单片机类型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列,以及各种外围芯片。
    3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,在该软件仿真系统中,也具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51等软件。
    4)具有强大的原理图绘制功能。
    总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。