查看: 5235|回复: 0

单片机实现“叮咚”门铃

[复制链接]

该用户从未签到

发表于 2007-8-7 11:25:37 | 显示全部楼层 |阅读模式
分享到:
1.实验任务 

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

2.电路原理图




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; 

          } 

      } 

}
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-25 12:20 , Processed in 0.116674 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.