1. LCD1602 字符液晶模块
一、基础规格参数
- 内置标准 ASCII 码字符集(数字、大小写英文字母、常用标点符号);
- 内置多组特殊符号(运算符、希腊字母等);
- 预留 8 组 CGRAM 自定义字符存储空间,可通过编程自定义图标 / 特殊符号;
- ⚠️原生不支持中文,如需汉字需改用 12864 等带字库液晶屏(图中第二列第一个即为 12864 点阵屏)。
二、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 |
二、原理图接线分析
- 主控电源:VSS→GND、VDD→5V (VCC),为液晶驱动芯片供电;
- 背光电源:A 接 VCC、K 接 GND,背光常亮。
- 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 | 完整周期 | 单次写操作总耗时 |
三、软件编程标准步骤(对应时序)
五、LCD1602 标准操作流

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

| 0x38 | 功能设置:8 位并行数据口、2 行显示模式、5×7 字符点阵,是硬件基础配置 |
| 0x0C | 显示控制:屏幕整体开启,隐藏光标、关闭光标闪烁;如需显示光标可改用0x0E,闪烁光标0x0F |
| 0x06 | 输入模式:写入字符后光标地址自动 + 1、屏幕画面保持不动;若设画面左移用0x07 |
| 0x01 | 清屏指令:清空 DDRAM 全部显示数据,光标复位到第一行首地址0x00 |
💡 注意:每条指令发送后需要适当延时,等待 LCD 内部执行完成。
二、字符显示操作步骤
- 0x80:DDRAM 地址指令标志位;
- AC 为目标地址:第 1 行首地址 AC=0x00(0x80),第 2 行首地址 AC=0x40(0xC0);例:第 1 行第 3 格 → 0x80+0x02=0x82。
- 受初始化指令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” 形分布,电机接在中间。
- 工作原理:
- 正转:IN1 = 低、IN3 = 高,IN2 = 高、IN4 = 低 → Q1 和 Q4 导通,电流从 VCC→Q1→电机→Q4→GND,电机正转;
- 反转:IN2 = 低、IN4 = 高,IN1 = 高、IN3 = 低 → Q2 和 Q3 导通,电流从 VCC→Q2→电机→Q3→GND,电机反转;
- 刹车 / 停止:上下桥臂同时导通或同时截止,实现电机的制动或自由停止。
- 关键注意事项:必须避免 “同侧上下桥臂同时导通”(如 Q1 和 Q3 同时导通),否则会造成电源短路,烧毁器件。
- 特点:
- 支持正反转控制,还可通过 PWM 信号实现调速;
- 分立元件方案调试较复杂,实际应用中多采用集成 H 桥芯片(如 L298N、L293D),简化接线和控制逻辑。
三、两种方案对比
| 直接驱动(ULN2003 / 单管) | 单向控制,仅能启停 / 调速 | 低 | 低 | 风扇、水泵、单向转动设备 |
| H 桥驱动 | 正反转控制 + 调速 | 中(分立元件)/ 低(集成芯片) | 中 | 智能小车、机器人、需要换向的设备 |
三、PWM介绍
一、PWM 是什么?

PWM(Pulse Width Modulation,脉冲宽度调制)是一种用数字信号模拟模拟量的技术。它通过控制一系列方波信号的 “导通时间占比”,在有惯性的系统(比如电机、LED)中,等效出连续的电压 / 电流效果。
- 核心原理:方波信号只有高电平和低电平两种状态,但因为电机线圈、LED 的亮度有 “惯性”,当开关频率足够快时,系统会响应其平均电压,而非单个脉冲。
- 典型应用:电机调速、LED 调光、开关电源、舵机控制等。
二、关键参数解析
PPT 里提到了三个核心参数,我们逐个说明:
频率(Frequency)
- 公式:频率 = 1 / Ts(Ts 是一个完整周期的时间)
- 含义:代表每秒 PWM 信号重复的次数。频率越高,电机转动 / LED 调光的 “顺滑度” 越好,人眼也看不到 LED 闪烁;但过高的频率会增加开关损耗。
- 举例:电机控制常用 1kHz-20kHz,LED 调光常用几百 Hz 以上(避免频闪)。
占空比(Duty Cycle)
- 公式:占空比 = Ton / Ts(Ton 是高电平持续时间,Ts 是总周期)
- 含义:高电平时间占整个周期的比例,是控制 “等效电压” 的核心。
- 举例:假设电源电压是 12V,占空比 50% 时,等效电压就是12V × 50% = 6V;占空比 100% 就是满功率输出,0% 就是完全停止。
精度(Resolution)
- 含义:占空比的最小变化步距,代表能把占空比分成多少档。比如 8 位精度的 PWM,占空比可以分成 256 档(0~255),步距就是 1/256 ≈ 0.39%;16 位精度则可以分成 65536 档,调节更精细。
三、图中波形的含义
- 左图:展示了 SPWM(正弦波脉宽调制)的原理,通过调整脉冲宽度,让输出的平均电压 / 电流等效为一条正弦曲线,常用于电机驱动的变频控制。
- 右图:标准 PWM 方波示意图,标注了一个周期内的Ton(导通时间)、Toff(关断时间)和Ts(总周期),直观解释了占空比的计算方式。
四、产生PWM的方法

一、核心模型结构
硬件 PWM 的本质,是定时器计数器 + 比较器的组合:
- 当计数器值 < 比较值时,输出低电平(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 屏使用。

二、核心硬件参数
- 分辨率:12 位
- 转换速率:最高 125KHz
- I/O 电平范围:1.5V ~ 5.25V
- 典型工作电压:2.7V
- 内置 2.5V 精准参考电压源
- 电池监测输入量程:0~6V
- 工作温度:-40℃ ~ +85℃
- 封装型号:TSSOP-16、QFN-16、VFBGA-48
三、核心功能
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}\\))
- S:起始位固定为 1
- A2/A1/A0:通道选择(X 坐标 / Y 坐标 / 温度 / 电池电压 / 辅助输入)
- MODE:ADC 分辨率(1=8 位,0=12 位)
- SER/DFR:单端 / 差分输入模式(触摸坐标用差分)
- PD1/PD0:电源与参考电压配置(开关基准、芯片供电)
3. Conversion(转换阶段)
4. 重回 Idle
转换结束后 BUSY 拉低,\\(\\overline{\\text{CS}}\\)拉高,驱动电路全部关闭,芯片回到低功耗待机。
三、关键时序要点💡
- 0~7:DIN 写入 8 位指令
- 8~23:DOUT 读出 12 位 ADC 数据 + 4 位填充 0
四、驱动编程简化流程
4.红外遥控
一、基础定义与整体架构

红外遥控是依靠不可见红外光实现短距离无线指令通信的控制系统,整套系统分为发射端与接收端两大模块:
- 左:成品红外遥控器
- 中:透明封装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
工作原理
器件作用
- R1/R2:基极限流电阻,保护三极管发射结
- R3:红外 LED 限流电阻,防止过流烧毁发光管
二、中间:单管简易发射驱动(简化方案)
电路结构
- 单只 NPN 三极管 Q1,输入IN为已经叠加 38kHz 载波的混合信号
- LED1 在上、限流电阻 R2 在下接地
工作原理
对比左侧双管电路
| 双管与门型 | 载波、编码信号可分开产生,硬件自动调制 | 多 1 只三极管、多 2 个电阻 | 无硬件 PWM 的 MCU、分立振荡电路 |
| 单管放大型 | 元件少、布线简单 | 必须 MCU 输出已调制好的波形 | 带定时器 PWM 的单片机(51/STM32) |
三、右侧:HS0038 红外接收头电路(接收端)
引脚定义(HS0038 标准封装)
工作机制
关键特性
- 黑色外壳滤除可见光干扰,强光环境稳定性远优于分立光电二极管电路
- 输出为数字逻辑电平,无需额外运放整形,直接对接单片机 IO
三、基本发送与接收

一、三种工作状态对应关系
二、波形变换流程
四、NEC 红外编码协议详解

一、整体帧时序逻辑
二、分段时序参数
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 位数据。
三、电平与硬件收发对应关系
结合前序发射、接收电路:

五、STC89C52 外部中断

一、硬件引脚资源
PDIP-40 封装引脚定义:
二、两种触发模式
1. 下降沿触发(红外解码首选)
- 触发条件:引脚电平从高电平跳变至低电平的瞬间触发中断
- 优势:触发一次只进一次中断,不会重复误触发,适配 NEC 波形下降沿捕获
- 配置寄存器:IT0=1(INT0 沿触发)、IT1=1(INT1 沿触发)
2. 低电平触发
- 触发条件:引脚持续保持低电平时,一直反复触发中断
- 劣势:电平不恢复高电平就会持续进中断,容易卡死程序;一般用于按键长按、外部持续报警信号
- 配置寄存器:IT0=0、IT1=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 协议)
- 外部中断捕获下降沿,立刻启动定时器计时
- 退出中断后查询定时器,算出高低电平持续微秒数
- 对比 9ms、4.5ms、560μs、1690μs 等标准时序,识别引导码、0/1、重复码
六、51 单片机外部中断四大寄存器

一、TCON 寄存器(地址 88H,控制触发方式、中断标志)
红色框位:IE1、IT1、IE0、IT0
- IT0=0:低电平触发
- IT0=1:下降沿触发
二、IE 中断使能寄存器(地址 A8H,中断总开关 + 分开关)
红色框位:EX1、EX0
三、IP 低优先级寄存器(地址 B8H)
红色框位:PX1、PX0
- PX0:INT1 低优先级配置;PX1:INT0 低优先级配置
- 单寄存器只能配置0/1 两级基础优先级
四、IPH 高优先级寄存器(地址 B7H,STC 增强型)
红色框位:PX1H、PX0H 与 IP 配合组成4 级优先级(PXxH PXx):
五、硬件通路流程图解读
意思就是有下降沿就触发判断状态,判断是start还是repeat,这个判断可以用定时器判断是多久,长的是start,短的是repeat
简单来说一状态开始 二状态判断重发 三状态写数据
数据分成了四个8位char的数组元素表达32位,所以pdata范围是0-31,所以/8确认数组第几个元素,%8确认元素的第几位
11.0592MHz:读“0”:1032±1000;读“1”:2074±1000;改好以后就能有现象了。




