硬件:51单片机

发布于:2025-09-05 ⋅ 阅读:(24) ⋅ 点赞:(0)

一、基本知识

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)
  1. 点击菜单栏 Project → New Project,选择工程保存路径并命名(如 “LED_test”)。
  2. 选择单片机型号:展开 “Atmel”→选择 “AT89C51”,点击 “否”(不拷贝启动代码,51 单片机基础工程无需额外启动代码)。
  3. 添加 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 文件)
  1. 点击工具栏 “Target Options”(魔术棒图标),切换到 “Output” 选项卡,勾选 “Create HEX File”(生成可烧录的十六进制文件)。
  2. 点击工具栏 “Build”(编译图标),等待编译完成(无错误则显示 “0 Error (s)”),工程目录下会生成 “xxx.hex” 文件。
(4)下载程序(烧录到单片机)
  1. 打开 ISP 软件,连接串口线(电脑→单片机)。
  2. 配置 ISP 软件:
    • 选择芯片型号:“STC89C52/C51/C52RC”。
    • 选择串口:根据电脑设备管理器识别的串口(如 “COM4”)。
    • 加载 HEX 文件:点击 “打开程序文件”,选择工程目录下的 “xxx.hex”。
  3. 烧录:点击 “下载 / 编程” 按钮,手动复位单片机(断电再通电),程序即可烧录到单片机 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 个引脚),需定时器配合,适

网站公告

今日签到

点亮在社区的每一天
去签到