基于 Nokia 5110 的 Raspberry Pi Hat(原理图+PCB+代码+CAD)


原标题:基于 Nokia 5110 的 Raspberry Pi Hat(原理图+PCB+代码+CAD)
Nokia 5110 显示模块 Raspberry Pi HAT 设计方案
一、设计概述本方案基于 Nokia 5110 PCD8544 驱动的液晶显示模块(分辨率 84×48 像素),通过 SPI 接口与 Raspberry Pi 进行通讯,制作为标准的 Pi HAT 形态,可直接插入 40 针 GPIO 接口,实现灵活的图形显示功能。方案包括完整的原理图、PCB 布局、软硬件代码以及 KiCad CAD 文件。
电路框图
模块间信号说明:
SPI 数据线(SCLK, MOSI, CE)由 Pi 提供,74HC4050 转换后驱动 PCD8544。
重置和数据/命令选择(RST, DC)由 Pi 通过 GPIO 控制。
背光控制(BL)通过 NPN 晶体管开关驱动,提供 PWM 调光方案。
二、原理图设计
本节详细列出各元器件型号、作用及选用理由。
1. U1:Nokia 5110 液晶显示模块
型号:PCD8544 驱动,84×48 点阵,Adafruit 产品 ID 338(或等效国产模块)。
功能:核心显示单元,负责像素驱动和命令解析。
选型理由:该芯片成熟度高、资源丰富,低功耗,易于在 Raspberry Pi 上调用开源库。
2. J1:40 针直插式母座
型号:Samtec TSW-120-07-L-D(2×20,2.54mm 间距)。
功能:连接 Raspberry Pi GPIO,总线信号传输通道。
选型理由:针脚排布符合 Pi HAT 标准,焊接牢固,材料耐高温,兼容性好。
3. U2:74HC4050PW 六通道电平转换器
型号:Texas Instruments SN74HC4050PW。
功能:将 3.3V TTL 信号稳定传输;提升信号驱动能力,增强抗干扰性能。
选型理由:该芯片支持 6 路电平转换,响应速度快(典型 25ns),功耗低,封装小巧,适合紧凑 PCB。
4. Q1:2N3904 NPN 晶体管
型号:Diodes Inc. 2N3904(SOT-23)。
功能:背光 LED(D1)开关控制,实现 PWM 调光。
选型理由:通用性高、成本低、开关速度快,能满足背光亮度控制需求。
5. D1:背光 LED
型号:OSRAM LY T 361-G(5630, 20mA)。
功能:为 LCD 提供均匀背光,提高显示对比度。
选型理由:寿命长、亮度高、封装标准,配合 PWM 调光可实现护眼模式。
6. R1:10kΩ 线性可调电阻(对比度调节)
型号:Bourns 3314J-1-103(0805)。
功能:调节 LCD 对比度,通过调节 V0 引脚电压影响显示效果。
选型理由:精度 ±10%、尺寸小,适合贴片安装,使用寿命长,调节平滑。
7. C1, C2:去耦电容
型号:Murata GRM21BR71H104KA01L(0.1μF, 0402)。
功能:为芯片提供稳定电源,滤除电源纹波,防止信号抖动。
选型理由:高频性能佳,封装小,贴片可靠。
8. C3:背光滤波电容
型号:Murata GRM31CR61H106KA12L(10μF, 1206)。
功能:背光电源滤波,平滑 PWM 驱动电流。
选型理由:容量大、耐压高,支持背光高频开关。
三、PCB 布局与布线
板层结构:双面板,顶层信号线、底层地平面。
元件布局:40 针母座靠板边,显示模块区域置于顶层中央,背光 LED 及对比度电阻置于显示模块附近。
走线规范:SPI 高速线宽 10mil,阻抗匹配;关键信号线最短,避免交叉;地线汇聚接地框,确保可靠接地。
电源布线:3.3V 电源轨加大铜箔宽度,背光电流预留足够铜厚;电源入口处增加防反接二极管 D2(型号 SS14)。
过孔与测试点:在 GND、3.3V、SPI 以及 RST、DC 上增加测试点,方便调试。
四、软件设计(Python + spidev)
import RPi.GPIO as GPIO
import spidev
import time
# 引脚定义
RST_PIN = 17
DC_PIN = 25
BL_PIN = 18
SPI_BUS = 0
SPI_DEVICE = 0
# 初始化 GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(RST_PIN, GPIO.OUT)
GPIO.setup(DC_PIN, GPIO.OUT)
GPIO.setup(BL_PIN, GPIO.OUT)
# 初始化 SPI
spi = spidev.SpiDev()
spi.open(SPI_BUS, SPI_DEVICE)
spi.max_speed_hz = 4000000
# 复位显示
GPIO.output(RST_PIN, GPIO.LOW)
time.sleep(0.1)
GPIO.output(RST_PIN, GPIO.HIGH)
# 发送命令函数
def send_command(cmd):
GPIO.output(DC_PIN, GPIO.LOW)
spi.writebytes([cmd])
# 发送数据函数
def send_data(data):
GPIO.output(DC_PIN, GPIO.HIGH)
spi.writebytes(data)
# 初始化 PCD8544
def init_display():
send_command(0x21) # 进入扩展指令集
send_command(0xB1) # 设置对比度
send_command(0x04) # 温度系数
send_command(0x14) # 设置 LCD 分频比
send_command(0x20) # 进入基本指令集
send_command(0x0C) # 正常显示模式
# 清屏
def clear_display():
send_data([0x00]*504)
# 主函数示例
if __name__ == '__main__':
init_display()
clear_display()
# 绘制简单图案
send_data([0xFF if i%2==0 else 0x00 for i in range(504)])
time.sleep(5)
clear_display()
spi.close()
GPIO.cleanup()
五、KiCad CAD 设计说明
库文件:自定义元件库
NOKIA5110.lib
, 封装库NOKIA5110.pretty
原理图文件:
Nokia5110_HAT.sch
PCB 文件:
Nokia5110_HAT.kicad_pcb
布局优化:使用 45° 走线、焊盘圆滑过渡、丝印清晰。
六、总结本设计充分考虑电路可靠性、信号完整性及用户使用体验,选用成熟的元器件型号,提供完整的软硬件实现及 CAD 文件,能够快速部署到生产,适用于开发板显示、信息提示、简易游戏等多种应用场景。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。