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
相关产品推荐
相关产品推荐

