1、51单片机通过按键控制蜂鸣器发生详解单片机开发报告院 系: 电子工程学院专 业: 自 动 化 班 级: 自动化1401 学 号: 201405060118姓 名: 赵 越 指导老师: 刘 星 光 2018 年 01 月 04 日一.系统任务按键控制蜂鸣器发声二电路原理图三程序设计内容 “叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器发出“叮咚”音乐声,是一个比较实用的程序。 使用无源蜂鸣器输出7个基本音阶声音是由物体振动所产生的。只是由于物体的材料以及振幅、频率不同,
2、而产生不同的声音。声音的响度是由振幅决定的,而音调则是由频率决定的,那么我们只需要控制物体振动的频率,就可以发出固定的声调。五汇编程序 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 FLA
3、GB 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 LOOPLOOP: JNB P3.2,MUSIC0 JNB P3.1,MAIN AJMP LOOPMAIN: JB P3.1,MAIN ;检测p3.1按钮 LCALL YS10M ;延时去抖动 JB P3.1,MAIN SETB TR1 ;按钮有效 MOV OBUF1,#00H MOV OBUF2,#00H MOV OBUF3,#00H MOV OBUF
4、4,#00H CLR FLAGB CLR STOPB JNB STOPB,$ AJMP START ;发出“叮咚”完毕,返回重新检测按钮 YS10M: ;10ms延时子程序 MOV R6,#20D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 RETTING: AJMP STARTINTT1: ;定时器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 J
5、B FLAGB,PGSTP CPL FLAGB AJMP NEXTPGSTP: SETB STOPB CLR TR1 LJMP INT0RETNEXT: JB FLAGB,SOU2 INC OBUF2 MOV A,OBUF2 CJNE A,#04H,INT0RET MOV OBUF2,#00H CPL P1.5 LJMP INT0RETSOU2: INC OBUF1 MOV A,OBUF1 CJNE A,#05H,INT0RET MOV OBUF1,#00H CPL P1.5INT0RET: RETIMUSIC0: JB p3.2,MUSIC0 LCALL YS10M JB p3.2,MUSI
6、C0 NOP MOV DPTR,#DAT 表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MOV B,#00H ;表序号清0MAIN2: 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 DE
7、L MOV A,R7 CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否? ;不等,则继续循环 MOV 20H,#00H ;等于,则取下一代码 INC DPTR INC B LJMP MAIN2MUSIC3: ;休止100毫秒 NOP CLR TR0 MOV R2,#0DHMUSIC4: NOP MOV R3,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MAIN2END0: NOP MOV R2,#0FFH ;歌曲结束,延时MUSIC6: MOV R3,#00H LCALL DEL DJNZ R2,MUSIC6 CLR TR0 LJMP LOOPDEL: NOPDEL3: MOV R4,#03HDEL4: NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RETDENG1: MOV R3,#64H DJNZ R3,$ AJMP MAINDAT: DB 30h,30h,26h,26h,20h,20h,1ch,1ch,1ah,1ah,18h,18h,00h END六、程序下载及调试 步骤:1 点击translate 按钮 预编译2 点击build 按钮 编译3 点击 rebuild 按钮 编译所有目标4 打开普中烧录软件5 点击程序下载 四程序流程图NoYes中断中断Yes
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1