我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 478|回复: 0

基于51蜂鸣器门铃

[复制链接]

该用户从未签到

9

主题

9

回帖

0

积分

一级逆天

积分
0

终身成就奖

发表于 2020-4-6 21:41:20 | 显示全部楼层 |阅读模式
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit beep=P1^5;
sbit k1=P3^1;
u8 ding,dong,flag,stop;
u16 n;
void delay(u16 i)
{
    while(i--);
}
void time0init()      //定时器0初始化
{
    TMOD=0X01;     //定时器0 方式1
    TH0=0Xff;
    TL0=0X06; //定时250us
//    TR0=1;
    EA=1;
    ET0=1;
}
void biaohaoinit()       //各个标号初始化
{
    ding=0;        //叮声音  计数标志
    dong=0;        //咚声音  计数标志
    n=0;        //定时0.5s标志
    flag=0;
    stop=0;       //结束标志
}
void main()
{
    time0init();
    biaohaoinit();
    while(1)
    {
        if(k1==0)       //判断按键是否按下
        {
            delay(1000);  //消抖
            if(k1==0)
            {
                TR0=1;    //打开定时器0
                while(!stop);
            }
        }   
    }   
}
void time0() interrupt 1
{
    n++;
    TH0=0Xff;
    TL0=0X06; //250us
    if(n==2000)        //定时0.5s  叮响0.5秒,咚响0.5秒
    {
        n=0;
        if(flag==0)
        {
            flag=~flag;
        }
        else
        {
            flag=0;
            stop=1;
            TR0=0;      //关闭定时器0
        }
    }
    if(flag==0)
    {                       //通过改变定时计数时间可以改变门铃的声音
        ding++;              //叮
        if(ding==1)
        {
            ding=0;
            beep=~beep;
        }
    }
    else
    {
        dong++;
        if(dong==2)          //咚
        {
            dong=0;
            beep=~beep;
        }   
    }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表