單片機

**單晶片**，全稱**單晶片微電腦**（英語：**single-chip microcomputer**），又稱**微控制器單元**（**microcontroller unit**），是把中央處理器、儲存器、定時 / 計數器（timer/counter）、各種輸入輸出介面等都整合在一塊積體電路晶片上的微型計算機。與應用在個人電腦中的通用型微處理器相比，它更強調自供應（不用外接硬體）和節約成本，整合程度更高，但因為規格已經包含，所能實現的功能也較專一。它的最大優點是體積小，可放在儀表內部，但儲存量小，輸入輸出介面簡單。由於其發展非常迅速，舊的定義已不能滿足，所以在很多應用場合被稱為範圍更廣的微控制器；由於單晶片微電腦常用於當控制器故又名 single chip microcontroller。台灣翻譯時稱為「單晶片」；中國翻譯則根據意譯主要採用「單片機」，英文縮寫為 MCU。

## 概述

絕大多數現在的單晶片都是基於馮・紐曼結構的，這種結構清楚地定義了嵌入式系統所必需的四個基本部分：一個中央處理器核心，程式記憶體（唯讀記憶體或者快閃記憶體）、資料記憶體（隨機存取記憶體）、一個或者更多的定時 / 計數器，還有用來與外圍裝置以及擴充資源進行通信的輸入 / 輸出埠 —— 所有這些都被整合在單個積體電路晶片上。

單晶片與通用型中央處理單元晶片不同在於前者一般很容易配合最小型的外部支援晶片製成工作電腦，這樣就可以很容易的把單晶片系統植入裝置內部來控制裝置了。近年來為了在指令和資料上使用不同的字寬，並提高處理器線速度，哈佛結構在微控制器（Microcontrollers）和數位訊號處理器也逐漸得到了廣泛的應用。

傳統的微處理器是不允許這麼做的。它要完成單晶片的工作，就必須連接一些其他晶片。比如說，因為晶片上沒有資料記憶體，就必須要添加一些 RAM 的記憶晶片，雖然所添加記憶體的容量很靈活，但是至少還是要添加。另外還需要添加很多連線來傳遞晶片之間的資料。與以上的情況相比，單晶片的工作則相對獨立，一個典型的微控制器只需要一個時鐘發生器和很少的 RAM 和 ROM（或者 EPROM, E2PROM）就可以在軟體和晶振下工作了。同時，微控制器具有豐富的輸入輸出裝置，例如類比數字轉換器、定時器、序列埠，以及其他串行通訊介面，比如 I2C，序列周邊介面，控制器區域網路等。通常，這些整合在內部的裝置可以通過特殊的指令來操作。

單晶片時脈頻率通常較同時代的電腦晶片低，但它價格低廉，能夠提供充足的程式記憶體、豐富的片上介面。某些架構的單晶片生產廠商眾多，例如 8051 系列、Z80 系列。一些現代的微控制器支援一些內建的高階程式語言，比如 BASIC (培基) 語言、C 語言、C++ 等。

## 單晶片的位元數

根據匯流排或資料暫存器的寬度，單晶片又分為 4 位元、8 位元、16 位元和 32 位元單晶片。4 位元單晶片多用於冰箱、洗衣機、微波爐、燈具等簡單的家電控制中；8 位元、16 位元單晶片主要用於一般的控制領域，例如遙控器手把、空調、發動機等，一般不使用作業系統；32 位元用於網路操作、多媒體處理等複雜處理的場合，一般要使用嵌入式作業系統，例如電視、車機、監視器等產品。

## 常見的單晶片

生產這種產品的供應商眾多而且技術各有所長，微芯（Microchip）的 PIC 系列出貨量居於業界領導者地位；Atmel 的 51 系列及 AVR 系列種類眾多，受支援面廣，滿足各種場景的市場需求；德州儀器的 MSP430 系列以低功耗聞名，常用於醫療電子產品及儀器儀表中；瑞薩單晶片在日本汽車業中使用廣泛。

* 英特爾
  * 8-bit 8051 系列
    * 8XC42
    * MCS48
    * MCS51 : Intel 8051 系列歷史悠久，相容產品眾多，使用廣泛
    * 8xC251
  * 16-bit
    * MCS96 系列
    * MXS296
  * 32-bit
    * i960
* ARM （Acorn RISC Machine）系列單晶片

* 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
* 瑞薩科技系列單晶片
  * 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)
  * ARM Cortex-M0 單晶片 (32-bits)
  * ARM Cortex-M4 單晶片 (32-bits)

### 其他系列的單晶片

* MSP430 系列單晶片
* LM3S 系列單晶片
* 北京君正 JZ 系列單晶片
* 8098、80196 系列單晶片
* AT8P5X 系列單晶片
* CZG8000 系列單晶片

## 單晶片的開發

單晶片的軟體開發中，以往多使用組合語言，如今越來越多的使用 C 語言，又或者使用 BASIC 語言等更適合初學者的語言，部分整合式開發環境支援 C++。單晶片的軟體測試需要使用單晶片開發器或模擬器。

隨著技術的發展，2000 年後已經有很多單晶片內建了 ISP（線上編程設計）或支援 IAP，徹底地改變了傳統的開發模式，使得開發單晶片系統時不會損壞晶片的引腳，加速了產品的上市並降低了研發成本，縮短了從設計、製造到現場除錯的時間，簡化了生產流程，大大提高了工作效率。這類單晶片包括 AT89S 系列單晶片、AVR 系列單晶片等。

### 硬體

開發板可以進一步簡化程式的開發和燒制過程。開發板可能包含實際晶片或是仿真器。通過配套的下載線連接電腦與開發板，在電腦上編寫程式下載到開發板。批次生產會用到編程器。

### 軟體開發環境

一些知名的微控制器開發環境有：

* 微芯公司的 MPLAB IDE 可用於該公司全系列微控制器的開發與除錯，除支援該公司的 ASM 組譯器 C 語言編譯器外，也支援許多第三方的編譯器。
* ARM 公司的 μVision 整合開發環境（原為 Keil 公司產品，2005 年該公司已由 ARM 購併），包含組譯器與 C 編譯器，可用於 51 單晶片及 ARM 開發。
* ARM 公司的 Mbed，可以使用線上 IDE 來開發。

#### PROTEUS

Proteus 軟體是初學者入門的首選軟體，它是 Labcenter Electronics 公司的一款商業版電路設計與仿真軟體。內包括 ISIS、ARES 等軟體模組。ARES 模組主要用來完成 PCB 的設計，ISIS 模組用來完成電路原理圖的布圖與仿真。

Proteus 的軟體仿真基於 VSM 技術，它與其他軟體最大的不同也是最大的優勢就在於能仿真大量的單晶片晶片，比如 MCS-51 系列、PIC 系列等等，甚至 ARM 處理器，以及單晶片外圍電路，比如鍵盤、LED、LCD 等等。該軟體還附帶了一些案例和豐富的幫助檔案。

## 參考文獻

## 外部連結

* SDCC - Small Device C Compiler - 一個支援多種微控制器的編譯器自由軟體
* 一個免費提供單晶片教程的網站

## 參見

* 微處理器、數位訊號處理器、單板機
* 嵌入式作業系統
* 系統單晶片
* 工業電腦
* 數位訊號控制器