![]() |
發布時間: 2021-10-13 08:59
正文摘要:#include <reg51.h> sbit Beep=P3^0; void main() { Beep=0; while(1); } VDD ... |
我也遇到這樣的問題了,我將端口賦值0放在了最前面,然后在開關MOS的gs之間加了電容也沒改善。s接地,g連接電阻到單片機的一個io口。 |
上電的時候是默認高電平,IO口置0也需要時間, |
有源的蜂鳴器里面有振蕩電路,只要兩端直流壓差和電流滿足條件,就能發聲。 如果換成無源的,需要給PWM波形,才能出聲,固定的高低電平是不會出聲的。 |
部分單片機的GPIO在初始化時處于高電平狀態。 |
是不是用錯蜂鳴器了 |
上電后io口置位需要一定時間 |
我也遇到過一樣的問題,將BEEP=0;放到while()循環之前,就解決了,以下是仿真和程序,僅供參考。 |
Snipaste_2021-10-15_22-47-51.png (6.11 KB, 下載次數: 116)
Snipaste_2021-10-15_22-46-45.png (1.97 KB, 下載次數: 100)
liuxuhe 發表于 2021-10-15 09:48 十分支持!我設計的電路都是用PNP管的。 |
換成PNP管子 蜂鳴器下拉 |
建議換一個三極管,學一學三極管原理,低電平導通,正好啟動了你的蜂鳴器。。。 |
npn 發表于 2021-10-14 16:19 是的,聲音變了 |
cheney03 發表于 2021-10-14 13:21 電容你要考慮你單片機復位時間,以及你正常驅動時可能產生的延時,不值得。 你這個要求最好的方法就是換pnp三極管,或者換到單片機可以選擇啟動后為低電平的端口,一般單片機都有那么幾個上電后輸出低電平的io。 |
cheney03 發表于 2021-10-14 13:21 接電容做什么? 聲音可能會變異。 |
Beep上電高電平,應該改成低電平 |
mayouzhen2008 發表于 2021-10-14 11:51 要多大才有用,我接10uF和22uF都不起作用 |
基極接大電容到低是比較可行的辦法![]() |
ly1972001 發表于 2021-10-14 08:42 是在基極對地加偏置電阻吧,這個阻值要怎么計算呢? |
#include <reg51.h> sbit Beep=P3^0; void main() { Beep=0; { Beep=0; while(1); } } |
#include <reg51.h> sbit Beep=P3^0; void main() { Beep=0; while(1); } |
15K不是偏置電阻,是限流用的。 |
代碼改成低電平發聲,NPN管改用PNP管。 |
Hephaestus 發表于 2021-10-13 16:39 我的目的不想讓蜂鳴器一上電就響,不然我每次開機就響一聲,而是需要用時再讓Beep=1; |
8051的IO端口默認上拉,也就是按你的電路圖在你的代碼執行前蜂鳴器是一直在響的。當然我也會在某些場合故意這么設計,提示蜂鳴器是好的。 |
是加了一個電感嗎?電感的電壓不能突變 |
ZQ01 發表于 2021-10-13 10:26 已經有加15K電阻,還是不起作用 |
18701931930 發表于 2021-10-13 10:10 已經有加15K電阻,還是不起作用 |
IO口上電瞬間高電平,需要等待一段時間才會執行用戶程序,可以換PNP管驅動。 |
基極需要加一個下偏置電阻就闊以咯 |
上電的時候是默認高電平,IO口置0也需要時間,需要給三極管基極加下偏置電阻 |
三極管基極對地接一個10uf 電解電容器。 |
上電默認高電平,IO口置0也需要時間,還是給三極管基極加下偏置電阻吧。 |
蜂鳴器分有源、無源。 有源的,就是通電即beep beep。。。。。。。的。 |