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

单片机四灯

发布时间:2022-09-05 16:57:36

单片机如何一个按钮实现控制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;

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

⑵ 51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写

在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。

#include<reg51.h>

#include<intrins.h>

仿真图效果。

⑶ 51单片机:0faa为啥能控制四个灯啊

应该是0xaa吧,根据二进制码,0xaa=10101010,一般高电平的时候二极管亮,有四个高电平所以四个灯亮,具体要根据电路分析,希望可以帮到你

⑷ 急需单片机高手帮忙用C语言写一个单片机4个灯轮流闪亮的源程序。 详细内容看补充。

/*对于个单片机的初学者,我希望用最直观的方式来达到你要的要求,程序每一句我已经写好备注,希望对你有帮助*/
#include<reg51.h> //使用51功能头文件
sbit L1=P0^0; //L1对应P0.0,表示第一盏灯
sbit L2=P0^1; //L1对应P0.1,表示第二盏灯
sbit L3=P0^2; //L1对应P0.2,表示第三盏灯
sbit L4=P0^3; //L1对应P0.3,表示第四盏灯

void delay(unsigned int i) //延迟子程序,注意这里的unsigned int i,这里相当于限定了调用时候变量的类型
{
unsigned char j; //局部变量定义
while(i--) //循环i次,主程序main调用时候,i为100,这数值你可随便该,但小于65355
for(j = 200; j > 0; j--) ; //这步的意思是空操作200次,也就是暂用CPU200次的工作时间

}
void main(void) //主函数,这里的viod是无类型,意思是没有给这函数指定数据类型
{
P0=0x00; //将P0口初始化位高电平,如果没有这句,初始化为低电平,这里可根据需要选择
L1=1; //第一盏灯亮
delay(100); //调用延时子程序
L2=1; //第二盏灯亮
delay(100); //调用延时子程序
L3=1; //第三盏灯亮
delay(100); //调用延时子程序
L4=1; //第四盏灯亮
delay(100); //调用延时子程序
while(1); //这里我用了个死循环,目的程序只运行一次,如果需要自动重新运行,可以把这句删掉
}
纯手工书写,并仿真调试过,记得加分哟~

⑸ 谁知道用单片机如何点下K1、K2、K3、K4来控制四盏灯 要求点下时不亮松手才亮。 要求用SWITCH语句。急用!

main()
{
unsigned char i;

P1 &= 0xC3;//所有的灯亮
while()
{
while(P3&0x3C==0x3C);//同时检测4个按键
i = P3 & 0x3C;//有按键按下,读取键值
delay();//按键去抖延时10 - 50ms,自己定
if(P3 & 0x3C == i)//按键确认
{
switch(i)
{
case 0x38:P1^0 = 1;while(!P3^2);P1^0 = 0;break;//按键K1按下灯灭,等待按键松开D1亮
case 0x34:P1^1 = 1;while(!P3^3);P1^1 = 0;break;//k2
case 0x2C:P1^2 = 1;while(!P3^4);P1^2 = 0;break;//K3
case 0x1C:P1^3 = 1;while(!P3^5);P1^3 = 0;//K4
}
}
}
}

⑹ 单片机编程当k1按下时四个灯亮,松开则四个灯不亮

单片机io扫描按键电平,控制四个灯的io电平高低变化即可

⑺ 51单片机四灯闪烁c程序

#include<reg51.h>

sfr p2=0xa0;
sfr p1=0x90;
sbit p1_0=0x90;
sbit p1_1=0x91;
int kk[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; DELAY();
int a,b;
int main()
{
if(p1_0==0)
{
while(1)
{
b=1;
for(a=0;a<10;a++)
{p2=kk[a];
DELAY();
}
if(p1_1==0)
{b=0; break;}

if(p1_1==0)
{
while(1)
{b=0;
for(a=9;a>=0;a--)
{p2=kk[a];
DELAY();
} } }
if(p1_0==0)
{b=1;break;}
}
}
}
DELAY()
{
unsigned char i,j,p;
for(i=10;i>0;i--)
for(j=100;j>0;j--)
{if(p1_1==0)
{b=0;a=10;break;}
if(p1_0==0)
{b=1;a=-1;break;}
for(p=200;p>0;p--)
;
}
}
你看这样对么。

⑻ 单片机编程怎么让四个灯,每个灯延迟0.3秒亮的编程

当然可以了,加入延时函数即可实现,或者使用定时器实现。

⑼ 单片机编程题:开关控制四盏灯

昨天就看到有人问了,不会还是你吧,呵呵,你要说清楚啊,想怎么控制,一起亮,一起灭?一个按键开,一个按键关?说具体点,要不怎么帮你

呵呵,今天晚上上线晚了,明天上班抽时间给你写吧,一会儿就搞定了,要不要留个邮箱啊,电路图也给你吧

还有,一定要按这个顺序吗?如果我乱按会出现什么情况,直接无效??

算了,直接贴上来吧

#include"reg52.h"

#defineuintunsignedint

#defineucharunsignedchar

sbitLED_R=P2^0;

sbitLED_Y=P2^1;

sbitLED_B=P2^2;

sbitLED_G=P2^3;

sbitKey1=P1^0;

sbitKey2=P1^1;

ucharKey1_Times=0,Key2_Times=0,Key_Flag=0;

voidDelay(uintx)

{

uinta,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

voidKeyScan()

{

if(Key1==0)

{

Delay(10);

if(Key1==0)

{

Key_Flag=1;

Key1_Times++;

if(Key1_Times==3)

Key1_Times=2;

}

while(!Key1);

}

if(Key2==0)

{

Delay(10);

if(Key2==0)

{

Key_Flag=1;

Key2_Times++;

if(Key2_Times==3)

Key2_Times=2;

}

while(!Key2);

}

}

voidmain()

{

P2=0xff;

LED_R=0;

while(1)

{

KeyScan();

if(Key_Flag==1)

{

Key_Flag=0;

if((Key1_Times==1)&&(Key2_Times==0))

{

LED_R=1;

LED_Y=0;

}

elseif((Key1_Times==1)&&(Key2_Times==1))

{

LED_R=1;

LED_Y=1;

LED_B=0;

}

elseif((Key1_Times==1)&&(Key2_Times==2))

{

Key2_Times--;

}

elseif((Key1_Times==2)&&(Key2_Times==0))

{

Key1_Times--;

}

elseif((Key1_Times==2)&&(Key2_Times==1))

{

LED_R=1;

LED_Y=1;

LED_B=1;

LED_G=0;

}

elseif((Key1_Times==2)&&(Key2_Times==2))

{

LED_Y=1;

LED_B=1;

LED_G=1;

LED_R=0;

Key1_Times=0;

Key2_Times=0;

}

}

}

}

⑽ 内容是 用单片机控制四个灯,按照一定规律闪亮,闪亮方式能够通过按键控制转换, 这是c语言

template<classT>
voidSelectSort(Ta[],intlen)
{

Ttemp;
intnIndex=0;

//每次循环只进行一次交换最多进行len-1次循环,因此总体上,比冒泡进行交换的次数少
for(inti=0;i<len-1;i++)
{
//第i次排序时,已经进行了i次大循环,因此已经排好了i个元素
//已排好序的元素0,,...,i-2,i-1
//待排元素为i,i+1,...,len-1


nIndex=i;
for(intj=i+1;j<len;j++)
{
if(a[j]<a[nIndex])
{
nIndex=j;
}

}

//交换
if(nIndex!=i)
{
temp=a[i];
a[i]=a[nIndex];
a[nIndex]=temp;
}


}

}

阅读全文

与单片机四灯相关的资料

热点内容
橙app如何开启聊天 浏览:895
访问服务器公网地址 浏览:656
pdf打印底色去掉 浏览:463
java快递接口 浏览:397
哪个app可以教新爸爸 浏览:210
如何查看服务器系统版本信息 浏览:524
成都市土地出让金算法 浏览:702
钢筋加密标记 浏览:576
ps中扩展功能在文件夹的什么位置 浏览:904
双极压缩机为什么要先高压 浏览:527
苹果手机服务器填什么 浏览:832
android移动动画效果 浏览:691
电子和服务器是什么意思 浏览:691
phpurl中文乱码问题 浏览:893
程序员那么可爱大结局陆漓产子 浏览:538
java如何从云服务器读取本地文件 浏览:924
压缩空气软管制作方法 浏览:912
天河三号算法 浏览:924
php队列教程 浏览:632
洪水命令 浏览:531