求4X4键盘高低电平输出的电压值范围。

4X4矩阵键盘扫描原理_百度知道
4X4矩阵键盘扫描原理
提问者采纳
能否尽量详细地说一下:
//低四位输入
//稍稍延时temp=P1;
temp=temp&0x0F;
//取低四位
temp=~(temp|0xF0);
if(temp==1)
//检测按下的键所在的列号,在第一列
else if(temp==2) //在第二列
else if(temp==4) //在第三列
else if(temp==8) //在第四列
//否则显示-这一段的意义你只要我解释这段的意义吧。
这一段是确定按下的键所在的列号。我看几乎每行都有注释啊,而且注释的很好。temp=temp&0x0F;
//取低四位temp=~(temp|0xF0);这行没注释,我就说一下,就是对temp低四位取反,
因为 P0是段选,低电平有效,这样能分离出按键信息。举个例子,如果是第一列有键按下,temp在执行此句前,低四位应该是1110(低电平有 效 )执行后低四位才变成0001,恰好能为下面的 if,else if 提供正确的逻辑。如果没键按下,temp=0x00,所以有else key=16。显示“-”。我想应该解释清楚了,如有疑问,给我留言。
提问者评价
其他类似问题
我来帮你搞定!
为您推荐:
您可能关注的推广
矩阵键盘的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁在三态门中,控制输入端和数据输入端的高低电平的电压取值范围分别是多少呢?谢谢各位!另外,三态门应该_百度知道
在三态门中,控制输入端和数据输入端的高低电平的电压取值范围分别是多少呢?谢谢各位!另外,三态门应该
在三态门中,控制输入端和数据输入端的高低电平的电压取值范围分别是多少呢?谢谢各位!另外,三态门应该是TTL门电路吧
提问者采纳
控制端与数据端的逻辑电平是一致的,TTL 、CMOS 都有三态门。
哦,比如是TTL的三态门,要使控制端或数据端为低电平,是不是保证其端电压在0~0.8v之间就可以了?谢谢!
高、低电平与电源电压有关:高电平:电压范围大约是 Vcc * 2/3 ~ Vcc低电平:电压范围大约是 0 ~ Vcc/10
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
来自团队:
其他类似问题
为您推荐:
三态门的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁热门版块:
【新手求助】矩阵键盘检测问题
& & 最近在编程序时,发现书本上写的矩阵键盘检测步骤是:先将某一行置0,其他行与列全部置1,然后扫描键盘端口值并与0xf0按位相与,当检测到按位与后的值与0xf0不同后,说明改行有键被按下,延时后再次检测,如果与之前一样,则读取与键盘相连的端口的值,用switch case语句对比,得出哪个键被按下了。用同样的方法再检测其他行。
& & 这个方法可行,但是我觉得太麻烦,直接扫描键盘,将读取后的值与switch case语句中的值比较就行了,为什么还要一行行检测呢?我试了我的方法,不行。但是我想不通为什么,请高手帮忙解释,谢谢了。
如果一个I/O口就接一个按键,的确可以直接检测I/O口,就知道哪个按键按下,但如果需要较多按键时,此法会浪费很多I/O口,不合适。
所以需要进行扫描的方式,即节约I/O口,又扩展建盘。
以4X4键盘为例,P3口八个I/o口分四条列线,四条行线,各线都有四个按键,一条线上的端口值变化,可由四个按键中的任意一个按下实现,故需要多行扫描的方式。
另外还有线反转法扫描键盘,你可以看看。& & 目前我知道的8个I/O口最多接的为36个按键。
请查看 反转扫描法。
谢谢了,不过用以下程序为什么不行呢?
void keyscan()
& & & & //P3=0
& & & & temp=P3;
& & & & temp=temp&0xf0;
& & & & if(temp!=0xf0)
& & & & & & & & delay10ms();
& & & & & & & & temp=P3;
& & & & & & & & temp=temp&0xf0;
& & & & & & & & if(temp!=0xf0)
& & & & & & & & {
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & {case 0xee:
& & & & & & & & & & & & & & & & key=1;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xde:
& & & & & & & & & & & & & & & & key=2;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xbe:
& & & & & & & & & & & & & & & & key=3;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0x7e:
& & & & & & & & & & & & & & & & key=4;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xed:
& & & & & & & & & & & & & & & & key=5;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xdd:
& & & & & & & & & & & & & & & & key=6;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xbd:
& & & & & & & & & & & & & & & & key=7;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0x7d:
& & & & & & & & & & & & & & & & key=8;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xeb:
& & & & & & & & & & & & & & & & key=9;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xdb:
& & & & & & & & & & & & & & & & key=10;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xbb:
& & & & & & & & & & & & & & & & key=11;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0x7b:
& & & & & & & & & & & & & & & & key=12;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xe7:
& & & & & & & & & & & & & & & & key=13;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xd7:
& & & & & & & & & & & & & & & & key=14;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xb7:
& & & & & & & & & & & & & & & & key=15;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0x77:
& & & & & & & & & & & & & & & & key=16;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & }
& & & & & & & & while(temp!=0xf0)
& & & & & & & & {
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & }
& & & & & & & & desplay(key);& & & &
& & & & }& & & &
补充说明以下:为什么用以下程序不行呢?
void keyscan()
& & & & temp=P3;//直接读取P3口的值
& & & & temp=temp&0xf0;
& & & & if(temp!=0xf0)/*
判断是否有按键按下,如果有键按下,P3.5~P3.7肯定有低电平,
所以temp不等于0xf0;*/
& & & & & & & & delay10ms();
& & & & & & & & temp=P3;
& & & & & & & & temp=temp&0xf0;
& & & & & & & & if(temp!=0xf0)
& & & & & & & & {
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & switch(temp)
& & & & & & & & & & & & {case 0xee:
& & & & & & & & & & & & & & & & key=1;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xde:
& & & & & & & & & & & & & & & & key=2;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xbe:
& & & & & & & & & & & & & & & & key=3;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0x7e:
& & & & & & & & & & & & & & & & key=4;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xed:
& & & & & & & & & & & & & & & & key=5;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xdd:
& & & & & & & & & & & & & & & & key=6;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xbd:
& & & & & & & & & & & & & & & & key=7;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0x7d:
& & & & & & & & & & & & & & & & key=8;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xeb:
& & & & & & & & & & & & & & & & key=9;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xdb:
& & & & & & & & & & & & & & & & key=10;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xbb:
& & & & & & & & & & & & & & & & key=11;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0x7b:
& & & & & & & & & & & & & & & & key=12;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xe7:
& & & & & & & & & & & & & & & & key=13;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xd7:
& & & & & & & & & & & & & & & & key=14;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0xb7:
& & & & & & & & & & & & & & & & key=15;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & case 0x77:
& & & & & & & & & & & & & & & & key=16;
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & }
& & & & & & & & while(temp!=0xf0)
& & & & & & & & {
& & & & & & & & & & & & temp=P3;
& & & & & & & & & & & & temp=temp&0xf0;
& & & & & & & & }
& & & & & & & & desplay(key);& & & &
& & & & }& & & &
我不知道这样说对不对,矩阵键盘没按下时相当悬空,如果你想使用矩阵键盘,那么你应该先置某一I/O为低电平,当你按下键盘时该按键才会被拉低,这样才能读出有效值来。而现在你没先置某I/O为低电平,你即使按下某一按键那该按键还是高低平,即你读出P3口的值都是高电平...
高级工程师
楼主不理解矩阵键盘的原理啊!
谢谢诸位,搞定了,呵呵!!
站长推荐 /5
Powered by单片机4X4键盘接口和显示设计报告_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机4X4键盘接口和显示设计报告
单​片​机​课​程​设​计​
​
​用​P​r​o​t​e​u​s​软​件
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩8页未读,继续阅读
你可能喜欢}

我要回帖

更多关于 高低电平 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信