1.1 单片机概述
单片机(Single-Chip Microcomputer),也称为微控制器(Microcontroller Unit, MCU),是一种将计算机的基本功能部件集成在一块芯片上的微型计算机系统。
与通用计算机不同,单片机是为特定应用而设计的嵌入式系统核心,具有体积小、功耗低、成本低、可靠性高等特点,广泛应用于工业控制、智能家电、通信设备、汽车电子等领域。
单片机的基本组成
要点提示
单片机将CPU、存储器、I/O接口、定时器/计数器等功能部件集成在单一芯片上,是嵌入式系统的核心部件。
实例说明
以常见的STC89C52单片机为例:它采用8位CPU,内置8KB Flash ROM、512B RAM、32个I/O口、3个16位定时器/计数器、1个全双工串行口,工作频率最高可达35MHz,广泛应用于各类嵌入式系统中。
1.2 单片机的发展历程
单片机的发展经历了从简单到复杂、从8位到32位、从低速到高速的演变过程。了解其发展历程,有助于我们更好地理解单片机的技术演进和应用趋势。
第一阶段(1976-1978):萌芽阶段
4位/8位Intel公司推出了世界上第一款单片机8048,标志着单片机的诞生。这一阶段的单片机功能简单,集成度较低,主要用于简单的控制任务。
代表产品:Intel 8048、Motorola 6801
第二阶段(1978-1983):发展阶段
8位Intel推出8051系列单片机,奠定了51内核的基础,成为经典单片机架构。这一阶段单片机性能大幅提升,广泛应用于工业控制领域。
代表产品:Intel 8051、8052,Zilog Z8
第三阶段(1983-1990):成熟阶段
8位/16位各大厂商纷纷推出兼容51内核的单片机,如Atmel的AT89系列、STC系列等,单片机应用领域进一步扩大,价格大幅下降。
代表产品:Atmel AT89C51、Philips 80C51、STC89C52
第四阶段(1990-至今):高性能阶段
32位/64位32位单片机、ARM架构单片机兴起,性能大幅提升,应用领域更加广泛,涵盖物联网、人工智能、智能家居等新兴领域。
代表产品:STM32系列、ESP32、Arduino、树莓派Pico
知识扩展
51系列单片机之所以经典,是因为其架构简单、指令系统规范、学习资源丰富,至今仍是高校教学和企业应用中最广泛使用的单片机之一。尽管32位单片机性能更强,但51单片机在简单控制场景中仍有不可替代的优势。
1.3 单片机的特点
单片机作为一种专用的微型计算机,与通用计算机相比具有鲜明的特点。这些特点决定了它在嵌入式系统中的独特地位。
集成度高
将CPU、RAM、ROM、I/O接口、定时器等集成在单一芯片上,体积小、重量轻,便于嵌入式应用。
典型尺寸:DIP-40封装仅约52mm×15mm
功耗低
设计有多种低功耗模式(如空闲模式、掉电模式),适合电池供电的便携式设备。
典型功耗:工作模式约15-30mA,掉电模式仅1μA
成本低
批量生产成本低廉,适合大规模应用和消费类电子产品,性价比高。
典型价格:STC89C52批量价约3-5元/片
可靠性高
抗干扰能力强,工业级设计,适合工业环境等恶劣条件下稳定工作。
工作温度范围:工业级-40°C ~ +85°C
单片机与通用计算机的对比
| 对比项 | 单片机 | 通用计算机 |
|---|---|---|
| 用途 | 专用控制 | 通用计算 |
| 体积 | 芯片级,极小 | 机箱级,较大 |
| 功耗 | mW级,极低 | W级,较高 |
| 成本 | 几元到几十元 | 几百到几千元 |
| 可靠性 | 高,抗干扰强 | 一般 |
1.4 单片机的应用领域
单片机凭借其独特的优势,已经渗透到国民经济的各个领域。从日常生活中的家用电器到工业生产中的自动化设备,从交通工具到医疗设备,单片机无处不在。
工业控制
机床控制、自动化生产线、智能仪表、过程控制等
案例:PLC可编程控制器、CNC数控机床
智能家居
智能家电、安防系统、环境监控、智能照明等
案例:智能门锁、温湿度监控系统
汽车电子
发动机控制、安全系统、车载娱乐、车身控制等
案例:ECU发动机控制单元、ABS防抱死系统
医疗设备
监护仪、诊断设备、康复器材、医疗仪器等
案例:电子血压计、血糖仪、体温计
消费电子
游戏机、数码产品、智能玩具、可穿戴设备等
案例:智能手表、无人机飞控系统
通信设备
手机、路由器、交换机、物联网设备等
案例:ESP8266 WiFi模块、LoRa通信节点
综合案例:基于单片机的智能温室大棚系统
利用单片机采集温度、湿度、光照等环境参数,通过传感器实时监测,当参数超出设定范围时自动控制通风、灌溉、补光等设备。系统可通过无线模块将数据上传到云端,实现远程监控和管理。这是单片机在现代农业中的典型应用。
1.5 数制与编码
在单片机系统中,数据的表示和处理都基于二进制。掌握不同数制之间的转换方法以及各种编码方式,是学习单片机编程的基础。
1.5.1 常用数制
| 数制 | 基数 | 数码 | 后缀 | 示例 |
|---|---|---|---|---|
| 十进制 | 10 | 0-9 | D(可省略) | 123D 或 123 |
| 二进制 | 2 | 0-1 | B | 1010B |
| 八进制 | 8 | 0-7 | Q 或 O | 17Q |
| 十六进制 | 16 | 0-9, A-F | H | 1A3FH |
1.5.2 数制转换方法
十进制 → 二进制(除2取余法)
将十进制数不断除以2,取余数,直到商为0,余数从下往上排列即为二进制数。
例:将 25D 转换为二进制
25 2 = 12 …… 余 1 ↑
12 ÷ 2 = 6 …… 余 0 |
6 ÷ 2 = 3 …… 余 0 |
3 ÷ 2 = 1 …… 余 1 |
1 ÷ 2 = 0 …… 余 1 |
|
结果:25D = 11001B ←─┘
二进制 → 十六进制(四位一组法)
从右往左每4位二进制数分为一组,不足4位的在左边补0,每组转换为对应的十六进制数。
例:将 11010110B 转换为十六进制
分组:1101 0110
↓ ↓
D 6
结果:11010110B = D6H
十六进制 → 十进制(按权展开法)
将十六进制数按位权展开,各位数字乘以对应的权值后求和。
例:将 1AH 转换为十进制
1AH = 1 × 16¹ + A × 16⁰
= 1 × 16 + 10 × 1
= 16 + 10
= 26D
结果:1AH = 26D
1.5.3 BCD码
BCD码(Binary-Coded Decimal)是用4位二进制数表示1位十进制数的编码方式。
| 十进制数 | 8421 BCD码 | 说明 |
|---|---|---|
| 0 | 0000 | 4位二进制表示 |
| 5 | 0101 | 5 = 0101B |
| 9 | 1001 | 9 = 1001B |
| 36 | 0011 0110 | 3→0011, 6→0110 |
知识扩展
BCD码分为压缩BCD码和非压缩BCD码。压缩BCD码用4位二进制表示1位十进制数(一个字节存两位),非压缩BCD码用8位二进制表示1位十进制数(高4位为0)。BCD码常用于数码管显示和十进制运算中。
1.5.4 ASCII码
ASCII(American Standard Code for Information Interchange)是美国标准信息交换码,用7位二进制数表示128个字符。
数字 0-9
30H - 39H
大写字母 A-Z
41H - 5AH
小写字母 a-z
61H - 7AH
; ASCII码常用字符对照
; '0' = 30H (48D) 'A' = 41H (65D) 'a' = 61H (97D)
; '9' = 39H (57D) 'Z' = 5AH (90D) 'z' = 7AH (122D)
; 大小写转换:小写 = 大写 + 20H
; 例:'A'(41H) + 20H = 'a'(61H)
1.6 二进制运算
1.6.1 二进制算术运算
加法运算
规则:逢二进一
1011B (11D)
+ 1101B (13D)
-------
11000B (24D)
减法运算
规则:借一当二
1100B (12D)
- 1011B (11D)
-------
0001B (1D)
乘法运算
规则:移位相加
101B (5D)
× 11B (3D)
-------
101
+1010
-------
1111B (15D)
除法运算
规则:试商法
110B (6D)
-------
10B |1100B (12D)
-10
---
010
-10
---
0
1.6.2 二进制逻辑运算
逻辑非(NOT)
每一位取反:0变1,1变0
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
逻辑与(AND)
两位都为1时结果为1
| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
逻辑或(OR)
有一位为1时结果为1
| A | B | A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
逻辑异或(XOR)
两位不同时结果为1
| A | B | A XOR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
1.6.3 二进制移位运算
左移运算(SHL)
各位左移,右边补0
原数: 1010B (10D)
左移1位:10100B (20D)
规律:左移n位相当于乘以2ⁿ
右移运算(SHR)
各位右移,左边补0(逻辑右移)
原数: 110010B (50D)
右移3位: 000110B (6D)
规律:右移n位相当于除以2ⁿ
1.7 数据单位与存储
1.7.1 基本数据单位
位(bit)
最小数据单位,只有0和1两种状态
字节(Byte)
最基本存储单位,1字节 = 8位,可表示0~255
字(Word)
一次处理的数据长度,8位机1字=1字节,16位机1字=2字节
双字(Double Word)
两个字的长度,8位机双字=2字节,32位机双字=4字节
1.7.2 存储容量单位
| 单位 | 缩写 | 换算关系 |
|---|---|---|
| 字节 | B | 1B = 8 bit |
| 千字节 | KB | 1KB = 1024B |
| 兆字节 | MB | 1MB = 1024KB |
| 吉字节 | GB | 1GB = 1024MB |
| 太字节 | TB | 1TB = 1024GB |
1.7.3 单片机中的存储器
程序存储器(ROM)
存储程序代码和常量,掉电数据不丢失
ROM:只读,出厂固化
Flash:电可擦除,目前最常用
EEPROM:可字节擦除
数据存储器(RAM)
存储临时数据和变量,掉电数据丢失
SRAM:静态RAM,速度快
DRAM:动态RAM,需刷新
内部RAM:速度快但容量小
1.7.4 地址空间
8051单片机的地址空间:
程序存储器
0000H ~ FFFFH(64KB)
内部数据存储器
00H ~ FFH(256B)
外部数据存储器
0000H ~ FFFFH(64KB)
特殊功能寄存器
80H ~ FFH(高128B)
1.8 带符号数
1.8.1 机器数与真值
机器数
计算机中实际存储的二进制数,最高位为符号位(0正1负)
+5:0000 0101B
-5:1000 0101B
真值
带符号数的实际数值,用+/-表示符号
0000 0101B:真值为+5
1000 0101B:真值为-5
1.8.2 原码、反码和补码
| 表示方法 | 定义 | +5 | -5 |
|---|---|---|---|
| 原码 | 符号位+绝对值 | 0000 0101B | 1000 0101B |
| 反码 | 正数同原码,负数取反 | 0000 0101B | 1111 1010B |
| 补码 | 正数同原码,负数反码+1 | 0000 0101B | 1111 1011B |
1.8.3 补码运算
补码加法
例:计算 5 + (-3)
5的补码: 00000101
+(-3)的补码:11111101
--------------------
100000010 ← 舍去进位
结果:00000010B = 2
补码减法
例:计算 5 - 3
5的补码: 00000101
+(-3)的补码:11111101
--------------------
100000010 ← 舍去进位
结果:00000010B = 2
1.8.4 溢出判断
当运算结果超出机器表示范围时产生溢出,有两种判断方法:
双符号位法
用两位符号位,结果符号位为01或10表示溢出
进位判断法
最高数值位进位与符号位进位不同表示溢出
1.9 本章小结
单片机定义:单片机是将CPU、存储器、I/O接口等功能部件集成在单一芯片上的微型计算机系统,也称为微控制器(MCU)。
发展历程:经历了四个阶段,从Intel 8048到现代32位ARM单片机,功能不断增强。
主要特点:集成度高、功耗低、成本低、可靠性高,适合嵌入式应用。
应用领域:广泛应用于工业控制、智能家居、汽车电子、医疗设备、消费电子和通信设备等领域。
数制基础:掌握二进制、十进制、十六进制及其转换,了解BCD码和ASCII码。
二进制运算:掌握二进制算术运算(加、减、乘、除)、逻辑运算(与、或、非、异或)和移位运算(左移、右移)。
数据单位:理解位、字节、字、双字的概念,掌握存储容量单位换算,了解单片机的地址空间划分。
带符号数:理解机器数与真值的概念,掌握原码、反码、补码的表示方法及补码运算规则。