131 1300 0010
其他
當(dāng)前位置: 首頁>> 元件技術(shù)>>其他>>
  • 導(dǎo)航欄目
  • 二極管
  • 整流橋
  • MOS管
  • 其他
  • AT89S51單片機電子門鈴的設(shè)計
    AT89S51單片機電子門鈴的設(shè)計
  • AT89S51單片機電子門鈴的設(shè)計
  •   發(fā)布日期: 2019-05-16  瀏覽次數(shù): 1,095

    1.實驗任務(wù)

    當(dāng)按下開關(guān)SP1,AT89S51單片機產(chǎn)生“叮咚”聲從P1.0端口輸出到LM386,經(jīng)過放大之后送入喇叭。

     

    2.電路原理圖

    AT89S51單片機電子門鈴的設(shè)計

    圖4.19.1

    3.系統(tǒng)板上硬件連線

    (1).把“單片機系統(tǒng)”區(qū)域中的P1.0端口用導(dǎo)線連接到“音頻放大模塊”區(qū)域中的SPK IN端口上;

    (2).在“音頻放大模塊”區(qū)域中的SPK OUT端口上接上一個8歐或者是16歐的喇叭;

    (3).把“單片機系統(tǒng)”區(qū)域中的P3.7/RD端口用導(dǎo)線連接到“獨立式鍵盤”區(qū)域中的SP1端口上;

    4.程序設(shè)計方法

    (1).我們用單片機實定時/計數(shù)器T0來產(chǎn)生700Hz和500HZ的頻率,根據(jù)定時/計數(shù)器T0,我們?nèi)《〞r250us,因此,700HZ的頻率要經(jīng)過3次250us的定時,而500HZ的頻率要經(jīng)過4次250us的定時。

    (2).在設(shè)計過程,只有當(dāng)按下SP1之后,才啟動T0開始工作,當(dāng)T0工作完畢,回到最初狀態(tài)。

    (3).“叮”和“咚”聲音各占用0.5秒,因此定時/計數(shù)器T0要完成0.5秒的定時,對于以250us為基準定時2000次才可以。

    6.匯編源程序

    T5HZ EQU 30H

    T7HZ EQU 31H

    T05SA EQU 32H

    T05SB EQU 33H

    FLAG BIT 00H

    STOP BIT 01H

    SP1 BIT P3.7

    ORG 00H

    LJMP START

    ORG 0BH

    LJMP INT_T0

    START: MOV TMOD,#02H

    MOV TH0,#06H

    MOV TL0,#06H

    SETB ET0

    SETB EA

    NSP: JB SP1,NSP

    LCALL DELY10MS

    JB SP1,NSP

    SETB TR0

    MOV T5HZ,#00H

    MOV T7HZ,#00H

    MOV T05SA,#00H

    MOV T05SB,#00H

    CLR FLAG

    CLR STOP

    JNB STOP,$

    LJMP NSP

    DELY10MS: MOV R6,#20

    D1: MOV R7,#248

    DJNZ R7,$

    DJNZ R6,D1

    RET

    INT_T0: INC T05SA

    MOV A,T05SA

    CJNE A,#100,NEXT

    MOV T05SA,#00H

    INC T05SB

    MOV A,T05SB

    CJNE A,#20,NEXT

    MOV T05SB,#00H

    JB FLAG,STP

    CPL FLAG

    LJMP NEXT

    STP: SETB STOP

    CLR TR0

    LJMP DONE

    NEXT: JB FLAG,S5HZ

    INC T7HZ

    MOV A,T7HZ

    CJNE A,#03H,DONE

    MOV T7HZ,#00H

    CPL P1.0

    LJMP DONE

    S5HZ: INC T5HZ

    MOV A,T5HZ

    CJNE A,#04H,DONE

    MOV T5HZ,#00H

    CPL P1.0

    LJMP DONE

    DONE: RETI

    END

    7.C語言源程序

    #include

    unsigned char t5hz;

    unsigned char t7hz;

    unsigned int tcnt;

    bit stop;

    bit flag;

    void main(void)

    {

    unsigned char i,j;

    TMOD=0x02;

    TH0=0x06;

    TL0=0x06;

    ET0=1;

    EA=1;

    while(1)

    {

    if(P3_7==0)

    {

    for(i=10;i》0;i--)

    for(j=248;j》0;j--);

    if(P3_7==0)

    {

    t5hz=0;

    t7hz=0;

    tcnt=0;

    flag=0;

    stop=0;

    TR0=1;

    while(stop==0);

    }

    }

    }

    }

    void t0(void) interrupt 1 using 0

    {

    tcnt++;

    if(tcnt==2000)

    {

    tcnt=0;

    if(flag==0)

    {

    flag=~flag;

    }

    else

    {

    stop=1;

    TR0=0;

    }

    }

    if(flag==0)

    {

    t7hz++;

    if(t7hz==3)

    {

    t7hz=0;

    P1_0=~P1_0;

    }

    }

    else

    {

    t5hz++;

    if(t5hz==4)

    {

    t5hz=0;

    P1_0=~P1_0;

    }

    }

    }


  • ·上一篇:
    ·下一篇:
  • 其他關(guān)聯(lián)資訊
    深圳市日月辰科技有限公司
    地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
    電話:0755-2955 6626
    傳真:0755-2978 1585
    手機:131 1300 0010
    郵箱:hu@szryc.com

    深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 xbquwah.cn 電話:13113000010 粵ICP備2021111333號