基于51单片机的“叮冬”门铃设计

发布者:fuehrd努力的最新更新时间:2017-12-31 来源: eefocus关键字:51单片机  门铃设计 手机看文章 扫描二维码
随时随地手机看文章

1.实验任务
  当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。
2.电路原理图
“叮咚”门铃
图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;
          }
      }
}

关键字:51单片机  门铃设计 引用地址:基于51单片机的“叮冬”门铃设计

上一篇:基于51单片机的99秒马表设计
下一篇:基于89C52的电子钟设计

推荐阅读最新更新时间:2024-03-16 15:51

51单片机IO口模拟串口通讯2-计数法
硬件环境:STC89C52 软件环境:IDE Keil uVision V4.10 编译器 C51 V9.0 代码如下: /********************************************** 方法2:计数法 硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 波特率:9600 描述:所谓计数法是指根据模拟出的波特率,每1位持续的时间的长短是通过定时器计数 溢出来置标志位,查询该标志位来实现的。 测试1:上电发送1个0x02的字符 测试2:上电先发送1个0x02的字符,然后等待接收,将收到的字符再发送出去(分别一个一个发送0x01,0x02,0x03,0x0
[单片机]
<font color='red'>51单片机</font>IO口模拟串口通讯2-计数法
51单片机按键控制输出pwm的占空比
之前说到利用51单片机输出pwm,但是输出的pwm是固定占空比的,如果想要改变占空比,还得回过头来修改程序并重新烧写进单片机。这样做的话不但麻烦、效率低,还又把芯片的可烧写次数减少了一次,虽然51的芯片现在很便宜,但能省点就省点,能不浪费就不浪费,哈哈,开玩笑啦!最主要的还是为了灵活性,为此特地通过加入按键的功能来实现动态修改输出的pwm的占空比。这样在用pwm控制电机的时候就能使用按键来控制电机转速了。废话不多说,见下: #include reg51.h #define uint unsigned int #define uchar unsigned char uchar
[单片机]
8051单片机典型接口电路--并行扩展静态显示电路图
下图为并行扩展静态显示电路图(3位LED静态显示电路),按下图编制显示子程序,显示数(≤255)存在内RAM 30H中。 相应的程序为:   DIR1: MOV A,30H ;读显示数   MOV B,#100 ;置除数   DIV AB ;产生百位显示数字   MOVC A,@A+DPTR ;读百位显示符   MOV DPTR,#0DFFFH ;置74377(百位)地址   MOVX @DPTR,A ;输出百位显示符   MOV A,B ;读余数   MOV B,#10 ;置除数   DIV AB ;产生十位显示数字   MOV DPTR,#TAB ;置共阳字段码表首址   MOVC A,@A+DP
[模拟电子]
80<font color='red'>51单片机</font>典型接口电路--并行扩展静态显示电路图
51单片机C语言程序(一)发光二极管
程序(一)点亮第一个发光二极管 #include reg52.h void main() { P1=0xfe; while(1); } 程序(二)让第一个发光二极管闪烁 #include reg52.h sbit led1=P1^0; void main() { unsigned int i; while(1) { i=50000; led1=0; while(i--); i=50000; led1=1; while(i--); } } 程序(三) //第一个发光二极管以间隔2000ms闪烁 #include reg52.h #define uint unsigned int #de
[单片机]
51单片机定时器T0的使用1-中断法
/********************************************** 方法1:延时法 硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 波特率:9600 描述:T0用于定时,方式1,定时时间50ms,中断方式,定时时间到,TF1=1,利用模拟串口发送字符0x67 **********************************************/ #include reg52.h #define uchar unsigned char sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92; #de
[单片机]
<font color='red'>51单片机</font>定时器T0的使用1-中断法
基于80C51单片机位寻址编程
80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。 位寻址的范围,也就是哪些部份可以进行位寻址: 1、我们在学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。它的单元地址是20H-2FH。共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的名字就是00H-7FH。 这里就有一个比较麻烦的问题需要大家理解清楚了。我们在前面的学习中00H、01H。。。。7FH等等,所表示的都是一个字节(或者叫单
[单片机]
基于80C<font color='red'>51单片机</font>位寻址编程
数码管按键移动位数闪烁实验
#include reg51.h #define uchar unsigned char #define uint unsigned int sbit k1=P1^0; void delay(uint k) { while(k--); } code uchar seg ={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60}; //数码管码表 code uchar tab ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; // 数码管 位选 uchar move,flag; void time0_init() { TMOD
[单片机]
基于80C51单片机和AD526运放实现防腐电源监控节点的设计
金属发生腐蚀的现象随处可见。腐蚀给金属材料造成的直接和间接损失是巨大的,以至造成灾难性的破坏事故,引起严重的环境污染。研究表明,因腐蚀造成的损失一般占国民生产总值的3%~4%,其中约有15%是可以通过现有的防腐技术避免的,而阴极保护技术的发展又是与防腐技术的进步分不开的。 防腐电源是阴极保护技术中最为关键的设备。由于易腐蚀的金属构件大部分分布在野外或者地下,并且分布范围广,如石油管道、输电线路、海上平台等,所以必然要求发展可靠性高、智能化的新型防腐电源,并且要求通过工业网远程采集现场数据,进行计算分析,实现远程控制,从而提高现场设备的可靠性,实现无人管理。 1、防腐电源系统的结构组成 阴极保护技术简单地说就是测量被保护金属
[单片机]
基于80C<font color='red'>51单片机</font>和AD526运放实现防腐电源监控节点的<font color='red'>设计</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved