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

    1.实验任务

    用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。

     

    2.电路原理图

    AT89S51单片机报警器的设计

    图4.6.1

    3.系统板上硬件连线

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

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

    (3).把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开关”区域中的K1端口上;

    4.程序设计内容

    (1).信号产生的方法

    500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次;

    5.程序框图

    AT89S51单片机报警器的设计

    图4.6.2

    6.汇编源程序

    FLAG BIT 00H

    ORG 00H

    START: JB P1.7,START

    JNB FLAG,NEXT

    MOV R2,#200

    DV: CPL P1.0

    LCALL DELY500

    LCALL DELY500

    DJNZ R2,DV

    CPL FLAG

    NEXT: MOV R2,#200

    DV1: CPL P1.0

    LCALL DELY500

    DJNZ R2,DV1

    CPL FLAG

    SJMP START

    DELY500: MOV R7,#250

    LOOP: NOP

    DJNZ R7,LOOP

    RET

    END

    7.C语言源程序

    #include

    #include

    bit flag;

    unsigned char count;

    void dely500(void)

    {

    unsigned char i;

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

    {

    _nop_();

    }

    }

    void main(void)

    {

    while(1)

    {

    if(P1_7==0)

    {

    for(count=200;count》0;count--)

    {

    P1_0=~P1_0;

    dely500();

    }

    for(count=200;count》0;count--)

    {

    P1_0=~P1_0;

    dely500();

    dely500();

    }

    }

    }

    }


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

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