51单片机通过按键控制蜂鸣器发生详解Word文档格式.docx
《51单片机通过按键控制蜂鸣器发生详解Word文档格式.docx》由会员分享,可在线阅读,更多相关《51单片机通过按键控制蜂鸣器发生详解Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。
时候,假如按压门铃按钮时,室内会发出“叮咚”声音,本实验程序
模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器
发出“叮咚”音乐声,是一个比较适用的程序。
使用无源蜂鸣器输出7个基本音阶
声音是由物体振动所产生的。
不过因为物体的资料以及振幅、频次不
同,而产生不一样的声音。
声音的响度是由振幅决定的,而音调则是由
频次决定的,那么我们只要要控制物体振动的频次,就能够发出固定
的腔调。
五.汇编程序
ORG
0000H
AJMPSTART
ORG000BH
INC
MOV
20H;
中止服务
TH0,#0D8H
中止计数器加
1
TL0,#0F0H
12M晶振,形成
10毫秒中止
RETI
001BH
LJMPINTT1
;
跳转到
T1中止服务程序
START:
MOVDPTR,#00H;
初始化程序
MOVA,#00H
OBUF1EQU30H
OBUF2EQU31H
OBUF3EQU32H
OBUF4EQU33H
FLAGBBIT00H
STOPBBIT01H
MOVSP,#50H
MOVTH0,#0D8H
MOVTL0,#0F0H
MOVTMOD,#21H
MOVTH1,#09H
MOVTL1,#09H
MOVIE,#8AH
AJMPLOOP
LOOP:
JNBP3.2,MUSIC0
JNBP3.1,MAIN
MAIN:
JB
P3.1,MAIN
检测
按钮
LCALL
YS10MP3.1,MAIN
延时去颤动
SETB
CLR
JNB
TR1
OBUF1,#00H
OBUF2,#00H
OBUF3,#00H
OBUF4,#00H
FLAGB
STOPB
STOPB,$
按钮有效
AJMPSTART;
发出“叮咚”完成,返回从头检测按钮
YS10M:
;
10ms延时子程序
R6,#20
D1:
DJNZ
R7,#100
R7,$
R6,D1
RET
TING:
AJMP
START
INTT1:
准时器
CJNE
CPL
OBUF3;
中止服务程序中发出一声“叮咚”响声
A,OBUF3
A,#100,NEXT
OBUF4
A,OBUF4
A,#20,NEXT
FLAGB,PGSTP
NEXT
PGSTP:
LJMP
INT0RET
NEXT:
FLAGB,SOU2
OBUF2
A,OBUF2
A,#04H,INT0RET
SOU2:
OBUF1
A,OBUF1
A,#05H,INT0RET
INT0RET:
MUSIC0:
p3.2,MUSIC0
YS10M
NOP
DPTR,#DAT
表头地点送
DPTR
20H,#00H
中止计数器清
MAIN2:
JNB
B,#00H;
表序号清
P3.3,TING
CLRA
MOVCA,@A+DPTR;
查表代替码
JZEND0;
是00H,则结束
CJNEA,#0FFH,MUSIC5
LJMPMUSIC3
MUSIC5:
MOVR6,A
INCDPTR
MOVA,B
取节拍代码送R7
MOVR7,A
SETBTR0
MUSIC2:
MOVA,R6
MOVR3,A
启动计数
LCALLDEL
A,R7
CJNEA,20H,MUSIC2
中止计数器
(20H)=R7否?
MOV20H,#00H
INCB
LJMPMAIN2
不等,则持续循环
等于,则取下一代码
MUSIC3:
休止
100毫秒
CLRTR0
MOVR2,#0DH
MUSIC4:
MOVR3,#0FFH
DJNZR2,MUSIC4
END0:
MOVR2,#0FFH;
歌曲结束,延时
MUSIC6:
MOVR3,#00H
DJNZR2,MUSIC6
CLRTR0
LJMPLOOP
DEL:
DEL3:
MOVR4,#03H
DEL4:
DJNZR4,DEL4
DJNZR3,DEL3
DENG1:
MOVR3,#64H
DJNZR3,$
AJMPMAIN
DAT:
DB30h,30h,26h,26h,20h,20h,1ch,1ch,1ah,1ah,18h,18h,00h
END
六、程序下载及调试
步骤:
1.点击translate按钮预编译
2.点击build按钮编译
3.点击rebuild按钮编译全部目标
4.翻开普中烧录软件
5.点击程序下载
四.程序流程图
开始
初始化设置
中止程序按键判断
Yes
中止
变电平循环体
结束判断
No
结束