《专业工程技术应用训练》报告--电子琴.doc_第1页
《专业工程技术应用训练》报告--电子琴.doc_第2页
《专业工程技术应用训练》报告--电子琴.doc_第3页
《专业工程技术应用训练》报告--电子琴.doc_第4页
《专业工程技术应用训练》报告--电子琴.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

设计任务及要求 信息工程学院专业工程技术应用训练报告 课程设计题目: 电子琴姓 名: 学 号: 班 级: 专 业: 电子信息工程 专业工程技术应用训练考查评分表姓名学号班级班设计题目评分 项 目平时表现 (20)1、出勤率: 全勤 缺勤较少 缺勤较多 全缺2、进度: 较快 正常 较慢 没有按时完成硬件制作(20)布局焊接: 合理 较合理 基本合理 错误较多 原则性错误软件编程(20)1、程序编写框架:合理 较合理 基本合理 错误较多 原则性错误2、程序编写过程:正确 较正确 基本正确 错漏较多功能调试 (10)系统调试结果:实现 基本实现 不能实现设计报告(15)1、硬件设计: 合理 较合理 基本合理 不合理2、软件设计: 合理 较合理 基本合理 不合理3、联调结果: 正确 较正确 基本正确 错漏较多4、过程体会: 属实 较属实 基本属实 不属实答辩(15)思路清晰,内容正确 思路较清晰,内容较正确 思路基本清晰,内容基本正确 思路较混乱,内容错漏较多总评优秀 良好 中等及格 不及格指导教师: 2017 年 月 日一、设计任务及要求:设计任务:1设计一个简易电子琴;2利用定时器产生do,re,mi.7个音符的中频率,共8个音阶信号;3功能方面:播放模式,能够单独播放天空之城、世上只有妈妈好和国歌三首歌曲;能够在三首歌曲和弹奏模式之间切换;弹奏模式,可以单独一次存储回放歌曲;切换模式,切换到歌曲时可以暂停播放歌曲,切换到自由模式也可以弹奏歌曲。4用LED灯指示相应琴键按下;同时当播放歌曲时,用LED灯指示相应音符节奏灯。要 求: 首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。在确定硬件的基础上,要进行软件的总体设计,包括软件主程序和各子程序的设计,同时,要写出详细的操作说明,如歌曲的调整方法,显示窗口的灯切换等,以配合软件的设计。进入硬件的调试及编程工作,可根据时间进行分工,有调试硬件各功能模块的,如播映音乐、显示节奏灯等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。最后写出设计报告。指导教师签名: 2017年 月 日 目录1、绪 言12、系统设计22.1 设计任务22.2 方案比较与论证22.2.1 系统整体流程图22.2.2 电子琴的控制方案论证22.2.3 单片机的选择方案论证32.2.4 显示模块的选择方案论证42.2.5 播音模块的选择方案论证43、 硬件电路设计53.1 电子琴控制电路图53.2 弹琴模块键盘的设计53.3功能模块键盘的设计63.4 播音模块的设计63.5 LED灯显示模块的设计73.6主要元器件74、软件设计84.1流程图84.1.1主流程图84.1.2暂停按键流程图94.1.3切换按键流程图104.2 单片机不同频率声音产生114.3 音乐相关知识124.4 音乐播放原理125、仿真与调试运行145.1 Keil调试145.2 Proteus调试155.3 实物图165.4 Proteus和实物误差分析166、结束语177、参考文献188、附录19系统设计1、绪 言近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。电子琴是现代社会中的主要计时工具之一,广泛应用于社会生活需要的各个方面,及对音乐有要求的场合。本设计采用STC89C52RC单片机作为主要核心部件,由复位电路、时钟电路、电路组成、弹琴电路、功能键电路和音符灯组成。电子琴的发明极大地推动了流行音乐的发展;电子琴的发明使人们可以演奏出未曾拥有的音色,丰富了人们情感的表现;电子琴的发明推动了音乐的普及,它让音乐真正成为了大众的音乐,成为了人类社会不可缺少的东西;电子琴作为科技与音乐的产物,在信息化和电子化的时代,为音乐的大众化做出了不可磨灭的贡献,现代歌曲的制作,很多都需要电子琴才能完成,然后才通过媒介流传开来,电视剧电影插曲、电视节目音效 、甚至你的手机铃声,都很可能包含电子琴的身影。26系统设计2、系统设计2.1 设计任务1设计一个简易电子琴;2利用定时器产生do,re,mi.7个音符的低中高频率,共8个音阶信号;3功能方面:播放模式,能够单独播放天空之城、世上只有妈妈好和国歌三首歌曲;能够在三首歌曲和弹奏模式之间切换;弹奏模式,可以单独一次存储回放歌曲;切换模式,切换到歌曲时可以暂停播放歌曲,切换到自由模式也可以弹奏歌曲。4用LED灯指示相应琴键按下;同时当播放歌曲时,用LED灯指示相应音符节奏灯。2.2 方案比较与论证2.2.1 系统整体流程图2.2.2 电子琴的控制方案论证方案一:独立按键式,直接用I/O口线构成的单个按键电路,其特点式每个按键单独占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。独立按键的典型应用如图所示。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。方案二:矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。由于电子琴电路比较简单:采用方案一。2.2.3 单片机的选择方案论证方案一:采用可编程逻辑期间CPLD作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案方案二:采用STC公司的STC89S52RC单片机作为控制器。STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。主要特性如下:1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051;2. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V单片机)3. 工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz4. 用户应用程序空间为8K字节5. 片上集成512字节RAM6.通用I/O口(32个),复位后为:P1/P2/P3是弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8. 具有EEPROM功能9. 具有看门狗功能10.共3个16位定时器/计数器。即定时器T0、T1、T211.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒12. 通用异步串行口(UART),还可用定时器软件实现多个UART13. 工作温度范围:-40+85(工业级)/075(商业级)14. PDIP封装综合考虑,选择方案二,采用STC公司的STC89S52RC单片机作为控制器。2.2.4 显示模块的选择方案论证方案一:采用带字库LCD模块显示。能显示复杂的信息,具有质量轻,体积小,功耗低,指令功能强,接口简单,可靠性强等优点,显示内容丰富,图形美观,易于人机交流,但是价格昂贵。方案二:首先弹奏和播放音乐时可以对应的节奏灯亮,这些LCD1602液晶屏是做不到的;其次在播放音乐时也可以放音符节奏灯,这样非常美观和既可以听动听的歌又可以看灯。电子琴选用方案二,显示所需信息。2.2.5 播音模块的选择方案论证方案一:采用蜂鸣器:蜂鸣器一般是高阻,直流电阻无限大,交流阻抗也很大,窄带发声器件,通常由压电陶瓷片发声。需要较大的电压来驱动,但电流很小,几mA就可以了,功率也很小。有源蜂鸣器,内部有振荡、驱动电路。加电源就可以响,你所说的估计就是那种。优点是用起来省事,缺点是频率固定了,就只一个单音。无源的蜂鸣器与喇叭一样,需要加上交变的音频电压才能发声,也可以发出不同频率的声音。不过,蜂鸣器的声音反正是不好听的,所以经常是加上方波,而不是加正弦。方案二:喇叭则是低阻,直流电阻几乎是0,交流阻抗一般几欧到十几欧。宽频发声器件,通常由利用线圈的电磁力推动膜片。电子琴选用方案二,播出所需要音乐。3、 硬件电路设计3.1 电子琴控制电路图图3.1 电子琴控制线路图3.2 弹琴模块键盘的设计图3.2 电子琴弹琴模块弹琴从前往后分别代表是“do, re, mi, fa ,suo, la, si ,do ”八个按键3.3功能模块键盘的设计图3.3 电子琴功能模块功能键从前往后分别表示播放天空之城、存储回放、暂停回放、播放世上只有妈妈好、国歌和暂停键。3.4 播音模块的设计图3.4 电子琴播放模块通过P3.7口然后用三极管NPN对喇叭声音进行放大从而达到声音放大。3.5 LED灯显示模块的设计图3.5 电子琴播放模块听过控制功能键既播放不同音乐也可以显示相应LED灯,同时播放音乐时利用音乐的音符进行显示音乐节奏灯。3.6主要元器件器件数量Stc89c52RC单片机1四脚按键168欧喇叭1发光二极管10220欧电阻89脚103排阻112MHZ晶振122pf电容2NPN三极管1刀闸开关1USB母口1电解电容1电阻10K140脚底座1排针2排母2杜邦线公对母1软件设计4、软件设计该程序设计思路比较清晰既从开始到声明变量与函数再到读取按钮开关,判断是否按下,然后就是一个一个按钮的动作。其主程序如图6所示。4.1流程图4.1.1主流程图图4.1.1为主流程图4.1.2暂停按键流程图图4.1.2为暂停按键流程图4.1.3切换按键流程图图4.1.3为切换按键流程图4.2 单片机不同频率声音产生1.要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以 2,即得出半周期的时间。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的 I/O 反相,然后重复计时此半周期时间再对 I/O 反相,就可在 I/O 脚上得到此频率的脉冲。2.利用 8051 的内部定时器,使用其工作在模式 1 下,改变定时值 TH0 及 TL0 可以产生不同频率的音频脉冲。3.例如频率为 523Hz,其周期 T1/5231912us,因此只要令定时器计时 956us/1us956,在每次计数 956 次时将 I/O 反相,就可得到中音 DO(523Hz)。计数脉冲值与频率的关系公式如下:NFi2FrN:计数次数;Fi:音频脉冲频率;Fr:单片机的机器周期;4.定时器初始值的求法如下:T65536-N65536-Fi2Fr例如:设 K65536,F1000000Fi1MHz,求低音 DO(261Hz)、中音 DO(523Hz)、高音的 DO(1046Hz)的定时器初始值。T65536-N65536-Fi2Fr65536-10000002Fr65536-500000/Fr低音 DO:T65536-500000/26263627中音 DO:T65536-500000/52364580高音 DO:T65536-500000/1047650594.3 音乐相关知识乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低声音就低,不同音商的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。音持续时间的长短即时值,一般用拍数表示,休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。4.4 音乐播放原理要想播放出一首曲子,了音符以外,节拍也是音乐的关键组成部分。节拍实际上就是音持续时间的长短,在单片机系统中可以用延时来实现,如果1/4拍的延时是0.4秒,则1拍的延时是1.6秒,只要知道1/4拍的延时时间,其余的节拍延时时间就是它的陪数。如果单片机要自己播放音乐,那么必须在程序设计中考虑到节拍的设置,由于本例实现的音乐发生器是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。音乐的音拍,一个节拍为单位(C调)具体如表3所示: 表3 音乐节拍表曲调值DELAY 曲调值DELAY调4/4125ms 调4/462ms调3/4187ms 调3/494ms调2/4250ms 调2/4125ms 每一个音的发出需要3个元素,音节,中低高音调,节拍。类似于以下:只有妈妈好数据表 code uchar sszymmh=6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1, 6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1, 6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2, 5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1, 2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 ; (1)三个数字为一组;(2)第一个数字为do,re,mi.中之一;(3)第二个数字为低音,中音,高音之一;(4)第三个数字为节拍,1为1/4节拍,以此类推。简谱发音简谱码T值节拍码节拍数5低音SO16426011/4拍6低音LA26440022/4拍7低音TI36452433/4拍1中音DO46458041拍2中音RE56468451又1/4拍3中音MI66477761又1/2拍4中音FA76482082拍5中音SO864898A2又1/2拍6中音LA964968C3拍7中音TIA65030F3又3/4拍1高音DOB650582高音REC651103高音MID651574高音FAE651785高音SOF65217图为4.2为各音符频率与简谱码T对应表仿真与调试运行5、仿真与调试运行在完成了电子琴硬件设计和软件设计以后,便进入系统的调试阶段。系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。5.1 Keil调试Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(Vision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。图5.1 KEIL调试5.2 Proteus调试Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。图5.2 proteus调试5.3 实物图图为5.3实物图5.4 Proteus和实物误差分析本设计中Proteus仿真在电子琴使用功能模块中的存储回放时,出现了按一下弹琴按键,出现两个声音甚至三个声音回放。其次,在播放歌曲时出现了一些杂音。可能就是对按键消抖时间不够;也有可能就是按键时间按得太长。所以要想办法设法控制好消抖时间和按键时间。喇叭出现一些杂音可能是因为焊接时候接线没焊好;还有就是因为线路较多,单片机所有I/O口几乎全用,因此都对声音有一定的影响。对电路里面的线路逐步检查好。附录6、结束语由于此次是第三次课程设计,因而现在已经知道课程设计大概的流程,并且现在我们已经是大三的学生,对于专业课的学习已经更进一步,与之前相比我们知识的广度和深度已有所进步。这个学期已经系统地学习了单片机的原理及应用,在此次的设计中用Keil C51编写。在设计的过程中,查阅过很多的资料,经过分析后最终确定了方案。由于知识的局限性我们在设计的时候,依然遇到一些问题,最后在老师的指导和帮助下,得到了解决。首先在存储回放这个功能时,遇到很多问题,那就是不知道编写回放程序,经过几天的寻找,在网上找到类似的程序,但是在做仿真的时候,有时候每按一个按键,回放的时候可能是几个声音,改了好几个延时都没出来,但是在焊完硬件和调试后弹琴的声音结果正常回放,这样我知道仿真和实际硬件有很大差距。其次就是设置暂停键的时候,打算通过外部中断进行触发死循环来起到暂停作用,但是后来也调不出来,刚刚开始是没有对外部中断初始化,后来就是while循环位置放错导致按了暂停按键也继续发声音。总之,在大三这个学期接触到的专业知识的知识面越来越多,因而也知晓了更多的知识。众所周知学习是一个无止境的过程,我们要珍惜现在所拥有的资源。课程设计是一个很好地检验我们能力的过程。在这个过程中我们会遇到这样或者那样的难题,会迷茫会无助,但是当我们解决了遇到的难题之后的那种愉悦之情是永远无法忘怀的。还有就是我看到其他同学做得有更好的课程设计,进一步激发我对单片机和ARM嵌入式的兴趣,为我以后大四以至于毕业工作做好铺垫。7、参考文献1路勇.电子电路实验与仿真M. 北京:清华大学出版社,20142康华光.电子技术基础 数字部分(第五版)M.北京:高等教育出版社,2016.01 3谢自美.电子线路设计实验测试M. 武汉:华中科技大学出版社,20064康华光.电子技术基础 模拟部分(第五版)M.北京:高等教育出版社,2016.015张毅刚.单片机原理及应用(第二版)M. 北京:高等教育出版社,2015.56李广弟等.单片机基础M.北京航空航天出版社,2013.7王东峰等.单片机C语言应用100例M.电子工业出版社,2015.8陈海宴.51单片机原理及应用M.北京航空航天大学出版社,2013.9刘守义等.单片机技术基础M.西安电子科技大学出版社,2017.10钟富昭等.8051单片机典型模块设计与应用M.人民邮电出版社,2014.11李平等.单片机入门与开发M.机械工业出版社,2012.8、附录#include#define KeyPort P0unsigned char High,Low,t,h; /定时器预装值的高8位和低8位sbit SPK=P37; /定义蜂鸣器接口sbit playSongKey=P30; /功能键sbit keybofang=P31; /播放键sbit tingzhi=P32;sbit playSongKey1=P34;sbit playSongKey2=P35;sbit qiehuan=P33;unsigned char code freq2= 0xD8,0xF7,/00440HZ 1 0xBD,0xF8,/00494HZ 2 0x87,0xF9,/00554HZ 3 0xE4,0xF9,/00587HZ 4 0x90,0xFA,/00659HZ 5 0x29,0xFB,/00740HZ 6 0xB1,0xFB,/00831HZ 7 0xEF,0xFB,/00880HZ 1;unsigned char Time,temp,song350,t1,flag=0,count=-1; unsigned char code YINFU91= ,1,2,3,4,5,6,7,8; /天空之城unsigned char code MUSIC=6,2,1, 7,2,1, 1,3,3, 7,2,1, 1,3,2, 3,3,2, 7,2,6,3,2,1, 3,2,1, 6,2,3, 5,2,1, 6,2,2, 1,3,2, 5,2,6,3,2,2, 4,2,3, 3,2,1, 4,2,2, 1,3,2, 3,2,5, 1,3,1,1,3,1, 1,3,1, 7,2,3, 4,2,1, 4,2,2, 7,2,2, 7,2,6,6,2,1, 7,2,1, 1,3,3, 7,2,1, 1,3,2, 3,3,2, 7,2,6,3,2,1, 3,2,1, 6,2,3, 5,2,1, 6,2,2, 1,3,2, 5,2,6,2,2,1, 3,2,1, 4,2,2, 1,3,1, 7,2,2, 1,3,3, 2,3,1, 2,3,1, 3,3,1, 1,3,5, 1,3,1, 7,2,1, 6,2,1, 6,2,1,7,2,2, 5,2,2, 6,2,6, 1,3,1, 2,3,1, 3,3,3, 2,3,1,3,3,2, 5,3,2, 2,3,6, 5,2,1, 5,2,1, 1,3,3, 7,2,1,1,3,2, 3,3,2, 3,3,8, 6,2,1, 7,2,1, 1,3,2, 7,2,2,2,3,1, 2,3,1, 1,3,3, 5,2,5, 4,3,2, 3,3,2, 2,3,2,1,3,2, 3,3,6, 3,3,2, 6,3,4, 5,3,2, 5,3,2, 3,3,1,2,3,1, 1,3,5, 1,3,1, 2,3,2, 1,3,1, 2,3,1, 2,3,2,5,3,2, 3,3,6, 3,3,2, 6,3,4, 5,3,4, 3,3,1, 2,3,1,1,3,5, 1,3,1, 2,3,2, 1,3,1, 2,3,3, 7,2,2, 0,0,0 ;unsigned char code MUSIC1= /世上只有妈妈好6,2,3, 5,2,1, 3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,6,2,4, 3,2,2, 5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,6,1,1, 5,2,1, 3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,5,2,1, 6,2,1, 3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0 ;unsigned char code MUSIC2= /中华人民共和国国歌5,1,1, 1,2,3, 1,2,1, 1,2,1, 1,2,1, 5,1,1, 6,1,1, 7,1,1, 1,2,2, 1,2,2,3,2,1, 1,2,1, 2,2,1, 3,2,1, 5,2,2, 5,2,1, 5,2,2,3,2,2, 3,2,1, 1,2,2, 3,2,1, 5,2,2, 3,2,1, 2,2,2, 2,2,4,6,2,2,5,2,2,2,2,2,3,2,2,5,2,1,3,2,2,5,2,1,3,2,1,2,2,1,3,2,1,1,2,1,2,2,1,3,2,2,5,2,2,6,1,1,1,2,1,1,2,1,3,2,2,3,2,1,5,2,2,5,2,1,2,2,1,2,2,1,2,2,1,6,1,1,6,1,1,2,2,4,5,1,1,1,2,3,1,2,1,3,2,3,3,2,1,5,2,4,5,2,4,1,2,2,3,2,1,5,2,1,5,1,1,6,2,2,5,2,2,3,2,2,1,2,1,5,2,1,5,2,1,5,2,1,3,2,1,1,2,1,5,1,2,1,2,2,3,1,1,1,1,1,5,2,1,5,2,1,5,2,1,3,2,1,1,2,1,5,1,2,1,2,2,5,1,2,1,2,2,5,1,2,1,2,2,1,2,2,0, 0, 0; / 音阶频率表 高八位unsigned char code FREQH= 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, /1,2,3,4,5,6,7,8,i 0xFC,0xFD,0xFD,0xFD,0xFD,0xFE, 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF, ; / 音阶频率表 低八位unsigned char code FREQL= 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6, 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, /1,2,3,4,5,6,7,8,i 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16, ;void Init_Timer0(void);/定时器初始化/延时函数大约约2*z+5usvoid delay2xus(unsigned char z) while(z-);/ 延时函数大约约1msvoid delayms(unsigned char x) while(x-) delay2xus(200); /*- 节拍延时函数 各调1/4节拍时间: 调4/4 125ms 调2/4 250ms 调3/4 187ms-*/void delayTips(unsigned char t) unsigned char i; for(i=0;it;i+) delayms(250); TR0=0; /播放音乐的函数void PlaySong() TH0=High;/赋值定时器时间,决定频率 TL0=Low; TR0=1; /打开定时器 switch(t) case 1:h=0xfe;break; case 2:h=0xfd;break; case 3:h=0xfb;break; case 4:h=0xf7;break; case 5:h=0xef;break; case 6:h=0xdf;break; case 7:h=0xbf;break; case 8:h=0x7f;break; /分别对应不用的音调 default:h=0xFF;break; P1=h; delayTips(Time); /延时所需要的节拍 void Init_EX(void) EX0=1;EX1=1; IT0=1;IT1=1;/定时器T0初始化子程序void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 EA=1; /总中断打开 ET0=1; /定时器中断打开/定时器T0中断子程序void Timer0_isr(void) interrupt 1 TH0=High; TL0=Low; SPK=!SPK;/主函数void main (void) unsigned char num,k,i; Init_EX(); Init_Timer0(); /初始化定时器0,主要用于数码管动态扫描 SPK=0; /在未按键时,喇叭低电平,防止长期高电平损坏喇叭 while (1) /* 按键播音 */ switch(KeyPort) /对按键进行处理 case 0xfe:num= 1;temp=1;delayms(2000);break; case 0xfd:num= 2;temp=1;delayms(2000);break; case 0xfb:num= 3;temp=1;delayms(2000);break; case 0xf7:num= 4;temp=1;delayms(2000);break; case 0xef:num= 5;temp=1;delayms(2000);break; case 0xdf:num= 6;temp=1;delayms(2000);break; case 0xbf:num= 7;temp=1;delayms(2000);break; case 0x7f:num= 8;temp=1;delayms(2000);break; /分别对应不用的音调 default:num= 0;temp=0;delayms(2000);break; delayms(20000); P1 = KeyPort; if(num=0) TR0=0; SPK=0; /在未按键时,喇叭低电平,防止长期高电平损坏喇叭 else High=freqnum-11; Low =freqnum-10; TR0=1; /* 按键播音存储 */ if(temp=1)/标志位,如果标志位为1,则说明有按键被按下temp=0;/将标识位归零song3t1+=num;/将数

温馨提示

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

评论

0/150

提交评论