嵌入式学习 51单片机基础

发布于:2025-09-03 ⋅ 阅读:(17) ⋅ 点赞:(0)

嵌入式系统定义

以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统。


51单片机发展及厂商

时间 厂商/型号 特点
1980 Intel MCS-51系列(8051) 工业控制领域,MCU转型到CPU
- Atmel AT89C51 兼容MCS-51架构
- Philip P89V51(增强型) 支持ISP在线编程
- STC宏晶半导体(STC89C51等) 广泛用于教学和低成本开发

核心概念对比

处理器类型
缩写 全称 功能特点 应用场景
CPU Central Processing Unit 数据运算、指令处理 通用计算
MCU Micro Controller Unit 高度集成(CPU+RAM+ROM+外设),低成本 简单控制(家电、传感器)
MPU Micro Processing Unit 低集成度(需外接存储/外设),支持复杂系统 Linux/高端嵌入式设备
GPU Graphics Processing Unit 图形渲染加速 游戏、图像处理
NPU Neural Processing Unit AI推理、神经网络加速(如华为达芬奇NPU) 智能终端
FPU Floating Point Unit 浮点数运算(遵循IEEE 754) 科学计算
其他术语
  • SOC:System On Chip,片上系统(集成多芯片功能,如手机处理器)。

存储类型对比

类型 特点 典型用途 示例
外存 掉电不丢失,速度慢,成本低 存储程序/代码 硬盘(1T约300元)
内存 掉电丢失,速度快,成本高 运行时临时数据存储 内存条(16G约300元)
ROM 只读存储器,存程序指令 固化程序(如单片机代码) Flash ROM
RAM 随机存取存储器,存临时变量 运行时数据缓存 SRAM/DRAM

单片机内部结构

主要模块
  • 核心单元:CPU(运算/控制)
  • 存储单元:ROM(程序存储)、RAM(数据缓存)
  • 外设模块:Timer(定时)、PWM(脉宽调制)、IO(输入输出)、UART(串口通信)、中断系统。
三大总线
总线类型 功能 方向 示例参数
地址总线 寻址RAM空间(范围2^n) 单向 8位总线→256字节
数据总线 传输数据 双向 8位并行传输
控制总线 时序/中断/IO控制信号 双向 读写信号线

补充说明

  • 浮点运算:FPU通常集成于CPU内,提升科学计算效率。
  • SOC应用:如手机芯片集成CPU+GPU+NPU+基带,实现多功能一体化。

(注:表格和分级标题优化了信息呈现,关键参数和对比清晰标出。)

芯片信息表

属性 描述
型号 STC89C52RC
封装形式 DIP40(双列直插式,40引脚)
端口分组 4组(P0、P1、P2、P3),每组8位,对应寄存器为unsigned char P2

LED模块特性说明

类型 连接方式 电平要求 导通条件
共阳极 阳极接VCC,阴极接单片机引脚 阴极输出低电平(0V) 阳极(5V)与阴极(0V)形成压差
共阴极 阴极接GND,阳极接单片机引脚 阳极输出高电平(5V) 阳极(5V)与阴极(0V)形成压差

关键概念补充

网络编号
在电路设计中,相同网络编号的引脚表示电气连通,无需物理连线直接连接。例如:

  • 若P2.0和LED阴极均为网络编号“NET1”,则两者实际已导通。

寄存器操作示例
通过直接赋值控制端口电平(以P2为例):

P2 = 0x00;  // P2所有引脚输出低电平(共阳极LED点亮)
P2 = 0xFF;  // P2所有引脚输出高电平(共阳极LED熄灭)

数码管基础概念

数码管是一种常见的显示设备,由多个LED发光二极管组成,通常分为共阴极和共阳极两种类型。共阴极数码管的阴极连接在一起,阳极独立控制;共阳极则相反。51单片机通过位选和段选信号控制数码管的显示内容。


4位共阴极数码管

  • 结构:包含4个独立的数码管单元,每个单元可显示0-9或部分字母。
  • 特点:同一时刻仅能显示一位数字,通过快速切换位选实现多位显示(动态扫描)。

位选与段选

  • 位选:选择当前操作的数码管位。

    • 51单片机通过P1寄存器控制,将对应位设置为1(共阴极)或0(共阳极)。
    • 示例代码(位选第二位):
      P1 = 0x02; // 0000 0010,选中第二位
      

  • 段选:控制当前选中位的显示内容。

    • 通过P0或其他端口发送段码(共阴极为例):
      // 显示数字0的段码(a~dp对应P0.0~P0.7)
      unsigned char segCode[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; // 0~9
      P0 = segCode[0]; // 显示数字0
      


静态显示与动态显示

  • 静态显示

    • 每个数码管位独立连接驱动电路,所有位同时显示,无需扫描。
    • 优点:亮度高、无闪烁;缺点:占用I/O资源多。
  • 动态显示

    • 通过快速轮询位选和段选,利用视觉暂留效应实现多位显示。
    • 示例流程:
      while (1) {
          for (int i = 0; i < 4; i++) {
              P1 = 1 << i;         // 位选第i位
              P0 = segCode[data[i]]; // 段选数据
              delay_ms(5);         // 短暂延时
          }
      }
      

    • 优点:节省I/O;缺点:需精确控制延时,否则易闪烁。

共阴极数码管驱动注意事项

  • 限流电阻:每个段选信号需串联电阻(通常220Ω)。
  • 消隐处理:切换位选时关闭段选,避免残影。
  • 驱动能力:若电流不足,需使用三极管或专用驱动芯片(如74HC595)。

参考段码表(共阴极)

数字 段码(a~dp) 二进制
0 0x3F 0011 1111
1 0x06 0000 0110
2 0x5B 0101 1011
... ... ...
9 0x6F 0110 1111

通过合理配置位选、段选及显示模式,可实现稳定高效的多位数码管显示。


网站公告

今日签到

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