目录

嵌入式学习-51单片机基础

嵌入式学习 51单片机基础

嵌入式系统定义

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


51单片机发展及厂商

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

核心概念对比

处理器类型
缩写全称功能特点应用场景
CPUCentral Processing Unit数据运算、指令处理通用计算
MCUMicro Controller Unit高度集成(CPU+RAM+ROM+外设),低成本简单控制(家电、传感器)
MPUMicro Processing Unit低集成度(需外接存储/外设),支持复杂系统Linux/高端嵌入式设备
GPUGraphics Processing Unit图形渲染加速游戏、图像处理
NPUNeural Processing UnitAI推理、神经网络加速(如华为达芬奇NPU)智能终端
FPUFloating 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)二进制
00x3F0011 1111
10x060000 0110
20x5B0101 1011
90x6F0110 1111

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