点亮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 }