《单片机电子琴音乐盒课程设计(共30页).doc》由会员分享,可在线阅读,更多相关《单片机电子琴音乐盒课程设计(共30页).doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上课程设计报告设计题目: 单片机多功能音乐盒设计 【摘要】本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来暂停歌曲,另一个用来切换歌曲本音乐盒共有四首歌曲,还有4*4矩阵键盘电子琴弹奏功能,播放歌曲时,蜂鸣器发出音调,矩阵键盘无扫描信号,不动作。当按下暂停歌曲键时,可继续弹奏电子琴。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间
2、。设计作者: 吴文豪 专业班级/学号: 10应电三班 合作者1: 专业班级/学号: 合作者2: 专业班级/学号: 指导教师: 王明文 设计时间: 2012年5月12日2012年6月3日 目 录引言.11 设计任务及要求.211设计任务.212设计要求.2 1. 3研究内容.22 系统总体设计.321系统结构框图设计及说明.33 软、硬件设计.3.1 系统硬件设计311系统硬件原理图及工作原理说明312单元电路设计原理与元件参数选择3 2系统软件设计.3 2 1软件系统总流程图及设计思路说明.3 2 2软件各功能模块的流程图设计及思路说明.4 安装与调试.41安装调试过程42调试中遇到的问题5
3、结论.6 使用仪器设备清单.7 收获、体会和建议.8 参考文献.9 附录专心-专注-专业引言21世纪,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种
4、软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来
5、实现。单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。 电子琴是高科技在音乐领域的一个代表,它是古典文化与现代文明的一个浓缩体。它不但可以帮助我们的音乐教师进行传统音乐文化的教育教学工作,而且由于它又具备现代音乐,特别是电子音乐、电脑音乐的基本
6、结构、特征,因而使我们的教师在进行现代音乐、电子音乐、电脑音乐的教学时,更直接、更简便。单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控
7、核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个弹奏按键、1个播放键,1个暂停键和扬声器。概述本设计是以AT89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要相应的改变一下地址即可。该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机和音乐爱好者提供了很好的借鉴。课题意义音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为
8、“可发出声音的组钟”。音乐盒有着300多年的发展历史,是人类文明发展的历史见证。传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐。电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜。基于
9、单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。根据存储容量的大小,可以尽可能多的存储歌曲。另外,可以设计彩灯外观效果,使音乐盒的功能更加丰富。1设计任务及要求1.1设计任务(1)设计一个基于AT89C51系列单片机的音乐盒,利用按键切换演奏出不同的乐曲。由蜂鸣器发出音调;(2)设计一个(4X4)的键盘,并将16个键设计成16个音;(3)可弹奏自己想要表达的音乐。1.2设计要求(1)按设计指标进行电路设计;(2)列出音阶与单片机定时器输出频率关系表格;(3)制作符合设计指标的硬件电路。1.3研究内容(1)电路有两种工作模式:演奏音乐模式和电子琴模式。演奏音乐模式:演奏完整的一
10、首的歌曲。电子琴模式:数码管上0F表示十六种音调。包括高低音实现更多音乐弹奏(2)按下按键2进入演奏音乐模式,再按切换歌曲,共四首歌曲。(3)按下按键1进入暂停歌曲模式,可以进行电子琴弹奏。2 系统总体方案介绍21系统结构框图设计及说明2.12 系统组成框图及说明音乐盒的系统结构以AT89C51单片机位控制核心,4*4矩阵键盘,加上2个按键、时钟复位电路、蜂鸣器、数码管6模块组成。单片机负责接收按键的输入,根据的输入按键所对应的音符蜂由鸣器发音。系统组成框图如图2.1所示。 图2.1 系统组成框图2.1.2 音乐盒的功能结构图及说明音乐盒的功能结构如图2.2所示。Key2负责切换播放歌曲,播放
11、歌曲共4首,分别是千年之恋和寂寞沙冷,七子之歌,感恩的心Key1负责暂停。图2.2 音乐盒功能结构图2.1.3电子琴的功能结构图及说明电子琴的功能结构图如2.3所示。4*4键盘按下获取相应的键值和音符有DO到XI高低音共16个音。并在数码管上显示。 图2.3电子琴功能结构图3.软、硬件设计3.1 总体设计框图图3.1总体设计框图3.2各部分硬件设计及其原理3.2.1 AT89C51简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称
12、单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3.2所示图3.2 AT89C51系列单片机3.2.2 数码管显示电路和4*4键盘设计与原理对4*4矩阵键盘及单片机P1口进行扫描得到0F的按键值由单
13、片机P0口输出显示到数码管上,并由扬声器发出相对应的声音。3.2.3 时钟振荡电路AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF10PF,而如果使用陶瓷振荡器建议选择40PF10PF。用户也可以采用外部时钟。采用
14、外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。振荡器电路图如下:图3.2.3 单片机内部、外部振荡电路3.24硬件电路图及功能总体硬件电路实现功能如下,如图3.2.4所示1.电路中用P3.2、P3.3控制按键。2.P1.0P1.7控制4*4矩阵键盘3.P3.7控制蜂鸣器。4.P2.0P2.7数码管显示5.电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。
15、图3.2.4 硬件电路图3.2.5硬件总体方案及说明51单片机P1口通过连接4*4的矩阵键盘,作为琴键键盘;P3.3接播放音乐键;P3.7口接喇叭,通过执行相应的功能程序使电子琴发出不同音色的声音。(一)芯片介绍:在本次电子琴设计中,我们组成员单片机芯片选用了AT89C51芯片,而89C51系列的兼容性也比较好。P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7R
16、D(外部数据存储器读先通)P3口同时为闪烁编程和编程校验接收一些控制信号。(二)硬件接线:(1)利用P1口为按键接入口,形成44组成16个按键矩阵,设计成16个音,下图所示:0123456789ABCDEF所对应的键码为(2)p3.7口音频输出,接一个喇叭。(3)复位电路我们本来在方案选择的时候有两种选择的,上电复位和按扭复位,上电复位是利用电容充电来实现的,而按扭复位是电源对外节电容的充电使RST为高电平,复位松开后,电容通过下拉电阻放电,使RST恢复低电平。为了制作软件的方便我们还是选择用按扭复位,因为它比较直观。()电路设计图如下:3.3系统软件设计3.3软件系统总流程图及设计思路说明在
17、本程序中设置了个标志count2,分别初始化为1和0。按键Key2使得count2在14之间切换。程序检测count2的值,count2等于1时播放第一首歌曲,等于2时播放第二首,以此类推。另一方面根据中断0 Key1来控制count2的值等于0时来暂停歌曲。歌曲停止后,矩阵键盘可以输入音符,相对应的数值由数码管上显示。3.3.1音调、节拍以及编码的确定方法一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间。3.3.2音调的确定不同音高的乐音是用C
18、、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。两个音之间的距离有两个“半音”,就叫“全音”。在钢琴等键盘乐器上,CD、DE、FG、GA、AB两音之间隔着一个黑键,他们之间的距离就是全音;EF、BC两音之间没有黑键相隔,它们之间的距离就是半音。通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上号或者b
19、号的叫变化音。叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266 Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294 Hz)的一倍。1.要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在
20、I/O脚上得到此频率的脉冲。2.利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。此外结束符和休止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。3.例如频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,在每次计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系公式如下:N=Fi2FrN:计算值;Fi:内部计时一次为1us,故其频率为1MHz;其计数值的求法如下:T=65536-N=65
21、536-Fi2Fr例如:设K=65536,F=Fi=1MHz,球低音DO(261Hz)。中音DO(523Hz)。高音的DO(1046Hz)的计算值T=65536-N=65536-Fi2Fr=65536-Fr=65536-/Fr低音DO的T=65536-/262=63627低音DO的T=65536-/523=64580低音DO的T=65536-/1047=65059C调各音符频率与计数值T的对照表如表4.1所示。表3.3.1 C调各音符频率与计数值T的对照表低音频率T参数中音频率T参数高音频率T参数Do2621908229Do523956115Do10465757Do2771805217Do55
22、4903108Do11095454Re2941701204Re587852102Re11755151Re3111608193Re62280497Re12454848Mi3301515182Mi65975991Mi13184545Fa3491433172Fa69871686Fa13974343Fa3701351162Fa74067681Fa14804141So3921276153So78463877So15683838So4151205145So83160272So16613636La4401136136La88056868La17603434La4641078129La93253664La18
23、653232Si4941012121Si98850661Si197630303.3.3 节拍的确定若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。若1拍实0.5s,则1/4 拍为0.125s。至于1拍多少s,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。音持续时间的长短即时值,一般用拍数表示。休止符表示暂停发音。一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合
24、,加以与拍数对应的延时,构成音乐。了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。对于单片机来说,产生不同频率的脉冲是非常方便的,利用单片机的定时/计数器来产生这样的方波频率信号。因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。表3.3.2节拍与节拍码对照节拍码节拍数节拍码节拍数11/4拍11/8拍22/4拍21/4拍33/4拍33/8拍41拍42/1拍51又1/4拍55/8拍61又1/2拍63/4拍82拍81拍A2又1/2拍A1又1/4拍C3拍C1又1/2拍F3又3/4拍每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,图5.2为
25、节拍码的对照。如果1拍为0.4秒,1/4拍实0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如图5.3为1/4和1/8节拍的时间设定。表3.3.3 1/4和1/8节拍的时间设定曲调值DELAY曲调值DELAY调4/4125毫秒调4/462毫秒调3/4187毫秒调3/494毫秒调2/4250毫秒调2/4125毫秒3.3.4 编码do re mi fa so la si分别编码为17,重音do编为8,重音re编为9,停顿编为0。播放长度以十六分音符为单位(在本程序中为165ms
26、),一拍即四分音符等于4个十六分音符,编为4,其它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成了一个编码。以0xff作为曲谱的结束标志。举例1:音调do,发音长度为两拍,即二分音符,将其编码为0x18。举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22歌曲播放的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相应的音调;接着分离出该数的低4位,得到延时时间,接着调用软件延时。表4.4 简谱对应的简谱
27、码、T值、节拍数简谱发音简谱码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高音SOF652173.4软件系统总流程图及设计思路说明(1)键盘扫描程序:检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程
28、序;无键按下,则返回键盘扫描程序继续检测 (2)功能转移程序:对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲功能(3)琴键处理程序:根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音(4)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下程序总流程图开始键盘扫描程序T0初始化并开中断允许T0中断有键按下否 否延时去抖动识别按键功能 是是否弹奏键播放键 否 是取相应的音符码
29、装入T0根据按键功能装入相应音符值到T0启动T0启动T0按键释放成功否按键释放成功否停止T0工作停止T0工作3.4.1软件各功能模块的流程图设计及思路说明弹奏程序流程图开始开中断并允许中断设定定时器工作方式取键值根据键值查音律表给定时器T0赋值开始计时进入中断Fm-P3.7.退出中断延时返回键盘扫描程序自动播放歌曲程序流程图开始开中断,设定定时器T0工作模式取简谱码取该音符的节拍码Count2=0STOP Y N查音律表,给定时器赋值返回键盘扫描 开始计时 进入中断Fm3.7退出中断延时4.安装与调试4.1 检查硬件连接在PROTUES检查各硬件管脚是否连接正确,线路逻辑是否正确,例如:晶振电
30、路的连接,复位电路是否设计正确。4.2 检查软件系统1根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是否也正确。2将所有程序组织起来,在软件环境下运行,检查程序是否正确。通过对硬件和软件系统的认真检查,反复测试,如果没有出现问题即可把源程序编译成HEX文件装载到单片机中,对硬件进行仿真。4.2.1总体运行图4.3调试中遇到的问题1.电子琴实现,音乐盒不能进行音乐播放。经过程序不断修改后。可将电子琴,音乐盒两种不同的音律在同个定时器T0里实现。5.结论设计简单原理介绍一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要
31、的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。在这个程序中,弹奏音乐的程序是用定时/计数器T0来完成的,播放音乐程序则也是是用定时/计数器T0来完成的。6.设计仪器、设备和材料清单主要仪器设备:个人计算机和相关的软件主要元器件: 独立按键18个单片机芯片AT80C51一片12MHz晶振一个单个共阳数码管不同阻值电阻数个USB电源插口一个喇叭一个10uF、30pF电容数个电路板一块电烙铁一个等7. 收获、体会和建议这次设计从软件方面来讲不是很难,程序相对长一点,但都是书本上所学的
32、知识,主要是中端及其服务程序的编写。在protues上仿真,则起到很好的效果,因为元器件都是理想状态的,但做出实物来却不是那么简单啦。经过多次调试、修改才得以出结果。将程序烧入芯片,调试成功后,可任意弹奏自己想要的旋律。同时可以播放和切换4首歌曲,但是也有不足之处的,声音杂音时而有点大,不稳定。经过本次课程设计,我们比较好的把理论知识与实践相结合,而我们在也本次设计中收获不少。设计过程中,首先,对于C语言多了一层了解,其次,还有硬件的接线,还有8051芯片的引脚方面,都让我们收获不少。加强了自身的动手能力。当然在这次宝贵的毕业设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以
33、及对知识的深化认识的能力,用受益匪浅这个词语来概括这次难忘的活动我觉得再合适不过了。但是,光是完成了作品还是不可以自我满足的,在从一开始的时候就怀着将作品制作得更加人性化,更加令人满意,更加地使功能完美又方便地被应用领域这个最终目的下,随着对单片机这门学科的认识加深,到达了拓展的程度,我想这个目的将在不远的时期内被实现。 总之,这次设计从软件编写、调试到软硬件联机调试,我倾注了大量的时间和心血。真是曾经为程序的编写而冥思查找过,曾经为无法找出错误而郁闷苦恼过,也曾经为某一功能不能实现而犹豫彷徨过,但最终我成功了。我不仅品味到了结果的喜悦,更明白了过程的弥足珍贵。8.参考文献1周美娟 肖来胜 单
34、片机原理及系统设计清华大学出版社2 谢自美.电子线路设计实验测试华中理工大学出版社,199210附录设计源程序#include #define uchar unsigned char#define uint unsigned int/sbit duan=P36;sbit key1=P32;/按key1可暂停歌曲sbit key2=P33;/按key2可切换歌曲sbit fm=P37;/蜂鸣器连续的IO口sbit KK=P20; /点亮一个数码管uchar count2=0;/歌曲标志 uchar timeh,timel,i;/*/uchar code DSY_table=0xc0,0xf9,0
35、xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, /08 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8f; /9,AFuint code tone_delay_table= 64021,64103,64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178; /个音符对应的延时uchar keyno;/定义按键得到的初值void delay_ms(uchar x) /延时子函数 uchar i; while(x-) for(i=0;i4
36、)0x0f; /按键后将变成xxxx0000,x中1个为0,3个仍为1,将高四位移至低四位,并将其中唯一的0 变成1,其余为0/对03行分别附加其初始值0,4,8,12switch(tmp)case 1:k+=0; break; case 2:k+=4; break; case 4:k+=8; break; case 8:k+=12; break; default:return; keyno=k; /将k的值赋给keyno由数码管输出 /-简谱-/编程规则:字节高位是简谱,低位是持续时间,/代表多少个十六分音符/1-7代表中央C调,8-E代表高八度,0代表停顿/最后的0是结束标志uchar c
37、ode qnzl= /千年之恋0x12,0x22,0x34,0x84,0x74,0x54,0x38,0x42,0x32,0x22,0x42,0x34,0x84,0x72,0x82,0x94,0xA8,0x08,0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,0x32,0x31,0x21,0x32,0x82,0x71,0x81,0x71,0x51,0x32,0x22,0x32,0x31,0x21,0x32,0x52,0x32,0x31,0x21,0x32,0x62,0x32,0x31,0x21,0x32,0x83,0x82,0x71,0x72,0x02,0x63,0xA1,0xA2,0x62,0x92,0x82,0x52,0x31,0x51,0x63,0x51,0x63,0x51,0x63,0x51,0x62,0x82,0x7C,0x02,0x61,0x71,0x82,0x71,0x62,0xA2,0x71,0x76,0x61,0x71,0x82,0x71,0x62,0x52,0x31,0x36,0x61,0x71,0x82,0x71,0x62,0xA3,0x73,0