❶ 单片机的c语言,编写了一个键盘的按键函数

首先是按键需要防抖
其次,要检测按键是否放开。
如果是瞬间跳几下就加防抖
按下键就跳,判断键盘改变

❷ 单片机C语言按键控制LED灯

其实是一样的,也没什么哪个规范这一说,这个看个人习惯了

首先if(SW13==0)是判断此引脚是否为0 (按内键按下)容
然后一个delay用于按键防抖动

没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮
然后通过while判断按键是否松开,如果松开的话就继续执行LED_OFF将LED关闭

而注释掉的那段是依靠while函数直接判断按键是否处于按下状态
是的话就循环执行LED_ON函数直至判断按键松开(SW13=1)后在继续执行到LED_OFF函数使LED 关闭

不过这两种写法的有个共同缺点就是按键判断是while死循环,如果你这个按键按下后,单片机就只是在判断这个条件成立与否,期间不在进行其他工作

❸ 51单片机c语言程序 4个独立按键,分别控制4个数码管,每个独立按键按下

是要画仿真图吗?数码管和按键,可以随便接吗?

❹ 单片机按键C语言问题

设置一个标志位啊,按键按下是种状态让机器转,松开是一种状态机器停止,

❺ 单片机C语言按键开关程序

#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
voiddelay_ms(uint);
sbitled0=P0^0;
sbitled1=P0^1;
sbitkey1=P3^2;
sbitkey2=P3^3;
voidmain()
{
uchari=0;
ucharj=0;
while(1)
{
if(key1==0)//按键
{
delay_ms(10);
if(key1==0)
{
i++;
i=i%2;
switch(i)
{
case0:led0=1;break;//关小灯
case1:led0=0;break;//开小灯
default:break;
}
}
while(!key1);
}

if(key2==0)//按键2
{
delay_ms(10);
if(key2==0)
{
j++;
j=j%2;
switch(j)
{
case0:led1=1;break;//关小灯
case1:led1=0;break;//开小灯
default:break;
}
}
while(!key2);
}
}
}
voiddelay_ms(uintz)//延时子程序
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

❻ C语言实现单片机按键

单片机断电不能保存RAM中的数据,节电模式才可以

❼ 如何用C语言定义一个单片机的引脚为按键

比如sbit
key1=p2^1;//这就是定义2.1这个引脚是按键模式了。

❽ 单片机C语言,一个按键控制三个流水灯

void main()
{
int i=0; //设置参考变量
//初始化
p1.0=1;
p1.1=0;
p1.2=0;
//进入按键操作
while(1)
{
if(p2.2==0)
{
i++;
if(i==1)
{
p1.0=0;
p1.1=1;
p1.2=0;
delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。
}
if(i==2)
{
p1.2=1;
p1.0=0;
p1.1=0;
delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。
}
if(i==3)
{
p1.0=1;
p1.1=0;
p1.2=0;
delay();//延时,由于不知道你用的单片机型号,这个需要你自己设定了。
i=0;//参考变量归0
}
}
}
}

❾ 单片机 c语言 一个按键按一下加一 一个按键按一下减一 一个按键an'yi'x切换

#include<reg51.h>
sbit key1=P2^5;
sbit key2=P2^6;
sbit key3=P2^7;
main()
{
bit flag=0;
unsigned char a;
while(1)
{
if(key1==0)
{
while(key1==0);
if(flag==0)a++;
else a--;
P0=a;
}
if(key2==0)
{
while(key2==0);
if(flag==0)a--;
else a++;
P0=a;
}
if(key3==0){while(key1==0);flag=~flag;}
}
}

❿ 51单片机 c语言 按键和数码管显示

#include<reg51.h>
unsignedcharled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
voidled_display(unsignedcharnum);
unsignedcharkey_scan();
sbitled1=P2^0;
sbitled2=P2^1;
voidmain()
{
unsignedcharled_key;
P1=0;
while(1)
{
led_key=key_scan();
led_display(led_key);
}
}
voidled_display(unsignedcharnum)
{
unsignedcharten,single;
intdelay;
ten=num/10;
single=num%10;
delay=100;
for(delay=200;delay>0;delay--)
{
P0=led[ten];
led1=0;
led1=1;
P0=led[single];
led2=0;
led2=1;
}
}
/////////////////////////////////////////
unsignedcharkey_scan(void)
{
unsignedchartemp,key;
P1=0xfe;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=1;
break;
case0xd0:key=2;
break;
case0xb0:key=3;
break;
case0x70:key=4;
}
returnkey;
}
P1=0xfd;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=5;
break;
case0xd0:key=6;
break;
case0xb0:key=7;
break;
case0x70:key=8;
}
returnkey;
}

P1=0xfb;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=9;
break;
case0xd0:key=10;
break;
case0xb0:key=11;
break;
case0x70:key=12;
}
returnkey;
}
P1=0xf7;
temp=P1&0xf0;
if(temp!=0xf0)
{
switch(temp)
{
case0xe0:key=13;
break;
case0xd0:key=14;
break;
case0xb0:key=15;
break;
case0x70:key=16;
}
returnkey;
}
}

你好!很高兴为您解答!我有欢迎点赞!!以上传附件!!