gpt4 book ai didi

用 C 语言控制具有相同 I/O 的键盘

转载 作者:行者123 更新时间:2023-11-30 17:22:38 24 4
gpt4 key购买 nike

我有一个问题,我已经解决了一天多了,但我无法用我的技能解决这个问题。所以问题如下。我正在尝试从 4x4 键盘获取输出,这不会成为问题,但输入和输出位于同一引脚上。我知道 74hc573 应该在 LE 变低后保留信息,但我只是不知道如何在不向前一个芯片提供新信息的情况下读取 74hc541 的输出,因为这样状态会再次发生变化。目前我只能对角读取按键,因为在这种情况下输入和输出匹配。

整个电路的原理图可以在这里看到:

这里有问题的部分:

我在 C 中尝试了许多不同的方法来使其工作,但由于共享 I/O,我能做的最好的方法是从 1 到 C 的对角线。
希望你们能给我一些提示并帮助我理解这一点。

和我的代码,它只是应该负责获取输出的部分。

    while(1)
{
for(i=0;i<4;i++)
{
P3_7=0;
P3_6=1;
in=((0b11110111>>i)&0b00001111);
//in=0b11110111;
*keypad=in;
*led=in;
P3_7=0;
P3_6=0;
*keypad=0x00;
P3_7=1;
out=*keypad;

P3_7 将是 RD,P3_6 将是 WR,尚未给它们适当的定义

修改后的代码

while(1)
{
for(i=0;i<4;i++)
{
P3_7=0;
P3_6=1;
in=((0b11110111>>i)&0b00001111);
*keypad=in;
*led=*keypad;
vardelay(100);
P3_7=0;
P3_6=0;
*keypad=0xff;
P3_7=1;
out=(*keypad&0b00001111);
if (in==0b1101&&out==0b1101)
{
P3_7=1;
P3_6=1;
lcd_senddata('5');
}
else if(in==0b1110&&out==0b1101)
{
P3_7=1;
P3_6=1;
lcd_senddata('2');
}

当点击“5”时,它会同时打印 5 和 2。我不知道为什么

最佳答案

关键是能够控制 LE 引脚。锁存 Q1,然后禁用 LE。扫描 A1-A4 以测试按钮 1、2、3 和 F。如果 LE 为低电平,则状态 Q1-4 在扫描期间不应改变。然后启用 LE,切换到 Q2,禁用 LE 并扫描下一行,依此类推。

关于用 C 语言控制具有相同 I/O 的键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27964587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com