X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
51单片机
[求助] 各位老师好。烦请看看我这个4X4按键扫描程序有什么不妥之处。多谢
小分子
2016-6-20 06:09
楼主
#include <reg52.h> //头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
void DelayMs(uint z);
void KeyScan();
uchar key,n; //定义变量
uchar code KeyCode[]={0xee,0xde,0xbe,0x7e,
0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,
0xe7,0xd7,0xb7,0x77}; //反转法矩阵键盘的各个按键的计算值
uchar code DispCode[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e}; //共阳极数码管显示0~F
void main()
{
while(1)
{
KeyScan();
P0=DispCode[n]; //在数码管上显示相应的键值
}
}
void DelayMs(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=114;y>0;y--);
}
}
void KeyScan()
{
uchar l,h,i; //定义局部变量,用l得出低4位的值,用h得出高4位的值
P1=0x0F; //给P1赋值00001111
if(P1!=0x0F)
{
DelayMs(10);
if(P1!=0x0F)
l=P1;
}
P1=0xF0; //给P1赋值11110000
if(P1!=0xF0)
{
DelayMs(10);
if(P1!=0xF0)
h=P1; //若有键按下,得出高4位的值
}
key=l|h; //高4位的值与低4位的值相加
for(i=0;i<16;i++)
{
if(key==KeyCode[i]) //通过查表得出n的值
n=i;
}
}
点赞
回复评论 (4)
沙发
nmg
说明一下你运行后是什么现象,这样大家更好帮你定位问题
点赞
2016-6-20 10:00
板凳
麻袋
P1=0x0F; //给P1赋值00001111
if(P1!=0x0F)
有什么意义,赋值成0x0f,又再判断是不是=于0x0f,IO的初始化都没有,网上参考下矩阵键盘的代码吧
点赞
2016-6-20 11:10
4楼
JOketinnle
首先应该先判断是否有变化,再进入keyscan,然后在翻转电平,,,你检查一下是不是你的按键焊错了
点赞
2016-6-24 10:35
5楼
汤权
没问题,我之前也是这么做的,但是反转后没有去抖动
点赞
2016-7-16 09:20
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
硬启动负载(如大功率永磁有刷电机、电磁阀)“恒功率” 电源控制策略
ccs6.0和之前的ccs5有什么区别
求购一套easy ARM213X的开发板
在什么情况下考虑用51?
EEWORLD大学堂----Matlab神经网络原理与实例精解
stm8s串口通信出现乱码
成就单片机高手
deviceiocontrol
SensorTag测试
求帮助,我是新手用1602编了一个简易计算器在输入数字键7,4,1时有异常
电源设计经验之MOS管驱动电路
求大神帮我讲解这个滤波电路的原理以及电感,电容参数的计算
【转】瞬态稳定性测试:注意步长
2010.5.16日上庄水库活动攻略
各位大侠,怎么样限制一台电脑只可以上指定的网站,和不可以上哪些网站
Verilog语言中几种不同的触发器描述方式
监控系统故障的解决方法
'l;'
步进电机知识
对于MSP430F5的单片机触摸电容按键问题,求大神帮助
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复