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