51单片机的学习终(结合中科协的个人自用笔记)

1. LCD1602 字符液晶模块

一、基础规格参数

  1. 显示规格16×2字符,即 2 行、每行最多显示 16 个字符,单字符点阵为5×7 点阵,总计可同时显示 32 个字符。
  2. 字符资源
    • 内置标准 ASCII 码字符集(数字、大小写英文字母、常用标点符号);
    • 内置多组特殊符号(运算符、希腊字母等);
    • 预留 8 组 CGRAM 自定义字符存储空间,可通过编程自定义图标 / 特殊符号;
    • ⚠️原生不支持中文,如需汉字需改用 12864 等带字库液晶屏(图中第二列第一个即为 12864 点阵屏)。
  3. 硬件主控 :搭载HD44780兼容驱动芯片,是行业通用标准控制器,51 单片机、STM32 等各类 MCU 均有成熟驱动例程。
  4. 电气参数 :常规工作电压5V DC,部分宽压版本支持 3.3V;标配 16Pin 引脚(14Pin 无背光版本)。

二、LCD1602 字符液晶引脚与应用电路详解📌

一、引脚功能梳理

引脚编号 引脚名 功能说明
1 VSS 电源地,接 GND (0V)
2 VDD 工作电源正极,额定 4.5~5.5V,常规 5V 供电
3 VO 液晶对比度调节端,电压越低屏幕越深,图中由 10K 电位器分压调压
4 RS 寄存器选择:0=指令寄存器(写配置命令)1=数据寄存器(写显示字符)
5 RW 读写控制:0=向LCD写入1=从LCD读取状态 ;本电路直接接地,固定只写模式
6 E 使能端,高电平数据保持,下降沿锁存数据、执行指令
7~14 D0~D7 8 位并行数据总线传输指令 / 显示数据
15 A 背光阳极,接 VCC 点亮背光
16 K 背光阴极,接 GND

二、原理图接线分析

  1. 供电回路
    • 主控电源:VSS→GND、VDD→5V (VCC),为液晶驱动芯片供电;
    • 背光电源:A 接 VCC、K 接 GND,背光常亮。
  2. 对比度电路 VO 引脚接 10K 可调电位器,电位器两端分别跨接 VCC 与 GND,旋转旋钮改变 VO 引脚分压,实现屏幕明暗调节。
  3. 控制与数据口
    • RW 接地,省去读操作,简化硬件与程序;
    • RS、E 外接单片机 IO 口,D0~D7 全部引出,采用8 位并行驱动方案

三、LCD1602 内部结构框图

整体分为控制器、DDRAM、CGROM+CGRAM、液晶显示屏四大模块,数据流向:单片机→控制器→DDRAM→字模库→屏幕。

1. 控制器(核心主控)

内含控制电路 + AC 地址计数器

  • 控制电路:接收单片机 RS/RW/E+D0~D7 引脚发来的指令 / 数据,统筹全芯片读写、显示、光标控制;
  • AC(地址计数器):自动记录 DDRAM 当前光标地址,写入字符后地址自动 + 1,控制光标移动位置。

2. DDRAM(显示数据 RAM,40×2 字节)💡

  • 存储空间:2 行 ×40 个字节单元,物理每行 40 格,屏幕仅显示前 16 格,超出 16 位可配合移屏指令实现滚动显示;
  • 作用:存放要显示字符的 ASCII 码;向 DDRAM 对应地址写入字符编码,LCD 就会在对应位置调出字模并点亮屏幕。
    • 第 1 行首地址:0x80,第 2 行首地址:0xC0

3. CGROM + CGRAM(字模存储区)

CGROM(固化字模 ROM)

出厂内置国标 ASCII、英文字符点阵(5×8 点阵),绝大多数数字、字母、符号直接从这里调取点阵,不可改写

CGRAM(自定义字符 RAM)

共 64 字节,用户可自行写入 5×8 点阵数据,自定义 8 个特殊图标 / 汉字,用来显示箭头、简易符号。

4. 液晶屏幕(16×2)

物理显示区域:2 行,每行固定显示 16 个字符 ; 从CGROM/CGRAM 取出点阵数据后驱动液晶点阵点亮最终呈现字符。

四、时序结构

该时序为并行写入时序(RW=0 固定写模式),E 下降沿锁存数据,是单片机驱动 LCD1602 软件延时的依据。

一、4 根信号线含义

引脚 电平规则
RS 0=写入指令1=写入显示数据
R/W 写操作全程保持低电平 0(本电路硬件接地)
E 使能引脚:先拉高、维持脉冲宽度、再拉低;下降沿(E 由 1→0)LCD 锁存数据并执行
DB0~DB7 8 位并行数据总线,E 高电平期间数据必须稳定有效

二、时序参数释义

参数 名称 作用说明
tSP1 RS/RW 建立时间 RS、RW 电平要提前 E 上升沿稳定,保证控制信号先就绪
tSP2 数据建立时间 DB0~DB7 数据要提前 E 变高前稳定,图中标注 Valid Data 为有效数据区间
tR E 上升沿延时 E 从低电平跳变至高电平的过渡时间
tPW E 高电平脉冲宽度 E 保持高电平的最短时间,数据在这段区间必须稳定
tF E 下降沿过渡时间 E 从高变低的跳变时间,下降沿触发 LCD 锁存
tHD1 RS/RW 保持时间 E 变低后,RS/RW 仍需维持原有电平一段时间
tHD2 数据保持时间 E 下降后,总线数据继续保持稳定
tC 完整周期 单次写操作总耗时

三、软件编程标准步骤(对应时序)

  1. 配置 RS:写指令置 0、写字符置 1;RW 固定拉低;
  2. 送出 D0~D7 待发送数据;
  3. 拉高 E 引脚,延时满足tPW脉宽;
  4. 拉低 E 引脚(下降沿锁存,核心动作)
  5. 等待tHD保持时间,结束单次写入。

五、LCD1602 标准操作流

一、上电初始化流程(4 条固定指令,必须依次发送)

指令码 功能释义
0x38 功能设置:8 位并行数据口、2 行显示模式、5×7 字符点阵,是硬件基础配置
0x0C 显示控制:屏幕整体开启,隐藏光标、关闭光标闪烁 ;如需显示光标可改用0x0E,闪烁光标0x0F
0x06 输入模式:写入字符后光标地址自动 + 1、屏幕画面保持不动 ;若设画面左移用0x07
0x01 清屏指令:清空 DDRAM 全部显示数据,光标复位到第一行首地址0x00

💡 注意:每条指令发送后需要适当延时,等待 LCD 内部执行完成。


二、字符显示操作步骤

  1. 定位光标地址 :发送指令 0x80 | AC
    • 0x80:DDRAM 地址指令标志位;
    • AC 为目标地址:第 1 行首地址 AC=0x00(0x80),第 2 行首地址 AC=0x40(0xC0) ;例:第 1 行第 3 格 → 0x80+0x02=0x82
  2. 循环发送显示数据 :拉高 RS 引脚(RS=1 代表写数据),逐个发送待显示字符的 ASCII 码
    • 受初始化指令0x06配置影响,每写完 1 个字符,光标自动后移 1 位,无需重复设置地址。

2.直流电机驱动

一、 核心定义与工作原理

直流电机(DC Motor)是将直流电能转换为机械能的装置,核心原理基于 "通电导体在磁场中受电磁力作用"。

  • 正反转控制:通过改变电极接线方向即可轻松实现,正接正转、反接反转,控制逻辑简单,这也是它在电子制作中被广泛使用的原因。
  • 核心结构:
    • 定子:由永磁体构成,提供固定磁场;
    • 转子:带线圈的转动部分,通电后产生磁场;
    • 换向器 + 电刷:配合切换电流方向,保证转子持续向同一方向旋转。

二、电机驱动电路

一、大功率器件直接驱动

图中包含两种典型实现:ULN2003D 芯片驱动和单三极管驱动电路。

1. ULN2003D 驱动电路
  • 核心器件 :ULN2003D 是一款达林顿管阵列芯片,内部集成了 7 路 NPN 型达林顿管,可直接放大单片机引脚的弱信号,驱动负载。
  • 工作原理:单片机的 IO 口(如 P10-P15)输出信号到芯片输入端,芯片内部放大后,从 OUT 引脚输出大电流,驱动电机或蜂鸣器。
  • 特点
    • 无需额外设计分立元件电路,接线简单,自带续流保护;
    • 只能实现电机的单向控制,无法直接控制正反转;
    • 适合驱动小型直流电机、继电器、LED 等低压负载。
2. 单三极管(PNP)驱动电路
  • 核心器件:PNP 三极管 Q1、续流二极管 D1、限流电阻 R1。
  • 工作原理
    • 当 IN 端为低电平时,三极管导通,电流从 VCC 经三极管、电机流向 GND,电机转动;
    • 当 IN 端为高电平时,三极管截止,电机断电停止;
    • 二极管 D1 为续流二极管,用于吸收电机断电时产生的反向感应电动势,保护三极管不被击穿。
  • 特点
    • 电路结构简单、成本低;
    • 同样只能实现单向驱动,无法控制电机反转;
    • 适合固定方向转动的场景(如风扇、小型水泵)。

二、H 桥驱动电路

这是最经典的电机正反转驱动方案,图中是由 4 个三极管组成的分立元件 H 桥

  • 核心结构:由 Q1、Q2(上桥臂 PNP 管)和 Q3、Q4(下桥臂 NPN 管)组成,呈 "H" 形分布,电机接在中间。
  • 工作原理
    1. 正转:IN1 = 低、IN3 = 高,IN2 = 高、IN4 = 低 → Q1 和 Q4 导通,电流从 VCC→Q1→电机→Q4→GND,电机正转;
    2. 反转:IN2 = 低、IN4 = 高,IN1 = 高、IN3 = 低 → Q2 和 Q3 导通,电流从 VCC→Q2→电机→Q3→GND,电机反转;
    3. 刹车 / 停止:上下桥臂同时导通或同时截止,实现电机的制动或自由停止。
  • 关键注意事项:必须避免 "同侧上下桥臂同时导通"(如 Q1 和 Q3 同时导通),否则会造成电源短路,烧毁器件。
  • 特点
    • 支持正反转控制,还可通过 PWM 信号实现调速;
    • 分立元件方案调试较复杂,实际应用中多采用集成 H 桥芯片(如 L298N、L293D),简化接线和控制逻辑。

三、两种方案对比

驱动方式 控制能力 电路复杂度 成本 典型应用
直接驱动(ULN2003 / 单管) 单向控制,仅能启停 / 调速 风扇、水泵、单向转动设备
H 桥驱动 正反转控制 + 调速 中(分立元件)/ 低(集成芯片) 智能小车、机器人、需要换向的设备

三、PWM介绍

一、PWM 是什么?

PWM(Pulse Width Modulation,脉冲宽度调制)是一种用数字信号模拟模拟量的技术。它通过控制一系列方波信号的 "导通时间占比",在有惯性的系统(比如电机、LED)中,等效出连续的电压 / 电流效果。

  • 核心原理:方波信号只有高电平和低电平两种状态,但因为电机线圈、LED 的亮度有 "惯性",当开关频率足够快时,系统会响应其平均电压,而非单个脉冲。
  • 典型应用:电机调速、LED 调光、开关电源、舵机控制等。

二、关键参数解析

PPT 里提到了三个核心参数,我们逐个说明:

  1. 频率(Frequency)

    • 公式:频率 = 1 / Ts(Ts 是一个完整周期的时间)
    • 含义:代表每秒 PWM 信号重复的次数。频率越高,电机转动 / LED 调光的 "顺滑度" 越好,人眼也看不到 LED 闪烁;但过高的频率会增加开关损耗。
    • 举例:电机控制常用 1kHz-20kHz,LED 调光常用几百 Hz 以上(避免频闪)。
  2. 占空比(Duty Cycle)

    • 公式:占空比 = Ton / Ts(Ton 是高电平持续时间,Ts 是总周期)
    • 含义:高电平时间占整个周期的比例,是控制 "等效电压" 的核心。
    • 举例:假设电源电压是 12V,占空比 50% 时,等效电压就是12V × 50% = 6V;占空比 100% 就是满功率输出,0% 就是完全停止。
  3. 精度(Resolution)

    • 含义:占空比的最小变化步距,代表能把占空比分成多少档。比如 8 位精度的 PWM,占空比可以分成 256 档(0~255),步距就是 1/256 ≈ 0.39%;16 位精度则可以分成 65536 档,调节更精细。

三、图中波形的含义

  • 左图:展示了 SPWM(正弦波脉宽调制)的原理,通过调整脉冲宽度,让输出的平均电压 / 电流等效为一条正弦曲线,常用于电机驱动的变频控制。
  • 右图 :标准 PWM 方波示意图,标注了一个周期内的Ton(导通时间)、Toff(关断时间)和Ts(总周期),直观解释了占空比的计算方式。

四、产生PWM的方法

一、核心模型结构

硬件 PWM 的本质,是定时器计数器 + 比较器的组合:

  1. 计数器(定时自增): 定时器以固定频率自动加 1 计数,计数到最大值后自动清零,开始下一轮循环。
  2. 用户设置的比较值 : 你提前设置好一个 "阈值",比如图里的60
  3. 比较输出逻辑
    • 计数器值 < 比较值时,输出低电平(0);
    • 计数器值 ≥ 比较值时,输出高电平(1)。

二、波形与参数解析

  • 上方波形(计数器与比较值): 蓝色斜线是计数器的值,从 0 线性增长到最大值(图里是 100),然后归零;红色横线是用户设置的比较值(60)。

  • 下方波形(PWM 输出): 计数器从 0 增长到 60 的这段时间,输出低电平;从 60 增长到 100 的这段时间,输出高电平,计数器归零后重复这个过程。

  • 占空比计算(以图中为例): 计数器周期最大值为 100,比较值为 60, 占空比 = 高电平时间 / 总周期 = (100-60)/100 = 40% 也就是说,这个 PWM 信号的占空比是 40%。

  • 改变占空比的方法: 只需要修改 "比较值" 即可:

    • 减小比较值(比如改成 20):高电平时间变长,占空比升高;
    • 增大比较值(比如改成 80):高电平时间变短,占空比降低。

3. AD/DA

AD:总而言之就是它会把电压变成内存中的一个数据

DA:就是把数据变成一个电压

然后用时序结构调用AD或者DA就行

一、XPT2046

一、基础定位

XPT2046 是四线电阻式触摸屏专用控制芯片,核心为 12 位逐次逼近型(SAR)ADC,通过 SPI 串行接口与主控单片机通信,广泛配套电阻触摸 LCD 屏使用。

二、核心硬件参数

  1. ADC 性能
    • 分辨率:12 位
    • 转换速率:最高 125KHz
  2. 电压规格
    • I/O 电平范围:1.5V ~ 5.25V
    • 典型工作电压:2.7V
    • 内置 2.5V 精准参考电压源
    • 电池监测输入量程:0~6V
  3. 功耗 关闭内部参考电压时,典型功耗<0.75mW,低功耗适配电池供电设备。
  4. 环境与封装
    • 工作温度:-40℃ ~ +85℃
    • 封装型号:TSSOP-16、QFN-16、VFBGA-48
  5. 兼容性 硬件引脚、寄存器时序完全兼容 ADS7846、TSC2046、AK4182A,可直接引脚替换。

三、核心功能

1. 触摸坐标与压力检测

  • 两次 ADC 分压采样,计算触摸点 X/Y 轴坐标;
  • 额外采样回路可计算按压压力大小(压力越大,两层导电膜接触电阻变化越大)。

2. 多通道辅助测量

依托内置 2.5V 基准电压,拓展 3 类测量能力:

  • 辅助模拟输入(AUX):外接传感器电压采集;
  • 片内温度传感:芯片自身温度检测;
  • 电池电压监测(VBAT):0~6V 宽量程电池电量检测。

3. 通信接口

标准四线 SPI 通信(DCK 时钟、DIN 输入、DOUT 输出、CS 片选),搭配 BUSY 忙信号、PENIRQ 触摸中断引脚,按下屏幕可主动触发中断通知主控,减少轮询开销。

四、典型应用场景

  • 工业电阻触摸显示屏、单片机人机交互屏(51/STM32/PIC 等)
  • 手持仪器、便携设备触控面板
  • 简易绘图板、触摸按键自制装置
  • 小型设备温度、电池电压一体化监测采集

二、XPT2046 SPI 时序图完整解读

这是8 位指令输入、24 个 DCLK 时钟周期完成一次 ADC 转换的标准通信时序,无时钟延迟模式。

一、引脚信号定义

信号 作用
\(\overline{\text{CS}}\) 片选,低电平有效;拉低芯片才响应通信
DCLK SPI 同步时钟,主控输出,上升 / 下降沿锁存数据
DIN 主控→芯片,8 位控制指令串行输入
BUSY 芯片状态输出,高电平 = 正在模数转换
DOUT 芯片→主控,12 位 ADC 采样结果串行输出

二、时序阶段拆分

1. Idle(空闲阶段)

CS为高,无时钟;触摸屏驱动全部关闭,芯片待机。

2. Acquire(采集阶段,\(t_{ACQ}\))

  1. CS 拉低,主控输出 8 位指令到 DIN: 指令位排布:S A2 A1 A0 MODE SER/DFR PD1 PD0
    • S:起始位固定为 1
    • A2/A1/A0:通道选择(X 坐标 / Y 坐标 / 温度 / 电池电压 / 辅助输入)
    • MODE:ADC 分辨率(1=8 位,0=12 位)
    • SER/DFR:单端 / 差分输入模式(触摸坐标用差分)
    • PD1/PD0:电源与参考电压配置(开关基准、芯片供电)
  2. 前 8 个 DCLK 脉冲移位写入完整指令;
  3. 触摸屏驱动电路开启,触摸极板建立分压电场,等待电压稳定。

3. Conversion(转换阶段)

  1. BUSY 自动拉高,芯片启动 12 位逐次逼近 ADC 转换;
  2. 转换期间 DOUT 逐位输出采样数值:高位 (11) 先出、低位 (0) 后出,12 位有效数据后补 0 填充;
  3. 差分模式下驱动电路保持开启,单端模式驱动关闭。

4. 重回 Idle

转换结束后 BUSY 拉低,\(\overline{\text{CS}}\)拉高,驱动电路全部关闭,芯片回到低功耗待机。


三、关键时序要点💡

  1. 时钟周期总数 :一次完整收发固定 24 个 DCLK
    • 0~7:DIN 写入 8 位指令
    • 8~23:DOUT 读出 12 位 ADC 数据 + 4 位填充 0
  2. BUSY 判断逻辑 方案 1:等待 BUSY 变低再读取 DOUT; 方案 2:严格卡 24 个时钟周期硬时序读取(常用在单片机驱动)。
  3. 触摸坐标采集逻辑 读 X 坐标、读 Y 坐标需要发送两条不同 A 通道指令,两次转换后计算坐标;压力值需要额外一组采样运算。
  4. 电平兼容 DCLK/DIN/DOUT 支持 1.5V~5.25V 电平,3.3V/5V 单片机可直连无需电平转换。

四、驱动编程简化流程

  1. 拉低CS
  2. 循环 8 次 DCLK,移位发送 8 位控制命令
  3. 等待 BUSY 下降沿(或延时稳定);
  4. 循环 16 次 DCLK,同步读出 DOUT 数值,取高 12 位为 ADC 原始值;
  5. 拉高CS完成单次采样。

4.红外遥控

一、基础定义与整体架构

红外遥控是依靠不可见红外光 实现短距离无线指令通信的控制系统,整套系统分为发射端接收端两大模块:

  1. 发射端(遥控器) 核心器件:940nm 红外 LED 发射管,主控芯片将按键指令编码、调制为 38kHz 载波脉冲,驱动红外 LED 向外发射红外光信号。
  2. 接收端(设备主板) 核心器件:一体化红外接收头(如 HX1838),可自动滤除环境杂光、解调载波,输出纯净数字电平信号给单片机解码。
  • 左:成品红外遥控器
  • 中:透明封装940nm 红外发射 LED
  • 右:黑色屏蔽封装一体化红外接收头

1. 通信方式:单工、异步

  • 单工:信号只能单向传输,遥控器只发、设备只收,无法双向交互。
  • 异步:收发两端无统一时钟同步,依靠脉冲时间宽度区分 0/1 电平,依靠引导码识别一帧数据起始。
  • 属于近红外波段,肉眼完全不可见;相比 850nm,940nm 抗日光干扰能力更强,是家电遥控通用标准波长。
  • 发射管多为透明胶体封装,工作时无肉眼亮光。
  • 引导码(帧头):9ms 载波低电平 + 4.5ms 空闲高电平,标记一帧数据开始。
  • 地址码(8bit):区分设备(电视 / 空调 / 风扇等),防止不同遥控器互相干扰。
  • 地址反码(8bit):校验地址传输是否出错。
  • 指令码(8bit):对应按键功能(音量加、开关机、频道切换等)。
  • 指令反码(8bit):校验指令传输完整性。
  • 逻辑 0:560μs 载波脉冲 + 560μs 空闲间隔
  • 逻辑 1:560μs 载波脉冲 + 1690μs 空闲间隔

2. 器件特性对比

器件 外观 核心功能 封装特点
红外发射 LED 透明圆头 电信号→940nm 红外光 无屏蔽,透光性好
一体化红外接收头 黑色方形 / 圆头 红外光→解调后数字电平 黑色胶体滤可见光,内部集成放大、滤波、解调电路

3. 典型应用场景

家用电视、空调、机顶盒、风扇、扫地机器人、单片机智能小车、灯光开关等短距离无线控制场景,传输距离一般 0~10 米,收发需视窗对准(红外无法穿透遮挡物)。

二、红外遥控硬件电路

一、左侧:与门型发射驱动(双信号叠加调制)

电路结构

  • Q1、Q2 为 NPN 三极管,构成逻辑与驱动
  • 两路输入:38KHZ载波信号、IN编码数据信号
  • 负载:红外发射管 LED1 + 限流电阻 R3

工作原理

  1. 只有38KHZ 与 IN 同时为高电平时,Q1、Q2 全部导通,电流流过红外 LED,发射带 38kHz 载波的红外光
  2. 任意一路为低,三极管链断开,LED 熄灭
  3. 作用:把 NEC 编码信号调制到 38kHz 载波上,符合标准遥控发射要求

器件作用

  • R1/R2:基极限流电阻,保护三极管发射结
  • R3:红外 LED 限流电阻,防止过流烧毁发光管

二、中间:单管简易发射驱动(简化方案)

电路结构

  • 单只 NPN 三极管 Q1,输入IN已经叠加 38kHz 载波的混合信号
  • LED1 在上、限流电阻 R2 在下接地

工作原理

  1. IN 高电平→Q1 导通→VCC 电流流经红外 LED、R2 到 GND,LED 发光
  2. IN 低电平→Q1 截止→LED 熄灭
  3. 适用场景:单片机内部 PWM 直接输出 38kHz 调制波形,外部仅做功率放大,电路最简、成本更低

对比左侧双管电路

方案 优点 缺点 适用场景
双管与门型 载波、编码信号可分开产生,硬件自动调制 多 1 只三极管、多 2 个电阻 无硬件 PWM 的 MCU、分立振荡电路
单管放大型 元件少、布线简单 必须 MCU 输出已调制好的波形 带定时器 PWM 的单片机(51/STM32)

三、右侧:HS0038 红外接收头电路(接收端)

引脚定义(HS0038 标准封装)

  1. OUT:解调数据输出脚(接单片机 IO,图中接 P32)
  2. GND:电源地
  3. VCC:供电(常见 3.3V/5V 均可兼容)

工作机制

  1. 内部集成:光电二极管、前置放大、38kHz 带通滤波、整形比较电路
  2. 静态电平:OUT 默认输出高电平
  3. 收到 38kHz 红外载波时:OUT 拉低;无信号恢复高电平
  4. 单片机通过定时器捕获 OUT 引脚高低电平时长,即可解码 NEC 协议的 0、1、引导码

关键特性

  • 黑色外壳滤除可见光干扰,强光环境稳定性远优于分立光电二极管电路
  • 输出为数字逻辑电平,无需额外运放整形,直接对接单片机 IO

三、基本发送与接收

一、三种工作状态对应关系

  1. 空闲状态 发射端 IN 无 38kHz 信号,三极管 Q1 截止,红外 LED 熄灭;接收头无有效红外载波,OUT 稳定输出高电平
  2. 发送逻辑低电平 IN 输入 38kHz 高频方波,三极管高速通断,红外 LED 以 38kHz 闪烁;接收头检测到匹配载波,解调后 OUT 输出低电平
  3. 发送逻辑高电平 IN 无 38kHz 振荡波形,LED 保持不闪烁;接收头无有效载波,OUT 维持高电平

二、波形变换流程

  1. 左侧发射波形 密集竖线簇 = 38kHz 载波脉冲组(对应逻辑 0);宽空白间隔 = 无载波静默区(对应逻辑 1 / 空闲),这是调制后的复合波形
  2. 硬件传输链路 单管三极管电路对调制波形功率放大,驱动红外 LED 完成电信号→红外光转换;红外光无线传输至一体化接收头。
  3. 右侧接收波形 接收头内部滤除 38kHz 高频细节,只输出包络反向波形:发射有载波→输出低,发射无载波→输出高,波形宽度与原始编码时序完全对应。

四、NEC 红外编码协议详解

一、整体帧时序逻辑

  1. 单次按键(短按) 发送 1 组完整帧:起始引导码 + 32 位数据,之后空闲。
  2. 长按按键 首帧发送完成后,每间隔约 110ms 发送 1 次重复码,不再重复发送 32 位数据,降低发射功耗。

二、分段时序参数

1. 起始引导码(Start,红色波形)

时序:9ms 低电平(38kHz 载波发射) + 4.5ms 高电平(静默无载波) 作用:作为帧起始标志,单片机识别超长低脉冲后进入数据接收状态。

2. 32 位数据段(Data,蓝色区域)

数据排列格式

8位地址码(Address) + 8位地址反码 + 8位指令码(Command) + 8位指令反码

  • 总位数:32bit
  • 传输规则:低位先发送,高位后发送
  • 校验机制:接收端校验 原码 + 反码 = 0xFF,校验不匹配则丢弃该帧,提升抗干扰能力。
逻辑 0、逻辑 1 区分
  • 逻辑 0:560μs 低电平载波 + 560μs 高电平静默
  • 逻辑 1:560μs 低电平载波 + 1690μs 高电平静默 两者载波脉冲宽度完全一致,仅静默时长不同。

3. 重复码(Repeat,绿色波形)

时序:9ms 低电平载波 + 2.25ms 高电平静默

  • 发送间隔:距离上一帧 / 上一个重复码约 110ms
  • 作用:通知单片机按键持续按下,无需重复解码 32 位数据。

三、电平与硬件收发对应关系

结合前序发射、接收电路:

  1. 波形里低电平 = 发射端红外 LED 以 38kHz 高频闪烁,接收头 HS0038 检测到载波,输出低电平;
  2. 波形里高电平 = 发射端 LED 熄灭无载波,接收头输出高电平; 图中波形可直接等同于接收头输出到单片机 IO 的解调波形,单片机通过定时器捕获电平时长即可解码。

五、STC89C52 外部中断

一、硬件引脚资源

PDIP-40 封装引脚定义:

  1. INT0:P3.2(引脚 12),基础外部中断 0
  2. INT1:P3.3(引脚 13),基础外部中断 1
  3. 拓展中断:STC89C52 新增\(\boldsymbol{INT2(P4.3)、INT3(P4.2)}\),合计4 路外部中断

二、两种触发模式

1. 下降沿触发(红外解码首选)

  • 触发条件:引脚电平从高电平跳变至低电平的瞬间触发中断
  • 优势:触发一次只进一次中断,不会重复误触发,适配 NEC 波形下降沿捕获
  • 配置寄存器:IT0=1(INT0 沿触发)、IT1=1(INT1 沿触发)

2. 低电平触发

  • 触发条件:引脚持续保持低电平时,一直反复触发中断
  • 劣势:电平不恢复高电平就会持续进中断,容易卡死程序;一般用于按键长按、外部持续报警信号
  • 配置寄存器:IT0=0IT1=0

三、C 语言中断号匹配规则

中断查询序号 = 函数后interrupt后的数字:

中断通道 中断号 示例中断函数
INT0(P3.2) 0 void Int0_Routine(void) interrupt 0
定时器 0 1 void Timer0_Routine(void) interrupt 1
INT1(P3.3) 2 void Int1_Routine(void) interrupt 2
定时器 1 3 void Timer1_Routine(void) interrupt 3
串口 UART 4 void UART_Routine(void) interrupt 4
定时器 2 5 void Timer2_Routine(void) interrupt 5
INT2(P4.3) 6 void Int2_Routine(void) interrupt 6
INT3(P4.2) 7 void Int3_Routine(void) interrupt 7

四、红外遥控适配方案(结合前面 NEC 协议)

  1. 硬件接线:HS0038 接收头 OUT 引脚 → INT0(P3.2)
  2. 模式配置 :设置IT0=1下降沿触发,NEC 波形每次载波开始都会产生下降沿
  3. 解码逻辑
    • 外部中断捕获下降沿,立刻启动定时器计时
    • 退出中断后查询定时器,算出高低电平持续微秒数
    • 对比 9ms、4.5ms、560μs、1690μs 等标准时序,识别引导码、0/1、重复码

六、51 单片机外部中断四大寄存器

一、TCON 寄存器(地址 88H,控制触发方式、中断标志)

红色框位:IE1、IT1、IE0、IT0

  1. IT0(位 0) :INT0 触发模式
    • IT0=0:低电平触发
    • IT0=1:下降沿触发
  2. IE0(位 1):INT0 中断请求标志位,触发后硬件置 1,中断响应后硬件自动清 0(沿触发);电平触发需外部拉高电平才清零
  3. IT1(位 2):INT1 触发模式,规则同 IT0
  4. IE1(位 3):INT1 中断请求标志位,规则同 IE0

二、IE 中断使能寄存器(地址 A8H,中断总开关 + 分开关)

红色框位:EX1、EX0

  1. EA(位 7) :全局总中断开关,EA=1 所有中断才允许开启;EA=0 全部屏蔽
  2. EX0(位 0) :外部中断 0 使能,EX0=1打开 INT0;EX0=0关闭
  3. EX1(位 2) :外部中断 1 使能,EX1=1打开 INT1;EX1=0关闭 其余位:ET2 (定时器 2)、ES (串口)、ET1 (定时器 1)、ET0 (定时器 0)

三、IP 低优先级寄存器(地址 B8H)

红色框位:PX1、PX0

  • PX0:INT1 低优先级配置;PX1:INT0 低优先级配置
  • 单寄存器只能配置0/1 两级基础优先级

四、IPH 高优先级寄存器(地址 B7H,STC 增强型)

红色框位:PX1H、PX0H 与 IP 配合组成4 级优先级(PXxH PXx):

  1. 00:最低优先级
  2. 01:低优先级
  3. 10:高优先级
  4. 11:最高优先级

五、硬件通路流程图解读

  1. 信号流向:\(\boldsymbol{INT0/INT1}\)引脚 → ITx 选择触发电路 → 置位 IEx 标志位
  2. 使能判断:IEx=1 + EXx=1 + EA=1 → 向 CPU 提交中断请求
  3. 优先级仲裁:IP+IPH 对比优先级,高优先级中断优先响应;同优先级按自然顺序:INT0 (0) > T0 (1) > INT1 (2) > T1 (3) > 串口 (4) > T2 (5)
  4. 响应后跳转到对应interrupt中断号服务函数

意思就是有下降沿就触发判断状态,判断是start还是repeat,这个判断可以用定时器判断是多久,长的是start,短的是repeat

简单来说一状态开始 二状态判断重发 三状态写数据

数据分成了四个8位char的数组元素表达32位,所以pdata范围是0-31,所以/8确认数组第几个元素,%8确认元素的第几位

11.0592MHz:读"0":1032±1000;读"1":2074±1000;改好以后就能有现象了。

相关推荐
知产xiao_xin1 小时前
知识产权入门 —— 版权
经验分享·笔记·知识产权
一条破秋裤1 小时前
02_软件安装与新建工程
学习
来了就未晚1 小时前
Python基础 学习代码存储与命名规范
开发语言·python·学习
GHL2842710901 小时前
用codex做一个简单技能学习
学习·ai
呆萌很1 小时前
英语 1‑12 月单词联想记忆
笔记
西西弗Sisyphus2 小时前
模型训练 不同批次大小与学习率下的训练损失对比(2)
学习·batchsize·lr·learning rate
软件开发技术深度爱好者3 小时前
在线学习实践 TypeScript 的官方Playground(演练场)使用介绍
javascript·学习·typescript
我想我不够好。3 小时前
豹女q w e r衔接闪现
学习
金立基包装胶水3 小时前
纸袋热封频繁不良,先排查胶料这一堆问题
大数据·笔记·其他
常驻客栈3 小时前
B-深入理解计算机系统第3版之第11章:网络编程
开发语言·笔记·学习笔记·常驻客栈·深入理解计算机系统