⑴ 89C51单片机关于按键判断的问题
有两个办法供你参考:1)将3个按键进行编码,将三个键编码成01、10、11,这样只需占2条输入线就够了,正好利用2个中断口,任何一个中断均调用键盘程序;2)将3个键的3个输出线通过二极管引到中断输入口(相当于3输入与门),这样任何一个键按下均发生中断,只需占用一个中断口。但是如果采用软件延时的话按键时的延时精度还是得不到保证的。
⑵ 单片机按键在iss中如何搜索
单片机按键在isis中的元件名是button。如下图中的3个按键,是这样的。
⑶ 单片机怎样识别按键是单机,双击还是长按,算法应该是怎样
按键的处理进行时间判断.在一定的时间内如果按下按键,当时间小于这个时间,那么为单次按键,当时间超过一定时间为为长按,当两次按的中间有高电平时,为双击.你可以参考参考.
⑷ 单片机按键有几种方式
按键检测一般有:1、查询、2、扫描、3中断等方式。查询方式占用主循环资源,就是说主程序主要干检测按键的活儿,若增加其他程序容易出错。扫描方式效果最好,可以在性能和占用资源间平衡,中断方式,适用于响应速度极高的场景,但抗干扰较差。
⑸ 单片机如何检测多个按键按下情况
用查询的办法 或 中断+查询的办法
如果有键按下(中断) 则依次查询所有按键
或直接每几十或几百ms判断所有按键的状态
这样就一个都不漏掉了
⑹ 单片机怎样识别按键值
一般的源值表如下,按键也对应如下
uchar
code
KeyCode[4][4]
=
{
//矩阵按键编号到标准键盘键码的映射表
{
0x31,
0x32,
0x33,
0x26
},
//数字键1、数字键2、数字键3、向上键
{
0x34,
0x35,
0x36,
0x25
},
//数字键4、数字键5、数字键6、向左键
{
0x37,
0x38,
0x39,
0x28
},
//数字键7、数字键8、数字键9、向下键
{
0x30,
0x1B,
0x0D,
0x27
}};
//数字键0、ESC键、
回车键、
向右键
⑺ 单片机中,怎样设计键盘复合键
键盘复合键,是要实现第二功能键吗?就像电脑上的Shift 键的功能吗?
这需要是矩阵键盘,独立按键比较少就没有什么意义了。
其实,与识别单键的原理是一样的,只要识别出类似的Shift 键按下,同时又有其它键也按下,就可以实现第二功能键啦。
⑻ 51单片机, 用一个弹性按键控制LED的亮暗
按一次1亮,再按一次灭。。。我自己写的检测管脚==0,然后去抖,等待释放什么的都写上了,不过效果是,当按着的时候有效果,放开就没效果了(恢复原来状态)。也就是让他亮,按着就亮,放开就灭了....囧...我需要的是1个按键分别让5个LED成流水灯
⑼ 请高手帮忙,单片机控制一个LED灯闪烁的C语言程序,想加一个弹性按键,实现按一下弹起后,一直闪烁
#include <reg51.h>
sbit P0_0=P0^0;
sbit key=P0^1;
void delay1s();
unsigned char k,led;
void main( )
{
TMOD=0X10;
led=1;
while(1)
{
if(key)
{
if (led=1){led=0}else{led=1;}
}
if(led==1)
{
P0_0=0;
delay1s();
P0_0=1;
delay1s();
}
else{P0_0=0;}
}
}
void delay1s()
{
unsigned char i;
for(i=0;i<0x02;i++)
{
TH1=0X3C;
TL1=0XB0;
TR1=1;
while(!TF1);
TF1=0;
}
}
以上只是一种解决方案,很不完善。最好是利用中断来改变led的值来进行状态切换。
⑽ c51单片机编程中,怎么检测按键
while(K1!=0)//K1没有被按下执行循环
{
d1=0;d2=1;delay();
d1=1;d2=0;delay();
}