图片为原理图 下面为出程序设计:include
} } //主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);
PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0, #255 ; 8个led灯灭 RET ;--- PRG2:MOV P0, #255 ;
include
while(1){ P1=0xfe; //点亮第一个LED for(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfd; //点亮第二个LED for(i=200;i>0;i--)for(j=500;j>0;j--);P1=0xfb; //点亮第三个LED for
八个灯接在单片机的P1口(P0,P2,P3,P4都一样) while(1) { delay(你想要延时的时间); P1=0xff; delay(你想要延时的时间); P1=0; } 注意led最好加驱动,不然单片机会坏的。
单片机 8个按键分别控制对应的8个led的亮灭 程序设计
1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include
LED2 = LED3 = LED4 = LED5 =1; break; // 其他的一样 default: break; }}
红绿蓝四个LED灯循环闪烁,单片机课程试验,连上板子可以直接显示,非常基础。单片机使用codewarrior编。资源中是采用51单片机的GPIO引脚对多路LED灯进行控制的代码,包含两个工程,分别采用两种不同的方法对多路LED灯进行控制。
首先要查看电路的连接,看看输入连接到单片机的哪个引脚(比如p1.0),led灯连接到哪个引脚(比如p2.0)。然后看是高电平有效还是低电平有效(也就是高电平时led灯亮,还是低电平时led灯亮)。如果是高电平灯亮的话,程
LED1 = 1;delay(500);};if(S3==0){ P2 = 0X07;LED1 = 0;delay(500);P2 = 0XFF;LED1 = 1;delay(500);};if(S4==0){ P2 = 0X38;LED1 = 0;delay(500);P2 = 0xff;LED1 =1;delay(500);};}
基于51单片机的led彩灯设计。 9个灯(红绿蓝三色)。按键控制 c语言程序
首先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暗!循环
Led = 1; // 点亮LED } t = 0; // 将计时器清零 } } } ```以上程序中,首先通过定义按键和LED所在的IO口的方式,实现了对这两个外设的控制。在主函数中则通过一个while循环来监听按键的操作。当按键被按下时
以下是一个简单的51单片机程序,通过按下按键可以实现4种不同状态的灯亮灭,包括正闪、反闪、多种间隔闪。程序中使用了定时器来实现闪烁功能。程序中使用了P1.0到P1.3作为控制灯的引脚,P3.2作为按键的引脚。每当按下
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
LED_D1 =1;//=1亮灯 ,=0灭灯当也要看电路,完善的电路还会有驱动电路如三极管点了,也要看LED固定的那端是接地还是接VCC。最终无非就是通过单片机的IO口输出一个0或1来是LED二极管电路正向导通形成发光。
CALL PRG1 ; 亮且发音 CALL PRG2 ; 灭且静音 SJMP 0 ;--- PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0
单片机按键控制LED灯亮灭程序
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;}#include #define uint unsigned int sbit LED = P1^0; sbit KEY1 = P1^2; void delay(uint); void main(void) { LED = 1; //初始化LED熄灭 KEY1 = 1; //赋值KEY1高电平 while(1) { if(!KEY1) //检测到按键按下 { LED = ~LED; /*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循 环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保证连续两次按键动作处在程序的延时过程中,不进行其他程序从而不会影响小灯。*/ } } } void delay(uint z) //延时函数 { uint x, y; for(x=85; x>0; x--) for(y=z; y>0; y--); } 可下载到单片机验证。
什么意思? 任意两色亮,最好通过按键,
定义一个数组, 10000001 01000011 00100001 00010011 00001001 00000111 对P1口循环赋值输出,中间加上延时就行了。