You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino Nano使用移位寄存器驱动16×2 LCD时出现函数匹配错误的技术求助

解决ShiftedLCD库构造函数匹配错误的问题

嘿,我来帮你搞定这个问题!你遇到的编译错误核心是用错了类,还有构造函数的参数不匹配,咱们一步步来修复:

问题出在哪?

你代码里写了LiquidCrystal lcd(8);,但你明明引入的是ShiftedLCD库啊!标准的LiquidCrystal类根本没有只传一个引脚的构造函数,所以编译器才会报错说找不到匹配的函数。

怎么修复?

1. 用对类,传对参数

ShiftedLCD库提供的是同名的ShiftedLCD类,它的构造函数需要你指定移位寄存器的三个关键引脚:

  • 锁存引脚(对应74HC595的ST_CP)
  • 时钟引脚(对应74HC595的SH_CP)
  • 数据引脚(对应74HC595的DS)

举个例子,假设你把74HC595的ST_CP接Arduino的8号引脚,SH_CP接13号(SPI默认时钟脚),DS接11号(SPI默认数据脚),那初始化代码要改成这样:

// 这里要用ShiftedLCD类,不是LiquidCrystal!
ShiftedLCD lcd(8, 13, 11);

2. 完整修复后的代码

把你的代码替换成下面这个版本,应该就能正常编译了:

// include the library code:
#include <ShiftedLCD.h>
#include <SPI.h>

// 初始化ShiftedLCD:参数顺序是锁存引脚、时钟引脚、数据引脚
ShiftedLCD lcd(8, 13, 11);

void setup() {
  // 设定LCD的行列数
  lcd.begin(16, 2);
  // 打印初始消息
  lcd.print("hello, world!");
}

void loop() {
  // 把光标移到第二行第一列(行从0开始计数)
  lcd.setCursor(0, 1);
  // 打印开机后经过的秒数
  lcd.print(millis()/1000);
}

额外要注意的小细节

  • 确认74HC595的接线:VCC接5V,GND接GND,OE引脚要接GND(这样才能一直输出),MR引脚接VCC(避免移位寄存器被复位)。
  • 如果还是有问题,再检查下库的安装:确保ShiftedLCD库是最新版,和你的Arduino IDE版本兼容——有时候旧版本库的构造函数参数可能不一样。

内容的提问来源于stack exchange,提问作者Obscure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 03:32:28