找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5968|回復(fù): 11
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)新手疑惑,我的蜂鳴器怎么不響啊?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
放假焊了一個(gè)倒計(jì)時(shí)器。設(shè)想,倒計(jì)時(shí)時(shí)間結(jié)束后蜂鳴器鳴響。但是實(shí)際上蜂鳴器壓根沒動(dòng)靜。但是單獨(dú)使用時(shí)蜂鳴器聲音很大。困惑了一天了。
使用的STC11F02E和74HC595搭建的。數(shù)碼管是0.36共陰,晶振使用12MHz的,電容是22PF的,蜂鳴器是5V無(wú)源的。

電路原理圖如下:


制作出來(lái)的實(shí)物圖如下:


放一下單片機(jī)代碼。
#include <stc11f02e.h>
#include <intrins.h>

sbit BEE = P3^7;
sbit ADDR3 = P1^0;
sbit ADDR2 = P1^1;
sbit ADDR1 = P1^2;
sbit ADDR4 = P1^3;

sbit KEY0 = P3^2;
sbit KEY1 = P3^3;

sbit P_HC595_SER = P1^4;        //串行數(shù)據(jù)輸入
sbit OE = P1^5;                    //輸出允許控制
sbit P_HC595_RCLK = P1^6;        //三態(tài)輸出鎖存器的時(shí)鐘輸入
sbit P_HC595_SRCLK = P1^7;        //移位寄存器的時(shí)鐘輸入

unsigned char code t_display[] = {0x05,0x7d,0x46,0x54,0x3c,0x94,0x84,0x5d,0x04,0x14};
unsigned char LED4[4];
unsigned char display_index = 0;    //位選指示標(biāo)志

unsigned int Time_User;    //預(yù)設(shè)時(shí)間
unsigned char cnt = 0;    //1s指示標(biāo)志
bit B_P;            //蜂鳴器指示

void Init_System();        //初始化函數(shù)
void Send_595(unsigned char dat);   
void DisplayScan(void);
void Delay_1ms(void);
void Delay_10ms(void);
void Buzzer(void);        //蜂鳴器函數(shù)

void main(void)
{
    Init_System();
    while(1)
    {   
        while(B_P==1)
        {
            Buzzer();
        }
        
        LED4[0] = ~(t_display[Time_User/60/10]);   
        LED4[1] = ~(t_display[Time_User/60%10]&0xfb);
        LED4[2] = ~(t_display[Time_User%60/10]);
        LED4[3] = ~(t_display[Time_User%60%10]);
        
        DisplayScan();

    }
   
}

void Init_System()
{
    TMOD = 0x01;
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    ET0 = 1;
    TR0 = 0;
        
    EX0 = 1;
    IT0 = 1;
    EX1 = 1;
    IT1 = 1;
   
    EA = 1;
    OE = 0;
    B_P=0;
   
    Time_User=180;
   
}

void Send_595(unsigned char dat)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
        if(dat & 0x80)      P_HC595_SER = 1;
        else                P_HC595_SER = 0;
        P_HC595_SRCLK = 1;
        P_HC595_SRCLK = 0;
        dat = dat<<1;
    }
}

void DisplayScan(void)
{
    switch(display_index)
    {
        case(0):ADDR1=0;ADDR2=1;ADDR3=1;ADDR4=1;Send_595(LED4[0]);display_index++;break;
        case(1):ADDR1=1;ADDR2=0;ADDR3=1;ADDR4=1;Send_595(LED4[1]);display_index++;break;
        case(2):ADDR1=1;ADDR2=1;ADDR3=0;ADDR4=1;Send_595(LED4[2]);display_index++;break;
        case(3):ADDR1=1;ADDR2=1;ADDR3=1;ADDR4=0;Send_595(LED4[3]);display_index=0;break;
        default:break;
    }
    P_HC595_RCLK=0;
    _nop_();
    _nop_();
    P_HC595_RCLK=1;
    Delay_1ms();
}
   
void timer0(void) interrupt 1
{
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
    cnt++;
    if(cnt==20)
    {
        cnt = 0;
        Time_User--;
    }
    if(Time_User==0)
    {
        B_P=1;
        TR0=0;
    }
}

void exint0(void) interrupt 0
{
    if(KEY0==0)
    {
        Delay_10ms();
        if(KEY0==0)
        {
            if(Time_User==0)    TR0=0;
            else   
            {
                TR0=!TR0;
            }
            B_P=0;
        }
        while(!KEY0);
    }
}

void exint1(void) interrupt 2
{
    if(KEY1==0)
    {
        Delay_10ms();
        if(KEY1==0)
        {
            TR0=0;
            Time_User+=15;
            if(Time_User==3600)    Time_User=0;
            B_P=0;
        }
        while(!KEY1);
    }
}

void Delay_1ms(void)
{
    unsigned char i,j;
    _nop_();
    _nop_();
    i = 12;
    j = 168;
    do
    {
        while(--j);
    }while(--i);
}

void Delay_10ms(void)
{
    unsigned char i,j;
   
    _nop_();
    _nop_();
    i=117;
    j=183;
    do
    {
        while(--j);
    }while(--i);
}

void buzzer(void)
{
        BEE = 0;
        Delay_1ms();
        BEE = 1;
        Delay_1ms();
}

放一下圖片


index2.jpg (155.2 KB, 下載次數(shù): 40)

這是背面

這是背面
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:236982 發(fā)表于 2019-2-2 16:40 | 只看該作者
1、首先說(shuō)蜂鳴器:
你說(shuō)的單獨(dú)試蜂鳴器聲音很大,估計(jì)你買的蜂鳴器是有源的。
2、其次,有木有可能沒有按“開始按鈕(KEY0)”?
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2019-2-2 16:48 | 只看該作者
你的無(wú)源蜂鳴器函數(shù)不對(duì),只振蕩一個(gè)周期1ms哪能聽到響?
給你一個(gè)簡(jiǎn)單的無(wú)源蜂鳴器函數(shù)(12MHz 1T),如果用定時(shí)器做振蕩源更好些。
0.24ms半周期蜂鳴器程序
void buzzer(unsigned int x)                //2x為1個(gè)振蕩周期
{                                                                 //x=1000可以鳴響0.24S
        unsigned char t;
        while(x--)
        {       
                BEE=~BEE;                                //蜂鳴器諧振頻率2048Hz
                for(t=0;t<210;t++);                //0.24ms半周期=2083Hz
        }                                                       
        BEE=1;       
}
回復(fù)

使用道具 舉報(bào)

地板
ID:342822 發(fā)表于 2019-2-2 18:04 | 只看該作者
pnp管與npn管電壓極性有區(qū)別~~

b3b7d0a20cf431ad762dda5d4236acaf2fdd98d3.png (27.57 KB, 下載次數(shù): 41)

b3b7d0a20cf431ad762dda5d4236acaf2fdd98d3.png
回復(fù)

使用道具 舉報(bào)

5#
ID:342822 發(fā)表于 2019-2-2 18:11 | 只看該作者
換個(gè)npn管試一試~~
回復(fù)

使用道具 舉報(bào)

6#
ID:161151 發(fā)表于 2019-2-2 20:00 | 只看該作者
蜂鳴器子程序里的延時(shí)太短了吧,無(wú)源蜂鳴器按這個(gè)延時(shí)出來(lái)的聲音頻率太高,不在聽覺范圍內(nèi)所以聽不到。
回復(fù)

使用道具 舉報(bào)

7#
ID:399129 發(fā)表于 2019-2-2 23:27 來(lái)自手機(jī) | 只看該作者
suuy79 發(fā)表于 2019-2-2 16:40
1、首先說(shuō)蜂鳴器:
你說(shuō)的單獨(dú)試蜂鳴器聲音很大,估計(jì)你買的蜂鳴器是有源的。
2、其次,有木有可能沒有按 ...

我表達(dá)失誤了,是只循環(huán)蜂鳴器函數(shù)時(shí)聲音很大。蜂鳴器確實(shí)是無(wú)源的,有源的尺寸比這個(gè)大一圈。按鍵的話我不知道怎么修改。
回復(fù)

使用道具 舉報(bào)

8#
ID:399129 發(fā)表于 2019-2-2 23:32 來(lái)自手機(jī) | 只看該作者
taotie 發(fā)表于 2019-2-2 18:11
換個(gè)npn管試一試~~

注釋掉其他的內(nèi)容,只循環(huán)蜂鳴器函數(shù),蜂鳴器可以發(fā)聲,應(yīng)該不是三極管的問(wèn)題。謝謝了。
回復(fù)

使用道具 舉報(bào)

9#
ID:399129 發(fā)表于 2019-2-2 23:36 來(lái)自手機(jī) | 只看該作者
y_z_q3963 發(fā)表于 2019-2-2 20:00
蜂鳴器子程序里的延時(shí)太短了吧,無(wú)源蜂鳴器按這個(gè)延時(shí)出來(lái)的聲音頻率太高,不在聽覺范圍內(nèi)所以聽不到。

嘗試增加了時(shí)長(zhǎng)還是聽不到。但是只運(yùn)行蜂鳴器函數(shù)可以聽到聲音。費(fèi)解。
回復(fù)

使用道具 舉報(bào)

10#
ID:399129 發(fā)表于 2019-2-2 23:43 來(lái)自手機(jī) | 只看該作者
wulin 發(fā)表于 2019-2-2 16:48
你的無(wú)源蜂鳴器函數(shù)不對(duì),只振蕩一個(gè)周期1ms哪能聽到響?
給你一個(gè)簡(jiǎn)單的無(wú)源蜂鳴器函數(shù)(12MHz 1T),如果 ...

謝謝老師了。我臨時(shí)有事不能繼續(xù)完成這個(gè)小制作,我回頭試試。
回復(fù)

使用道具 舉報(bào)

11#
ID:474677 發(fā)表于 2019-2-3 18:02 | 只看該作者
蜂鳴器函數(shù)延時(shí)太短了,再增加一個(gè)循環(huán)函數(shù)試試
回復(fù)

使用道具 舉報(bào)

12#
ID:399129 發(fā)表于 2019-2-6 15:14 | 只看該作者
本帖最后由 cheng51 于 2019-2-6 17:22 編輯

解決了。是蜂鳴器運(yùn)行時(shí)干擾或者是負(fù)載太大,導(dǎo)致單片機(jī)直接復(fù)位,原來(lái)的代碼問(wèn)題不大。在正負(fù)極間裝了一個(gè)104獨(dú)石電容和10uf的點(diǎn)解電容后就好了。謝謝大家了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表