131 1300 0010
其他
当前位置: 首页>> 元件技术>>其他>>
  • 导航栏目
  • 二极管
  • 整流桥
  • MOS管
  • 其他
  • AT89S51单片机电子门铃的设计
    AT89S51单片机电子门铃的设计
  • AT89S51单片机电子门铃的设计
  •   发布日期: 2019-05-16  浏览次数: 1,102

    1.实验任务

    当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。

     

    2.电路原理图

    AT89S51单片机电子门铃的设计

    图4.19.1

    3.系统板上硬件连线

    (1).把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;

    (2).在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭;

    (3).把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;

    4.程序设计方法

    (1).我们用单片机实定时/计数器T0来产生700Hz和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。

    (2).在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。

    (3).“叮”和“咚”声音各占用0.5秒,因此定时/计数器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;

    }

    }

    }


  • ·上一篇:
    ·下一篇:
  • 其他关联资讯
    深圳市日月辰科技有限公司
    地址:深圳市宝安区松岗镇潭头第二工业城A区27栋3楼
    电话:0755-2955 6626
    传真:0755-2978 1585
    手机:131 1300 0010
    邮箱:hu@szryc.com

    深圳市日月辰科技有限公司 版权所有:Copyright©2010-2023 www.szryc.com 电话:13113000010 粤ICP备2021111333号