目录
[2.当前常用的 80C51 系列单片机](#2.当前常用的 80C51 系列单片机)
[4. 51 单片机硬件基础认知](#4. 51 单片机硬件基础认知)
[6.3 C51 扩充数据类型](#6.3 C51 扩充数据类型)
1.如何学习单片机
1.1 学习哪种类型的单片机
- 是不是每种单片机都要学习一遍呢?肯定不是。我选择的第一款单片机是51单片机。通过学习 51 单片机后,再往高级的 STM32、DSP 等学习会更快。
- 单片机型号那么多,挨个下来完估计头发白了也学不完。所以学习 51 单片机,必须得学会举一反三、融会贯通的能力。
- 不能仅仅当做51 来学习,要当做"单片机"来学,要把单片机的内部资源都搞清楚、弄明白,每个内部资源模块的用法理解透彻,这样当遇到一个从没有用过的单片机,也能快速知道如何下手去使用它。
1.2 学习单片机的最佳方法
单片机是一门实用技术,学习它已经不是为了应付考试,不需要死机硬背。
学习要领:在实践中成长,不断的去练习!(遇到问题查书比直接看书的效果要好过百倍。)
1.3单片机的应用
应用非常广泛,电子、电气、自动化、通信、工业测控系统(如 ATMEL公司的 AT89 系列)等领域都有大量的应用。
生活中常见的电子产品如:智能小车、LED 点阵屏、四轴飞行器、电子密码锁、门铃、超市储物柜、智能电饭煲、智能台灯、智能风扇等。
工业领域的应用主要体现在单片机的控制、通信方面。
串口:可以和 WFIF/GPS/蓝牙等模块实现无线控制
AD 接口:可以采集光敏/烟雾传感器/可燃气体传感器等模拟信号,还可以使用 AD 设计简易示波器。
驱动各种设备:控制直流电机、交流电机、步进电机、伺服电机、变频电机、电磁铁、电磁阀、LED、LCD 等等
日常生活中可采用 51 单片机设计的电子产品:智能手环,微型四轴飞行器,平衡车、扫地机、移动 POST 机,智能电饭锅,3D 打印机、机器人等。
1.4 相关工作
主要可以从事智能电子产品、通信技术、运动控制技术等相关工作,当然单片机本身仅是一个工具,一个产品开发往往还会涉及到周边的一些技术,所以确定好应用方向后,还需要熟悉它的外围技术。(如工业通信方面的产品,使用的是 51 单片机,但要和工业产品 PLC 通信不仅要掌握 51 单片机,还要掌握 Modbus 通信协议的相关知识,所以在确定自己
应用方向后,还需要了解这个方向涉及到的外围技术。)
2.当前常用的 80C51 系列单片机
主要产品有:
- Intel(英特尔)的:i80C31、i80C51、i87C51,i80C32、i80C52、i87C52 等;
- ATMEL(艾德梅尔)的:AT89C51、AT89C52、AT89C2051,AT89S51(RC),AT89S52(RC)等;
- Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品;
- STC(国产宏晶)单片机:STC89C51、STC89C52、STC89C516、STC90C516 等众
多品牌。
3.嵌入式与核心概念辨析
**嵌入式:**以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统。
核心概念:
| 术语 | 全称 | 核心特性 | 应用场景 |
|---|---|---|---|
| MCU | Micro Controller Unit(微控制器) | 集成度高,单芯片包含 CPU、RAM、ROM、IO 控制器等所有功能 | 简单控制场景,如 51 单片机 |
| CPU | Central Processing Unit(中央处理器) | 核心功能为数据运算和指令处理,性能决定运算速度 | 所有计算设备的核心单元 |
| MPU | Micro Processing Unit(微处理器) | 仅含 CPU 模块,需外接存储、外设等 | 复杂应用,可运行 Linux 系统 |
| GPU | Graphics Processing Unit(图像处理单元) | 专注图形数据处理和渲染 | 图像显示、游戏等场景 |
| NPU | Neural Processing Unit(神经网络处理单元) | 负责 AI 推理、硬件加速 | 智能设备的 AI 功能(如华为达芬奇 NPU,AI自动实现照片优化) |
| FPU | Float Point Unit(浮点数单元) | 处理浮点数运算(遵循 IEE754 标准) | 需高精度运算的场景 |
| SOC | System On Chip(片上系统) | 集成多个功能芯片于一体 | 高端嵌入式设备(如手机芯片) |
| ROM | Read-Only Memory(只读存储器) | 存放程序和指令,掉电数据不丢失 | 用于程序存储,大小为4kbytes (52 为 8K)(Flash可反复擦写 1000 次的 ) |
| RAM | Random Access Memory(随机访问存储器) | 存放程序运行时的变量,掉电数据丢失 | 128bytes 的数据存储器(RAM) (52 有 256bytes 的 RAM) |
4. 51 单片机硬件基础认知
原理图:
实物图:

特点:
- 具有自编程能力,即支持 ISP(In System Programming,在系统可编程)/IAP(In-Application Programming,在应用可编程)
普通单片机:
- 你要用下载器、仿真器插上去,才能烧程序
- 芯片自己不能改自己内部的程序
自编程能力 = 芯片自己能改写自己的 Flash / 程序存储器
- 不用外部烧录器
- 芯片跑着程序的时候,自己给自己更新固件
- 可以通过串口、WiFi、蓝牙、4G、CAN 等,远程升级程序
实际用途
- 远程升级固件产品卖出去了,不用拆机器、不用寄回,发个新版本程序,WiFi / 蓝牙直接更。
- 参数保存把配置、校准值存在 Flash,掉电不丢。
- 多套程序切换一个芯片里放多个功能,自己切换运行。
- 做OTA、Bootloader(启动引导程序) 必备。
哪些单片机有这功能?
几乎你现在学的都有:
- STM32(全系列都支持 IAP)
- 51 单片机(部分型号支持 IAP)
- ESP32、ESP8266(自带 WiFi 远程升级)
- PIC、AVR 等主流 MCU 基本都有
资源:
- 通用 I/O 口 (35/39 个): 复位后为------P1/P2/P3/P4 是准双向口/弱上拉(普通 8051 传统 I/O 口); P0 口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。
P0 口(P0_0~P0_7):8 位双向 I/O 口
P1 口(P1_0~P1_7):8 位准双向 I/O 口(内部自带上拉电阻,这种接口输出没有高阻态,输入也不能锁存,故不是真正的双向 I/O 口。 之所以称它为"准双向"是因为该口在作为输入使用前,要先向该口进行写 1操作,然后单片机内部才可正确读出外部信号,也就是要使其先有个"准"备的过程,所以才称为准双向口。)
P2 口(P2_0~P2_7):8 位准双向 I/O 口
P3 口(P3_0~P3_7):8 位准双向 I/O 口(部分引脚含第二功能,如串口、中断),需要要通过相应的寄存器设置即可配置对应的附加功能,同一时刻,每个引脚只能使用该引脚的一个功能。
- 外部中断: 4 路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒
- 有 16 位定时器/ 计数器:2个/3个,其中定时器 0 还可以当成 2 个 8 位定时器使用。
- 通用异步串行口(UART) :还可用定时器软件实现多个 UART------可以和 WFIF/GPS/蓝牙等模块实现无线控制
- ROM: 4K / 8K / 13K / 16K / 32K / 64K 字节(STC89C516)
- RAM:片上集成 128 字节/ 256 字节/ 512 字节或1280 字节 RAM
- ISP(在系统可编程) / IAP(在应用可编程): 无需专用编程器, 无需专用仿真器,可通过串口( RxD/P3.0, TxD/P3.1)直接下载用户程序,数秒即可完成一片。
- 内部集成 MAX810 专用复位电路(HD 版本和 90C 版本才有):外部晶体20M 以下时,可省外部复位电路,复位脚可直接接地。
- 看门狗
5.开发工具
- 编程软件:Keil4(C51V901 版本)

注:①main.c头文件
cpp#include "reg52.h" void main() { while (1) { } }②编译按钮:
第一个:它是编译当前界面所在的一个C文件。
第二个:联合编译整个工程,发生修改的文件重新编译,并生成可执行文件。
第三个:联合编译整个工程,所有文件都重新编译,并生成可执行文件。
一般情况下,不使用第三个编译按钮,第二个最常用。因为第三个每次都把所有的文件都重新编译,需要消耗大量的时间。 当工程比较小的时候,感觉不到,但是工程较大的时候就不行了。
- 下载软件:STC-ISP 软件(比普中的软件好,该软件内有串口助手、定时器初值计算、波特率计算、延时函数生成等好用功能)

- 硬件:51 开发板(如 STC89C52RC)、串口线(USB-SERIAL CH340)、杜邦线

- 硬件调试工具:逻辑分析仪(8CH 24MHz)(使用logic软件
)

逻辑分析仪使用技巧
逻辑分析仪的核心作用是可视化引脚电平变化,快速定位程序问题:
- 通道连接:CH0-CH7 对应 8 个检测通道,需通过杜邦线与目标引脚连接
- 接地关键:必须将逻辑分析仪 GND 与单片机 GND 连接,否则信号不稳定
- 操作流程:新建调试窗口→设置通道速率→启动抓取→分析方波波形
点击「Device Setting」设置通道和速率(如 8 MS/s)
点击「开始」按钮,抓取引脚电平波形(方波形式展示电平变化)
- 异常排查:若波形无变化,检查引脚连接是否正确、电源是否供电
6.必要的数字电路与C语言基础
6.1二进制、八进制、十进制、十六进制数之间的任意转换:
用 Windows 系统自带的计算器,选择程序员模式可方便进行计算

注:十六进制的字母不区分大小写
6.2位运算
| 位运算 | 名称 | 核心特性 | 应用场景 | 代码示例 |
|---|---|---|---|---|
| & | 按位与 | 对应位全 1 则为 1,有 0 则为 0 | 指定位清 0(其余位不变) | 将 t 的 bit2 清 0: t &= ~(1 << 2) |
| | | 按位或 | 对应位有 1 则为 1,全 0 则为 0 | 指定位置 1(其余位不变) | 将 t 的 bit0 置 1: t |= (1 << 0) |
| ~ | 按位取反 | 对应位 bit 翻转(0 变 1,1 变 0) | 批量位翻转 | 翻转 t 的所有位: t = ~t |
| ^ | 按位异或 | 对应位相同为 0,不同为 1 | 电平翻转 | 翻转 t 的 bit0 电平: t ^= (1 << 0) |
注:①很多硬件开发都用 C 语言编程,如各种单片机、DSP、ARM 等。
②单片机的 C编程与汇编 ASM编程相比,有如下优点:
- 对单片机的指令系统不要求有任何的了解,就可以用 C 语言直接编程操作单片机。
- 库中包含许多标准子程序,具有较强的数据处理能力,使用方便
- 具有方便的模块化编程技术,大大提供程序的可移植性。
③1 个字节等于 8 位(即 1B=8b 或 1Byte=8bit)
6.3 C51 扩充数据类型

例如:sfr P0=0x80;(语句的意义是,把单片机内部地址 0x80 处的这个寄存器重新起名叫 P0,以后我们在程序中可直接操作 P0,就相当于直接对单片机内部的 0x80 地址处的寄存器进行作。)
例如:sbit CY=PSW^7;"语句的意思是,将SCON 这个寄存器的次低位重新命名为 CY,以后我们要单独操作 PSW 寄存器的最高位时,便可直接操作 CY,其他雷同。(在串口等寄存器配置过程中很实用)
6.4类型转换
隐式转换:bit→char→int→long→float→signed→unsigned
显示转换(强制类型转换):()



