完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
51单片机键盘扫描的问题
程序在下面,用keilc调试过 可以实现键盘扫描 但是把程序烧到板子上按键 任何键按下之后都会显示九 个别键按下后还会有9 4 8三个数轮流显示 最终只显示数字9 求大神看一下程序哪里有问题 ps~~刚刚申请的号 只有一个积分 大神不要走~~~ #include #include #include void delay1ms(unsigned int q) large; unsigned char saomiaoh() large; unsigned char saomiaol() large; unsigned char kk; #define led P0 #define kb P3 ***it P26=P2^6; ***it P27=P2^7; unsigned char code show[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; unsigned char data i=0,j=0; unsigned char data n=0xe0,m=0x0e; void main() { void delay1ms(unsigned int q) large; unsigned char saomiaol() large; unsigned char saomiaoh() large; P26=0; 补充内容 (2016-12-13 17:42): P27=1; led=0xfe; P27=0; P26=1; while(1) { i=saomiaoh(); j=saomiaol(); led=show[i*4+j]; delay1ms(500000); kb=0xff; } } void delay1ms(unsigned int q) large { while(--q); } unsigned char saomiaol() large {void delay1ms(unsigned int q) large; kk=kb; kb=kb&0xf0; delay1ms(500000); for(j=0;j<=3;j++) { if(n==kb) { break; } else n=n|0x0f; n=_crol_(n,1); n=n&0xf0; } kb=kk; return j; } unsigned char saomiaoh() large { void delay1ms(unsigned int q) large; kk=kb; kb=kb&0x0f; delay1ms(500000); for(i=0;i<=3;i++) { if(m==kb) { break; } else m=m|0xf0; m=_crol_(m,1); m=m&0x0f; } kb=kk; return i; } 补充内容 (2016-12-13 17:42): P27=1; led=0xfe; P27=0; P26=1; while(1) { i=saomiaoh(); j=saomiaol(); led=show[i*4+j]; delay1ms(500000); kb=0xff; } } void delay1ms(unsigned int q) large { while(--q); } unsigned char saomiaol() large {void delay1ms(unsigned int q) large; kk=kb; kb=kb&0xf0; delay1ms(500000); for(j=0;j<=3;j++) { if(n==kb) { break; } else n=n|0x0f; n=_crol_(n,1); n=n&0xf0; } kb=kk; return j; } unsigned char saomiaoh() large { void delay1ms(unsigned int q) large; kk=kb; kb=kb&0x0f; delay1ms(500000); for(i=0;i<=3;i++) { if(m==kb) { break; } else m=m|0xf0; m=_crol_(m,1); m=m&0x0f; } kb=kk; return i; } |
|
相关推荐
4个回答
|
|
是你写的程序有问题,还不止一处!
|
|
|
|
例如这里:
P26=0; 补充内容 (2016-12-13 17:42): //这里是什么鬼? P27=1; // P26和P27 刚清零和置一 led=0xfe; P27=0; // 这里就变了,不知何意? P26=1; |
|
|
|
|
|
|
|
而且你的delayms50000,感觉会超出量程,可以另外编写一个秒的程序
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
991 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
970 浏览 2 评论
2080 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1177 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1599 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 23:41 , Processed in 0.612425 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号