找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4377|回复: 3
打印 上一主题 下一主题
收起左侧

单片机定时器设计的门铃程序

[复制链接]
跳转到指定楼层
楼主
/* 下载程序后按键K1按下就会触发蜂鸣器门铃“叮咚”响  */

#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;
                }        
        }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1174074 发表于 2026-6-24 22:48 | 只看该作者
怎么连接硬件,有没有图
回复

使用道具 举报

板凳
ID:1167191 发表于 2026-7-19 16:33 | 只看该作者
这个虽然我是初学单片机,但我看出来了。它的硬件太简单,所以作者没有附图。你在proteus软件上,整个89c51最小系统,再附上个蜂鸣器,与单个按键,按照程序里的描述,将引脚连接好,就可以下载程序,用keil编译,到proteus中仿真,即可成功。
回复

使用道具 举报

地板
ID:1167191 发表于 2026-7-20 18:07 | 只看该作者
如果用我的项目文件做仿真的话,源程序中的sbit beep=P1^5;  sbit k1=P3^1;    这两句话要改成sbit BUZZ=P2^6;  sbit kEY=P2^7; 然后程序所有的beep都改成BUZZ, k1都改成KEY。 或把我项目中的BUZZ标号改成beep;KEY改成k1,然后把管脚接到程序中的P1^5, P3^1上,源程序就可以不用改变。

一个思考问题,能否用这个程序播放一小段音乐,即按门铃后响音乐?

doorbell.jpg (389.11 KB, 下载次数: 0)

proteus9.0以上版本

proteus9.0以上版本

doorbell.rar

20.36 KB, 下载次数: 0, 下载积分: 黑币 -5

proteus项目文件

回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表