单片机

<image>

<image>

单片机（Single-chip microcomputer），是把中央处理器、存储器、定时/计数器（timer/counter）、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人计算机中的通用微处理器相比，它更强调自供应（不用外接硬件）和节约成本，集成程度更高，但因为规格已经包含，所能实现的功能也较专一。它的最大优点是体积小，可放在仪表内部，但存储量小，输入输出接口简单。由于其发展非常迅速，旧的定义已过时，所以在很多应用场合被称为范围更广的微控制器（microcontroller unit，MCU）。

单芯片具备了便宜、电路简单、体积小与耗电低等优点，所以目前在业界使用的极为广泛。比如要控制一个马达就不需要使用一台个人电脑（PC）来控制，只要一颗单芯片加上驱动电路就可以加以控制马达运行。

## 概述

绝大多数现在的单片机都是基于冯·诺伊曼结构的，这种结构清楚地定义了嵌入式系统所必需的四个基本部分：一个中央处理器核心，程序存储器（只读存储器或者闪存）、数据存储器（随机存储器）、一个或者更多的定时/计数器，还有用来与外围设备以及扩展资源进行通信的输入/输出端口——所有这些都被集成在单个集成电路芯片上。

单片机与通用型中央处理单元芯片不同在于前者一般很容易配合最小型的外部支持芯片制成工作计算机，这样就可以很容易的把单片机系统植入装置内部来控制装置了。近年来为了在指令和数据上使用不同的字宽，并提高处理器线速度，哈佛结构在微控制器和数字信号处理器也逐渐得到了广泛的应用。

传统的微处理器是不允许这么做的。它要完成单片机的工作，就必须连接一些其他芯片。比如说，因为芯片上没有数据存储器，就必须要添加一些 RAM 的存储芯片，虽然所添加存储器的容量很灵活，但是至少还是要添加。另外还需要添加很多连线来传递芯片之间的数据。与以上的情况相比，单片机的工作则相对独立，一个典型的微控制器只需要一个时钟发生器和很少的 RAM (SRAM) 和 ROM (EPROM, EEPROM) 就可以在工作了。同时，微控制器具有丰富的输入输出设备，例如模拟数字转换器、定时器、串口，以及其他串行通讯接口，比如 I2C 总线，串行周边接口，控制器局域网等。通常，这些集成在内部的设备可以通过特殊的指令来操作。

单片机时钟频率通常较同时代的计算机芯片低，但它价格低廉，能够提供充足的程序存储器、丰富的片上接口。某些架构的单片机生产厂商众多，例如 8051 系列、Z80 系列。一些现代的微控制器支持一些内建的高级编程语言，比如 BASIC 语言、C、C++等。

## 单片机的位数

根据总线或资料暂存器的宽度，单片机又分为 4 位、8 位、16 位和 32 位元单片机。4 位单片机多用于冰箱、洗衣机、微波炉、灯具等简单的家电控制中；8 位、16 位单片机主要用于一般的控制领域，例如遥控器手把、空调、发动机等，一般不使用操作系统；32 位用于网络操作、多媒体处理等复杂处理的场合，一般要使用嵌入式操作系统，例如电视、车机、监视器等产品。

## 常见的单片机

生产这种产品的供应商众多而且技术各有所长，微芯（Microchip）的 PIC 系列出货量居于业界领导者地位；Atmel 的 51 系列及 AVR 系列种类众多，受支持面广，满足各种场景的市场需求；德州仪器的 MSP430 系列以低功耗闻名，常用于医疗电子产品及仪器仪表中；瑞萨单片机在日本汽车业中使用广泛。

<image>

- 英特尔
- 8-bit 8051系列
- 8XC42
- MCS48
- MCS51 : Intel 8051系列历史悠久，相容产品众多，使用广泛
- 8xC251
- 16-bit
- MCS96系列
- MXS296
- 32-bit
- i960
- ARM （Acorn RISC Machine）系列单片机
- ARM Cortex-A
- ARM Cortex-M0 单片机 (32-bits)
- ARM Cortex-M4单片机 (32-bits)

<image>

- AVR系列（爱特梅尔公司）
- Atmel AT91 series (ARM 处理器等)
- AT90 series – AVR (Atmel 的高性能RISC 8位单片机，老产品)
- ATmega series – AVR (Atmel 的高性能RISC 8 位单片机，新产品)
- ATXmega series – AVR (Atmel 的高性能RISC 32 位单片机，新产品)
- Atmel AT89 series (Intel 8051/MCS51 架构8位单片机)
- MARC4
- Cypress MicroSystems（赛普拉斯微系统公司）
- CY8C2xxxx (PSoC)
- 飞思卡尔半导体(原摩托罗拉)
- 8-bit
- 68HC05 (CPU05)
- 68HC08 (CPU08)
- 68HC11 (CPU11)
- 16-bit
- 68HC12 (CPU12)
- 68HC16 (CPU16)
- Freescale DSP56800 (DSPcontroller)
- 32-bit
- Freescale 683XX (CPU32)
- MPC500
- MPC 860 (PowerQUICC)
- MPC 8240/8250 (PowerQUICC II)
- MPC 8540/8555/8560 (PowerQUICC III)
- Holtek（盛群半导体）
- HT48FXX Flash I/O type
- HT48RXX I/O type
- HT46RXX A/D type
- HT49RXX LCD type
- 微芯片科技（微芯公司）的PIC微控制器系列
- 8-bit : PIC10 PIC12 PIC16 PIC18
- 16-bit : PIC24F PIC24H dsPIC30 dsPIC33
- 32bit : PIC32 （采用MIPS M4K 核心架构）
- 美国国家半导体
- COP8
- CR16
- NEC
- 78K
- 恩智浦半导体(原飞利浦）
- LPC2000
- LPC900
- LPC700
- Parallax, Inc.
- BASIC Stamp
- 瑞萨科技系列单片机(由原日立,NEC，三菱合并）
- Renesas 16-bits
- Renesas M16C Series
- Renesas M32C Series
- Renesas R8C Series
- Renesas M16C/Tiny Series
- Renesas R8C/Tiny Series
- Renesas H8/Tiny Series
- 意法半导体
- STM32 series (ARM Cortex-M3 系列，32位元)
- STM8 series (自主RISC指令集，8位元)
- SyncMOS 新茂国际科技全系列单片机
- SM59RXXA2 8-bits 1T(RISC)
- SM59DXXG2 8-bits 6T(ISP)
- SM59XX 8-bits 12T(ISP)
- SM89XX 8-bits 12T(Traditional 8051)
- SM79XX 8-bits 12T(Customization)
- PADAUK 应广科技全系列单片机(多核心单片机)
- P201CS/CD 8-bits
- P211CS/CD 8-bits
- p232CS/CD 8-bits
- P234CS/CD 8-bits
- ZiLOG
- Z8
- Z86E02
- STC 宏晶系列单片机
- STC89C series 6T/12T 增强性单片机 (Intel 8051架构，有外部总线)
- STC11F/11L series 2T 增强性单片机 (Intel 8051增强架构，无外部总线程序支持)
- STC12C/12LE series 2T 增强性单片机 (Intel 8051增强架构，无外部总线程序支持)
- STC15C/15LE series 2T 增强性单片机 (Intel 8051增强架构，无外部总线程序支持，正在开发中)
- Kernel-IC 华芯单片机 LS系列
- LSx051 series 12T 双核单片机(Intel 8051架构，无外部总线)
- LSx151 series 12T 三核单片机(Intel 8051架构，无外部总线)
- LS052A series 6T 三核单片机(Intel 8051架构，无外部总线)
- 新唐科技 Nuvoton NuMicro Family
- 8051 单片机 (8-bits)

### 其他系列的单片机

- MSP430系列单片机
- LM3S系列单片机
- 北京君正 JZ系列单片机
- 8098、80196系列单片机
- AT8P5X系列单片机
- CZG8000系列单片机

## 单片机的开发

单片机的软件开发中，以往多使用汇编语言，如今越来越多的使用 C 语言，又或者使用 BASIC语言 等更适合初学者的语言，部分集成开发环境支持C++。单片机的软件测试需要使用单片机开发器或模拟器。

随着技术的发展，2000年后已经有很多单片机自带了ISP（在线编程设计）或支持IAP，彻底地改变了传统的开发模式，使得开发单片机系统时不会损坏芯片的引脚，加速了产品的上市并降低了研发成本，缩短了从设计、制造到现场调试的时间，简化了生产流程，大大提高了工作效率。这类单片机包括AT89S系列单片机、AVR系列单片机等。

### 硬件

开发板可以进一步简化程序的开发和烧制过程。开发板可能包含实际芯片或是仿真器。通过配套的下载线连接电脑与开发板，在电脑上编写程序下载到开发板。批量生产会用到编程器，或是掩膜印刷方式(Mask ROM)，后者是芯片本身终身搭载固定程序（不可重新编程），意味着仅适用于特定成品。

### 软件开发环境

一些知名的微控制器开发环境有：

- 微芯公司的 MPLAB IDE 可用于该公司全系列微控制器的开发与除错，除支持该公司的 ASM组译器 C语言编译器外，也支援许多第三方的编译器。
- ARM公司的 μVision 整合开发环境（原为 Keil 公司产品，2005年该公司已由 ARM 购并），包含组译器与 C编译器，可用于51单片机及ARM开发。
- ARM公司的Mbed，可以使用线上IDE来开发。

## 外部链接

- SDCC - Small Device C Compiler - 一个支持多种微控制器的编译器自由软件
- 一个免费提供单片机教程的网站