01前言
1980年,Intel公司MCS-51系列:8051型号单片机(8位单片机处理器架构)Atmel、STC、Philliphs
本笔记都是用的普中89C51板子

安装Keil:安装路径必须是英文路径,不能出现中文
Keil4和Keil5不要放到同一个路径下
-
先创建工程
-
再向工程中添加.c文件(必须和工程在同一目录)
STC-ISP -> 单片机程序(.hex)

1. CPU、MCU、MPU、NPU、GPU、FPU、SoC 概念
| 名称 | 全称 | 说明 |
|---|---|---|
| CPU | Central Processing Unit | 中央处理器,完成数据运算、指令处理 |
| MCU | Microcontroller Unit | 微控制器,集成 CPU + RAM + ROM + 外设(GPIO、UART、定时器等)于单一芯片,用于嵌入式控制。如 STC89C52、STM32。 |
| MPU | Microprocessor Unit | 微处理器,集成度低,只有一块单独的CPU,需要外接一些功能模块(RAM、ROM、控制器芯片),成本高,应用处理复杂任务,可以跑Linux操作系统 |
| NPU | Neural Processing Unit | 神经网络处理单元,AI推理、硬件加速(Mate60达芬奇NPUAI拍照优化) |
| GPU | Graphics Processing Unit | 图形处理单元,处理图形数据,图像渲染 |
| FPU | Floating-Point Unit | 浮点数运算单元,完成浮点数运算 |
| SoC | System on Chip | 片上系统,将 CPU、GPU、NPU、内存控制器、外设等集成在一个芯片上,如手机芯片(骁龙、麒麟)。 |

- MCU = CPU + 内存 + 外设(一体式,低成本控制)
- MPU/SoC = 高性能 CPU + 多核协处理器(需外接资源)
2. RAM 和 ROM 的区别
| 特性 | RAM(随机存取存储器) | ROM(只读存储器) |
|---|---|---|
| 读写性 | 可读可写 | 通常只读(部分可编程) |
| 断电后数据 | 丢失(易失性) | 保留(非易失性) |
| 用途 | 运行程序、存储变量 | 存储固件、启动代码 |
| 速度 | 快 | 较慢 |
| 类型举例 | SRAM、DRAM | Mask ROM、PROM、EPROM、EEPROM、Flash |
📌 在 51 单片机中:
- 内部 RAM:128/256 字节(用于变量、堆栈)
- 内部 ROM(Flash):4KB~64KB(存放程序代码)
3. 51 芯片内部结构(以 8051 为例)
主要模块包括:
- CPU 内核:8 位 ALU、累加器 ACC、寄存器 B、PSW(状态字)
- 4 组 8 位通用寄存器(R0~R7)
- 128 字节内部 RAM
- 4KB 程序存储器(ROM/Flash)
- 4 个 8 位 I/O 端口(P0~P3)
- 2 个 16 位定时器/计数器(T0, T1)
- 1 个全双工串行口(UART)
- 中断系统(5 个中断源)
- 时钟电路 & 复位电路

💡 所有模块通过内部总线互联。
4. 51 芯片 CPU 内核架构
- 8 位哈佛架构:程序存储器和数据存储器地址空间分离
- 指令集:111 条指令,大部分为单周期或双周期
- 寄存器组 :
- 累加器 ACC
- 寄存器 B(用于乘除)
- 程序状态字 PSW(含进位 CY、辅助进位 AC、溢出 OV 等标志)
- 堆栈指针 SP
- 数据指针 DPTR(16 位,访问外部 RAM/ROM)
- ALU:8 位算术逻辑单元
5. 51 单片机最小系统组成
最小系统 = 能让单片机运行程序的最简电路,包含:
- 单片机芯片(如 STC89C52)
- 电源电路:VCC(+5V)、GND
- 复位电路:RC 电路 + 按键(高电平复位,通常 >10ms)
- 时钟电路 :
- 外部晶振(如 11.0592MHz 或 12MHz)
- 两个 30pF 电容接地
- EA 引脚接 VCC(使用内部程序存储器)
✅ 不需要外接 RAM/ROM、按键、LED 等(那些是扩展功能)。
6. 内存 和 外存 的区别
| 内存(主存) | 外存(辅存) | |
|---|---|---|
| 位置 | 主板上(靠近 CPU) | 外部设备 |
| 速度 | 快(纳秒级) | 慢(毫秒级) |
| 容量 | 小(KB~GB) | 大(GB~TB) |
| 易失性 | 易失(断电丢失) | 非易失(断电保留) |
| 例子 | RAM、Cache | 硬盘、U 盘、SD 卡、Flash |

📌 在 51 中:
- 内存 = 内部 RAM(128B)
- 外存 = 外部扩展的 RAM/ROM(通过 P0/P2 总线)
7. 位运算:指定位置 1 和指定位清零
假设要操作变量 x 的第 n 位(从 0 开始):
-
置 1(Set bit):
x |= (1 << n);例:
x |= (1<<3);→ 第 3 位置 1 -
清零(Clear bit):
x &= ~(1 << n);例:
x &= ~(1<<2);→ 第 2 位清零,其他不变 -
取反(Toggle bit):
x ^= (1 << n);
8. 什么是寄存器?
- 定义:CPU 内部的高速存储单元,用于暂存指令、数据、地址。
- 特点 :
- 速度极快(比 RAM 快几十倍)
- 数量有限(几十个)
- 可直接被 CPU 指令操作
- 分类 :
- 通用寄存器:如 R0~R7(51 中)
- 专用寄存器:如 ACC、PSW、SP、DPTR
- I/O 寄存器:如 P0、P1(控制端口)
💡 寄存器是软件控制硬件的"接口"。
9. 数码管动态显示的原理
- 前提:多个数码管共用段选线(a~g),各自有独立的位选线。
- 原理 :
- 快速轮流点亮每个数码管(>50Hz,人眼无闪烁感)
- 某一时刻只亮一个:
- 段选 = 要显示的数字段码
- 位选 = 选中当前数码管(低电平有效)
- 快速刷新,利用人眼视觉暂留效应,看起来所有数码管同时亮。
✅ 优点:节省 I/O 口(8 位段选 + 4 位位选 = 控制 4 位数码管)
❌ 缺点:亮度略低于静态显示
10. 3-8 译码器工作原理
- 功能 :将 3 位二进制输入(A2,A1,A0)译码为 8 路输出(Y0~Y7),每次只有一个输出有效(低电平)。
- 典型芯片:74HC138
- 真值表(简化):
| A2 A1 A0 | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |
|---|---|
| 0 0 0 | 0 1 1 1 1 1 1 1 |
| 0 0 1 | 1 0 1 1 1 1 1 1 |
| ... | ... |
| 1 1 1 | 1 1 1 1 1 1 1 0 |
- 使能端:E1=1, E2A=E2B=0 时才工作
- 应用 :
- 扩展 I/O(用 3 根线控制 8 个设备)
- 数码管位选控制
- 存储器片选
✅ 本质:地址译码器,实现"一对一"选择。
