单片机的矩阵键盘的问题

作者&投稿:威追 (若有异议请与网页底部的电邮联系)
单片机矩阵键盘问题~

假设您按下了按钮3.3,即最左上方的按钮,如下解释您的代码unsigned char scan() {unsigned char a,b,c,i;P3=0XF0;//P3=11110000,即P3口高4位置1,设置高4位为输入状态a=P3; //因为您按下了3.3,且高4位设置为输入,3.3按下时,P3^0与P3^4导通, //故P3^4 被拉低,所以此时a=11100000=0xE0delay(20); P3=0X0F; //P3=00001111,即P3口低四位置1,设置低4位为输入状态b=P3; //因为您按下了3.3,且低4位设置为输入,3.3按下时,P3^0与P3^4导通, //故P3^0被拉低,所以此时b=00001110=0x0Ec=a+b; //综合行码和列码 c=0xE0+0x0E=0xEEfor(i=0;i<16;i++)if(c==tab[i])return i; //查表检测按键序号,找到即返回,后面的return -1无需执行return -1; //找不到,则返回-1}不知道这个回答您满意否?

硬件没有问题,估计是你程序不对吧。判断时,低四位应该先由程序置0的,再来判断高4位是否有零(按P1口数值判断),低四位不会自己变化的。这样,无按键按下,高四位都为1,;有按键按下,高四位中应该有0出现。可能是程序有问题,检查一下吧。R1取300欧太小了吧,一般取10K。 实际本身P1口内部有上拉电阻,R2~R5都可以不要,我经常都是这样做。

这个找完全可以拿来就用的几乎没有的
单片机的类型?具体型号?矩阵键盘的具体电路?单片机与数码管的连接方式?
具体哪些端口接键盘哪些端口接数码管?等等……这些没搞清的话有了程序也迷糊。
所以,找个例程参考下然后自己写是正经

不过我这有个MSP430F149的实现你说的这个功能的程序,前几天写了玩的,需要的话可以给你,不过相关电路图什么的就没有了,因为我的这块开发板的资料被别人弄没了,要的话来信gcd-001@163.com

先选定用哪一种单片机,然后自己编个软件就搞定了。现成的可能没有吧,找个有关键盘的案例,这种网上很多,搜一下就行。可以做为参考

关于51单片机矩阵键盘的问题。
答:(1)P3口是准双向IO口(注意与双向IO口的区别),它 的硬件结构决定着,读取之前先写1,再读取,读取的结果才可能是正确的,你可以区域查查书。(2)4X4 矩阵键盘的8根线直接连在IO上,而独立按键有一根线固定是接地的,这就意味着必须采取扫面或者线反转的方法。比如其中一根行线赋0,相当于...

单片机矩阵键盘的问题
答:答:这句:temp1=P3;不断读进p3的值。因为主程序一直不断的查询p3的值,在没有按键的情况下,属于default:的情形,所以p1就等于16了。你可以用中断的方式,也可以修改一下程序:for(;;){ temp=P3;if(temp!=0xf0){...switch(temp)...} 这样有键按下时执行switch里的语句,无键按下时啥...

C51单片机4X4矩阵键盘检测程序问题
答:temp=temp&0xf0; //temp&1111 0000,0与任何数结果为0,把temp变量的低四位屏蔽了,高四位因为任何数与1等于它本身,所以把高四位对应的端口状态读进来。while(temp!=0xf0) //上步处理后,高四为不全为1,说明有按键按下(结合矩阵键盘的电路结构才能理解,这里不方便上图){ delay(5);temp=P...

51单片机矩4X4阵键盘的第一排按键没反应。
答:你仔细看一下资料就会发现这个问题是开发板的问题,就是他用到的一个芯片会把单片机P3口的某个引脚置高,导致键盘不好使,解决方法是下载完程序之后拔掉下载USB线,只保留供电USB线再做测试

关于51单片机矩阵键盘移位输入的疑问,为什么我这样写在低四位数码管显 ...
答:你的位选送入是同样的数据,那当然是显示同样的数,你要分清楚位选,是怎么样位选,这样你就可以想那个显示什么数字都可以了。你的P2口,你想要用独立按键或是矩阵按键,都要写捡测是否有键按下,这个你应该是知道的了,在这里,你的P2口打开,你这样写不是很好,你写的格式,要分好点,不然到...

为什么单片机改频率后矩阵键盘不能用了
答:正常现象。因为单片机并不包含键盘的usb接口,所以连接键盘使用的是频率链接,故在修改频率之后键盘故障为正常现象。单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能。

单片机4×4矩阵键盘扫描编程问题(里面详细,欢迎高手)
答:扫描第一行,就是将第一行电平置为低电平,其他的都为高,扫描哪一行就让哪一行的电平置零,其他行为高电平。这就是第一个问题。在没有键按下的时候,列线全部是高电平,有第一行的键按下的时候,相应的列线就为低电平了,n=P1;n&=0xf0;if(n!=0xf0)这几句就是判断有没有键按下。在第...

C51单片机 4*3矩阵键盘,不是4*4,I/O口多出来一位
答:4*4和4*3原理是一样的 4*4按键中0123是行,4567是列 但你的4*3键盘改变了IO口,012是行,3456是列,4*4中的3变成了4*3.中的行所以扫描键值也变了,4*4要扫描4行,4*3只要扫描3行就完成12个按键扫描

c51单片机矩形键盘检测问题 急急!!!
答:首先第一个问题应该是段选写了0x02..其实前面已经写了数组了直接引用不就好了嘛。然后是矩阵键盘扫描的部分,你写的是0x7f,矩阵键盘扫描的原理应该是从底四位轮流输入低电平,然后再从高四位进行读取数据,检测到低电平时,说明该按键被按下。那么在你的 P1=0x7f;temp=P1;temp=temp&0x0f;后面...

51单片机矩阵键盘为何误动作
答:1.可能是按键质量问题 2.可能是扫描太快,存在于布线不规范的电路 3.程序的问题