为什么74HC164读取按键 需要延时很长时间
将74HC164的8个输出管脚分别连接按键,将八个按键连在同一个IO口上控制芯片STC12C5628AD
sbitCLK = P2^3;
sbitDAT = P2^2;
sbitkey = P2^1;
检测按键是这样的,先给74HC164发送数据1111 1110只有一个0,如果key电平为高,下次给74hc164送11111101直到key电平为低,以此来检测是哪个按键被按下,现在是这样情况,发送完数据后必须延时400Us才能正确读取数据很是不理解为什么,IO口我用了10K的上拉电阻。IO是准双向口模式
void send(uchar byte)
{
uchar i = 0;
for(i = 0;i<8;i++)
{
CLK = 0; CLK = 0;CLK = 0;_nop_(); _nop_(); _nop_(); _nop_();
if((byte&0X80)==0x80) DAT = 1; // 结果就2种0X80 或者是 0 DAT = byte&0X80;为什么是对的
else DAT = 0;
CLK = 1; CLK = 1;CLK = 1;
byte <<= 1;_nop_(); _nop_(); _nop_(); _nop_();
}
}
void KeyRead()
{
unsigned char i = 0;
_nop_(); _nop_(); _nop_(); _nop_();
if(key == 0) //根据74HC164的初始状态,如果按键被按下,KEY被拉为低电平
{
for(i=0;i<8;i++) //依次发送8次匹配检测数据
{
key = 1;
send(WEI); //依次发送8位数据,其中一位为低位 例如11111110
Delay400us();
if(key == 0) //如果检测数据与所按的键一致,则检测信号线KEY保持低电平
{
KEYNUM = i + 1 ;
break; //退出FOR循环
}
}
}
} 没人回自己顶起 接个示波器看看你的波形就知道了。
ahuang227 发表于 2013-10-9 14:49 static/image/common/back.gif
接个示波器看看你的波形就知道了。
示波器怎么看,我是想知道为什么,要延时那么长时间才能正确读取数据,好纠结的说 74164是串转并输出的,怎么拿来做按键检测??
没看懂 rising_sun 发表于 2013-10-9 14:57 static/image/common/back.gif
74164是串转并输出的,怎么拿来做按键检测??
没看懂
好吧 你不知道,能控制164输出管脚的高低电平,由此能当作独立按键用,你懂得 以前用164做过显示与按键利用的,不需要很延时的啊,看看硬件电路或是软件上有什么漏洞吧 ijlc1314 发表于 2013-10-9 15:00 static/image/common/back.gif
以前用164做过显示与按键利用的,不需要很延时的啊,看看硬件电路或是软件上有什么漏洞吧 ...
能把你的资料给我看看么,灰常感谢啊嘿嘿 ijlc1314 发表于 2013-10-9 15:00 static/image/common/back.gif
以前用164做过显示与按键利用的,不需要很延时的啊,看看硬件电路或是软件上有什么漏洞吧 ...
大哥能不能把你的思路给我说说啊,我现在能够2个164驱动4个数码管和4个按键,但是就是读取按键的时候处理的不是很好,延时400微妙表示很桑心 你这400uS应该不是164发送数据后的稳定时间而是用来消除按键抖动的吧,164的速度是很快的,数据从输入端到输出端花费的时间完全可以忽略,但按键抖动期间数据是不稳定的,你这程序看着很蛋疼,坛子里有很多例程,自己搜搜。 surken 发表于 2013-10-9 15:20 static/image/common/back.gif
你这400uS应该不是164发送数据后的稳定时间而是用来消除按键抖动的吧,164的速度是很快的,数据从输入端到 ...
哎没有啊不知道为什么 好纠结的说 金牛AKI 发表于 2013-10-9 15:11 static/image/common/back.gif
大哥能不能把你的思路给我说说啊,我现在能够2个164驱动4个数码管和4个按键,但是就是读取按键的时候处 ...
现在这电脑上没有了,建议你用示波器看一下波形 ijlc1314 发表于 2013-10-9 15:43 static/image/common/back.gif
现在这电脑上没有了,建议你用示波器看一下波形
大哥 我这没有示波器很纠结的说,等方便了,把你程序给我看看好不好,好纠结其他的都弄好了,就是不知道为啥出现这个情况,还有现在想弄个按键长按功能,搞不定
页:
[1]