音乐提示定时器单片机原理与应用课程设计_第1页
音乐提示定时器单片机原理与应用课程设计_第2页
音乐提示定时器单片机原理与应用课程设计_第3页
音乐提示定时器单片机原理与应用课程设计_第4页
音乐提示定时器单片机原理与应用课程设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成绩优 良 中 及格 不及格课 程 设 计课程名称单片机原理与应用课程设计课题名称音乐提示定时器设计专 业班 级学 号姓 名指导老师王迎旭、李晓秀、周向红等2015年7月10日 电气信息学院课程设计任务书课题名称音乐提示定时器设计姓 名专业班级学号指导老师周向红课程设计时间2015年6月29日-2015年7月10日一、任务及要求设计任务:以单片机为核心设计一个音乐提示定时器,具备倒数计时、时间修改、音乐演奏等功能。可作为微电脑倒数计数器,做一小段时间计时,放在家中使用,例如煮泡面、煮开水或小睡片刻等;用于全自动洗衣机洗涤完毕音乐提示定时器。设计4个按键设置现在想要倒数的时间:K1-可调整倒数时间为1-60分钟;K2设置倒数计时时间为5分钟,显示为“05”;K3设置倒数计时时间为20分钟,显示为“20”;K4设置倒数计时时间为60分钟,显示为“60”;一旦按键后则开始倒计时,当计时为0则演奏一曲音乐;内定倒数计时时间为5分钟,显示为05。能焊接开发板的同学,在开发板上进行调试。(1)具有定时音乐演奏功能。(2)用按键实现不同时间设置等控制。(3)用4位LED数码管实现不同时间显示。设计要求:(1)确定系统设计方案;(2)进行系统的硬件设计;(3)完成必要的参数计算与元器件选择;(4)开发板焊接及测试(5)完成应用程序设计;(6)应用系统的硬件和软件的调试二、进度安排第一周:周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。周二周三:完成硬件设计和电路连接周四周日:完成软件设计第二周:周一周三:程序调试周四周五:设计报告撰写。周五进行答辩和设计结果检查。三、参考资料1、王迎旭等.单片机原理及及应用M. 2版.机械工业出版社,20122、胡汉才.单片机原理及其接口技术M.3版.清华大学出版社,2010.3、戴灿金.51单片机及其C语言程序设计开发实例M.清华大学出版社,20104、周向红等.51单片机课程设计指导M.华中科技大学出版社,2000目 录第1章总体方案设计 1 1、1总设计思路 1 1、2系统总设计框图 1 1、3音乐产生基本原理 2第2章硬件电路设计 3 2、1单片机选择 3 2、2复位电路设计 3 2、3晶振电路设计 4 2、4动态显示电路 5 2、5音乐播放电路 5第3章软件设计 6 3、1软件设计思路 6 3、2主程序设计 6 3、3中断服务程序设计 6 3、4子程序设计 7 3、5流程图 7 3、5、1键盘流程图 73、5、2显示流程图 83、5、3音乐播放流程图 9第4章调试 10 4、1硬件调试 10 4、2软件调试 10 4、3软硬件调试 10 4、4开发板调试 10第5章总结 12第6章参考文献 13附录1 总原理图附录2 程序清单2第1章 总体方案设计1、1总设计思路通过计算某一音频周期(1/频率),然后将此周期除以2,即为半周期的时间。利用单片机定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O口反相,然后重复计时此半周期时间再对I/O口反相,这样就能在此I/O口上得到此频率的脉冲,再结合中断延时程序,程序中节拍控制是通过调用延时子程序DELAY的次数来实现,产生音乐。利用P1.1,P1.2,P1.3管脚,对应开关K2、K3、K4,分别启动不同的倒计时程序5分钟、10分钟、20分钟。通过查询方式对P3.2管脚进行查询,进入1到60分钟的时间调整程序。P0引脚作为显示输出连至LED显示器Q0,Q1为位选信号,控制不同位的数码管。程序中使用定时器T0方式1来产生歌谱中各音符对应频率的音频脉冲,由P1.4通放大输出,1拍为748 ms。确定了设计思路后,就可以具体设计了。先编写程序,并用软件检验是否正确。然后加入硬件进行调试。调试是进行仿真调试,即用Proteus仿真软件,画出相应正确的电路原理图,运行仿真软件,看是否可以实现课题所要求的功能。如果不可以,检查是电路的错还是程序连接出问题,进行修改,再次进入仿真环境调试。1、2系统总设计框图晶振、复位电路蜂鸣器LED显示电路按键输入电路单片机图1-1总设计框图1、3音乐产生基本原理总而言之,一首乐曲是由音阶和节拍两大要素构成。一首乐曲演奏的原理是:不同音阶分别对应不同的频率,发出不同的音调,而节拍则控制发出音调时间的长短;若将乐曲的音调连续发出,并使其按相应的节拍变化,即可演奏一首乐曲。根据这一特点,我们采用单片机辅以相应的接口来设计音乐播放器1。音乐的产生主要是通过单片机的I/O口输出高低不同的脉冲信号来控制蜂鸣器发音。要想产生音频脉冲信号,需要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用单片机定时器计时这个半个周期时间,每当计时到后就将输出脉冲的I/O口反相,然后重复计时此半周期时间再对I/O口反相,这样就能在此I/O口上得到此频率的脉冲。通常,利用单片机的内部定时器0,工作在方式1下,改变计数初值TH0和TL0来产生不同频率。对于音乐的节拍,每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍。如果1拍为0.4S,1/4拍为0.1S,只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY,那么1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY,其余的节拍就是它的倍数。第2章 硬件电路设计2、1单片机的选择单片机/EA管脚始终接高电平,单片机复位方式采用按键电平触发复位,通过计算可知单片机频率为11.0592MHz时,计时误差最小,精度越高,因此内部时钟频率设为11.0592MHz。AT89CXX系列与MCS-51系列单片机相比,有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更方便;第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小。它以较小的体积、良好的性能价格比倍受青睐。本次课程设计采用AT89C51单片机。图2-1AT89C51芯片2、2复位电路设计图2-2复位电路根据应用的要求,复位操作有两种基本形式:上电复位和上电或开关复位。当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。 上电复位要求接通电源后,自动实现复位操作。电容C3和电阻R10于单片机内的等效电阻的作用,不用图中电阻R9,也能达到上电复位的操作功能。 要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。本系统的复位电路采用上电复位。 RET按键可以选择专门的复位按键,也可以选择轻触开关。2、3晶振电路设计图2-3晶振电路单片机工作的时间基准是由时钟电路控制的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。 电路中,电容器C1和C2对振荡频率有微调作用,通常的取值范围为30PF左右。石英晶体选择12MHZ就可以。本次设计应用的电压有+5V。220V交流电源经变压器,整流,滤波后分别进入芯片7805,产生+5V,这些电源的具体应用情况如下:+5V电源:单片机及外围电路所用电源+9V电源:压电喇叭所用电源2、4动态显示电路图2-4显示电路首先介绍一下显示器的显示接口,按驱动方式分为静态显示和动态显示两种显示方式。对于多为显示器,通常都是采用动态显示,既逐个地循环地点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部点亮效果一样。为了实现LED显示器的动态扫描,除了要给显示器提供段的输入之外,还有对显示器选择位的控制,这就是通常说的段控和位控。因此,多位LED显示器接口电路需要有两个输出口,其中一个用于8条段控线;另一个用于输出位控线,位控线的数目等于显示器的数目。2、5音乐播放电路图2-5音乐电路蜂鸣器有长声有短声两种,可以根据需要进行选择,通过软件编程控制。在程序里可以设计不同的歌曲来通过播放器进行播放,所以,在这个设计里,是可以有不同的铃声的。第3章 软件设计3、1软件设计思路软件设计包括:信息输入、信息处理、显示输出。为了使程序清晰明了,采用调用子程序设计方式。3、2主程序设计MAIN: CLR F0 ;清零用户标志位 MOV 33H , #5H ;默认5分钟倒计时 S1 BIT P2.0 ;标号位地址 便于编程、阅读和接线 S2 BIT P2.1 ;P1口 显示输出 S3 BIT P2.2 ; S?为矩阵键盘列 S4 BIT P2.3 H1 BIT P2.4 ; H?为矩阵键盘行 H2 BIT P2.5 H3 BIT P2.6 H4 BIT P2.7 W1 BIT P0.0 ; W?为矩阵 7段数码管 位选 W2 BIT P0.1 W3 BIT P0.2 W4 BIT P0.3 SETB W1 SETB W2 SETB W3 SETB W4 BELL BIT P3.7MAIN1: LCALL CHECK_KEYDOWN ;键盘扫描子程序 LCALL TIME_COUNTDOWN_VALUE ;倒计时初值子程序 AJMP MAIN1首先程序初始化,对一些位地址进行标号(便于阅读、接线、编程及程序修改),对默认显示内容赋初值。3、3中断服务程序设计1)定时0 中器断服务程序TIMER0_INT:MOV TH0 , #0DCHMOV TL0 , #00HCJNE R2 , #1 , L1DEC 35HMOV R2 , #100 CJNE R3 , #1 , L2MOV R3 , #60DJNZ R4 , RTN SETB F0 ;用户标志位 置 1 CLR TR0 AJMP RTNL2:DEC R3AJMP RTNL1: DEC R2RTN: RETI2)定时器1中断服务程序TIMER1_INT: MOV TH1 , R1 MOV TL1 , R0 CPL BELL ;晶振发声RETI3、4子程序设计主要子程序包括:键盘扫描子程序、键值处理子程序、显示子程序、倒计时处理子程序、进制处理子程序、音乐播放子程序。3、5流程图3、5、1键盘流程图键扫描是否有键按下?开始去抖动键值计算YN键值为1,倒计时5分钟键值为2,倒计时10分钟键值为3,倒计时20分钟键值为4,倒计时60分钟3、5、2显示流程图 图3-2显示流程图3、5、3音乐播放流程图开始键盘扫描子程序用户标志位是否为1?N音乐播放子程序是否按下复位键?N结束Y3-3音乐播放流程图第4章调试4、1硬件调试 硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。4、2软件调试软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。4、3软硬件调试软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。4、4开发板调试 初始默认5分中的接线图如上图所示。20分钟倒计时接线实物图如上所示。60分钟倒计时如上图所示。第5章 总结回顾此次单片机课程设计,至今我仍感慨颇多。的确,从选题到定稿,从理论到实践,在整整两个星期的日子里,可以说是苦多余甜。但是也学到了许多新知识,既巩固了书本是的知识,也有了书到用时方很少的意识。对新软件的认识到掌握,对课题的分析到解决,都充分反映出这一观点:他山之石可以攻玉。此次课程设计我与多人进行合作,与别人合作对PROREUS软件的功能得到加强,同时也帮助别人在开发板上接线与调试,让自己对这个课题有了深刻的认识。其中当然有许多的不如意,不过最后还是完成目标,这个过程是值得我们去纪念,去体会。通过此次课程设计使我懂得了理论与实践相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识和实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力,当然也不能忽视伙伴的力量。这次的课程设计让我学到了很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。不过总的来说还是受益匪浅,两周昼夜的付出也是有回报的,经过自己亲身的体验,进一步巩固了自己不熟悉的知识,锻炼了自己的思维能力,动手能力,也感受到了理论和实际结合的重要性,要是两者很好的结合还是颇具挑战性的。还有就是在周老师的建议帮助下对原理图绘制进行了完善,对程序有了更深的体会。这次课程设计通过自己的努力,同学的帮助,还有老师的耐心指导,终于顺利完成了。最后,在这里非常感谢对给过我帮助的同学与指导老师!第6章参考文献1、王迎旭等.单片机原理及及应用M. 2版.机械工业出版社,20122、胡汉才.单片机原理及其接口技术M.3版.清华大学出版社,2010.3、戴灿金.51单片机及其C语言程序设计开发实例M.清华大学出版社,20104、周向红等.51单片机课程设计指导M.华中科技大学出版社,200013附录1 总原理图附录2 程序清单 ORG 0000H AJMP MAIN ORG 000BHLJMP TIMER0_INT ORG 001BH LJMP TIMER1_INT ORG 0030HSAVE: DB 00H , 00H , 00H , 00H ,00H , 00H ;预留空间备用MAIN: CLR F0 ;清零用户标志位 MOV 33H , #5H ;默认5分钟倒计时 S1 BIT P2.0 ;标号位地址 便于编程、阅读和接线 S2 BIT P2.1 ;P1口 显示输出 S3 BIT P2.2 ; S?为矩阵键盘列 S4 BIT P2.3 H1 BIT P2.4 ; H?为矩阵键盘行 H2 BIT P2.5 H3 BIT P2.6 H4 BIT P2.7 W1 BIT P0.0 ; W?为矩阵 7段数码管 位选 W2 BIT P0.1 W3 BIT P0.2 W4 BIT P0.3 SETB W1 SETB W2 SETB W3 SETB W4 BELL BIT P3.7MAIN1: LCALL CHECK_KEYDOWN ;键盘扫描子程序 LCALL TIME_COUNTDOWN_VALUE ;倒计时初值子程序 AJMP MAIN1;*;子程序 集;键盘扫描子程序CHECK_KEYDOWN: LCALL SHOW ;显示子程序NOKEY0: MOV P2 , #0FFH ;扫描第一行 CLR H1 LCALL KEYDOWN ;扫描键盘按下子程序 JZ NOKEY1 LCALL SHOW MOV P2 , #0FFH CLR H1 LCALL KEYDOWN JZ NOKEY1 MOV 31H , #00H LJMP NOKEY4NOKEY1: MOV P2 , #0FFH ;扫描第二行 CLR H2 LCALL KEYDOWN JZ NOKEY2 LCALL SHOW MOV P2 , #0FFH CLR H2 LCALL KEYDOWN JZ NOKEY2 MOV 31H , #04H LJMP NOKEY4NOKEY2: MOV P2 , #0FFH ;扫描第三行 CLR H3 LCALL KEYDOWN JZ NOKEY3 LCALL SHOW MOV P2 , #0FFH CLR H3 LCALL KEYDOWN JZ NOKEY3 MOV 31H , #08H LJMP NOKEY4NOKEY3: MOV P2 , #0FFH ;扫描第四行 CLR H4 LCALL KEYDOWN JZ NOKEY4 LCALL SHOW MOV P2 , #0FFH CLR H4 LCALL KEYDOWN JZ NOKEY4 MOV 31H , #0CHNOKEY4: JB F0 , MUSIC ;用户标志位 为 1 则 播放音乐 JZ CHECK_KEYDOWN LCALL CHECK ;键盘 列扫描 子程序 ADD A , 31H ;至此可以知道0-F中的哪个键被按;下键值存A中保存RET;*;扫描键盘按下子程序KEYDOWN: MOV A,P2 ;检查是否有键被按下 ANL A,#0FH ;有键按下A不为0 XRL A,#0FHRET;*;键盘 列扫描 子程序CHECK: CJNE A , #01H , ZERO ;第一列被按下? MOV A , #00H LJMP OVERZERO: CJNE A , #02H , ONE ;第二列被按下? MOV A , #01H LJMP OVERONE: CJNE A , #04H , TWO ;第三列被按下? MOV A , #02H LJMP OVERTWO: CJNE A , #08H , OVER ;第四列被按下? MOV A , #03HOVER: RET;*;倒计时初值子程序TIME_COUNTDOWN_VALUE:LED0:CJNE A , #00H , LED1 ;30H中存放倒计时时间值 MOV 30H , #5 LJMP LED4LED1:CJNE A , #01H , LED2 MOV 30H , #10 LJMP LED4LED2:CJNE A , #02H , LED3 MOV 30H , #20 LJMP LED4LED3:CJNE A , #03H , LED4 MOV 30H , #60LED4:MOV A , 30H LCALL TIME_SHOW ;倒计时初值处理子程序 LCALL INTTIMER0RET;*;倒计时初值处理子程序TIME_SHOW: MOV B , #10 ;32H存放显示倒计时值分钟的高位 DIV AB ;33H存放显示倒计时值分钟的低位MOV 32H , A MOV 33H , BRET;*;音乐播放子程序MUSIC:MOV TMOD , #10H SETB EA SETB ET1 MOV DPTR , #MUSICTABLEMUSIC_VALUE: CLR A MOVC A , A+DPTR MOV R1 , A INC DPTR CLR A MOVC A , A+DPTR MOV R0 , A ORL A , R1 JZ MUSIC_STOP MOV A , R0 ANL A , R1 CJNE A , #0FFH , MUSIC_TIME_START SJMP MUSIC;*;定时器1初始化MUSIC_TIME_START: MOV TH1 , R1 MOV TL1 , R0 SETB TR1 SJMP MUSIC_T_LONGMUSIC_STOP: CLR TR1MUSIC_T_LONG: CLR A INC DPTR MOVC A , A+DPTR MOV R7 , ATIME_VALUE: ACALL MUSIC_TIME_DELAY; DJNZ R7 , TIME_VALUE;R7 控制节拍延时次数 INC DPTRLJMP MUSIC_VALUE;*;定时器1中断服务程序TIMER1_INT: MOV TH1 , R1 MOV TL1 , R0 CPL BELL ;晶振发声RETI;*;节拍延迟子程序MUSIC_TIME_DELAY:; 节拍 延时 187ms MOV R6 , #02D2: MOV R5 , #187D3: MOV R4 , #248 DJNZ R4 , $DJNZ R5 , D3 DJNZ R6 , D2RET;*;倒计时处理子程序 六十进制处理TIME_COUNTDOWN: MOV A , 35HCJNE A , #-1 , COUNTDOWN1 MOV 35H , #9 DEC 34HCOUNTDOWN1:MOV A , 34HCJNE A , #-1 , COUNTDOWN2MOV 34H , #5DEC 33HCOUNTDOWN2:MOV A , 33HCJNE A , #-1 , COUNTDOWN3MOV 33H , #9DEC 32HCOUNTDOWN3:RET;*;7段显示管显示子程序SHOW: LCALL TIME_COUNTDOWN CLR W1 ;显示第一个字符 MOV A , 32H LCALL SHOW1SETB W1 CLR W2 ;显示第二个字符 MOV A , 33HLCALL SHOW1 SETB W2 CLR W3 ;显示第三个字符 MOV A , 34H LCALL SHOW1 SETB W3 CLR W4 ;显示第四个字符 MOV A , 35H LCALL SHOW1 SETB W4RET;*;字符显示子程序SHOW1: MOV DPTR , #TABLE ;送显示的字符 MOVC A , A+DPTR MOV P1 , A JB W2 , DELAY CLR P1.7DELAY: ;延时 1ms 误差 -0.651041666667us MOV R6 , #66HDL0: MOV R5 , #03H DJNZ R5 , $ DJNZ R6 , DL0 SETB P1.7RET;*;定时器0 初始化子程序INTTIMER0: ;基础定时一分钟,改R4的值即可改变;定时时间 如(R4=5为定时五分钟) MOV R4 , 30H ;30H单元存放初值 MOV R3 , #60 ;定时一分钟 MOV R2 , #100 ;定时一秒钟 MOV TMOD , #01H MOV TH0 , #0DCH;利用基础定时的一秒钟显示倒计时效果 MOV TL0 , #00H ;SETB EASETB ET0SETB TR0RET;*;定时器0 中断服务程序TIMER0_INT:MOV TH0 , #0DCHMOV TL0 , #00HCJNE R2 , #1 , L1DEC 35HMOV R2 , #100 CJNE R3 , #1 , L2MOV R3 , #60DJNZ R4 , RTN SETB F0 ;用户标志位 置 1 CLR TR0 AJMP RTNL2:DEC R3AJMP RTNL1: DEC R2RTN: RETI;*;待显示字符集TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH;音乐音符数据MUSICTABLE:DB0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论