首先if(SW13==0)是判断此引脚是否为0 (按键按下)然后一个delay用于按键防抖动 没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮 然后通过while判断按键是否松开,如果松开的话就继续执行LED_
你没有松手监测呀!就是在按键处理程序后要加一个while(k1!=0);就是只有你松开按键后才认为本次按键执行完毕,不然就会一直重复执行按键按下的程序,那么你的d1一直就会执行亮灭操作!
再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)。
include
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环
按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄?单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极
;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;}}}
没想法就不会有创新,你的想法就很好。像这种亮灯的程序,对时间要求不是那么严格(如果极其严格就没法实现),那么可以采用如下方法实现你的要求://假设晶振12MHZ,按键输入P1.0,P1.1,P1.2;LED控制P2.0,P2.1,P
你可以按照以下步骤编写STC8G1K08芯片的LED点亮和灭的时间控制程序:设置芯片的时钟和计数器,以便实现时间控制。例如,可以使用定时器或延时函数来控制时间。在主函数中编写程序,实现LED点亮和灭的时间控制。可以使用if语句或
即使不这样改,delayms是子程序,一般都是for循环实现的 用if的话:led=0;可以改成if(led==1)led=0;led=1;可以改成if(led==0)led=1;
2.连接电路:将LED灯与单片机连接起来。一般情况下,将LED的正极连接到单片机的一个GPIO引脚,将LED的负极连接到电阻,然后将电阻的另一端连接到单片机的地(GND)引脚。确保连接牢固。3.编写程序:使用单片机的编程软件(如A
现功能:按下按键三个全亮,在按下LED2灭,再按下三个LED全灭,如此循环,相当于三档,第三档是停止。第一档和第二档定时5S,5S终了,停止运行,如果此时再按1次则回到第一档。如果5S之内按下,则切换到下一档,实现
单片机按键时间3sled亮的程序是什么
if(led==1)//第一次按键按下 { P2=0XFE;//1111 1110 第一个灯亮 DELAY(500);//延时 while(BUTTON!=0)//等待按键放开 { P2=0xff;/1111 1111灯灭 DELAY(500)//延时 } } if(led==2)//第二次按键按
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
使用按键(pushbutton)控制led灯号的开关,当按键被按下时打开led灯号,按键放开时关闭led灯号。材料 arduino的主板×1 led×1 按钮或开关开关×1 10k电阻×1 面包板×1 单心线x n 接线 把led接到pin13,长脚(阳极
用几个变量表示按键的按下/松开状态,然后用定时器中断设置PWM的频率,例如要50hz的频率,那么定时器中断周期(PWM周期的一半)可以设置为10ms,在中断服务程序内根据按键的状态确定是否需要对PWM输出管脚进行翻转。改方法可以输
1. LED灯:作为光源,发出亮光 2. 按键:用于手动控制LED灯的开和关 3. 电阻:限制电流和电压,保护电路元件,防止LED灯过热 4. 电容:滤波器,可去除电路中的噪声 5. 三极管:将LED灯连接到电路,控制电流流向LED灯,
如何用按钮来控制LED灯
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
3.编写程序:使用单片机的编程软件(如Arduino IDE、Keil等),编写控制LED灯的程序。以下是一个简单的示例程序(以Arduino为例):// 定义LED灯连接的引脚 const int ledPin = 13;void setup() { // 将LED引脚设置为
LED=1; //这里使用if判断,如果按键按下led点亮,否则熄灭 //上述4句可以用一句替代 LED=KEY;//主循环中添加其他需要一直工作的程序 } }
LED1_01 = 1; //打开LED灯点亮 while(1){ if(KEY0_01 == 0) //检测按键是否按下 { Delay_1ms(10); //延时去抖动 if(KEY0_01 == 0) //确定按键按下 { LED1_01 = ~ LED1_01; //取
在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。
急求一个单片机控制一个LED灯发光的汇编程序,启动时LED发光有按键按下灯熄灭
以下是一个单片机间隔点亮一LED灯的C语言程序,以8051单片机为例:c Copy code include //包含了AT89C51的寄存器定义 void delay(unsigned int xms) //延时函数,xms为要延时的毫秒数 { unsigned int i,j;for(i=xms;i
4.上传程序:将编写好的程序上传到单片机中。将单片机通过USB线连接到计算机,选择正确的开发板和端口,然后点击上传按钮将程序烧录到单片机中。5.测试控制:完成上传后,单片机将开始执行程序。LED灯应该会按照程序中定义的亮灭
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
KeyDownFlag=TRUE;//按键按下标志 置位 KeyReadyFlag=TRUE;//按键准备标志 置位 } else KeyDownFlag=FALSE;//若按键Key1 无按下,则清空 按键按下标志 if(!KeyDownFlag && KeyReadyFlag)//若 按键已准备,且按键无
sbit LED=P1^1;//接LED void main(void){ P1=oxff;//初始化P1 while(1){ LED=~K1;} }
首先要看Led灯和单片机的连接情况,如果只是控制亮灭,只需要看单片机端口控制即可,关键是配置端口的DDRx方向寄存器和PORTx数据寄存器,比如端口A的0引脚控制一个灯,要配置它的输出高电平或是低电平以达到控制灯的亮灭,那
单片机C语言按键控制LED灯
//程序很简单也有很多方法都可以实现 。include
JNB 00H,LOOP1 CPL LED LCALL DELAY SJMP MAIN1LOOP1: SETB LED SJMP MAIN1DELAY: MOV R2,#200DLY: MOV R3,#250 DJNZ R3,$ DJNZ R2,DLY RET END
led=1;//点亮 delay(100);//延时100MS led=0;//熄灭 } else led=0;} void delay(unsigned int i){自己根据单片机频率写个1MS带形参的演示程序} 这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,
再次读取IO口,判断是否为低电平,如果是则表示有有效的按键按下,接着用while判断等待按键释放,然后让连接led的IO口电平取反以控制其亮灭(是强电的灯可以通过此处控制继电器的合、闭来控制灯的亮灭)。
include
首先,要知道控制led的电路,知道控制电平的管脚,同理也要搞清楚开关的电路。其次,设置开关的状态控制电平的高低,从而控制led灯的亮灭。最后,具体的执行办法,要看你是什么型号的51单片机,要查书本,或者网上查。
在51单片机中怎样用一个按键按键LED灯的闪烁和停止,编写出主要的程序就可以了
按一下松手还闪烁,再按一次就熄灭LED。这是两种状态,你可以给按键次数计数,如奇数led闪烁,偶数led灭。while(1) { if(key==0) {delay(5); while(key==0) { led=~led; delay_ms(500); } } else{led=0;} }
两种写法区别不大 ,都是在条件语句中加了循环结构 两种写法主要区别就在于while(!sw13) while(sw13==0)的循环条件的形式不同 !sw13求反 sw13==0关系判断 但实质都一样 即SW13为低电平就循环 因此 都能实现按下灯亮,松手灯灭。二者功能是一样的。 比较: 最后一段的程序代码比较规范和简练(只是用了一条条件语句) 呵呵 满意 就选满意回答哦
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。 2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数{ while(1) //无限循环 {led=0x1f; //点亮前面三个灯。这里是十六进制的换算, //不懂得可以查一下资料 }。 3、打开烧写软件,点击【打开文件】,寻找刚刚编写的程序。 4、找到相应的文件夹以后,寻找HEX文件。这是所能烧写软件识别的程序。 5、找到程序以后,将单片机连接到电脑,并点击程序下载,将程序烧写进单片机。 6、程序下载进单片机以后就能够看到八个led点亮了前面三个。
一键多功能按键识别技术 1.实验任务 开关K1接在P3.2管脚上,在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。 2.系统板上硬件连线 把“单片机系统”区域中的P3.2端口连接到“独立式键盘”区域中的K1端口上;把P0.0连到L1上 3.程序设计方法 (1. 设计思想由来 在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是因为每个人有不同的名子,我们就很快认出,同样,对于要通过一个按键来识别每种不同的功能,我们给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID的值是不相同的,所以单片机就很容易识别不同功能的身份了。 (2. 设计方法 从上面的要求我们可以看出,L1到亮灭受开关K1来控制,我们给L1亮灭定义出不同的ID号,当L1在亮时,ID=0;当L1在灭时,ID=1;分别给出不同的ID号我们就能够完成上面的任务了 4.汇编程序: ID EQU 30H K1 BIT P3.2 L1 BIT P0.0 ORG 0000H CLR P1.7 MOV ID,#00H START: JB K1,REL ;K1没闭合转 LCALL DELAY10MS ;K1闭合,延时消抖动 JB K1,REL :再判断 INC ID MOV A,ID CJNE A,#02,REL MOV ID,#00H REL: JNB K1,$ ;等待开关弹起 MOV A,ID CJNE A,#00H,IS0 ;判断相应ID CLR L1 :ID=0,灯亮 LCALL DELAY光 ;延时 SJMP START IS0: CJNE A,#01H,START; SETB L1 LCALL DELAY SJMP START DELAY10MS: MOV R6,#20 ;延时10MS子程序 LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET DELAY: MOV R5,#20 ;延时20MS子程序 LOOP2: LCALL DELAY10MS DJNZ R5,LOOP2 RET END
ORG 0000H ;复位启动 AJMP START ; ;主控程序======================== START: SETB P1.7 ;P17 = 1 LOOP: JB P3.2,LOOP ;没有按键 LCALL DELAY ;延时消抖 JB P3.2,LOOP ;确认按键 CPL P1.7 ;取反 JB P3.2,LOOP ;检测按键 LCALL DELAY ;延时 LJMP LOOP ;死循环 ; DELAY: MOV R7,#0 ;延时子程序 MOV R6,#0 MOV R5,#128 ; LOOP1: DJNZ R7,KJYS ;延时约20毫秒 DJNZ R6,KJYS DJNZ R5,KJYS RET ;延时间到返回 END ;结束 延时子程序数据可能因不同系统时钟需要调整。