导航:首页 > 操作系统 > 单键多灯单片机

单键多灯单片机

发布时间:2022-12-08 13:03:51

单片机一个按键控制3个led灯,多种状态

#include <reg51.h>

sbit key =P1^1;
sbit led1=P1^2;
sbit led2=P1^3;
sbit led3=P1^4;
bit key_flag;
bit flag_500ms;

void InitTimer0(void)
{
TMOD |= 0x01;
TH0 = 0x3C;
TL0 = 0x0B0;
EA = 1;
ET0 = 1;
TR0 = 1;
}
unsigned char stat;
void main(void)
{
InitTimer0();
key_flag=0;
stat=0;
while (1)
{
if (key_flag) stat++;
stat%=3;
switch (stat)
{
case 0:
led3=led2=1;
led1=flag_500ms;
break;
case 1:
led1=led3=1;
led2=flag_500ms;
break;
case 2:
led1=led2=1;
led3=flag_500ms;
break;
default :break;

}
}
}
unsigned char key_time,time_500;
void Timer0Interrupt(void) interrupt 1 //50ms
{
TH0 = 0x3C;
TL0 = 0x0B0;
//add your code here!

key=1;
if (!key) key_time++;
else key_time=0;
if (key_time>5)
{
key_time=5;
}

if (key_time==4)key_flag=1;

if (time_500)time_500--;
else
{flag_500ms=1;time_500=10;}

}

Ⅱ 单片机怎么用一个按钮控制多种花样流水灯,只要一按就马上执行下一种花样。

程序里面,给你说一种思路。首先在中断中设置一个整体变量。中断时对这个变量赋值。
比如cnt++。if(cnt>=设置的花样)cnt==0;
然后编写各个花样的流水灯子程序。
在主函数中加上判断函数。

Ⅲ 单片机怎么实现一个开关控制八个灯按一下亮一个按八下八个灯都亮汇编语言程序

用一个寄存器做变量就可以。

假如按键是一个开个,接在P1.0,八个灯在P0,低电平灯亮
程序是这样的
MOV 30H ,#00
LOP :
SETB P1.0
JNB P1.0, PRESS
AJMP LOP
PRESS:
INC 30H
MOV A,30H
CJNE A,#9,L_NEXT
MOV 30H,#1
L_NEXT:
JNB P1.0,$
MOV A,30H
CJNE A,#1 ,LED1_ON
CJNE A,#2, LED2_ON
CJNE A,#3, LED3_ON
CJNE A,#4, LED4_ON
CJNE A,#5, LED5_ON
CJNE A,#6, LED6_ON
CJNE A,#7, LED7_ON
CJNE A,#8, LED8_ON
LJMP LOP

LED1_ON: MOV P0,#0FEH //亮一个灯
LJMP LOP
LED2_ON: MOV P0,#0FDH //亮一个灯
LJMP LOP
LED3_ON: MOV P0,#0F8H //亮一个灯
LJMP LOP
LED4_ON: MOV P0,#0F0H //亮一个灯
LJMP LOP
LED5_ON: MOV P0,#0E0H //亮一个灯
LJMP LOP
LED6_ON: MOV P0,#0D0H //亮一个灯
LJMP LOP
LED7_ON: MOV P0,#080H //亮一个灯
LJMP LOP
LED8_ON: MOV P0,#00H //亮一个灯
LJMP LOP

Ⅳ 单片机如何一个按钮实现控制4个led灯的循环闪烁

0 0
1 1
1 0
0 1
是这样的四种状态吗? 这样很简单的,, 主要还是检测按键, 按键按下 你把一个变量+1, 比如
if(Key == 0)

{
delay(); //延时10ms,延时函数 自己写吧

if(Key == 0)

{
num++;

if(num >= 4)

num = 0;
while(!Key);

}
}
然后根据num 的值 对Led进行状态刷新就好了。
switch(num)
{
case 0: Led1 = 1; Led2 = 0; break;

case 1: Led1 = 0; Led2 = 1; break;

case 2: Led1 = 0; Led2 = 0; break;

case 3: Led1 = 1; Led2 = 1; break;

default : break;

}
就可以了,,,顺序的话 可以按照具体要求更换下位置就可以了。

Ⅳ 单片机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
}
}
}
}

Ⅵ 单片机 单个按键按一下点亮一个LED1, 在按一下点亮另外一个LED2

#include sbit key1=P1^0; sbit key2=P1^1; sbit led1=P1^2; sbit led2=P1^3; main() { led1=1; led2=1; while(1) { if(key1==0)led1=~led1; if(key2==0)led2=~led2; } }

Ⅶ 单片机89c51一个键分别控制三个灯点亮的程序

这个很简单呀,按一下键,你就付一个键值,使键值在0~2之间切换,当键值为0,1,2时分别点亮对应的三个灯就可以了。

阅读全文

与单键多灯单片机相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:144
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:736
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163