51 单片机常用通信协议与外设驱动基础

一、51 单片机核心通信协议(入门重点:UART)

单片机的通信协议是实现多设备交互 的核心,分为串行通信并行通信 ,51 单片机入门阶段重点掌握串行通信(单 / 双总线,接线简单),核心协议为 UART,拓展了解 I2C/SPI,满足基础开发需求。

1. 串行通信与并行通信的区别
  • 并行通信:多根数据线同时传输数据(如 8 根线传输 1 字节),速度快,但接线复杂、抗干扰差,适合短距离内部通信(如 51 单片机 P0 口作为数据总线);
  • 串行通信:单根 / 两根数据线逐位传输数据,速度慢,但接线简单、抗干扰强,适合长距离设备间通信(如单片机与电脑、传感器、模块交互),51 单片机主流通信方式。
2. 入门核心:UART 串口通信(通用异步收发器)

UART(Universal Async Receiver Transmitter)是异步串行通信 ,无需共享时钟线,通信双方通过波特率同步数据传输速度,是 51 单片机与电脑、模块交互的最常用协议,核心特点:

  • 异步通信:无时钟线,通过起始位 / 停止位实现数据帧同步;
  • 全双工:支持同时发送和接收数据,核心引脚:RXD(接收,P3.0)、TXD(发送,P3.1);
  • 硬件适配:单片机 UART 为 TTL 电平(高 = 5V,低 = 0V),与电脑 USB 通信需电平转换芯片(CH340)(TTL→USB)。
(1)UART 核心通信参数

通信双方参数必须完全一致 ,否则数据传输乱码,核心参数共 5 个,入门默认配置:9600 8 N 1

  1. 波特率:每秒传输的二进制位数(bps),常用 9600/4800/2400/115200,9600 为入门默认;
  2. 数据位:每帧数据的有效位数,常用 8 位(1 字节);
  3. 校验位:用于数据校验,分奇校验(O)、偶校验(E)、无校验(N),入门默认无校验;
  4. 停止位:每帧数据的结束位,常用 1 位;
  5. 流控:是否启用硬件流控,入门默认不启用。
(2)UART 波特率生成

51 单片机 UART 的波特率由Timer1(定时器 1) 生成,入门阶段 Timer1 配置为8 位自动重装载模式(模式 2),无需手动重装初值,波特率稳定,核心配置:

  • 11.0592MHz 时钟是波特率精准配置的最佳选择,9600 波特率下初值为 0xFD;
  • 配置寄存器:TMOD(Timer1 模式)、TH1/TL1(初值)、SCON(串口控制)、PCON(波特率加倍)。
3. 拓展通信协议:I2C/SPI
  • I2C:双线串行通信(SDA = 数据线,SCL = 时钟线),半双工,多主多从,适合多设备组网(如温湿度传感器、OLED 屏),51 单片机无硬件 I2C,需软件模拟;
  • SPI:四线串行通信(MOSI/MISO/SCLK/CS),全双工,主从式,速度快,适合高速数据传输(如 SD 卡、液晶屏),51 单片机无硬件 SPI,需软件模拟。

二、51 单片机经典外设驱动基础

结合通信协议和 GPIO / 定时器,实现 51 单片机经典外设驱动,是入门阶段的核心实战内容,以下讲解数码管DS18B20 温度传感器的驱动核心。

1. 数码管驱动(静态 / 动态显示)

数码管是 51 单片机入门经典输出外设,分为共阴数码管共阳数码管 ,核心通过 GPIO 输出段码 (控制显示数字)和位码(控制点亮哪一位)实现显示。

  • 段码:8 位二进制数,对应数码管的 a~g+dp 段,共阴 / 共阳段码相反(如数字 0:共阴 = 0x3F,共阳 = 0xC0);
  • 动态显示 :利用人眼视觉暂留(约 100ms),快速轮流点亮多位数码管,实现多位数字显示,是 51 单片机数码管的主流驱动方式;
  • 驱动核心:先拆分数字的各位(个位 / 十位 / 百位),再通过 GPIO 依次送位码 + 段码,搭配短延时(1~10ms),实现无残影显示。
2. DS18B20 温度传感器驱动(单总线协议)

DS18B20 是数字温度传感器 ,采用单总线(1-Wire) 串行通信,单根数据线实现数据收发,无需 A/D 转换,直接输出数字温度值,是入门阶段常用的传感器。

(1)DS18B20 核心特性
  • 通信方式:单总线,半双工,异步;
  • 供电:3.3V~5V,可寄生供电;
  • 分辨率:默认 12 位(0.0625℃),可配置 9~12 位;
  • 接线:仅需一根数据线(DQ),外接 4.7KΩ~10KΩ 上拉电阻,与单片机 GPIO 连接。
(2)DS18B20 核心操作

单总线协议对时序要求极高,核心操作分为 3 步,需严格遵循时序规范:

  1. 复位:单片机拉低 DQ 引脚 480~960μs,释放总线,等待 DS18B20 回应(拉低 60~240μs);
  2. 写操作:向 DS18B20 写入指令(如 0xCC = 跳过 ROM,0x44 = 启动温度转换,0xBE = 读取温度),写 0 / 写 1 有严格的时序要求;
  3. 读操作:温度转换完成后,读取 DS18B20 的温度数据(2 字节),通过数据解析得到实际温度值(整数 + 小数)。

三、通信与外设驱动核心注意事项

  1. UART 通信:电平转换芯片(CH340)必须正确接线,TXD/RXD 交叉连接(单片机 TXD→CH340 RXD,单片机 RXD→CH340 TXD),否则无法通信;
  2. 数码管驱动:动态显示的延时时间需适中,过短会导致显示偏暗,过长会出现残影,建议 1~10ms;
  3. 单总线 / I2C/SPI:软件模拟协议时,时序是核心,需严格遵循芯片手册的时序要求,延时函数需精准(如 μs 级延时);
  4. 外设供电:传感器、模块的供电电压需与单片机匹配(5V/3.3V),避免电压过高烧毁外设。

总结

UART 串口是 51 单片机入门的核心通信协议,实现与电脑、模块的基础交互,掌握其波特率配置、中断收发,就能实现数据的上传与下达;数码管、DS18B20 等外设驱动是 GPIO、通信协议、时序控制的综合实战,入门阶段重点掌握 "协议原理 + 时序规范 + 代码框架",就能快速实现各类外设的驱动,为后续复杂项目开发打好基础。

相关推荐
嵌入式吴彦祖8 小时前
Luckfox Pico Ultra W WIFI
linux·嵌入式硬件
ipod74113 小时前
电子电路的元器件
单片机·嵌入式硬件
清风66666613 小时前
基于单片机的脉搏与呼吸监测报警设备设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
Hello_Embed14 小时前
嵌入式上位机开发入门(十九):Socket 状态检测与断线重连
网络·单片机·网络协议·tcp/ip·嵌入式
foundbug99914 小时前
STM32 内部温度传感器测量程序(标准库函数版)
stm32·单片机·嵌入式硬件·算法
天狼IoT14 小时前
STM32-keil+CubeMX快速开发:新建项目
stm32·单片机·嵌入式硬件
gihigo199815 小时前
量程自动切换数字电压表Proteus仿真+程序
单片机·嵌入式硬件·proteus
木燚垚15 小时前
基于STM32的智能衣柜系统设计与实现——温湿度调控+烟雾报警+远程监控
stm32·单片机·嵌入式硬件
才知道的16 小时前
stm32F407学习DAY.27 ADC
stm32·嵌入式硬件·学习
senijusene16 小时前
i.MX6ULL 裸机 ECSPI 驱动开发详解:
arm开发·驱动开发·嵌入式硬件