点亮LED_单片机_普中


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

2.硬件电路图

3.软件设计

3.1 点亮LED

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

3.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 }

 3.3 流水灯

 1 #include 
 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 }

 3.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 }