![]() |
發布時間: 2019-6-15 22:15
正文摘要:這是一個書上的蜂鳴器發聲的項目,我覺得程序沒有問題,但是仿真的時候為什么那個蜂鳴器他就是不會閃爍(就是 仿真的時候小正方塊會變色的),是什么問題呢?還有就是 蜂鳴器到底要選那個好,sounder還是speak ... |
蜂鳴器分有有源和無源的,p2.7和p1.0接口不對。 |
大兄弟,你的蜂鳴器引腳定義錯沒?我覺得應該是P1^0 |
你的這個蜂鳴器的延遲時間不會不會太長了 然后太小了 你聽不到 |
有源蜂鳴器給電平就可以發聲,無源蜂鳴器要給方波,頻率一般在1~5kHz。 |
頻率和蜂鳴器電壓是否設置合適 |
程序里beep=P2^7改為Pq^0 |
先不說線接錯了,我一般都是接的NPN三極管再串聯接一個電阻就可以了 |
線接錯了 |
線都接錯啦,怎么響 |
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器 #include<intrins.h> //因為要用到左右移函數,所以加入這個頭文件 typedef unsigned int u16; //對數據類型進行聲明定義 typedef unsigned char u8; sbit beep=P1^5; /******************************************************************************* * 函 數 名 : delay * 函數功能 : 延時函數,i=1時,大約延時10us *******************************************************************************/ void delay(u16 i) { while(i--); } /******************************************************************************* * 函 數 名 : main * 函數功能 : 主函數 * 輸 入 : 無 * 輸 出 : 無 *******************************************************************************/ void main() { while(1) { beep=~beep; delay(10); //延時大約100us 通過修改此延時時間達到不同的發聲效果 } } |
我用的單片機蜂鳴器接的是P1^5口,您的延時太長了,改2000 |
首先是蜂鳴器的電壓 其次是蜂鳴器選擇是有源還是無源 |
用示波器看一下P1.0引腳是否有輸出啊,如果電平都不對,那就檢查軟件,電平變化正常,再去檢查硬件,硬件包括硬件失效以及引腳連接錯誤,焊接錯誤,等各種情況 |
無源蜂鳴器好像是要一直取反的,beep=~beep,有源的話不用,還有可能是蜂鳴器電壓參數沒設置好 |
Proteus圖里蜂鳴器接的是P1^0,程序中定義的是 sbit beep=P2^7, 改Proteus圖, or "sbit beep=P1^0"![]() ![]() ![]() |
程序指定的P口和實際接線不符啊! |
應該是你在圖里把蜂鳴器接到了P10上,程序設置到P27了 |
P1.1口連線有問題,改成P1.3口,然后最好加一個上拉電阻 ![]() |
首先檢查一下蜂鳴器有沒有問題,然后判斷電路有沒有接好,最后看看程序有沒有問題。。! 首先檢查一下蜂鳴器有沒有問題,然后判斷電路有沒有接好,最后看看程序有沒有問題!!!! 首先檢查一下蜂鳴器有沒有問題,然后判斷電路有沒有接好,最后看看程序有沒有問題。。。 |
第一:先用萬用表測一下蜂鳴器有沒有問題 |
圖中你單片機的復位引腳是高電平啊,你確認單片機能正常工作? |
@博蒗 這個回答還是比較正確的,先把IO口連接修改一下,如果還是不能點亮再去找電路問題 |
延時函數有問題,編譯器編譯時會將for 循環優化掉,建議在for函數里面添加_nop_()函數,這個函數可用于延時,只占用時間,不做任何事 |
小正方形接在電源和地上面的話就是固定的電平,不會變化;建議用示波器查看一下蜂鳴器的另一個引腳,看是否有電平變化,如果沒有變化的話說明可能是單片機的程序有一些問題,如果有變化的話,可能是頻率不對,也就是延時之后產生的頻率不能使蜂鳴器發出聲音,需要更改延時長短。 |
小正方形接在地上或者正極上就是固定的電平,不會變; 建議用示波器查看一下蜂鳴器的另一端,看是否有電平變化,如果有的話,可能是頻率不對,如果沒有的話說明單片機內部的程序有一些問題。 |
請更換整個發生器進行仿真,器件搜索:SOUNDER. 經過測試這個能發出聲音。 |
新建位圖圖像.jpg (22.58 KB, 下載次數: 69)
P2^7換成P1^0 |
程序是P2^7接線是P1^0 beep=~beep用取反 |
應該把P2^7改成P1^0 |
要看你焊的蜂鳴器是共陰還是共陽,共陰的話代碼取反就可以響,共陽得高低電平來回轉換 |
檢查單片機最小系統是否工作 |
更改頻率試試 |
今天看一下應該是延時函數問題 |
看電路圖片接口與程序接口不一致? 那P10怎么輸出了低電平呢? 應該截圖時間不一致,中間改動了吧。 |
你這個電路上的蜂鳴器要選無源的。然后再看delay延時多長時間,時間長了和短了超出音頻范圍也會聽不到響聲,一般取1K-2KHZ,也就是1-2mS,自己試一下。 |
系統默認電壓是5V ? 蜂鳴器可能是12V的代碼基本上沒問題 |
1.代碼P2.7接P1.0 2.高低電平延時太大 ,頻率極低。 3.改模型SPEAKER(active),delay(200);試試 |
P1.1口連線有問題,改成P1.3口 |
R1電阻是不是大了,你改成連接一個滑阻,然后測試一下哪個值合適 |
只是簡單看了一下,蜂鳴器的接線都好像接錯了吧,代碼中定義的是“sbit beep=P2^7”,電路圖中接的是P1^0接口,當然是不可能有反應的 |