点亮LED_单片机_普中

1.介绍

  一般发光二级管的导通电压在1.5-1.8V左右,高亮度发光二极管的导通电压要高一点,这个电压随型号不同而有区别,可以在该型号的性能手册上查到。 正常工作的发光二极管,两极之间电压应等于其导通电压;当存在限流电阻,而电源电压又肯定大于发光管的导通电压的情况下,两极间电压等于电源电压时,此发光管几乎可以肯定是“挂了”。

  红色发光二极管的工作电压最低,约1.6-1.7V;其次是普绿色、黄色,1.7-1.8V;白色1.8-1.9V;橙色1.8V-2.4V;蓝、白、翠绿电压范围:2.8V-3.5V。

2.功能:点亮D1指示灯,即让P2.0管脚输出一个低电平。完成后可再控制D1指示灯闪烁,即间隔一段实践点亮和熄灭D1指示灯。

 

3.硬件电路图

4.软件设计

4.1 点亮LED

 1 #include <reg52.h>
 2 
 3 sbit LED1=P2^0;
 4 
 5 void main()
 6 {
 7      LED1=0;
 8     while(1)
 9     {
10 
11     }
12 }

4.2 闪烁LED

 1 #include "reg52.h"
 2 
 3 typedef unsigned int u16;
 4 
 5 sbit LED1=P2^0;    
 6 
 7 void delay_10us(u16 ten_us)
 8 {
 9         while(ten_us--);
10 }
11 
12 void main()
13 {
14    while(1)
15    {
16            LED1=0;
17         delay_10us(50000);
18         LED1=1;
19         delay_10us(50000);
20    }
21 }

 4.3 流水灯

 1 #include <reg52.h>
 2 
 3 typedef unsigned char u8;
 4 typedef unsigned int  u16;
 5 
 6 #define LED_PORT     P2    //使用宏定义将P2端口定义
 7 
 8 void delay_10us(u16 ten_us)     //当传入ten_us=1,大约延时10us
 9 {
10      while(ten_us--);
11 }
12 
13 void main()
14 {
15     u8 i;
16     while(1)
17     {
18         for(i=0;i<8;i++)
19         {
20             LED_PORT = ~(0x01<<i);
21             delay_10us(50000);
22         }
23     }
24 }

4.4 使用左移右移库函数实现流水灯

 1 #include "reg52.h"
 2 #include "intrins.h"
 3 
 4 typedef unsigned char u8;
 5 typedef unsigned int  u16;
 6 
 7 #define LED_PORT     P2    //使用宏定义将P2端口定义
 8 
 9 void delay_10us(u16 ten_us)     //当传入ten_us=1,大约延时10us
10 {
11      while(ten_us--);
12 }
13 
14 void main()
15 {
16     u8 i=0;
17     LED_PORT=0xfe;
18     delay_10us(50000);
19     while(1)
20     {
21         for(i=0;i<7;i++)
22         {
23             LED_PORT = _crol_(LED_PORT,1);
24             delay_10us(50000);
25         }
26            for(i=0;i<7;i++)
27         {
28             LED_PORT = _cror_(LED_PORT,1);
29             delay_10us(50000);
30         }
31     }
32 }
posted @ 2022-01-16 21:56  豌豆茶  阅读(413)  评论(0编辑  收藏  举报