标题: 51单片机io口接二极管问题 [打印本页]

作者: yezhaowei    时间: 2021-2-19 19:59
标题: 51单片机io口接二极管问题
我想问一下,io口串联 二极管 蜂鸣器为什么会变大声

while(1)
        {       
                        beep=1;
                delay(100); //延时大约100us   通过修改此延时时间达到不同的发声效果       
           beep=0;
                delay(100);
        }

1.jpg (1.65 MB, 下载次数: 107)

1.jpg

2.jpg (1.17 MB, 下载次数: 81)

2.jpg

作者: 名字不是重点    时间: 2021-2-19 23:03
因IO输出直接B极,会被B-E结拉低电平,所以,IO输出接3极管,都要串一个电阻,1K-2K区间,或更大阻值。你串一个4148类似作用,但建议还是改为电阻为好。
作者: cn_zhx    时间: 2021-2-21 10:10
还是单片机io口高电平的驱动能力不够,如果你用的是stc单片机,可以将io口配置成推挽输出试试。
作者: wgsd    时间: 2021-2-21 10:56
如果用的是无源蜂鸣器,IO输出的是交流信号,交流信号的低电平会拉低三极管基极的电压,加入二极管后,二极管阻断了IO口低电平对三极管基极电压的影响,相应的提高了三极管的有效触发电平。
作者: xianfajushi    时间: 2021-2-21 11:10
串接4个二极管试看
作者: xianfajushi    时间: 2021-2-21 11:11
这样模块应该不用再加三极管才对
作者: wgsd    时间: 2021-2-21 11:42
xianfajushi 发表于 2021-2-21 11:10
串接4个二极管试看

还不如把那个IO脚剪掉痛快。
作者: 白粉笔    时间: 2021-2-21 14:59
IO口,加外部上拉,提高驱动能力
作者: Hephaestus    时间: 2021-2-21 17:58
有源无源蜂鸣器楼主都没有说清楚。
作者: TTQ001    时间: 2021-2-22 06:23
IO P1.5输出具有100us高电平和100us低电平状态。 延迟可能太短,因此逻辑转换未完成,因此导致IO的平均电压高于晶体管的B-E压降。 因此晶体管始终处于导通状态。 蜂鸣器应为无源式蜂鸣器。 添加二极管会导致低态电压足够低,从而切断晶体管,因此会产生交流信号以驱动蜂鸣器。
作者: TTQ001    时间: 2021-2-22 08:52
IO P1.5输出具有100us高电平和100us低电平状态。 延迟可能太短,因此逻辑转换未完成
作者: 大白菜LL    时间: 2021-2-22 10:01
二极管会有0.7伏的压降,如果基极的电压比集电极高,三极管就截止了,所以蜂鸣器声音小,加了二极管后,基极的电压低了,就大声了
作者: 5.1_phantom    时间: 2021-2-22 10:52
你的单片机型号是什么?

作者: 5.1_phantom    时间: 2021-2-22 10:54
你的单片机型号是多少?
作者: oplink    时间: 2021-2-22 11:39
串个10K
作者: 1042221425    时间: 2021-2-22 13:11
增加驱动能力
作者: zhangxiaozi    时间: 2021-2-22 13:24
把三极管改成PNP型就可以了,如8550,或者把口线改到P0口也行,P1,P2,P3是准双向口,灌电流大,拉电流取决于内部上拉电阻,由于内部电阻较大,导致你的8050不能全饱和导通而处于放大状态
作者: robinsonlin    时间: 2021-2-22 16:13
一个简单问题,看到你两次发帖。  仔细体会1楼给你的解答。  或者你把输出口改为推挽输出方式。  还有一种解决办法。我猜你现在P1.5口的上拉电阻应该是用的10k吧, 把你P1.5口的上拉电阻改为4.7k或者3.3k,声音也会大一点点。 但是不建议你这样做。
作者: yezhaowei    时间: 2021-2-22 16:35
  5.1_phantom 发表于 2021-2-22 10:54
你的单片机型号是多少?

stc89c52
作者: 烈火    时间: 2021-2-22 18:09
上拉电阻可能起到作用不大,可以改MOS管试一下
作者: yezhaowei    时间: 2021-2-23 10:17
名字不是重点 发表于 2021-2-19 23:03
因IO输出直接B极,会被B-E结拉低电平,所以,IO输出接3极管,都要串一个电阻,1K-2K区间,或更大阻值。你串 ...

那还可以问一下为什么STM32不存在这个问题,stm32的板子直接照着连线写代码就能有很大声音
作者: xianfajushi    时间: 2021-2-24 17:29
可参https://blog.csdn.net/xianfajushi/article/details/103193979




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1