硬件:51单片机
一、基本知识
1.相关概念
1.计算机
计算机:
通用型计算机:PC、平板、手机
专用型计算机:无人机,完成某项特定功能而设计计算机
计算机五大组成部分:
- 运算器:负责数据运算。
- 控制器:进行指令控制。
- 存储器:包含内存与外存。
- 输入设备:如鼠标、键盘、摄像头等。
- 输出设备:例如显示器。
2.软件
涉及编程语言(C/C++)、操作系统(Linux,具备文件、多任务、网络等功能)、数据结构、数据库。
3.硬件
- 51 单片机:包含硬件概念(定时器、PWM、中断)、原理图、寄存器,以及外设操作(LED、按键、数码管、蜂鸣器、传感器)。
- STM32 单片机:主要进行库开发,有标准库、HAL 库。
- ARM:
- 是英国公司,负责设计处理器芯片方案,三星(SAMSUNG)、爱特梅尔(ATMEL)、恩智浦(NXP)等采用 ARM 芯片方案,进而有 ARM 开发板。
- 系列包括 ARM7、ARM9、ARM11。
- 不同 Cortex 系列应用领域:
- Cortex - A:应用于高端领域,处理复杂任务,可运行操作系统(如 Linux,支持文件系统、多任务调度、网络等)。
- Cortex - R:应用于实时控制领域,实时性要求高,如汽车电子领域。
- Cortex - M:应用于微控制器领域,即 MCU(微控制单元)领域(IOT物联网智能家居控制领域)。
4.嵌入式
以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统
- 以应用为中心:涵盖消费电子(手机、蓝牙耳机、智能音响)、医疗电子(心率脉搏、呼吸机)、无人机(大疆 DJ)、机器人(人形四足机器人)等领域。
- 软硬件可裁剪:加入需要的硬件/软件功能,将不需要的硬件/软件裁剪掉(低功耗、低成本)
5.51单片机
1980年,由Intel公司MCS-51系列:8051型号单片机(工业控制领域),由MCU转型到CPU
Atmel(AT89C51)、Philip(P89V51系列单片机,增强型单片机ISP在线编程)、STC宏晶半导体(STC89C51、STC89C52、STC89C52RC)
二、单片机
1.相关概念
名称 | 英文全称 | 主要功能 | 集成度 | 应用场景 | 成本 | 特点 |
---|---|---|---|---|---|---|
CPU | Central Processing Unit(中央处理器) | 完成数据运算、指令处理 | - | 通用计算场景,如电脑、服务器等 | - | CPU 性能越高,完成指令处理和数据运算的速度越快 |
MCU | Micro Controller Unit(微控制器) | 用于简单控制 | 集成度比较高,将所有功能集成到芯片中(CPU、RAM、ROM、定时器、UART、IO) | 对成本敏感、功能需求相对简单的控制场景,如家电控制、工业控制等 | 低 | 集成度比较高,将所有功能集成到芯片中(CPU、RAM、ROM、定时器、UART、IO),简单控制,成本低 |
MPU | Micro Processing Unit(微处理器) | 进行数据处理 | 集成度低,只有一块单独的 CPU,需外接外设、存储模块 | 复杂应用领域,跑 Linux 操作系统 | 高 | 集成度低,只有一块单独的 CPU,需外接外设、存储模块,复杂应用领域,跑 Linux 操作系统,成本高 |
GPU | Graphics Processing Unit(图形处理器) | 用作图形处理、图形渲染 | - | 对图形显示质量要求高的场景,如游戏、图形设计、视频编辑等 | - | GPU 性能越好,图形显示的质量越好 |
NPU | Neural Processing Unit(神经网络处理器) | 用于 AI 推理、硬件加速、神经网络处理(卷积计算) | - | 人工智能相关领域,如智能安防、智能家居等 | - | AI 推理、硬件加速、神经网络处理(卷积计算)-> 华为 Mate60 达芬奇 NPU AI 自动优化照片 |
FPU | Floating Processing Unit(浮点数运算单元) | 完成浮点数的运算和处理(完全遵循 IEEE 754) | 大部分集成在 CPU 内部 | 对浮点数运算有需求的场景,如科学计算、工程计算等 | - | 完成浮点数的运算和处理(完全遵循 IEEE 754),大部分集成在 CPU 内部 |
SOC | System On Chip(片上系统) | 将多个芯片功能集成 | 集成度比较高,将多个芯片集成到一块芯片上(存储芯片、外设芯片) | 各种对集成度要求高的场景,如智能手机、平板电脑等 | - | 集成度比较高,将多个芯片集成到一块芯片上(存储芯片、外设芯片) |
2.ARM和ROM
外存:主要存放程序、代码、指令,掉电数据不丢失,读写速度慢,价格便宜(移动硬盘)
内存:主要存放程序运行过程中的临时变量,掉电数据不丢失,读写速度快,价格昂贵(内存条 16G 300)
类型 | 功能 | 掉电数据保存 | 读写速度 | 价格 | 示例 |
---|---|---|---|---|---|
内存 | 存放程序运行中的临时变量 | 丢失 | 快 | 昂贵 | 电脑内存条(16G 约 300 元) |
外存 | 存放程序、代码、指令 | 不丢失 | 慢 | 便宜 | 移动硬盘(1T 约 300 元) |
ROM:Read-Only Memory,只读存储器, 存放单片机程序、指令、掉电数据不丢失
RAM:Random Access Memory,随机访问存储器,存放临时变量、临时数据,掉电数据不丢失
类型 | 全称 | 功能 | 掉电数据保存 | 单片机场景应用 |
---|---|---|---|---|
RAM | Random Access Memory | 随机访问存储器,存放临时数据 / 变量 | 丢失 | 存储程序运行中的中间结果(如计算过程中的数值) |
ROM | Read-Only Memory | 只读存储器,存放程序、指令 | 不丢失 | 固化单片机的控制程序(如 LED 点亮逻辑代码) |
3.单片机内部结构
CPU、RAM、ROM、Timer、PWM、IO、中断
三大总线:
地址总线:用来寻址ARM中的地址,所能寻址的最大范围为2^8 , 256byte , danxiang
数据总线:通过地址总线去获取数据, 数据交互双向
控制总线:时序控制、IO控制、中断
三.51单片机
1.原理图
2.51 单片机芯片封装与引脚
- 主流封装:STC89C52RC 常用DIP40 封装(双列直插式,共 40 个引脚)。
- 引脚分组:40 个引脚划分为 4 组 IO 端口(如 P0、P1、P2、P3),每组对应一个 8 位寄存器(如
unsigned char P2;
,通过操作寄存器控制引脚电平)。 - 网络编号:原理图中相同编号的引脚表示 “物理互通”,无需实际连线(如 P1.0 和 LED 阴极标注同一编号,即表示两者连接)。
3. LED 模块
- 核心特性:单向导通性(电流只能从阳极流向阴极,反向截止)。
- 分类与点亮逻辑:
类型 阳极连接方式 阴极连接方式 点亮条件(核心逻辑) 共阳极 LED 所有阳极接电源正极(VCC,5V) 阴极接单片机 IO 引脚 单片机 IO 引脚输出低电平(0V),形成正向电压差 共阴极 LED 所有阳极接单片机 IO 引脚 阴极接电源负极(GND) 单片机 IO 引脚输出高电平(5V),形成正向电压差
四、位运算
位运算是通过操作二进制位(bit)控制 IO 引脚电平的关键,常用三种运算:
1. 按位或(|):指定位置 1
- 规则:二进制对应位中,有 1 则为 1,全 0 则为 0。
- 应用场景:将寄存器的某几位设置为高电平(1),不影响其他位。
- 示例:将变量
t=0x64
(二进制0110 0100
)的 bit0 和 bit7 置 1:unsigned char t = 0x64; t |= (1 << 0) | (1 << 7); // 1<<0=0x01(bit0为1),1<<7=0x80(bit7为1) // 结果:t=0xE5(二进制1110 0101)
2. 按位与(&):指定位清 0
- 规则:二进制对应位中,全 1 则为 1,有 0 则为 0。
- 应用场景:将寄存器的某几位设置为低电平(0),不影响其他位(需配合 “取反~”)。
- 示例:将变量
t=0xFF
(二进制1111 1111
)的 bit0 和 bit7 清 0:unsigned char t = 0xFF; t &= ~(1 << 0); // ~(1<<0)=0xFE(bit0为0,其他为1) t &= ~(1 << 7); // ~(1<<7)=0x7F(bit7为0,其他为1) // 结果:t=0x7E(二进制0111 1110)
3. 按位异或(^):指定位翻转
- 规则:二进制对应位中,相同为 0,相异为 1。
- 应用场景:翻转某几位的电平(1 变 0,0 变 1)。
五、51 单片机程序开发流程(创建→编译→下载)
1. 工具准备
- 编译软件:Keil4(51 单片机专用编译工具,支持生成 HEX 文件)。
- 下载工具:ISP 软件(通过串口将 HEX 文件烧录到单片机 ROM)。
- 硬件连接:串口线(连接电脑与单片机,用于程序下载)。
2. 详细流程
(1)创建工程(Keil4)
- 点击菜单栏 Project → New Project,选择工程保存路径并命名(如 “LED_test”)。
- 选择单片机型号:展开 “Atmel”→选择 “AT89C51”,点击 “否”(不拷贝启动代码,51 单片机基础工程无需额外启动代码)。
- 添加 C 文件:点击工具栏 “Text” 新建空白文件,按
Ctrl+S
保存为 “main.c”(需与工程同目录);双击左侧 “Group 1”,选择 “Add Files to Group 'Group 1'”,将 “main.c” 添加到工程。
(2)编写程序(核心要点)
- 必须包含 51 单片机头文件(提供寄存器定义):
#include <reg51.h>
。 - 必须添加
while(1)
循环:避免程序执行完后 “跑飞”(单片机程序需持续运行)。 - 示例(LED 点亮程序框架):
#include <reg51.h>void main() {while(1) { // 死循环,确保程序持续运行P1 = 0xFE; // P1.0引脚输出低电平(假设LED为共阳极,点亮LED)} }
(3)编译工程(生成 HEX 文件)
- 点击工具栏 “Target Options”(魔术棒图标),切换到 “Output” 选项卡,勾选 “Create HEX File”(生成可烧录的十六进制文件)。
- 点击工具栏 “Build”(编译图标),等待编译完成(无错误则显示 “0 Error (s)”),工程目录下会生成 “xxx.hex” 文件。
(4)下载程序(烧录到单片机)
- 打开 ISP 软件,连接串口线(电脑→单片机)。
- 配置 ISP 软件:
- 选择芯片型号:“STC89C52/C51/C52RC”。
- 选择串口:根据电脑设备管理器识别的串口(如 “COM4”)。
- 加载 HEX 文件:点击 “打开程序文件”,选择工程目录下的 “xxx.hex”。
- 烧录:点击 “下载 / 编程” 按钮,手动复位单片机(断电再通电),程序即可烧录到单片机 ROM 中。
六、数码管显示(51 单片机常用外设)
1. 数码管基础
- 结构:51 单片机常用4 位共阴极数码管,每一位可独立显示 0~9、A~F 等字符;同一时刻只能显示 1 位(需通过 “动态扫描” 实现多位同时显示)。
- 核心概念:
- 位选:选中某一位数码管(通过操作寄存器对应 bit 置 1,如 P1.0 置 1 选中第 1 位)。
- 段选:控制选中的数码管显示特定字符(通过操作段引脚输出对应电平,如输出 “0x3F” 显示数字 “0”)。
2. 显示方式
显示方式 | 原理 | 特点 |
---|---|---|
静态显示 | 每一位数码管单独接控制引脚,持续通电显示 | 代码简单,占用 IO 口多(4 位需 32 个引脚),适合少位数显示 |
动态显示 | 利用人眼 “视觉暂留”,快速切换位选和段选 | 占用 IO 口少(4 位仅需 12 个引脚),需定时器配合,适 |