久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5932|回復: 11
打印 上一主題 下一主題
收起左側

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

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

電路原理圖如下:


制作出來的實物圖如下:


放一下單片機代碼。
#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;        //串行數據輸入
sbit OE = P1^5;                    //輸出允許控制
sbit P_HC595_RCLK = P1^6;        //三態輸出鎖存器的時鐘輸入
sbit P_HC595_SRCLK = P1^7;        //移位寄存器的時鐘輸入

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

unsigned int Time_User;    //預設時間
unsigned char cnt = 0;    //1s指示標志
bit B_P;            //蜂鳴器指示

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

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, 下載次數: 40)

這是背面

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

b3b7d0a20cf431ad762dda5d4236acaf2fdd98d3.png
回復

使用道具 舉報

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

使用道具 舉報

6#
ID:161151 發表于 2019-2-2 20:00 | 只看該作者
蜂鳴器子程序里的延時太短了吧,無源蜂鳴器按這個延時出來的聲音頻率太高,不在聽覺范圍內所以聽不到。
回復

使用道具 舉報

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

我表達失誤了,是只循環蜂鳴器函數時聲音很大。蜂鳴器確實是無源的,有源的尺寸比這個大一圈。按鍵的話我不知道怎么修改。
回復

使用道具 舉報

8#
ID:399129 發表于 2019-2-2 23:32 來自手機 | 只看該作者
taotie 發表于 2019-2-2 18:11
換個npn管試一試~~

注釋掉其他的內容,只循環蜂鳴器函數,蜂鳴器可以發聲,應該不是三極管的問題。謝謝了。
回復

使用道具 舉報

9#
ID:399129 發表于 2019-2-2 23:36 來自手機 | 只看該作者
y_z_q3963 發表于 2019-2-2 20:00
蜂鳴器子程序里的延時太短了吧,無源蜂鳴器按這個延時出來的聲音頻率太高,不在聽覺范圍內所以聽不到。

嘗試增加了時長還是聽不到。但是只運行蜂鳴器函數可以聽到聲音。費解。
回復

使用道具 舉報

10#
ID:399129 發表于 2019-2-2 23:43 來自手機 | 只看該作者
wulin 發表于 2019-2-2 16:48
你的無源蜂鳴器函數不對,只振蕩一個周期1ms哪能聽到響?
給你一個簡單的無源蜂鳴器函數(12MHz 1T),如果 ...

謝謝老師了。我臨時有事不能繼續完成這個小制作,我回頭試試。
回復

使用道具 舉報

11#
ID:474677 發表于 2019-2-3 18:02 | 只看該作者
蜂鳴器函數延時太短了,再增加一個循環函數試試
回復

使用道具 舉報

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

解決了。是蜂鳴器運行時干擾或者是負載太大,導致單片機直接復位,原來的代碼問題不大。在正負極間裝了一個104獨石電容和10uf的點解電容后就好了。謝謝大家了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99国产精品久久久久久久 | 亚洲国产黄色av | 国产探花 | 亚洲不卡在线观看 | 国产999精品久久久久久绿帽 | 涩爱av一区二区三区 | 日本韩国电影免费观看 | 日本视频免费 | 九九亚洲精品 | 欧美日韩高清一区二区三区 | 亚洲色综合 | 性生活毛片 | 中文字幕精品视频在线观看 | 青娱乐av| 国产成人精品a视频 | 成人福利电影 | 国产三区av | 久久久免费观看视频 | 欧美精品一区二区免费 | 国产精品久久久久一区二区 | 麻豆久久久久 | 午夜无码国产理论在线 | 国产96色在线 | 久久av在线播放 | 九九综合 | 国产亚洲一区二区精品 | 国产欧美精品一区二区色综合 | 成人精品影院 | 中文字幕国产精品 | 成人午夜精品 | 成人精品福利 | 日韩一区二区视频 | 黄a在线观看 | 中文字幕在线看人 | 亚洲乱码一区二区三区在线观看 | 神马久久av | 91视视频在线观看入口直接观看 | 日韩欧美亚洲 | 成人羞羞国产免费视频 | 国产精品久久久久久久7777 | 精品1区 |