c++ 如何用74HC595N为Arudino中的薄膜开关模块做移位寄存器[关闭]

pcww981p  于 2023-04-01  发布在  其他
关注(0)|答案(1)|浏览(121)

**已关闭。**此问题为not about programming or software development。当前不接受答案。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题有关,您可以留下评论,说明在何处可以回答此问题。
昨天关门了。
Improve this question
所以,我有和arudino uno和我目前正在建立一个计算器,事情是我用完了引脚,开关膜有4行和4列导致8引脚它不适合.这就是为什么我打算做一个移位寄存器(PISO),但有一个sligth问题,idk如何. PLS帮助
如果我有足够的引脚,我会这样做:

// Keypad
const byte ROWS = 4; // number of rows
const byte COLS = 3; // number of columns
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};

byte rowPins[ROWS] = {8, 7, 6, 5}; // row pinouts of the keypad R1 = D8, R2 = D7, R3 = D6, R4 = D5
byte colPins[COLS] = {4, 3, 2};    // column pinouts of the keypad C1 = D4, C2 = D3, C3 = D2
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

但我不能,所以是的,我有一个74HC595N模块。如何解决这个问题的任何提示?我有5个引脚可用于膜引脚,我需要能够读取我在键盘上按下的内容。谢谢

qpgpyjmq

qpgpyjmq1#

数据表快照
74HC595是一个8位移位寄存器与8位输出寄存器。
8位移位寄存器接受来自串行输入的数据(DS)在移位寄存器时钟的每个正跳变上(SHCP)。当Assert低复位功能(MR)将所有移位寄存器的值设置为零,并且独立于所有时钟。来自输入串行移位寄存器的数据被放置在输出寄存器中,存储器电阻器时钟上有一个上升脉冲随着输出使能(OE)被Assert为低,3态输出Q 0-Q7变为有效且存在。
这意味着74HC595基本上是一个串行并行输出移位寄存器,只能用于控制矩阵键盘的输出引脚。
您还需要SN 74 ALS 165,它是矩阵键盘中输出引脚的并行串行输出,或者这些引脚必须直接与Arduino接口。
无论哪种情况,解决方案都太复杂,不值得付出努力。
您应该使用像TCA 8418这样的IC,它基本上是一个8 I2C控制的键盘扫描IC。
Adafruit也有一个基于IC的分线板:Adafruit TCA8418 Keypad Matrix and GPIO Expander Breakout .

相关问题