完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#define uchar unsigned char #define uint unsigned int ***it wei=P2^7; ***it duan=P2^6; uchar du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; uchar we[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void delay(uint a) {uint i,j; for(i=a;i>0;i--) for(j=110;j>0;j--) ; } void display(uchar num) { duan=1; P0=du[num]; duan=0; } void keycan() {uchar key,keyl,keyh,l; P1=0x00; P3=0x0f; keyl=P3; keyl=keyl&0x0f; if(keyl!=0x0f) {delay(10); if(keyl!=0x0f) { keyl=keyl<<4; keyl=keyl|0x0f; keyh=P1; keyh=keyh&0x0f; keyl=keyl&0xf0; key=keyl+keyh; } switch(key) { case 0xee :l=0;break; case 0xde :l=1;break; case 0xbe :l=2;break; case 0x7e :l=3;break; case 0xed :l=4;break; case 0xdd :l=5;break; case 0xbd :l=6;break; case 0x7d :l=7;break; case 0xeb :l=8;break; case 0xdb :l=9;break; case 0xbb :l=10;break; case 0x7b :l=11;break; case 0xe7 :l=12;break; case 0xd7 :l=13;break; case 0xb7 :l=14;break; case 0x77 :l=15;break; } display(l); } } void main() { wei=1; P0=0x02; wei=0; while(1) { keycan(); } } 数码管上显示对应的按键 |
|
相关推荐
10个回答
|
|
我看看
|
|
|
|
|
|
|
|
四行扫描没循环起来,
|
|
|
|
|
|
|
|
很多问题,获取列值的时候正确了,但获取行值的时候错了,记住一点,I/O口高电平跟低电平连在一起的话,高的只会被拉低,低的不会被拉高,就是两个都会变成低。或者你也可以用逐行扫描的方法
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你一开始的时候给P1赋值了P1=0x00; 而获取行值的时候你把P1的值赋给keyh,keyh=P1;即keyh=0x00, 所以keyh=keyh&0x0f;这一句执行后keyh的值依然是0x00,说到这,后面的就不用分析了吧! 总结一下:获取行值跟获取列值要分开来算,取列值时:要把所有行置低,列置高,然后再检查列,哪一列低就证明按键在哪一列(I/O口高的会被拉低,低的不会被拉高,前面说过了);同理:取行值时,要把所有列置低,行置高,再检查行,哪一行为低即按键在哪一行!你就是在取行值时没把列置低、行置高所以........还有一种逐行扫描的方法,有兴趣的话百度研究一下 评分
|
||
1 条评论
|
||
受教不少,真有耐心的解答
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
551 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
910 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
575 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
572 浏览 0 评论
1221 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11769 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 19:07 , Processed in 0.901853 second(s), Total 103, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号