单个I/O口驱动单个LED
单个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)来实现。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
led
+关注
关注
242文章
23256浏览量
660617 -
单片机
+关注
关注
6035文章
44553浏览量
634751 -
发光二极管
+关注
关注
13文章
1198浏览量
66290 -
端口
+关注
关注
4文章
964浏览量
32058 -
程序
+关注
关注
117文章
3785浏览量
81009
发布评论请先 登录
相关推荐
使用单个PRM驱动多个VTMs的设计
使用单个PRM驱动多个VTMs的设计本应用笔记讨论使用Vicor之V·I晶片预稳压及电压转换模块的设计习要以符合功率系统上单个系统要求低电压、多路电流及多个电压的挑战。Vicor的V·
发表于 11-20 09:07
pc机单个232口和设备通信
想做个PC机单个232串口和单片机 的通信, 单片机用IO口模拟UART , 单个单片机和pc通信可以,但是多个单片机同时和一个串口通信怎么做呢,目前想做12个同时通信,有没大大指导下
发表于 09-28 10:05
诡异的PIC单片机的I/O口问题(相同的I/O口配置单个出问题...
是一致的,其他口的输出都没有问题,就是RA3没有大的输出,用示波器测有0.8V的电平变化,可是不知道这算不算是误差,RA4是开漏输出,加了10K的上拉电阻。可是目前就是这两个I/O口有
发表于 11-16 19:39
请问“PCA9956BTWY”会在每个端口上驱动单个LED吗?
我正在使用 NXP 的 LED 驱动器“PCA9956BTWY”。该器件驱动 24 通道 LED o/p。从数据表中,我了解到该设备适用于每
发表于 05-06 07:46
I/O并行口直接驱动LED显示实验(含电路原理图)
I/O并行口直接驱动LED显示 1. 实验任务 如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a
发表于 04-15 10:24
•4136次阅读
使用MAX6958/MAX6959LED驱动器实现单个LED
摘要:该应用笔记详细说明了如何使用MAX6958和MAX6959 LED显示驱动器实现象素级(单个LED)亮度控制。该威廉希尔官方网站
增强了这些驱动器内
发表于 04-27 09:01
•1021次阅读
C51编程6-双向I/O口与准双向I/O口
通过前面的输入输出的内容(LED控制与按键的使用),我们对控制I/O口有了一个基本的了解。如果需要输出高低电平,可以对该引脚进行写"1"或者"0";如果需要
发表于 11-29 10:51
•1次下载
51单片机双向I/O口与准双向I/O口解析
通过前面的输入输出的内容(LED控制与按键的使用),我们对控制I/O口有了一个基本的了解。如果需要输出高低电平,可以对该引脚进行写"1"或者"0";如果需要读取
评论