导航:首页 > 操作系统 > 单片机跑马灯与按键后一个灯闪烁

单片机跑马灯与按键后一个灯闪烁

发布时间:2023-01-03 14:44:27

单片机实现LED灯,按键的时候闪烁,再次按键的时候熄灭

以后的程序记得缩进,不然很难看的,你得闪烁时间太长了正在闪烁的时候你又按一下按键,那你的单片机就会迷茫了,究竟是从头开始还是继续执行呢?对硬件的处理放到主函数里,你的延时居然是软件加硬件,厉害,中断函数里的LED是局域变量,赋值还是最好的,局域变量系统会随机分配值的,不一定就是你想想的0

Ⅱ 单片机用外部中断0实现:一个亮的LED灯,当按下按键后,闪烁2下,继续恢复原来状态。

main()
{

// CLK_CKDIVR=0x00;
CLK_Init();
IO_Init();
led_on=0;
//timer1_init();
EXTI_DeInit();?/初始化外部中断IO口
_asm("rim");

while(1)
{
cbi(PA_ODR,4);
}

}

@far @interrupt void TIM1_UPD_OVF_IRQHandler(void)
{

TIM1_SR1 = 0x00; // 清除更新标志

}
@far @interrupt void EXTI0 (void)//外部中断子函数
{
if(PA_on)
{ sbi(PA_ODR,4);PA_on=0;}//PA4为灯亮
else
{ cbi(PA_ODR,4);PA_on=1;}//PA4为灯灭

EXTI_CR1=0x00 ;
}
不懂再追问,你只需要把主程序里面的灯定为一个状态,外部中断里面再定一个状态。要亮2次,加个延时,就行了。

Ⅲ 51单片机使灯闪烁,我写的程序按一下开始闪烁,在按一下为什么不能熄灭呢

void main()
{
L1=0;
if(K1==0) //1 按键按下后
{
Delay10ms(); //2 延时去抖动
if(K1==0) //3 确认按下
{
L1=0; //4 以下4句闪烁一次
Delay(1000);
L1=1;
Delay(1000);
}
while(1) //5 这里死循环,不能再执行上面的语句了。
{
while(!K1) //6 判断按键是否按下,如果按下,则延时10ms,再判断是否按下,一致循环,知道你松开手。
{
Delay10ms();
}
while(!K1); //7 按键按下话,一致死等,直到你松开手

{ //8 下面闪烁一次。
L1=0;
Delay(1000);
L1=1; // 9
Delay(1000);
}
}
}
}

你的程序来看,工作流程是这样的,开机后,按下按键不放,只闪烁一次。如果你放开你的手,释放按键,则LED一致闪烁。
你说再按一下为什么不熄灭,因为 标示9句那里置1了,你的硬件应该是L1置1亮吧?
因为L1=1,是你灯闪烁的最后一个状态,而后又会从5再次执行,如果你按下了按键,程序停在了6那里死循环,
则后面7,8都不会执行了。灯则保留了上一个循环最后的状态,也就是9的状态,所以就一致亮了。
你如果又松开按键,灯又会闪烁,你再按下按键,灯又一直亮了。如此循环。

你的程序的就是一个字概括,乱,你的思路很混乱,条理不清晰,建议先在纸上写下流程,再来写代码。想清楚了再下手。
你会学的很快的。

你的main函数有个性,呵呵,没有人会这么写main函数的,去看看单片机C语言的书吧!

Ⅳ stm32单片机两个跑马灯一个一秒闪两次一个一秒闪四次,

看到上面仁兄回答,想起自己刚编程时的艰难

介绍一个新的编程方式,自己选好芯片,安装完parkage,勾选下面

具体实现自己来吧,都是从不会到会,种地也是

Ⅳ 51单片机,用两个按键分别控制两个led,一个亮/灭,另一个闪烁/灭,为什么我按下了第二个灯不闪呢

你的led1=~led1;这个语句没有循环,所以只会反转一次。要么加循环,要么再写一个闪烁函数。

voidled_filcker(usignedcharx)

{

while(x)

{

led1=~led1;

x--:

}

}

如果你是想,按一下,松开也会闪烁,再按一下熄灭。你得定义一个变量来表示按键的按下。

#include<reg52.h>

#define uchar unsigned char

bit stop=1;

sbit k5=P1^4;

void delay(uchar xms)

{

while(xms--);

}

void main()

{

if(k5==0)

{

delay(1000);

if(k5==0)

{

while(k5==0)

{

if(stop)

<<<<<<<<<<<<<<<此处执行你的语句

else

stop=~stop:

}

}

}
}


Ⅵ 单片机,跑马灯,交替闪烁,C语言代码

#include<reg51.h>
void delay(unsigned int a)
{
unsigned int i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
unsigned char i,led;
led=0xfe;
while(1)
{
P0=led;

delay(500);

P0=0xff;

delay(500);

led=(led<<1)|0x01;

if(led==0xff)led=0xfe;

}

}

Ⅶ 用单片机c语言一个按键控制led的闪烁和熄灭,就是按一下闪烁,再按就熄灭。

首先你的贴出来的程序不完整,最好贴出完整代码!
其次,如果你的程序没问题的话,你的LED闪烁是必须在你按住按键且不能弹起情况下才会发生的,你是一直按着吗?
而且注意你n的类型,因为你这样一直加,会溢出的

Ⅷ 单片机按下按键1,灯亮,按下按键2,灯灭,按下按键3,灯闪烁,求代码

主要程序如下:
flag是用来记忆按键状态,按下key3,flag置1,程序中检测到flag是1才闪烁,松手后LED仍然闪烁,同时下一轮还可以检测另外两个按键
while(1)
{
if(key1==0)//判断按键是否按下
{
Delay1ms(10);//延时消抖
if(key1==0)
{
while(key1==0);//等待按键抬起
LED=1;
flag=0;
}
}
if(key2==0)//判断按键是否按下
{
Delay1ms(10);//延时消抖
if(key2==0)
{
while(key2==0);//等待按键抬起
LED=0;
flag=0;
}
}
if(key3==0)//判断按键是否按下及是否在走时
{
Delay1ms(10);//延时消抖
if(key3==0)
{
while(key3==0);//等待按键抬起
flag=1;
}
if(flag==1)
{
LED=!LED;
Delay1ms(200);
}
}

Ⅸ 求教通过按键控制单片机LED灯闪烁周期的程序怎么写

你用的什么单片机?
看你说的应该是跑马灯,给你一个最常见的,51单片机,跑马灯C程序。
若有需要可以给你更多,本人硬件开发工程师。
望采纳。

例,这是一个51单片机的跑马灯C程序,已经在PROTEUS软件上仿真通过

#include<reg51.h>
void delay(int);
void main()
{
int i;
P0=0x01;
delay(500);
while(1)
{
for(i=0;i<7;i++)
{
P0<<=1;
delay(500);
}
P0=0x01;
delay(500);
}
}
void delay(intx)
{
int i,j;
for(i=x;i>0l;i--)
for(j=110;j>0;j--);
}

#include<reg51.h>
void delay(int);
void main()
{
int i;
P0=0x01;
delay(500);
while(1)
{
for(i=0;i<7;i++)
{
P0<<=1;
delay(500);
}
P0=0x01;
delay(500);
}
}
void delay(intx)
{
int i,j;
for(i=x;i>0l;i--)
for(j=110;j>0;j--);
}

Ⅹ 描述 stc单片机 按键控制灯亮灭和闪烁 上电灯不亮,按一下按键灯亮,再按一下灯闪烁,再按一下

#include<reg51.h>
unsigned char times;
sbit key=P1^0;
sbit led=P1^4;
void delay(unsigned char a)
{
unsigned char i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
led=1;
while(1)
{
if(key==0)

{
while(key==0);

times++;

times%=3;

}

switch(times)

{
case 0:led=1;break;

case 1:led=0;break;

case 2:led=~led;delay(100);break;

default:break;

}

}

}

阅读全文

与单片机跑马灯与按键后一个灯闪烁相关的资料

热点内容
time库中的clock函数python 浏览:987
cad视觉移动命令怎么打开 浏览:819
安卓java调用python 浏览:395
java标准时间 浏览:137
华为服务器湖北渠道商云主机 浏览:30
韩式面部护理解压视频 浏览:301
pdf换成jpg图片 浏览:897
dh加密算法 浏览:107
安卓手机如何隐藏微信信息提示 浏览:632
nodejs解压缩 浏览:262
直流双转子压缩机 浏览:952
pythonxmlstring 浏览:822
用私钥加密之后可以用公钥解密 浏览:788
ug如何启动服务器 浏览:444
csgo防抖动命令 浏览:960
如何弄到手机app页面的源码 浏览:441
androidwindows7破解版 浏览:363
解压视频动画怎么拍 浏览:748
连涨启动源码 浏览:163
小奔运动app网络异常怎么回事 浏览:449