51单片机通过按键控制蜂鸣器发生详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机开发报告
}
院系:电子工程学院
专业:自动化
班级:自动化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