项目四音乐门铃和简易演奏器设计.doc

上传人:文库蛋蛋多 文档编号:2369347 上传时间:2023-02-16 格式:DOC 页数:14 大小:777.50KB
返回 下载 相关 举报
项目四音乐门铃和简易演奏器设计.doc_第1页
第1页 / 共14页
项目四音乐门铃和简易演奏器设计.doc_第2页
第2页 / 共14页
项目四音乐门铃和简易演奏器设计.doc_第3页
第3页 / 共14页
项目四音乐门铃和简易演奏器设计.doc_第4页
第4页 / 共14页
项目四音乐门铃和简易演奏器设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《项目四音乐门铃和简易演奏器设计.doc》由会员分享,可在线阅读,更多相关《项目四音乐门铃和简易演奏器设计.doc(14页珍藏版)》请在三一办公上搜索。

1、项目四 音乐门铃和简易演奏器设计设计说明书任务一 音乐门铃一、任务设计要求1、实现“滴 、滴”报警声要求:产生频率为500Hz,扬声器响0.25s,停0.25s,反复循环2、实现“滴 、滴”报警声 实现“滴 、滴”报警门铃要求:在1的基础上增加按钮动作。按钮按下一次,“滴、滴”声持续约3秒。3、技能提高任选一首歌曲,编制歌谱表,由单片机演奏,实现音乐门铃。 4、计数器应用设用内部定时器/计数器1的计数功能,工作在方式2,实现计数5次产生中断使P1.7所接发光二极管闪烁。 二、 设计过程1、 实现“滴 、滴”报警声要求:产生频率为500Hz,扬声器响0.25s,停0.25s,反复循环1、设计方案

2、确定2、硬件电路设计(实现“滴 、滴”报警声)(实现“滴 、滴”报警门铃)和(音乐门铃)的硬件电路设计计数器的硬件电路设计3、软件设计实现“滴 、滴”报警声步骤1:定时参数的计算1) 要产生频率为500Hz的方波信号,方波信号的周期为2ms 。电路采用12MHz的晶振,利用定时器T0的方式1,产生1ms的定时,在P1.7上输出周期为2ms的方波。(a) T0的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制字为01H (b) 计算计数初值X由于晶振为12MHz,机器周期T=,要产生产生1ms的定时,计数初值为X=65536-1000=64536=FC18H将 FCH

3、、18H 分别预置给TH0、TL0。重装计数值中断入口Yes输出声音计满0.25s?FLAG=1?无输出中断返回NoNoYes(1) 、绘制流程图 开 始 标志FLAG清0 计时计数值清0 设置定时器标志位FLAG取反计时计数值清0 定时1ms 启动定时器 等待中断 主程序流程图 中断程序流程图 2、实现“滴 、滴”报警门铃要求:在1的基础上增加按钮动作。按钮按下一次,“滴、滴”声持续约3秒(2) 、编写源程序:共4个程序程序一:实现“滴 、滴”报警声 TCOUNT EQU 30HFLAG BIT 00H ORG 0000H SJMP START ;跳转到主程序 ORG 000BH ;T0的中

4、断入口地址 LJMP INT_T0 ;转向中断服务程序START: CLRFLAG ;标志位清零 MOVTCOUNT,#00H;计时计数值清零 MOVTMOD,#01H ;置T0工作于方式1 MOVTH0,#(65536-1000)/256 ;装入计数初值 MOVTL0,#(65536-1000)MOD 256 MOVIE,#82H;开中断 SETBTR0;启动T0定时器 SJMP$; ;等待中断INT_T0: MOVTH0,#(65536-1000)/256 ;重新装入计数值 MOVTL0,#(65536-1000)MOD 256 INCTCOUNT;计时计数值+1 MOVA,TCOUNT

5、CJNEA,#250,I1;是否计满0.25秒 CPLFLAG;标志位FLAG取反 MOVTCOUNT,#00H;计时计数值清零I1: JBFLAG,I2;检查标志位 CPLP1.7;声音输出 SJMPRETUNEI2: CLRP1.7;关声音RETUNE: RETI;中断返回 END 程序二:按下门铃按键,发出“滴 、滴”报警声TCOUNT EQU 30HFLAG BIT 00H ORG 0000H SJMP START ;跳转到主程序 ORG 000BH ;T0的中断入口地址 LJMP INT_T0 ;转向中断服务程序; 主程序START: CLRFLAG ;标志位清零 MOVTCOUNT

6、,#00H;计时计数值清零 MOVTMOD,#01H ;置T0工作于方式1 MOVTH0,#(65536-1000)/256 ;装入计数初值 MOVTL0,#(65536-1000)MOD 256 MOVIE,#82H;开中断LOOP:JB P1.0,STOP;判断P1.0是否按下 SETBTR0;启动T0定时器ACALL DELAY ;等中断约3.2sSTOP: CLR P1.7 ;关声音 CLR TR0;关闭T0定时器 SJMPLOOP; ;反复;T0中断服务程序INT_T0: MOVTH0,#(65536-1000)/256 ;重新装入计数值 MOVTL0,#(65536-1000)MO

7、D 256 INCTCOUNT;计时计数值+1 MOVA,TCOUNT CJNEA,#250,I1;是否计满0.25秒 CPLFLAG;计时计数值取反 MOVTCOUNT,#00H;计时计数值清零I1: JBFLAG,I2;检查标志位 CPLP1.7;声音输出 SJMPRETUNEI2: CLRP1.7;关声音RETUNE: RETI;中断返回DELAY: MOV R1,#0FFH ;延时约3.2秒DEL1: MOV R2,#0FFHDEL2: MOV R3,#09HDEL3: NOP NOP NOP DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RET END

8、3、 技能提高任选一首歌曲,编制歌谱表,由单片机演奏,实现音乐门铃。BABY DONT CRY 程序三: ORG 0000H LJMP START ORG 000BH ;T0中断矢量 LJMP INT_T0START: MOV SP,#50H MOV TMOD,#01H ;置T0工作于方式1 SETB ET0 SETB EA ;开中断MAIN: CLR SPEAKER ;静音NSP: JB KEY,NSP ;如果按钮没按下,等待 LCALL DELY10MS ;10ms延时 JB KEY,NSP ;如果按钮没按下,等待 MOV DPTR,#SONGLOOP: CLR A MOVC A,A+DP

9、TR MOV R1,A ;音符定时值高位 INC DPTR CLR A MOVC A,A+DPTR MOV R0,A ;音符定时值低位 ORL A,R1 JZ NEXT0 ;如果是停止符00,到NEXT0 MOV A,R0 ANL A,R1 CJNE A,#0FFH,NEXT ;如果不是结束符FFH,到NEXT CLR TR0 LJMP MAINNEXT: MOV TH0,R1 ;定时器初值 MOV TL0,R0 SETB TR0 ;启动定时器T0 SJMP NEXT1NEXT0: CLR TR0 ;停止定时器T0 CLR SPEAKER ;静音NEXT1: CLR A INC DPTR MO

10、VC A,A+DPTR MOV R2,A ;节拍延时常数 ;节拍延时LOOP1: LCALL DELY25MS DJNZ R2,LOOP1 INC DPTR ;下一个音符的地址 LJMP LOOP ;演奏下一个音符;延时子程序 DELY25MS: MOV R6,#50 ;延时25msD1: MOV R7,#245 DJNZ R7,$ DJNZ R6,D1 RETDELY10MS: MOV R6,#20 ;延时10msD2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 RET;T0中断服务程序INT_T0: MOV TH0,R1 ;定时器初值 MOV TL0,R0 CPL

11、SPEAKER ;声音输出 RETI;BABY DONT CRY乐谱SONG: 4、计数器应用设用内部定时器/计数器1的计数功能,工作在方式2,实现计数5次产生中断使P1.7所接发光二极管闪烁。 程序四:ORG 0000H LJMP MAINMAIN:MOV TMOD,#60H :采用T1方式2 MOV TH1,#0FBH :装入初值 MOV TL1,#0FBH SETB ET1 SETB EA ;允许中断 SETB TR1 :启动定时器 SJMP $ :等待中断 ORG 001BH ;中断服务程序 MOV R0,#10H MOV A,#0FEH ;重新设置初值LOOP:MOV P1,A AC

12、ALL DELAY RL A DJNZ R0,LOOP MOV P1,#0FFH RETIDELAY:MOV R3,#250 D2:MOV R4,#250 D1:NOP DJNZ R4,D1 DJNZ R3,D2 RET END4、 软、硬件调试仿真(效果图)(实现“滴 、滴”报警声)和(实现“滴 、滴”报警门铃)和(音乐门铃)的软、硬件调试仿真(效果图)计数器的软、硬件调试仿真(效果图)任务二 简易演奏器一、任务设计要求1、基本要求利用定时器的定时功能,分别产生三个声音的方波,驱动扬声器发音,由三个按键控制演奏DO、RE、MI 三个声音。二、设计过程1、设计方案确定2、 硬件电路设计3、软件

13、设计(1)、绘制流程图(2) 、编写源程序:1个程序ORG 0000H SJMP STARDLY: MOV R2,#20 ;延时程序10ms-(去抖动处理)D1: MOV R3,#248 DJNZ R3,$ DJNZ R2,D1 RET ORG 0030HSTAR: MOV TMOD,#1 ;T0-方式1 MOV P3,#0FFH ;P3口置1 JNB P3.0,DOS ;P3.0按下,转移到DOS ACALL DLY JNB P3.1,RES ;P3.1按下,转移到ERS ACALL DLY JNB P3.2,MIS ;P3.2按下,转移到MIS ACALL DLY SJMP STARDOS

14、: MOV TH0,#0FCH ;DO-定时器初值 MOV TL0, #44H SETB TR0 ;启动定时器 JNB TF0,$ ;延时时间到否? CLR TF0 ;清中断标志位 CPL P2.7 ;关声音 JNB P3.0,DOS ;再次判断-P3.0按下,转移到DOS CLR TF0 ;清中断标志位 SJMP STAR ;返回主程序RES: MOV TH0,#0FCH ;RE-定时器初值 MOV TL0,#0ACH SETB TR0 JNB TF0,$ CLR TF0 ;清中断标志位 CPL P2.7 ;关声音 JNB P3.1,RES ;再次判断-P3.0按下,转移到DOS CLR T

15、F0 SJMP STAR MIS: MOV TH0,#0FDH ;MI-定时器初值 MOV TL0,#09H SETB TR0 JNB TF0,$ CLR TF0 ;清中断标志位 CPL P2.7 ;关声音 JNB P3.2,MIS ;再次判断-P3.0按下,转移到DOS CLR TF0 SJMP STAR END4、软、硬件调试仿真(效果图)三、 设计总结 经过这次作业练习,使得我们更加熟练掌握51单片机的定时/计数器的内部结构、工作原理 。并且更掌握延时程序、发音程序的编写 。更学会运用定时器的几种工作方式编写延时程序,能用定时器查询方式和中断两种方式编写控制程序 。通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号