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

include define GPIO_LED P2 sbit K1=P3^1;void Delay10ms( );void main(){K1=1;while(1){if(K1==0){GPIO_LED=~GPIO_LED;Delay10ms();} } } void Delay10ms( ){ //延时函数 }

delay(10);//去抖动10MS if(P02)//再次确定按键按下 { while(P02){flash=flash}//按住按键的动作 flash=~flash;//按键按下后执行动作 } } } void ledflash(){ if(flash){ led=1;//点亮 delay(100);//延时

再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)。

首先,要知道控制led的电路,知道控制电平的管脚,同理也要搞清楚开关的电路。其次,设置开关的状态控制电平的高低,从而控制led灯的亮灭。最后,具体的执行办法,要看你是什么型号的51单片机,要查书本,或者网上查。

在51单片机中怎样用一个按键按键LED灯的闪烁和停止,编写出主要的程序就可以了

while(1){ P2=led_data;//默认第一位亮 if(key==0)Delay_ms(10);if(key==0){ while(!key);Delay_ms(500); //延时0.5s led_data=_crol_(led_data,1);//移位函数,使led_date向左循环移动1位 } }

}void t0isr() interrupt 1//秒计时{TH0=0x3c;TL0=0xb0;time++;if(time==20){time=0;if(sec>0 && flag==0)sec--;}dischg();}void t1isr() interrupt 3//显示{TH1=0xec;TL1=0x78;switch(scanled)

1、创建项目文件。2、按键:S1=P3^2,点亮: led=P1^5。3、创建C语言主函数。4、创建循环效果,检测效果。while(1) {}。5、选择输出的效果。6、当按下一个按键时,关闭灯,整个程序运行,再按一次,程序停止。

首先,要知道控制led的电路,知道控制电平的管脚,同理也要搞清楚开关的电路。其次,设置开关的状态控制电平的高低,从而控制led灯的亮灭。最后,具体的执行办法,要看你是什么型号的51单片机,要查书本,或者网上查。

char i;sbit k1=P3^6; //启动按键 sbit k2=P3^7;//停止按键 bit s=0; // 启停标志 char a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //LED灯的数组 void delay1s(void); //延时函数

include include define GPIO_LED P2 sbit K1=P3^1;void Delay10ms( );void main(){K1=1;while(1){if(K1==0){GPIO_LED=~GPIO_LED;Delay10ms();} } } void Delay10ms( ){ //..

51单片机怎么实现一个按键控制LED灯打开,另外一个按键控制关断?能不能给出程序?

十毫秒左右可以),再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)

按键松开后 跳出while(1)松手检测 然后在main的while(1)里面一直等待按键再次按下,同时led=1,也就是说是亮 因此 你的函数的功能基本上可以是 按键按下 led高频闪烁 按键松开 led常亮 所以你要改逻辑结构

2 setb p2.2 ;点亮 p2.2 ajmp keyp3.00 简单的谢了一下,你就当学习用吧; 你的电路设计不合理,按键和led都需要上拉,才可正常;满意的话赞一个,呵呵

这个程序中没有熄灭的程序,单片机当然不会有熄灭的操作。修改如下:if(k1==0)P2=0xee;else P2=0xff;if(k2==0)P2=0xfd;else P2=0xff;这是按住就亮,松开就灭的程序。如果想实现按一次亮,再按一次熄灭。程序如下

5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

一键多功能按键识别技术 1.实验任务 开关K1接在P3.2管脚上,在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流

LED_D1 =1;//=1亮灯 ,=0灭灯当也要看电路,完善的电路还会有驱动电路如三极管点了,也要看LED固定的那端是接地还是接VCC。最终无非就是通过单片机的IO口输出一个0或1来是LED二极管电路正向导通形成发光。

单片机独立按键控制LED灯的熄灭

我还附带给你加了按键防抖,程序如下:include sbit key1=P1^0;sbit key2=P1^1;sbit led=P0^0;void delay(m){ int i,j;for(i=0;i

这是按住就亮,松开就灭的程序。如果想实现按一次亮,再按一次熄灭。程序如下:bit a=0,b=0;//做按键点亮熄灭标志 while(1){ if(k1==0&&a==0){ P2=0xee;a=1;} else if(k1==0&&a==1){ P2=0xff;a=0

led=1;//不亮 while(1){ if(key1==0 && key2==1)//按键1按下,按键2没按 { led=0;//亮 } else if(key1==1 )//按键1释放或未按时,灯灭 { led=1;//灭 } if(key2==0 && key1==1)//按键2

delay1(10); //消抖 if(!k1) { while(!k1); //等待松开 //松开后,再检测 k3:if(!k3) { //再检测总开关 delay1(10); //消抖 if(!k3) { while(!k3);//等待松开 LED = ~LED;//亮灭交

delay(50000); //大约延时450msled=0;if(k2==1)break;}led=0;}思路很简单,就是用检测的方法去扫描相应的按键是否被触发,然后执行相应的子程序。

c51单片机:两个独立按键控制一个led,k1按下松开led闪烁,k2按下松开led灭?

在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或while语句来判断时间是否达到要求,然后控制LED灯的点亮和灭。在main函数中添加延时函数,以实现上电后30秒后LED灯开始点亮的要求。下面是一个简单的示例程序

if(CountTemp > 160)//如果按键时间有效,改变状态 { switch(ucState){ case(0):{ ucState = 1;led1 = 0;led2 = 0;led3 = 0;} break;case(1):{ ucState = 2;led1 = 0;led2 = 0;led3 = 0;} b

不会有影响啊,K1,K2,K3按键,分别控制LED1,LED2,LED3;定义一个状态标志变量,识别短按、长按1S,3S,5S的4种状态,只需对每个按键的状态标志进行判断,执行状态标志下的各功能。

include "reg52.h"typedef unsigned int u16;typedef unsigned char u8;sbit led=P2^0;//把所要控制的led灯定义为p2.0这个口sbit k1=P2^1;sbit k2=P2^2;void delay(u16 i){while(i--);}//一个延时程序void

单片机 利用定时器,实现LED灯闪烁 利用定时器0,工作方式1实现LED以1s亮灭闪烁 评论 共1条qq574090173 : 一个简单的小程序 单片机不同频率闪烁一个LED灯简单程序,

uchar speed,cnt=0;sbit key1=P1^0;sbit key2=P1^1;sbit led=P1^4;void t0isr() interrupt 1 { TH0=(65536-10000)/256;TL0=(65536-10000)%256;cnt++;if(cnt>=speed){ cnt=0;led=~led;} } main(){ u

关于单片机的,用两个独立按键控制LED实现三种速度的闪烁,要求使用定时器。

控制亮度,51需要设置io口为推挽输出,在设置相应的引脚输出高低电平,即可控制灯的亮灭

// 51单片机控制八个发光二极管 左右循环。include define uchar unsigned char define uint unsigned int unsigned char TAB[]= {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x7f,0xbf,0xdf

define LED P1//LED使用口 define nMHZ 12//晶振频率 define TMAC 12//机器周期 define PRESS 0//低电平触发按键 sbit key=P0^0;//按键使用口 void msdelay(unsigned int i){ unsigned int x=0,j=0,clk=0;cl

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

P1=0X7e; delay(2000); P1=0XFF; /***此循环使得发光二极管按照07,16,25,34,43,52,61,70的顺序循环交替两两点亮***/} /*end while*/}/*end main*/

很容易理解就是让0X01一直左移赋值给P0口然后循环,还有就是入口你得做按键扫描程序Keyscan();

51单片机 按键控制LED循环控制点亮

在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。 #include #include 仿真图效果。
#include #include #include #define s5 P0.1 void dalay() { int i,j; for(i=0;i++;i<100) for(j=0;j++;j<1000); } void main() { char i=0; P1=0xfe;//输出1为灯灭 由P1口输出 while(s5==1);//等待S5被按下 while(1) { i=P1; dealy(); P1==_crol_(i,1) } }
#include #define uchar unsigned char sbit keyu=P1^0; sbit keyd=P1^1; sbit led=P1^4; uchar t; void delay(uchar a) { uchar i; while(a--)for(i=0;i<120;i++); } main() { t=100; while(1) { if(keyu==0) { while(keyu==0); t+=5; } if(keyd==0) { while(keyd==0); t-=5; } if(t==0)t=255; led=~led; delay(t); } }
#include unsigned char n = 0; sbit key = P3^4; sbit led = P1^0; void delay() { unsigned int i, j; for(i = 0; i < 100; i++) for(j = 0; j < 500; j++); } void readkey(void) { unsigned char i, j; if(!key) { for(i = 0; i < 10; i++) for(j = 0; j < 120; j++); //延时消抖 if(!key) { while(!key); //等待按键释放 n++; n %= 4; //n = 0~3 } } } main() { while(1) { switch(n) { case 0: led = 1; readkey(); break; //熄灭 case 1: delay(); readkey(); //慢速闪烁 case 2: delay(); readkey(); //中速闪烁 case 3: delay(); readkey(); led = ~led; //快速闪烁 } } }
#include sbit k1=P1^0; sbit k2=P1^1; void delay(unsigned char a) { unsigned char i,j; for(i=0;i<a;i++) for(j=0;j<120;j++); } main() { unsigned char led=0xfe; while(1) { if(k1==0) { delay(10); if(k1==0) { while(k1==0); led=(led<<1)|0x01; if(led==0xff)led=0xfe; } } if(k2==0) { delay(10); if(k2==0) { while(k2==0); led=(led>>1)|0x80; if(led==0xff)led=0x7f; } } } }
按K1部分加一行 flag=1; led=0xfe;//重新赋值 K2部分也加这一行 因按K4后,Ied=led+1; 就不是亮一个啦
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
对你这种编程思想,我想问是跟谁学的啦! 对你这程序,我想问①先按K3、后按K2,你觉得程序结果会如何?②如果2个按键都按住不放,结果又会如何。 考虑一下上面的问题,就能看到你的程序问题了。当然你的程序问题,跟你的题目一样,没那么简单!后面还有一堆!!
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始