if(led==1)//第一次按键按下 { P2=0XFE;//1111 1110 第一个灯亮 DELAY(500);//延时 while(BUTTON!=0)//等待按键放开 { P2=0xff;/1111 1111灯灭 DELAY(500)//延时 } } if(led==2)//第二次按键按

1 KeyReadyFlag=FALSE;//按键处理完毕,清 按键准备标志 } } void main()//主函数 { TimerInit();//调用 定时器初始化 函数 while(1)//循环系统 { KeyResp();//调用 按键响应 函数 } } 方波输出接口接灯;

首先要看Led灯和单片机的连接情况,如果只是控制亮灭,只需要看单片机端口控制即可,关键是配置端口的DDRx方向寄存器和PORTx数据寄存器,比如端口A的0引脚控制一个灯,要配置它的输出高电平或是低电平以达到控制灯的亮灭,那

sbit LED=P1^1;//接LED void main(void){ P1=oxff;//初始化P1 while(1){ LED=~K1;} }

4.上传程序:将编写好的程序上传到单片机中。将单片机通过USB线连接到计算机,选择正确的开发板和端口,然后点击上传按钮将程序烧录到单片机中。5.测试控制:完成上传后,单片机将开始执行程序。LED灯应该会按照程序中定义的亮灭

1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

单片机C语言按键控制LED灯

按一下key1全亮,再按一下key1全灭往复循环 2.分别控制每盏亮灭 include sbit key1 = P1^0;sbit led1 = P0^0;sbit led2 = P0^1;sbit led3 = P0^2;sbit led4 = P0^3;unsigned

void keys() /// 按键 输入 { if (keyi==0) //有按键 { delay(80); //延时去抖 if (keyi==0) //确定有按键 if(key==3) //每按一键,key加一,当为3时,归0,此处可以设置控制几个led key=

LED1 = 1; //点亮4个LED灯 LED2 = 1;LED3 = 1;LED4 = 1;while(K1==0) //等待K1键被抬起 { ;} } LED1 = 1; //平时没按下K1按键时,熄灭4个LED灯 LED2 = 1;LED3 = 1;LED4 = 1;}

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

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

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灯的闪烁和停止,编写出主要的程序就可以了

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数

key() //按键判断程序 { if(BY1==0) //判断是否按下键盘,当单片机上电时所有IO口为//高电平,S2键一端接地另一端接P3.4,所以当键被按下时P3.4口//直接接地,此时检测P3.4肯定为低电平。{ delay10ms

{ if(KEY0_01 == 0) //检测按键是否按下 { Delay_1ms(10); //延时去抖动 if(KEY0_01 == 0) //确定按键按下 { LED1_01 = ~ LED1_01; //取反LED灯 [ 亮 . 灭 ]} while(KEY0_01 =

sbit LED=P1^1;//接LED void main(void){ P1=oxff;//初始化P1 while(1){ LED=~K1;} }

单片机 用C语言怎么编写用一个按钮,控制一盏灯的亮与灭的程序?

你首先要确定你的电路。选择什么单片机和数码管,8个按键最简单8个IO口控制。一般简单的是用三极管驱动数码管。如果你会C语言的话,很容易上手。自己先从控制1个数码管学,在控制2个数码管(2个数码管基本上可以完成上面试验,8个就可以类推)\r\n\r\n1、初始值为0:上电复位后,单片机驱动数码管显示0.(如果不会,百度里搜51控制数码管等关键字,特别多试验电路和程序。)\r\n2、按第一个键:原理就是按键中断,直接跳到中断程序里,中断程序就是显示12345678(程序里是二进制码,单片机只认识0和1)。\r\n3、数码管移动显示,其实就是data脚的数据给的不一样,这个地方注意延时,你可以尝试改变延时时间看看效果。\r\n4、同3;\r\n5、12345678和ABCDEFGH的二进制码不同而已;\r\n6、同5.\r\n7、数码管全亮就相当于给data脚全为高(或者为低),和电路有关。\r\n8、同7.\r\n9、点阵显示按键键号。(数码管有小数点,只是也是一个data脚而已)\r\n\r\n----------------------------------------------------------------------自己多去百度找找学学,对个技能还是有点用的。
sbit KEY = P0^1; sbit LED = P0^2; int keyscan(void) { bit keyval=0; if(KEY) { delay(30);//延时消抖 if(KEY) { keyval = ~keyval; //值取反 if(keyval ) { LED = 1;//led亮 } else { LED = 0;//led灭 } } } }
按一下松手还闪烁,再按一次就熄灭LED。这是两种状态,你可以给按键次数计数,如奇数led闪烁,偶数led灭。
while(1) { if(key==0) {delay(5); while(key==0) { led=~led; delay_ms(500); } } else{led=0;} }
给个20悬赏就来一句“请编写程序”,大老板啊!看一下别人怎么问问题的去吧,青瓜蛋子!能在5分钟里给你写出程序的知友差你那20悬赏么!
今天做回好人,闲着给你写一个做参考。 按键按一次LED灯灭,在按一次按键LED灯亮。 程序如下: /************************************************************************************************************* #include "REG52.H" sbit LED1_01 = P1^1; //LED灯 sbit KEY0_01 = P1^2; //按键 void Delay_1ms(unsigned int Time) { unsigned int x, y; for(x = Time; x > 0; x--) for(y = 120; y > 0; y--); } int main(void) { LED1_01 = 1; //打开LED灯点亮 while(1) { if(KEY0_01 == 0) //检测按键是否按下 { Delay_1ms(10); //延时去抖动 if(KEY0_01 == 0) //确定按键按下 { LED1_01 = ~ LED1_01; //取反LED灯 [ 亮 . 灭 ] } while(KEY0_01 == 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点亮了前面三个。