完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
请大家帮忙给看看,我这个矩阵键盘哪里有问题,不知道为啥,有时候要多按几下才会有反应,绝非键盘问题。
#include #define uchar unsigned char #define uint unsigned int uchar aa; uchar code ss[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e}; ***it FMQ=P1^5; ***it SMG1=P1^0; ***it SMG2=P1^1; ***it SMG3=P1^2; ***it SMG4=P1^3; void display(uchar aa); uchar keysun(); void delay(uint z); void main() { aa=0; SMG1=0; SMG2=0; SMG3=0; SMG4=0; while(1) { display(keysun()); } } void display(uchar aa) { P0=ss[aa]; } uchar keysun() { uchar key,temp; P2=0xfe; temp=P2; while(temp!=0xf0) { delay(1); temp=P2; while(temp!=0xf0) { switch(temp) { case 0xee: key=1; FMQ=0; break; case 0xde: key=2; FMQ=0; break; case 0xbe: key=3; FMQ=0; break; case 0x7e: key=4; FMQ=0; break; } while(temp!=0xf0) { delay(1); temp=P2; temp=temp&0xf0; } } FMQ=1; display(key); } return key; } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } |
|
相关推荐
3个回答
|
|
新手一个 case switch case 0xee: key=1; FMQ=0; break; 这三个不懂·······
还有***it能不能弄点有实际意义的英文单词或者拼音·······还有那个uchar aa 你自己明白别人要看好久 |
|
|
|
很有可能就是扫描周期太长,在处理按键结果的过程比较长,其实你可以想一想,你的按键还可以简单很多,一加入while循环就有衍射出很多问题,尤其是代码很多的时候
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
479 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
229 浏览 0 评论
334 浏览 0 评论
165 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
496 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 19:37 , Processed in 0.560174 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号