}}按键控制两个灯#include
whiIe(1){if(key1==0){deIayms(20);if(key1==0){led1=1;led2=1;} } if(key2=0){deIayms(20);if(key2=0){led1=0;led2=0;} } }
flag是用来记忆按键状态,按下key3,flag置1,程序中检测到flag是1才闪烁,松手后LED仍然闪烁,同时下一轮还可以检测另外两个按键 while(1){ if(key1==0)//判断按键是否按下 { Delay1ms(10);//延时消抖 if(key1=
while(1){ if(key==0)//按键按下 { delayms(20);//延时消抖 if(key==0)//再次判断按键是否按下 { while(key==0)//按键没有抬起 { led=!led; delayms(200);}//LED闪烁 } } else led=0;}
led1 = ~led1;//KEY1按一下LED1亮 再按一下LED1灭 } } if(!key2) { Delay(10);if(!key2) { while(!key2) led1 = 1; //按下KEY2时LED1灭 led2 = ~led2;//KEY2也是这样 } } } }
define K p0^7 define LED_BLUE p0^0 define LED_RED p0^4 void scan_key(void);//用来控制LED_RED void DelayMS(unsigned int x);void main(){ while(1){ if(K==0)LED_BLUE=1;scan_key();else LED_BLUE
单片机编写两个按键控制两个LED灯的程序,要求当按下任何一个按键并松开后,两个LED灯的亮灭状态同时改变
P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮一盏LED灯,每隔1秒钟灯的状态会发生一次变化,即由点亮状态变为熄灭状态,再由熄灭状态变为点亮状态
LED_D1 =1;//=1亮灯 ,=0灭灯当也要看电路,完善的电路还会有驱动电路如三极管点了,也要看LED固定的那端是接地还是接VCC。最终无非就是通过单片机的IO口输出一个0或1来是LED二极管电路正向导通形成发光。
在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。在main函数中添加延时函数,以实现上电后30秒后LED灯开始点亮的要求。下面是一个简单的示例程序
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
单片机控制一个LED灯亮灭需要怎样的程序?
{ keyscan();WDT_CONTR = 0x3C;} } 这个功能可以用中断来实现,当然,现在我写的这个也可以实现。由于你用的晶振频率不知道,所以你自己修改一下延时时间,再把头文件改一下,就可以了,我试验了,可以实现改功能。
;led1=0;led2=1;led3=1;}if(s2==0){while(s2==0);led1=1;led2=0;led3=1;}if(s3==0){while(s3==0);led1=1;led2=1;led3=0;}if(s4==0){while(s4==0);led1=0;led2=0;led3=0;}}}
void loop() { // 控制LED灯亮灭 digitalWrite(ledPin, HIGH); // 点亮LED delay(1000); // 延时1秒 digitalWrite(ledPin, LOW); // 熄灭LED delay(1000); // 延时1秒} 在上述示例程序中,我们将LED连接到Ardui
Pin2,0},//0s后 led2亮{500,Pin4,0,},//0.5s后 led4亮{1000,0,
现功能:按下按键三个全亮,在按下LED2灭,再按下三个LED全灭,如此循环,相当于三档,第三档是停止。第一档和第二档定时5S,5S终了,停止运行,如果此时再按1次则回到第一档。如果5S之内按下,则切换到下一档,实现
单片机按键时间3sled亮的程序是什么
1 参考电路图: 如下 2 参考程序:ORG 0000H LJMP MAIN ORG 0100H MAIN: SETB P1.7 ; LED 灭 LL1: SETB P1.0 JB P1.0, LL1 MS: CPL P1.7 ; LED
while(1){ keyVal=P3^0xFF;if(keyVal){ if(keyVal==0x02) LED=ON;else if(keyVal == 0x20) LED=OFF;} } } 3.说明一下,此按钮不需要去抖动,原因在于每个按钮只负责灯的一种状态,如果一个按钮要负责两个
按键位置:P0.1;功能:1,当第一次按键按下,第一个灯亮,按键放开灯灭 2,当第二次按键按下,第二个灯亮,按键放开灯灭 3,重复执行前面两个步骤 灯的位置:P2口;/ include
if(按键一按下){ LED灯亮 关中断 } if(按键二按下){ LED灯灭 关中断 } if(按键三按下){ if(灯亮){ 开启中断 (中断的内容是让灯闪烁)} else { 什么也不做 } } } 2年没用过单片机了,只记得大概
if(BY1==0) //判断是否按下键盘,当单片机上电时所有IO口为//高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口//直接接地,此时检测P3.4肯定为低电平。{ delay10ms(); //延时,软件去干扰 if(
define uchar unsigned char uchar a;void delay(unsigned int ms ){ unsigned char i;while(ms--)for(i=0;i<123;i++);} void EX0INTinit(){ EA=1;EX0=1;IT0=1;} void EX0INT() interrupt 0 { a++;if
单片机按下按键1,灯亮,按下按键2,灯灭,按下按键3,灯闪烁,求代码
啥单片机啊?好久没写过51的了,写一下,可能有错的地方,不过思路是这样子的。那个S=4和后面那里写错了,不过我觉得你会改对的C51独立按键的识别示例程序 每按一次独立键盘的S2键,与P1口相连的一个发光二极管往下移动一位。 #include sbit BY1=P3^4; //定义按键的输入端S2键 unsigned char count; //按键计数,每按一下,count加1 unsigned char temp; unsigned char a,b; void delay10ms(void) //延时程序 { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); } key() //按键判断程序 { if(BY1==0) //判断是否按下键盘,当单片机上电时所有IO口为//高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口//直接接地,此时检测P3.4肯定为低电平。 { delay10ms(); //延时,软件去干扰 if(BY1==0) //确认按键按下 { count++; //按键计数加1 if(count==8) //计8次重新计数 { count=0; //将count清零 } } while(BY1==0);//等待按键释放,如果键未释放则一直在此等待。 } } move() //广告灯向下移动移动函数 { a=temp<<count; //这三句为一个循环移位,相当于前面提到的 b=temp>>(8-count);// _crol_()函数 P1=a|b; } main() { count=0; //初始化参数设置 temp=0xfe; P1=0xff; P1=temp; while(1) //永远循环,扫描判断按键是否按下 { key(); //调用按键识别函数 move(); //调用广告灯移动函数 } }
如果说用一个按键分别控制两个LED闪烁还有点难度,像你说的那样各控各的还有什么难度吗?
#include #define uchar unsigned char sbit key = P1^0; sbit led0 = P1^1; sbit led1 = P1^2; uchar count = 0; void delayms (uchar time)//延时 { for(time; time>0; time--) { TMOD |= 0x01; TH0 = 0xfc; TL0 = 0x18; TR0 = 1; //启动计数器0 while(TF0!=1);//计数溢出 TF0 = 0; TR0 = 0; } } void scan_key (void) { if (!key) { delayms (5); if (!key) { delayms (1); while (!key); count++; if (count==3) { count = 0; } } } } void main (void) { P1 = 0xff; while (1) { scan_key (); if (count==0) { led0 = 1; led1 = 1; } if (count==1) { led0 = 0; led1 = 1; } if (count==2) { led0 = 1; led1 = 0; } } }