新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机驱动蜂鸣器原理与设计

单片机驱动蜂鸣器原理与设计

作者: 时间:2013-03-21 来源:网络 收藏

  ORG 0000H
  AJMP START ;跳转到初始化程序

  ORG 0033H
  START:
  MOV SP,#60H ;SP初始化
  MOV P3,#0FFH ;端口初始化

  MAIN: ACALL SOUND ;发声
  ACALL YS500M ;延时
  AJMP MAIN

  SOUND:
  MOV P1,#11011011B ;点亮2个警示黄色发光二极管
  MOV R2,#200 ;响200个周期
  SND1: CLR P3.7 ;输出低电平T1导通,
  ACALL YS1ms ;延时
  SETB P3.7 ;输出高电平T1截止,不响
  ACALL YS1ms ;延时
  DJNZ R2,SND1
  MOV P1,#0FFH ;熄灭黄色警示灯
  RET

  YS1ms: ;1ms延时子程序
  MOV R0,#2
  YL1: MOV R1,#250 ;改变R0的数值可改变声音频率
  DJNZ R1,$
  DJNZ R0,YL1
  RET

  YS500M: ;500ms延时子程序
  MOV R0,#6
  YL2: MOV R1,#200
  YL3: MOV R2,#250
  DJNZ R2,$
  DJNZ R1,YL3
  DJNZ R0,YL2
  RET

  END

  3、“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出“叮咚”音乐声,是一个比较实用的程序。

  “叮咚”电子门铃实验ASM源程序: “叮咚”电子门铃C语言源程序:
  ORG 0000H
  LJMP START ;跳转到初始化程序

  ORG 000BH
  LJMP PGT0 ;跳转到T0中断服务程序
  START:
  OBUF1 EQU 30H ;初始化程序
  OBUF2 EQU 31H
  OBUF3 EQU 32H
  OBUF4 EQU 33H
  FLAGB BIT 00H
  STOPB BIT 01H
  K1 BIT P3.2 ;定义按钮K1,作为门铃按钮

  MOV TMOD,#02H ;定时器初始化
  MOV TH0,#06H
  MOV TL0,#06H
  SETB ET0 ;启动定时器T0
  SETB EA ;启动总中断

  MAIN: ;主程序
  JB K1,MAIN ;检测K1按钮
  LCALL YS10M ;延时去抖动
  JB K1,MAIN
  SETB TR0 ;按钮有效
  MOV P1,#00H ;点亮按钮指示灯
  MOV OBUF1,#00H
  MOV OBUF2,#00H
  MOV OBUF3,#00H
  MOV OBUF4,#00H
  CLR FLAGB
  CLR STOPB
  JNB STOPB,$
  MOV P1,#0FFH
  LJMP MAIN ;发出“叮咚”完毕,返回重新检测按钮

  YS10M: ;10ms延时子程序
  MOV R6,#20
  D1: MOV R7,#248
  DJNZ R7,$
  DJNZ R6,D1
  RET

  PGT0: ;定时器T0中断服务程序
  INC OBUF3 ;中断服务程序中发出一声“叮咚”响声
  MOV A,OBUF3
  CJNE A,#100,NEXT
  MOV OBUF3,#00H
  INC OBUF4
  MOV A,OBUF4
  CJNE A,#20,NEXT
  MOV OBUF4,#00H
  JB FLAGB,PGSTP
  CPL FLAGB
  AJMP NEXT
  PGSTP:
  SETB STOPB
  CLR TR0
  LJMP INT0RET
  NEXT: JB FLAGB,SOU2
  INC OBUF2
  MOV A,OBUF2
  CJNE A,#03H,INT0RET
  MOV OBUF2,#00H
  CPL P3.7
  LJMP INT0RET
  SOU2: INC OBUF1
  MOV A,OBUF1
  CJNE A,#04H,INT0RET
  MOV OBUF1,#00H
  CPL P3.7
  LJMP INT0RET
  INT0RET:
  RETI

蜂鸣器相关文章:蜂鸣器原理
燃气报警器相关文章:燃气报警器原理


评论


相关推荐

技术专区

关闭