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

下载本文档

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

文档简介

目 录第1章概述11.1设计内容11.2设计要求11.3 设计目的1第2章 总体方案设计及系统框图22.1 总体方案的设计思路22.2 系统的设计框图32.3 工作原理3第3章各模块硬件设计及说明53.1 单片机的选择及说明53.2复位电路的设计63.3 晶振电路的设计73.4 led动态显示电路83.5 音乐播放电路9第4章软件设计及说明104.1 程序流程图104.2 音乐定时常数设置114.3 音乐延时常数设置12第5章调试步骤、结果及使用说明15第6章心得与体会16参考文献17附录1:音乐提示定时器原理图18附录2 程序清单19第1章 概述1.1 设计内容本课题要求以单片机为核心设计一个音乐提示定时器,具备倒数计时、时间修改、音乐演奏等功能。可作为微电脑倒数计数器,做一小段时间计时,放在家中使用,例如煮泡面、煮开水或小睡片刻等;用于全自动洗衣机洗涤完毕音乐提示定时器。设计任务包括控制系统硬件设计和应用程序设计。1.2 设计要求1)确定系统设计方案。2)进行系统的硬件设计。3)完成必要元器件选择。4)开发板焊接及测试。5)系统软件设计及调试。6)系统联调及操作说明。7)写说明书。1.3 设计目的音乐提示定时器设计4个按键设置现在想要倒数的时间:k1-可调整倒数时间为1-60分钟;k2设置倒数计时时间为5分钟,显笺为“0500”;k3设置倒数计时时间为20分钟,显示为“2000”;k4设置倒数计时时间为60分钟,显示为“6000”;一旦按键后则开始倒计时,当计时为0则演奏一曲音乐;内定倒数计时时间为5分钟,显示为0500。第2章 总体方案设计及系统框图2.1 总体方案的设计思路本课题要求以单片机为核心设计一个音乐提示定时器,具备倒数计时、时间设置、音乐演奏等功能。设计60分钟、20分钟、5分钟的设置开关或按键,例如60分钟,显示为“60.00”,内定倒数计时时间为5分钟,显示为05.00(开机状态)。一旦按键后则开始倒计时,当计时为0则演奏一曲音乐,而且可循环播放,可随时停止。根据题目要求,音乐定时系统由核心处理模块、数码管显示模块、音乐模块、及倒计时模块等组成。要达到课程设计的要求可以用多种方案来实现。按照设计要求我选择利用单片机和led显示器来实现定时倒数,通过压电喇叭来发出音乐。通过对p2口的查询,实现不同时间的设定和调整,系统晶振为11.0592mhz,利用单片机的reset管脚作为系统开关。利用查询方式设定倒计时时间。进行总体设计前需先设计出各子功能模块的程序,并进行调试,各子模块调试成功后,再用一定的连接方法把各子程序连接起来,再次进行调试,直至正确可以实现总体功能为止。2.2 系统的设计框图2.3 工作原理音乐的产生主要是通过单片机的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,其余的节拍就是它的倍数。总而言之,一首乐曲是由音阶和节拍两大要素构成。一首乐曲演奏的原理是:不同音阶分别对应不同的频率,发出不同的音调,而节拍则控制发出音调时间的长短;若将乐曲的音调连续发出,并使其按相应的节拍变化,即可演奏一首乐曲。根据这一特点,我们采用单片机辅以相应的接口来设计音乐播放器。第3章 各模块硬件设计及说明3.1 单片机的选择及说明一般的otp产品,一旦错误编程就成了废品,而atmel公司89系列单片机内部采用了flash存储器,所以,错误编程之后仍可以重新编程,直到正确为止。其次是它可反复进行系统试验。用89系列单片机设计的系统,可以反复进行系统试验,每次试验可以编入不同的程序,这样就可以保证用户的系统设计达到最优,而且还可以随用户的需要和发展进行修改,使系统能不断追随用户的最新要求。本次课程设计我选择at89c51单片机。at89c51是一种带4k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c51是一种高效微控制器,1.主要特性:与mcs-51 兼容;4k字节可编程flash存储器;寿命:1000写/擦循环;数据保留时间:10年;全静态工作:0hz-24mhz;三级程序存储器锁定;1288位内部ram;32可编程i/o线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路。2振荡器特性:xtal1和xtal2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,xtal2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3芯片擦除:整个perom阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ale管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。at89c51的引脚排列:3.2复位电路的设计根据应用的要求,复位操作有两种基本形式:上电复位和上电或开关复位。当mcs-5l系列单片机的复位引脚rst(全称reset)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果rst持续为高电平,单片机就处于循环复位状态。 上电复位要求接通电源后,自动实现复位操作。电容c3和电阻r9对电源十5v来说构成微分电路。如下图复位电路所示。要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。由于电容c3的充电和反相门的作用,使rst持续一段时间的高电平。当单片机已在运行当中时,按下复位键rst后松开,也能使rst为一段时间的高电平,从而实现上电或开关复位的操作。本系统的复位电路采用上电复位。 ret按键可以选择专门的复位按键,也可以选择轻触开关。复位电路3.3 晶振电路的设计单片机工作的时间基准是由时钟电路控制的。在单片机的xtal1和xtal2两个管脚,接一只晶振及两只电容就构成了单片机的时钟电路。 电路中,电容器c1和c2对振荡频率有微调作用,通常的取值范围为30pf左右。石英晶体选择11.0592mhz就可以。电路如下图所示。晶振电路3.4 led动态显示电路首先介绍一下显示器的显示接口,按驱动方式分为静态显示和动态显示两种显示方式。对于多为显示器,通常都是采用动态显示,既逐个地循环地点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部点亮效果一样。为了实现led显示器的动态扫描,除了要给显示器提供段的输入之外,还有对显示器选择位的控制,这就是通常说的段控和位控。因此,多位led显示器接口电路需要有两个输出口,其中一个用于8条段控线;另一个用于输出位控线,位控线的数目等于显示器的数目。数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的i/o线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通com端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的com端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o端口,而且功耗更低。led动态显示电路3.5 音乐播放电路蜂鸣器有长声有短声两种,可以根据需要进行选择,通过软件编程控制。在程序里可以设计不同的歌曲来通过播放器进行播放,所以,在这个设计里,是可以有不同的铃声的。音乐播放电路第4章 软件设计及说明4.1 程序流程图4.2 音乐定时常数设置产生音乐通过单片机的i/o口输出高低不同的脉冲信号来控制蜂鸣器发音。利用at89c51单片机的内部定时器0,工作在方式1下,改变计数初值th0和tl0来产生不同的频率。若单片机采用11.0592mhz晶振,要产生频率为587hz的音频脉冲时,其音频脉冲信号的周期t=1/587=1703.577us,约1704us,半周期的时间852us,因此只要今计数器计数=852us/1us=852,在每计数852次时将i/o口反相,就可得c调中音re。计数脉冲值与频率的关系如下: n=fi/2/fr式中:n计数值 fi机器频率。晶体振荡器为12mhz时,内部计时一次为1us,故其频率为1mhz fr想要产生的频率所以定时常数(计数值t)的求法: t=65536-n=65536-fi/2/fr例如,设fi=1mhz,求低音do(262hz)、中音do(523hz)和高音do(1046hz)的计数初值。解:t=65536-n=65536-fi/2/fr=65536-500000/fr 低音do的t=65536-500000/262=63628 中音do的t=65536-500000/523=64580 高音do的t=65536-500000/1046=650584.3 音乐延时常数设置 用软件延时来控制发音时间的长短,控制节拍,各调1/4节拍时间如下:曲调值 延时时间 调4/4 125ms 调3/4 187ms 调2/4 250ms例:调3/4中,音符1拍的时间为187ms*4=748ms,延时常数为4建立步骤:(1) 先把乐谱中的音符找出不来,根据表1给出定时值按乐谱的音符建立编码表yin。/歌曲最炫民族风 unsigned char code song=0x16,0x12,0xc 2,0x14,0x12,0x12,0x34,0x42,0x32,0x18,0x34,0x32,0xc2,0x32,0x42,0x52,0x72,0x72,0x52,0x46,0x58,0x82,0x82,0x82,0x72,0x52,0x54,0x32,0x12,0x12,0x12,0x54,0x48,0x52,0x52,0x72,0x52,0x42,0x52,0x42,0x32,0x12,0xc4,0x18,0x56,0x54,0x72,0x52,0x54,0x74,0x72,0x82,0x84,0x74,0x88,0x14,0x12,0xc2,0x14,0x34,0x42,0x52,0x32,0x44,0x58,0x52,0x82,0x82,0x72,0x52,0x42,0x32,0x42,0x58,0x34,0x12,0x12,0x44,0x12,0x12,0x52,0x72,0x52,0x42,0x36,0x12,0x12,0x32,0x42,0x52,0x42,0x32,0x12,0xc2,0x18,0x12,0x32,0x42,0x52,0x72,0x52,0x72,0x82,0x88,0x82,0x82,0x82,0x82,0x82,0x72,0x54,0x42,0x52,0x72,0x52,0x52,0x44,0x34,0x12,0x14,0x12,0xc2,0x14,0x12,0x32,0x42,0x52,0x32,0x44,0x58,0x82,0x72,0x52,0x42,0x72,0x52,0x42,0x32,0x38,0xff ; /每个音符的发声unsigned char code yin30= 0xff,0xff,0xfb,0x90,0xfc,0x0c,0xfc,0x44,0xfc,0xac,0xfd,0x09,0xfd,0x34,0xfd,0x80,0xfd,0xc8,0xfe,0x06,0xfe,0x22,0xfa,0x15,0xfb,0x04,0xfa,0x67,0xfe,0x85 ; 定时值为十六进制4位数,拆开分为两组,如5对应的定时值fd80h,拆分为fdh和80h两组。前组装入定时器的高位th1,后组装入定时器低位tl1,程序中将进行两次查表来完成一个音符对应的定时初值的装入。 (2)在程序中使用定时器t1方式1来产生歌谱中各音符对应频率的音频脉冲,由p1.6输出,再经蜂鸣器发出不同音节的声音。 (3)程序中节拍的控制是通过调用延时子程序delay的次数来实现,1拍为748ms(=187*4),即需要调用4次delay;3/4拍需要调用3次delay;2/4拍需要调用2次delay。 (4)节拍的控制码在表yin中位于音符码的后面。如第一行“unsigned char code song= 0x16,0x12,0xc2,0x14,0x12,0x12,0x34,0x42,0x32,0x18,0x34,0x32,0xc2,”中“0x16”的“1”是音符6的音符码,其后边的“6”是延时时间,即6/4拍的时间。 (5)当一个音符的发音时间到时,再查下一个音符的定时常数和时间常数,依此进行下去,就可演奏出悦耳动听的乐曲。 编码表yinyinfu12345671234567weizhi3456789aebdc12表1 c调各音符频率与计数值t的关系音符频率(hz)半周期(ms) 简谱码t值定时值(h)简谱码t值定时值(d)低1 do2621.90f88ch63628低2 re2941.70f95bh63835低3 mi3301.51fa15h64021低4 fa3491.43fa67h64103低5 so3921.28fb04h64260低6 la4401.14fb90h64400低7 si4941.01fc0ch64524中1 do5230.95fc44h64580中2 re5870.85fcach64684中3 mi6590.76fd09h64777中4 fa6980.72fd34h64820中5 so7840.64fd80h64896中6 la8800.57fdc6h64966中7 si9880.51fe06h65030高1 do10460.47fe22h65058高2 re11750.42fe56h65110高3 mi13180.38fe85h65157高4 fa13970.36fe9ah65178高5 so15680.32fec1h65217高6 la17600.28fee4h65252高7 si19670.25ff03h65283第5章 调试步骤、结果及使用说明 (1)通电以后,显示窗显示默认设定时间“0500”,计时5分钟。(2)按时间设定键k1k6,可设定不同时间的定时。 k1键:可设定时间在1-60分钟内以1分钟为最小时间段进行调整,每按键一次,时间加1分钟。k2键:设置倒数计时时间为5分钟,与默认时间相同。k3键:设置倒数计时时间为20分钟,显示为“2000”。k4键:设置倒数计时时间为60分钟,显示为“6000”。k5键:可设定时间在1-60分钟内以1分钟为最小时间段进行调整,每按键一次,时间减1分钟k6键:为定时器启动/停止键(3)设定时间后,按下k6键定时器开始工作。(4)定时时间到,会播放一段音乐,按k6键停止。第6章 心得与体会每次课程设计都能让我学到很多专业知识,加深对课本内容的理解,虽然会遇到很多困难,却总能得到收获。课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此作为电子信息工程的学生来说掌握单片机的开发技术是十分重要的。 我的题目是音乐提示定时器的设计,对于我们这些工科学生来说,这是一次考验。怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们所要考虑和努力的。这次课程设计我学到很多很多的东西,学会了怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。编写音乐代码时不懂,我通过查阅资料和求助于老师和同学,顺利的解决了这一难题,同时也学会了看乐谱等技巧。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中发现了自己的不足之处,以及对以前所学过的知识理解得不够深刻,掌握得不够牢固,对单片机c语言掌握得不够熟练,对音乐乐谱的不懂等。这次课程设计通过自己的努力,同学的帮助,还有老师的辛勤指导下,最终顺利完成了。参考文献1 谭浩强.c程序设计. 北京:清华大学出版社,1991.2 郭天祥.新概念51单片机c语言教程:入门、提高、开发、拓展全攻略.北京:电子工业出版社,2009,1.第3章.第4章.第10章.3 王迎旭.单片机原理与应用.第2版.北京:机械工业出版社.2012,2.第二章.4 钟启仁.ht66fxx flash mcu原理与实践c语言.第4章.4-3节.4-8节.附录1:音乐提示定时器原理图附录2 程序清单#include #define uint unsigned int #define uchar unsigned charchar fen1,fen,miao1,miao;/时钟unsigned char shu,ding;unsigned char data l;sbit k1 = p10;sbit k2 = p11;sbit k3 = p12;sbit k4 = p13;sbit k5 = p14;sbit k6 = p15;sbit spk =p16;sbit w1 = p20;sbit w2 = p21;sbit w3 = p22;sbit w4 = p23;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/歌曲最炫民族风 unsigned char code song= 0x16,0x12,0xc2,0x14,0x12,0x12,0x34,0x42,0x32,0x18,0x34,0x32,0xc2,0x32,0x42,0x52,0x72,0x72,0x52,0x46,0x58,0x82,0x82,0x82,0x72,0x52,0x54,0x32,0x12,0x12,0x12,0x54,0x48,0x52,0x52,0x72,0x52,0x42,0x52,0x42,0x32,0x12,0xc4,0x18,0x56,0x54,0x72,0x52,0x54,0x74,0x72,0x82,0x84,0x74,0x88,0x14,0x12,0xc2,0x14,0x34,0x42,0x52,0x32,0x44,0x58,0x52,0x82,0x82,0x72,0x52,0x42,0x32,0x42,0x58,0x34,0x12,0x12,0x44,0x12,0x12,0x52,0x72,0x52,0x42,0x36,0x12,0x12,0x32,0x42,0x52,0x42,0x32,0x12,0xc2,0x18,0x12,0x32,0x42,0x52,0x72,0x52,0x72,0x82,0x88,0x82,0x82,0x82,0x82,0x82,0x72,0x54,0x42,0x52,0x72,0x52,0x52,0x44,0x34,0x12,0x14,0x12,0xc2,0x14,0x12,0x32,0x42,0x52,0x32,0x44,0x58,0x82,0x72,0x52,0x42,0x72,0x52,0x42,0x32,0x38,0xff ;/每个音符的发声unsigned char code yin30= 0xff,0xff,0xfb,0x90,0xfc,0x0c,0xfc,0x44,0xfc,0xac,0xfd,0x09,0xfd,0x34,0xfd,0x80,0xfd,0xc8,0xfe,0x06,0xfe,0x22,0xfa,0x15,0xfb,0x04,0xfa,0x67,0xfe,0x85 ;void timer0()interrupt 3 using 1 /定时器t1 th1=yin2*l; tl1=yin2*l+1; spk =!spk; /*延时1/4拍时间即187ms*/void delay187ms() unsigned char i,j,k; for(i=200;i0;i-) for(j=20;j0;j-) for(k=15;k0;k-) ;/置对应音符频率数值void sing_song() unsigned int data j; /取码指针 unsigned char data i; /用于循环 unsigned char data k; /几个1/4拍 j=0; while(*(song+j)!=0xff) /是否取到结束码 k=*(song+j)&0x0f; /后4位为多少个1/4拍 l=*(song+j)4; /l表示为音符频率在数组yin中的位置 th1=yin2*l; /置初值 tl1=yin2*l+1; tr1=1; /起动定时器1 if (yin2*l=0xff)&(yin2*l+1=0xff) /如果取到的都是休止符,则不输出音频 tr0=0;spk=1; for(i=k;i0;-i) /节拍k为多少就执行多少个1/4拍 delay187ms(); tr1=0; j+; /延时函数void delay(uint z) uint x,y; for(x=z;x0;x-) for(y=20;y0;y-); /时钟显示void display(uchar x1,uchar x2,uchar x3,uchar x4) w1=1; p0=tablex1; delay(4); w1=0; /分钟个位 w2=1; p0=tablex2; delay(4); w2=0; /秒钟十位 w3=1; p0=tablex3; delay(4); w3=0; /秒钟个位

温馨提示

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

评论

0/150

提交评论