2609|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

矩阵键盘检测 [复制链接]

本人是新手,有些基本的问题弄不清楚。
还有本人在做矩阵键盘检测时,不知为什么,按键按了数码管只显示0,没有反应。
请各位大虾指点下。谢谢哈
#include <REGX51.H>
#define uint unsigned int
#define uchar unsigned char
sbit Key_ce=P1^3;
sbit Dig_ce=P1^1;
sbit Seg_ce=P1^0;
void Key();
uchar code Seg_tab[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x4f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar z)
{
P0 = Seg_tab[z];
Seg_ce = 1;
Seg_ce = 0;

}
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=124;j>0;j--);
}

void main()
{ P0 = 0;
P1 = 0x0c;
while(1)
{
Key();
}
}
void Key()
{
uchar temp1,temp2,keynum;
P0 = 0xfe;
Dig_ce = 1;
Dig_ce = 0;
delay(1);
Key_ce = 0;
temp1 = P0;
temp1 = temp1&0x0f;
if(temp1!=0x0f)
{
delay(10);
temp2 = P0;
temp2 = temp2&0x0f;
if(temp1==temp2)
{
switch(temp2)
{
case 0x0e:keynum=0;break;
case 0x0d:keynum=1;break;
case 0x0b:keynum=2;break;
case 0x07:keynum=3;break;
}
while(temp2!=0x0f) // 按键释放检测
{
temp2 = P0;
temp2 = temp2&0x0f;
}
}
}
Key_ce = 1;
P0 = 0xfe;
Dig_ce = 1;
Dig_ce = 0;
display(keynum);

}

学习板原理图.pdf

534.89 KB, 下载次数: 9

这是我的单片机原理图

此帖出自单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表