如图 利用51单片机引脚P1.0引接一只LED,送“0”信号时点亮灯,送“1”信号时灯灭。

2025-02-25 03:32:47
推荐回答(5个)
回答1:

呵呵   为你解答   

1   你的程序中使用的控制引脚为P1.1与电路图中控制LED的引脚P1.0也没有对应上啊

2   修改如下:

    #include "reg51.h"

   sbit P1_0=P1^0;

   void main()

  {

        P1_0=0;        \\   P1.0为低电平时, LED为灭

  } 

 

3  其实电路图 可以更简化和使用些  如下是常用的LED接法

P1.0= 0    LED 亮   P1.0=1  LED 灭

       呵呵   别忘给俺加分哦 (没有分  就选满意回答吧)

回答2:

第一,2楼说的不假,用 简化电路比较实用,而且程序 跟 LZ 的也一样,无需变更。但,LED电路中串联的电阻是 30Ω,普通LED 导通压降为1.8-2V,也有3V左右的。按2V计算,那电流 I=(VCC-Vled)/R1=(5-2)V/30Ω=100mA,单片机IO 口没有如此大的灌电流,这会 烧毁单片机IO。

第二,搞不懂LZ 想问什么,不过,可以简单介绍下这个电路。我们先把 电阻R1 跟 LED D1的交点称为 A 点,而A点 左边 的三角形 是个 反相器,那么:
当P10 为低电平0时,经过反相器后,A点为 高电平,LED导通点亮。
当P10 为高电平1时,经过反相器后,A点为 低电平,LED截止熄灭。

第三,LZ 的程序,主函数中 缺乏 循环语句,是个 单次系统。按理论,这样的系统只会执行一次,其结果无法预测,可能亮一下后系统结束就没了(当然你根本看不到它亮),也可能系统结束后IO电平不变,一直亮。
但事实上,很多编译器会考虑新手的这个情况,于是生成Hex,或是编译成 汇编的时候,已经帮忙把循环语句加上去了,所以,不同的编译器,得到的结果不尽相同。这也是无法预测结果的原因。所以,也奉劝新手,不要遗漏小细节,更不要依赖编译器的“智能”设计。

回答3:

LED中有电流通过灯亮 没电流通过灯灭
如果如 “给0信号 灯会亮 给1 灯会灭” 那么就是共阳极的 单片机p1灌电流

回答4:

直接往管脚上写0或1

回答5:

同意 "烟火夜空"的说法.