欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機(jī)新手疑惑,我的蜂鳴器怎么不響啊? [打印本頁]

作者: cheng51    時(shí)間: 2019-2-2 12:07
標(biāo)題: 單片機(jī)新手疑惑,我的蜂鳴器怎么不響啊?
放假焊了一個(gè)倒計(jì)時(shí)器。設(shè)想,倒計(jì)時(shí)時(shí)間結(jié)束后蜂鳴器鳴響。但是實(shí)際上蜂鳴器壓根沒動(dòng)靜。但是單獨(dú)使用時(shí)蜂鳴器聲音很大。困惑了一天了。
使用的STC11F02E和74HC595搭建的。數(shù)碼管是0.36共陰,晶振使用12MHz的,電容是22PF的,蜂鳴器是5V無源的。

電路原理圖如下:


制作出來的實(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)

這是背面

這是背面

作者: suuy79    時(shí)間: 2019-2-2 16:40
1、首先說蜂鳴器:
你說的單獨(dú)試蜂鳴器聲音很大,估計(jì)你買的蜂鳴器是有源的。
2、其次,有木有可能沒有按“開始按鈕(KEY0)”?
作者: wulin    時(shí)間: 2019-2-2 16:48
你的無源蜂鳴器函數(shù)不對(duì),只振蕩一個(gè)周期1ms哪能聽到響?
給你一個(gè)簡單的無源蜂鳴器函數(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;       
}
作者: taotie    時(shí)間: 2019-2-2 18:04
pnp管與npn管電壓極性有區(qū)別~~

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

b3b7d0a20cf431ad762dda5d4236acaf2fdd98d3.png

作者: taotie    時(shí)間: 2019-2-2 18:11
換個(gè)npn管試一試~~
作者: y_z_q3963    時(shí)間: 2019-2-2 20:00
蜂鳴器子程序里的延時(shí)太短了吧,無源蜂鳴器按這個(gè)延時(shí)出來的聲音頻率太高,不在聽覺范圍內(nèi)所以聽不到。
作者: cheng51    時(shí)間: 2019-2-2 23:27
suuy79 發(fā)表于 2019-2-2 16:40
1、首先說蜂鳴器:
你說的單獨(dú)試蜂鳴器聲音很大,估計(jì)你買的蜂鳴器是有源的。
2、其次,有木有可能沒有按 ...

我表達(dá)失誤了,是只循環(huán)蜂鳴器函數(shù)時(shí)聲音很大。蜂鳴器確實(shí)是無源的,有源的尺寸比這個(gè)大一圈。按鍵的話我不知道怎么修改。
作者: cheng51    時(shí)間: 2019-2-2 23:32
taotie 發(fā)表于 2019-2-2 18:11
換個(gè)npn管試一試~~

注釋掉其他的內(nèi)容,只循環(huán)蜂鳴器函數(shù),蜂鳴器可以發(fā)聲,應(yīng)該不是三極管的問題。謝謝了。
作者: cheng51    時(shí)間: 2019-2-2 23:36
y_z_q3963 發(fā)表于 2019-2-2 20:00
蜂鳴器子程序里的延時(shí)太短了吧,無源蜂鳴器按這個(gè)延時(shí)出來的聲音頻率太高,不在聽覺范圍內(nèi)所以聽不到。

嘗試增加了時(shí)長還是聽不到。但是只運(yùn)行蜂鳴器函數(shù)可以聽到聲音。費(fèi)解。
作者: cheng51    時(shí)間: 2019-2-2 23:43
wulin 發(fā)表于 2019-2-2 16:48
你的無源蜂鳴器函數(shù)不對(duì),只振蕩一個(gè)周期1ms哪能聽到響?
給你一個(gè)簡單的無源蜂鳴器函數(shù)(12MHz 1T),如果 ...

謝謝老師了。我臨時(shí)有事不能繼續(xù)完成這個(gè)小制作,我回頭試試。
作者: iofree    時(shí)間: 2019-2-3 18:02
蜂鳴器函數(shù)延時(shí)太短了,再增加一個(gè)循環(huán)函數(shù)試試
作者: cheng51    時(shí)間: 2019-2-6 15:14
本帖最后由 cheng51 于 2019-2-6 17:22 編輯

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




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1