单个LED驱动,可以使用I/O口和限流电阻来实现。根据LED在电路中的接法,驱动程序也不尽相同,但驱动方法基本类似。
由图可知当P1.0口输出为低电平时,就会点亮D1。当P1.0输出为高电平时,D1就会熄灭。通常同一个程序会包含点亮和熄灭LED的程序。在实际编程时,使用P1^0=0或P1^0=1语句,就可以点亮或熄灭D1了。
(1)点亮D1的程序如下:
sbit D1 = P1^0 ; //定义D1为P1.0端口
void main(void)
{
D1 = 0; //P1.0输出低电平,此时可点亮发光二极管D1
//D1=1 ; //如果D1反接。则需要P1.0输出高电平时才能点亮发光二极管D1
}
(2)熄灭D1的程序如下:
sbit D1=P1^0 ; //定义D1为P1.0端口
void main(void)
{
D1 = 1; //P1.0输出高电平,此时可熄灭发光二极管D1
//D1=0 ; //如果D1反接。则需要P1.0输出低电平时才能熄灭发光二极管D1
}
单个I/O口驱动两个LED
根据电路的接法不同1个I/O口可以同时驱动两种不同状态的LED。其驱动程序与“单个I/O口驱动单个LED”相似。1个I/O口驱动2个LED的实验电路图如下:
点亮D1的程序如下:
sbit LED=P1^0 ;//定义LED为P1.0端口
void main(void)
{
LED=0 ; //P1.0输出低电平,此时可点亮发光二极管D1,熄灭D2
}
由上述程序可知,D1和D2的状态总是互斥的。读者可以根据所示的电路,试着自己编写点亮D2的程序。由于单片机I/O口的电流驱动能力是有限制的,当我们需要用1个I/O口线控制多个LED(如LED组合而成的点阵汉字)时,就需要使用三极管或驱动芯片(如UNL2003)来实现。
全部0条评论
快来发表一下你的评论吧 !