单片机4*4矩阵键盘扫描 问题

#include<reg52.h>voidmain(){unsignedchartempdata;P1=0xfe;tempdata=P1;while(1)if(tempd... #include <reg52.h>
void main()
{ unsigned char tempdata;
P1=0xfe;
tempdata=P1;
while(1)if(tempdata==0xee)P1=0x00;
}
上面的代码我是,实验一下矩阵键盘1行1一列,那个按键能不能检测到已经按下,如果按下p1口连接的led灯全亮,可是有一些问题?
p1^0--p1^3连接的是矩阵的4行,p1^4--p1^7连接的是矩阵的4列
我先判断1行1列的按键是否可以用嘛,首先给p1^0--p1^3的最低位给0其他位给1
然后p1^4--p1^7全部给1,当按键按下的时候p1^4会变成0,
tempdata首先赋值的时候是0111 1111 但是当按键按下的时候不是会变成0111 0111(从高到底不是1110 1110)
转换成16不是ee吗?这样判断为什么上面不行?
下面的是原理图
展开
 我来答
烟火夜空
2013-08-24 · TA获得超过6620个赞
知道大有可为答主
回答量:1678
采纳率:93%
帮助的人:551万
展开全部
LZ 应该把tempdata=P1; 写在 while(1) 里面,而不是写在前面。
另外,如果松手了,P0 的灯怎么办?还是全亮不变?那效果就是你只能按一次,后面按的都没反应。
搞错,为什么 P1又是 按键 又是 LED灯呢?你是什么硬件连接啊?
追问
我并不是要实现什么功能,我只是想按键按下,if(tempdata==0xee) 这一句能否判断出来,点亮led通知我,这个判断语句能够正确的判断,并且能够执行 后面的语句,但是为什么,判断不出来呢
追答
把tempdata=P1; 写在 while(1) 里面,而不是写在前面。
lyx915367058
2013-08-24 · TA获得超过754个赞
知道小有建树答主
回答量:855
采纳率:28%
帮助的人:157万
展开全部
4*4矩阵键盘扫描是一行一行(或一列一列)扫描的,每扫描一次有可以产生四和键盘状态,0111 1110.0111 1101,0111 1011,0111 0111
1011 1110.1011 1101,1011 1011,1011 0111
1101 1110.1101 1101,1101 1011,1101 0111
1110 1110.1110 1101,1110 1011,1110 0111
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式