文档库 最新最全的文档下载
当前位置:文档库 › 51单片机通过按键控制蜂鸣器发生详解

51单片机通过按键控制蜂鸣器发生详解

51单片机通过按键控制蜂鸣器发生详解
51单片机通过按键控制蜂鸣器发生详解

单片机开发报告

}

院系:电子工程学院

专业:自动化

班级:自动化1401

学号:0118

姓名:赵越

指导老师:刘星光

2018年01 月04 日

|

一.系统任务

按键控制蜂鸣器发声

二.电路原理图

三.程序设计内容

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

使用无源蜂鸣器输出7个基本音阶

声音是由物体振动所产生的。只是由于物体的材料以及振幅、频率不同,而产生不同的声音。声音的响度是由振幅决定的,而音调则是由频率决定的,那么我们只需要控制物体振动的频率,就可以发出固定的声调。

\

五.汇编程序

ORG 0000H

AJMP START

ORG 000BH

INC 20H ;中断服务,中断计数器加1

MOV TH0,#0D8H

MOV TL0,#0F0H 12M晶振,形成10毫秒中断

RETI

'

ORG 001BH

LJMP INTT1 ;跳转到T1中断服务程序START: MOV DPTR,#00H ;初始化程序

MOV A,#00H

OBUF1 EQU 30H

OBUF2 EQU 31H

OBUF3 EQU 32H

OBUF4 EQU 33H

FLAGB BIT 00H

STOPB BIT 01H

[

MOV SP,#50H

MOV TH0,#0D8H

MOV TL0,#0F0H

MOV TMOD,#21H

MOV TH1,#09H

MOV TL1,#09H

MOV IE,#8AH

AJMP LOOP

LOOP: JNB ,MUSIC0

JNB ,MAIN

AJMP LOOP

MAIN:

JB ,MAIN ;检测按钮

LCALL YS10M ;延时去抖动

JB ,MAIN

SETB TR1 ;按钮有效

MOV OBUF1,#00H

MOV OBUF2,#00H

MOV OBUF3,#00H

|

MOV OBUF4,#00H

CLR FLAGB

CLR STOPB

JNB STOPB,$

AJMP START ;发出“叮咚”完毕,返回重新检测按钮YS10M: ;10ms延时子程序

MOV R6,#20

D1:

MOV R7,#100

DJNZ R7,$

~

DJNZ R6,D1

RET

TING: AJMP START

INTT1: ;定时器T1中断服务程序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 TR1

LJMP INT0RET NEXT:

~

JB FLAGB,SOU2

INC OBUF2

MOV A,OBUF2

CJNE A,#04H,INT0RET

MOV OBUF2,#00H

CPL

LJMP INT0RET

SOU2:

INC OBUF1

MOV A,OBUF1

]

CJNE A,#05H,INT0RET

MOV OBUF1,#00H

CPL

INT0RET:

RETI

MUSIC0: JB ,MUSIC0

LCALL YS10M

JB ,MUSIC0

NOP

MOV DPTR,#DAT 表头地址送DPTR !

MOV 20H,#00H ;中断计数器清0

MOV B,#00H ;表序号清0 MAIN2: JNB ,TING

CLR A

MOVC A,@A+DPTR ;查表取代码

JZ END0 ;是00H,则结束

CJNE A,#0FFH,MUSIC5

LJMP MUSIC3

MUSIC5:

NOP

-

MOV R6,A

INC DPTR

MOV A,B

MOVC A,@A+DPTR ;取节拍代码送R7

MOV R7,A

SETB TR0 ;启动计数MUSIC2:

NOP

CPL

MOV A,R6

"

MOV R3,A

LCALL DEL

MOV A,R7

CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否

;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码

INC DPTR

INC B

LJMP MAIN2

MUSIC3: ;休止100毫秒

(

NOP

CLR TR0

MOV R2,#0DH

MUSIC4:

NOP

MOV R3,#0FFH

LCALL DEL

DJNZ R2,MUSIC4

INC DPTR

LJMP MAIN2

·

END0:

NOP

MOV R2,#0FFH ;歌曲结束,延时MUSIC6:

MOV R3,#00H

LCALL DEL

DJNZ R2,MUSIC6

CLR TR0

LJMP LOOP

DEL:

NOP

DEL3:

MOV R4,#03H

DEL4:

NOP

DJNZ R4,DEL4

NOP

DJNZ R3,DEL3

RET

DENG1: MOV R3,#64H

|

DJNZ R3,$

AJMP MAIN

DAT:

DB 30h,30h,26h,26h,20h,20h,1ch,1ch,1ah,1ah,18h,18h,00h

END

六、程序下载及调试

步骤:

1.点击translate 按钮预编译

2.点击build 按钮编译

3.点击rebuild 按钮编译所有目标

4.打开普中烧录软件

5.点击程序下载

四.程序流程图

相关文档