刚学单片机,在练独立矩阵这一块,编了个程序,发现控制不了,求求ps大神帮忙p脸看看哪里出问题了,多谢多谢

#include &reg52.h&&br&#define uchar unsigned char&br&#define uint unsigned int&br&uchar code table[]={&br&0x3f,0x06,0x5b,0x4f,&br&0x66,0x6d,0x7d,0x07,&br&0x7f,0x6f,0x77,0x7c,&br&0x39,0x5e,0x79,0x71};&br&sbit wela=P2^7;&br&sbit dula=P2^6;&br&sbit K1=P3^4;&br&sbit D1=P1^0;&br&&br&void delay(unsigned char i)&br&{&br& unsigned char m,n;&br& for(m=i;m&0;m--)&br& for(n=125;n&0;n--);&br&}&br&void main()&br&{ &br& dula=1;&br& P0=0;&br& dula=0;&br& wela=1;&br& P0=0xc0;&br& wela=0;&br& while(1)&br& {&br&
P3=P3&0xf0;&br&
if(P3!=0xf0)&br&
delay(5);&br&
if(P3!=0xf0)&br&
switch(P3)&br&
case 0xee:num=1;&br&
case 0xde:num=2;&br&
case 0xbe:num=3;&br&
case 0x7e:num=4;&br&
/* while(P3!=0xf0)//判断是否松开了矩阵,按下进入,松开退出死循环(就是这里出了问题,把它屏蔽就没有问题,加了它就出错了。。)&br&
P3=P3&0xf0;&br&
dula=1;&br&
P0=table[num-1];&br&
dula=0;&br&
P3=P3&0xf0;&br&
if(P3!=0xf0)&br&
delay(5);&br&
if(P3!=0xf0)&br&
switch(P3)&br&
case 0xed:num=5;&br&
case 0xdd:num=6;&br&
case 0xbd:num=7;&br&
case 0x7d:num=8;&br&
/* while(P3!=0xf0)&br&
P3=P3&0xf0;&br&
dula=1;&br&
P0=table[num-1];&br&
dula=0;&br&&br&
}&br&}&br&}&br&PS:别人的是这样写的&br&while(temp!=0xf0)&br&
temp=P3;&br&
temp=temp&0xf0;&br&
beep=0;&br&它前面还有&br&P3=0&br&
temp=P3;&br&
temp=temp&0xf0;&br&而我的直接是&br&P3=0&br&P3=P3&0xf0;这两种方式有什么不同吗?我感觉一样。。而且我觉得我的比较方便快捷。。但是不知道为什么到松手程序就出错了。。
#include &reg52.h&#define uchar unsigned char#define uint unsigned intuchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};sbit wela=P2^7;sbit dula=P2^6;sbit K1=P3^4;sbit D1=P1^0;void delay(unsigned char i){ unsigned char m,n; for(m=i;m&0;m--) for(n=125;n&0;n--);}void main(){ …
谢邀,不过表示为什么邀我,我不懂啊。。。
已有帐号?
无法登录?
社交帐号登录
这个人很懒,什么也没留下单片机矩阵键盘程序解释一下,最后的switch(key)还没完成,求大神帮忙填一下,十万火急,急急急!!!_百度知道
单片机矩阵键盘程序解释一下,最后的switch(key)还没完成,求大神帮忙填一下,十万火急,急急急!!!
case 6: t = 0xfd,0x71};
case 0x0e;
display(key)&#47: t = 0
&#47: t = 0xf7;/
&#47,0x5e:
keyScan(1),0reg51;
temp = temp&0xf0,0xde,0x5b!=0xf0)
delay(10),
case 4;unsigned char code keyTable[]={0xee: break:4*4键盘检测程序,0x77},按下键后相应的代码显示在数码管上#include&
P1=0xf0;一个下降沿将数据锁存
wela=0;位选通全部的数码管
for (i=0; keyScan(2): break: break,0xed,0xd7;将第num个显示编码送到P0口
default,k.h&gt:&#47,0x4f: break,0xb7,0x7c;0,0x66;
case 0x0f; switch (line) {
0x7d;}void keyScan(unsigned char line){
wela=0:&#47:
case 0x0c;i++)
if (temp == keyTable[i])
P0=0xc0,0x6d;j&
case 8;/
case 9:t = 0
case 5;unsigned char j!=0xf0)
temp=P3,temp!=0xf0)
temp=P3,0x7b,0x6f;16,0x7e;0;
beep=0;/
case 2: keyScan(4),0 keyScan(3),0x7f;
case 0x0b; } P3 =j--)
for(k=125;
temp=temp&0xf0;
case 3,0sbit wela=P2^7,0x06;
swtich (key) {
if(temp,0xe7,0display(unsigned char num){
P0=table[num];
temp = P3,0void delay(unsigned char i){
case 0x0a;}unsigned char code table[]={0x3f,0x77;unsigned char i=100;一个下降沿将数据锁存
case 0x0d,0x39;k--),0x7d;
if(temp,sbit dula=P2^6;sbit beep=P2^3;k&gt,0x79: t = 0xfe:
}}void main(){
看课本吧,键盘程序,比任何人都讲的清楚。要明白原理
其他类似问题
为您推荐:
其他2条回答
希望对你有用看视频教程,网上有。如果有兴趣的话可以自己学习单片机开发板,吴鉴鹰单片机开发板上面的功能比较多,居然的程序可以看教材,吴鉴鹰吧有很多的电子爱好者
写的很好。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 大神帮忙 的文章

更多推荐

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

点击添加站长微信