蓝桥杯 — LED灯

目录

 

1、LED原理图

2、实现功能的具体代码

(1)实现LED1、LED3、LED6亮

(2)从左向右8个LED依次点亮

(3)从右向左8个LED依次点亮

(4)实现LED1交替亮灭 

3、总结


1、LED原理图

二极管,电子元件当中,一种具有两个电极的装置,只允许电流由单一方向流过,许多的使用是应用其整流的功能。而变容二极管(Varicap Diode)则用来当作电子式的可调电容器。大部分二极管所具备的电流方向性我们通常称之为“整流(Rectifying)”功能。二极管最普遍的功能就是只允许电流由单一方向通过(称为顺向偏压),反向时阻断 (称为逆向偏压)。因此,二极管可以想成电子版的逆止阀。

首先看一下比赛LED灯连线原理图,看看是高电平亮还是低电平亮,了解引脚连接情况。从图中可以看出LED灯为低电平时候亮。LED正极连接VCC,故负极为0时候导通。

蓝桥杯 — LED灯_第1张图片

从图中可以看出LED灯由P0端口控制亮灭,P00 —  P07分别控制LED1 — LED8。

2、实现功能的具体代码

(1)实现LED1、LED3、LED6亮

#include
void main(){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化操作,关闭继电器、蜂鸣器
while(1){
P00=0; //LED1亮
P02=0; //LED3亮
P05=0; //LED6亮
}
}

  实现了LED1、LED3、LED6亮,自己可以任意修改8个LED灯的亮灭。

(2)从左向右8个LED依次点亮

   法一: 

#include
unsigned char i;
void delay();
void main(){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化操作,关闭继电器、蜂鸣器
   while(1){
     for(i=0;i<8;i++){
	   delay();
       P0=~(0X01<

   法二: 

#include
unsigned int i;
void main(){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;
while(1){
P00=0;P01=1;P02=1;P03=1;P04=1;P05=1;P06=1;P07=1;
for(i=0;i<60000;i++);
P00=1;P01=0;P02=1;P03=1;P04=1;P05=1;P06=1;P07=1;
for(i=0;i<60000;i++);
P00=1;P01=1;P02=0;P03=1;P04=1;P05=1;P06=1;P07=1;
for(i=0;i<60000;i++);
P00=1;P01=1;P02=1;P03=0;P04=1;P05=1;P06=1;P07=1;
for(i=0;i<60000;i++);
P00=1;P01=1;P02=1;P03=1;P04=0;P05=1;P06=1;P07=1;
for(i=0;i<60000;i++);
P00=1;P01=1;P02=1;P03=1;P04=1;P05=0;P06=1;P07=1;
for(i=0;i<60000;i++);
P00=1;P01=1;P02=1;P03=1;P04=1;P05=1;P06=0;P07=1;
for(i=0;i<60000;i++);
P00=1;P01=1;P02=1;P03=1;P04=1;P05=1;P06=1;P07=0;
for(i=0;i<60000;i++);
}
}

   不建议用法二来进行LED流水灯,因为代码部分,比较琐碎,麻烦。

(3)从右向左8个LED依次点亮

#include
unsigned char i;
void delay();
void main(){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化操作,关闭继电器、蜂鸣器
   while(1){
     for(i=0;i<8;i++){
	   delay();
       P0=~(0X80>>i);
	   delay();
     }
   }
}

void delay(){
int i,j;
for(i=0;i<200;i++)
for(j=0;j<400;j++);
}

(4)实现LED1交替亮灭 

#include
unsigned char i;
void delay();
void main(){
P2=0XA0;P0=0X00;P2=0X80;P0=0XFF;//初始化操作,关闭继电器、蜂鸣器
   while(1){
   P00=0;
   delay();
   P00=1;
   delay();
   }
}

void delay(){
int i,j;
for(i=0;i<800;i++)
for(j=0;j<800;j++);
}

3、总结

LED灯部分比较简单,可用多种方法得出,要找到适合自己的编程方式,这样在比赛中可以节约大量时间。

你可能感兴趣的:(【蓝桥杯单片机组】)