搜索
您的当前位置:首页单片机通过按键控制蜂鸣器发生详解

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

时间:2023-08-19 来源:世旅网
单片机开发报告

院 系: 电子工程学院 专 业: 自 动 化 班 级: 自动化1401 学 号: 姓 名: 赵 越 指导老师: 刘 星 光

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中断服务程序

MOV

DPTR,#00H ;初始化程序

START:

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 P3.2,MUSIC0 JNB

P3.1,MAIN

AJMP LOOP

MAIN:

JB P3.1,MAIN ;检测p3.1按钮

LCALL YS10M ;延时去抖动 JB P3.1,MAIN

SETB TR1 ;按钮有效 MOV OBUF1,#00H MOV OBUF2,#00H MOV OBUF3,#00H MOV OBUF4,#00H CLR FLAGB CLR STOPB

STOPB,$

JNB

AJMP START ;发出“叮咚”完毕,返回重新检测按钮

YS10M: ;10ms延时子程序

MOV R6,#20

D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1

RET

TING: AJMP INTT1: INC MOV CJNE MOV INC MOV CJNE MOV JB CPL

AJMP PGSTP: SETB CLR

LJMP START

;定时器T1中断服务程序 OBUF3 ;中断服务程序中发出一声“叮咚”响声 A,OBUF3 A,#100,NEXT OBUF3,#00H OBUF4 A,OBUF4 A,#20,NEXT OBUF4,#00H FLAGB,PGSTP FLAGB NEXT

STOPB TR1 INT0RET

NEXT: JB FLAGB,SOU2 INC OBUF2 MOV A,OBUF2 CJNE A,#04H,INT0RET MOV CPL

LJMP SOU2: INC MOV CJNE MOV

CPL INT0RET: RETI

MUSIC0: JB LCALL

JB NOP

MOV MOV OBUF2,#00H P1.5 INT0RET

OBUF1 A,OBUF1 A,#05H,INT0RET OBUF1,#00H P1.5

p3.2,MUSIC0 YS10M p3.2,MUSIC0

DPTR,#DAT 表头地址送DPTR 20H,#00H ;中断计数器清0

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

JNB P3.3,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 P1.5 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. 点击程序下载

四.程序流程图 开 始 初始化设置 中断程序 按键判断 Yes 中断

因篇幅问题不能全部显示,请点此查看更多更全内容

Top