完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这个4*4矩阵程序哪里错 了 #include unsignedchar code table[]={0xC0,0xF9,0xA4,0xB0, 0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83, 0xC6,0xA1,0x86,0x8E}; unsignedchar temp; unsignedchar key; unsignedchar i,j; voidmain(void) { while(1) { P3=0xff; //给P3口置1 P3_4=0; //给P3.4这条线送入0 temp=P3; temp=temp & 0x0f; //屏蔽低四位 if (temp!=0x0f) //看是否有按键按下 { for(i=50;i>0;i--) for(j=200;j>0;j--); //延时,消除抖动 temp=P3; temp=temp & 0x0f; if(temp!=0x0f) //再次判断按键是否按下 { temp=P3; temp=temp & 0x0f; switch(temp) //判断与P3.4相连的哪个键按下了 { case 0x0e: key=7; break; case 0x0d: key=8; break; case 0x0b: key=9; break; case 0x07: key=10; break; } temp=P3; P0=table[key]; //送数到P0口显示 temp=temp & 0x0f; while(temp!=0x0f) //松手检测,否则跳不出循环 { temp=P3; temp=temp & 0x0f; } } } P3=0xff; P3_5=0; / /读P3.5这条线 temp=P3; temp=temp& 0x0f; //屏蔽低四位 if(temp!=0x0f) //判断P3.5这条线上是否有按键按下 { for(i=50;i>0;i--) for(j=200;j>0;j--); //延时,消除抖动 temp=P3; temp=temp & 0x0f; if(temp!=0x0f) //判断是否真有按键 { temp=P3; temp=temp & 0x0f; switch(temp) //判断与P3.5相连的哪个键按下了 { case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=11; break; } temp=P3; P0=table[key]; //送入P0口显示 temp=temp & 0x0f; while(temp!=0x0f) //松手检测,否则跳不出循环 { temp=P3; temp=temp & 0x0f; } } } P3=0xff; P3_6=0; //读P3.6这条线 temp=P3; temp=temp& 0x0f; //屏蔽的低四位 if(temp!=0x0f) //判断是否有按键按下 { for(i=50;i>0;i--) for(j=200;j>0;j--); //延时,消除抖动 temp=P3; temp=temp & 0x0f; if(temp!=0x0f) //判断是否真有按键按下 { temp=P3; temp=temp & 0x0f; switch(temp) /判断与P3.6相连的哪个键按下了 { case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=12; break; } temp=P3; P0=table[key]; //送入P0口显示 temp=temp & 0x0f; while(temp!=0x0f) //松手检测,否则跳不出循环 { temp=P3; temp=temp & 0x0f; } } } P3=0xff; P3_7=0; //读P3.7这条线 temp=P3; temp=temp& 0x0f; //屏蔽的低四位 if(temp!=0x0f) //判断是否有键按下 { for(i=50;i>0;i--) for(j=200;j>0;j--); //延时,消除抖动 temp=P3; temp=temp & 0x0f; if(temp!=0x0f) //判断是否真有键按下 { temp=P3; temp=temp & 0x0f; switch(temp) /判断与P3.7相连的哪个键按下了 { case 0x0e: key=0; break; case 0x0d: key=13; break; case 0x0b: key=14; break; case 0x07: key=15; break; } temp=P3; P0=table[key]; //送入P0口显示 temp=temp & 0x0f; while(temp!=0x0f) //松手检测,否则跳不出循环 { temp=P3; temp=temp & 0x0f; } } } } } |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
4725 浏览 3 评论
6011 浏览 1 评论
6278 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
8027 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1229 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 18:03 , Processed in 0.550074 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号