数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-1-数理与信息工程学院《单片机原理及应用》期末课程设计题目:基于AT89C52单片机的简易电子琴专业:计算机科学与技术(非师范)班级:计算机072班姓名:苏鑫德学号:07220131指导老师:余水宝成绩:(2010.1)数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-2-目录第1节引言………………………………………………………………………41.1单片机发音概述…………………………………………………………41.1.1音调…………………………………………………………………41.1.2节拍……………………………………………………………………71.1.3单片机演奏音乐的方法………………………………………………81.2本次设计的任务和主要内容………………………………………………8第2节系统的主要硬件电路的设计………………………………………………92.1单片机控制系统原理……………………………………………………92.1.1芯片的选用…………………………………………………………92.1.2简易电子琴的组成框图……………………………………………102.1.3简易电子琴的proteus总体仿真图………………………………102.2单片机主机系统电路……………………………………………………112.2.1时钟频率……………………………………………………………112.2.2晶振电路……………………………………………………………112.2.3键盘扫描……………………………………………………………122.2.4发音电路……………………………………………………………142.2.5供电及复位电路……………………………………………………14第3节系统的软件设计…………………………………………………………163.1主程序…………………………………………………………………163.1.1主程序流程图………………………………………………………163.1.2主程序………………………………………………………………173.2歌曲播放子程序…………………………………………………………243.3产生1/8拍延时子程序…………………………………………………253.4发音子程序………………………………………………………………253.5延时子程序………………………………………………………………253.61/8拍周期表……………………………………………………………263.7延时参数表……………………………………………………………263.810ms延时子程序………………………………………………………263.9中断服务子程序…………………………………………………………27数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-3-3.10音符参数表……………………………………………………………273.11计数器初值表…………………………………………………………273.12预存歌曲表《兰花草》………………………………………………27第4节结束语…………………………………………………………………29参考文献…………………………………………………………………………30数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-4-基于AT89C52单片机的简易电子琴数理与信息工程学院07计算机(非师范)苏鑫德指导教师:余水宝第1节引言随着生活水平的提高,在放松自己的同时又能提高各个方面的能力。学习和欣赏音乐可以在使人们得到放松的同时,提高人们的精神品质和个人素养。当代,爱好音乐的年轻人越来越多,有不少人自己练习弹奏乐器,作为业余爱好和一种放松的手段,鉴于一些乐器学习难度大需要太多的学习时间,且其价格又太过于高昂,使得一部分有这种想法的人不得不放弃这种想法。而一些简易的电子乐器价格相对便宜,学习上手快,价格相对便宜,一般人容易负担的起,能够满足一般爱好者的需求。故简易电子乐器的研制具有一定的社会意义。本次课程设计主要研究基于AT89C52单片机的16键简易电子琴的设计。1.1单片机发音概述由于单片机的强大功能,除了在测试控制领域中有着广泛的应用外,还有一些而有趣的应用。比如,使用单片机可以驱动蜂鸣器或者扬声器发出声音,还可以控制其发出不同的声调,从而连接起来构成一个曲子。目前,市场上有很多种音乐模块或者音乐芯片,可以直接产生各种曲子。但是,这种模块价格比较昂贵,电路结构比较复杂。如果系统中仅需要产生简单的音符或者简短的曲子,可以使用单片机配合简单的扬声器而产生需要的音乐效果。一般说来,单片机不像其他专业乐器那样能奏出多种音色的声音,即不包含相应幅度的谐波频率。单片机演奏的音乐基本都是单音频率。因此单片机演奏音乐比较简单,只需要清楚“音调”和“节拍”。音调表示一个音符唱多高的频率节拍表示一个音符唱多长的时间1.1.1音调数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-5-音调是音乐学中的名词,与平时所说的音高十分相似。在音乐中常把中音C上方的A音定为标准音高,其频率为f=440Hz,其余音均与其进行比较。f1和f2为两个音符,如果两个音符的频率相差一倍时,即212ff时,则称f2比f1高一个倍频程。在音乐中音符1(do)与音符ⅰ之间正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音里,有12个半音。以1--ⅰ八音区为例。12个半音是:1--#1,#1--2,2--#2,#2—3,3—4,4--#4,#4—5,5--#5,#5—6,6--#6,#6—7,7--ⅰ。由于人耳的听觉效果,这12个音节的分度基本上是以对数关系来划分的。只要知道了这12个音符的音高,也就是其基本的音乐的频率,就可以根据音符之间的倍频程关系得到其他音符基本的音调频率。知道了一个音符的频率后,便可以让单片机发出相应的频率的振荡信号,从而产生相应的音符声音。常采用的方法是通过单片机的定时器进行定时中断,在中断服务子程序中将单片机上外界扬声器的I/O口来回置高电平或置低电平,从而让扬声器发出声音。为了让单片机发出不同频率音符的声音,只需将定时器预置不同的定时值来实现。以标准音高A为例:标准音高A的频率f=440Hz,其对应的周期为:usfT2272/1(1-1)因此需要在单片机I/O口输出周期为T=2272us的方波脉冲,如图1-1所示图1-1单片机控制音调示意图数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-6-由上图可知:单片机输出高电平和低电平信号均为:usTt11362/(1-2)也就是说,单片机上定时器的中断触发时间为1136us。如果单片机采用定时器工作方式1,它以振荡器的十二分频信号为计数脉冲。设外接晶振的振荡器频率为f0,则定时器的预置初值由下式来确定:fTTCountt0)(12(1-3)式中,Count=216=65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:256)12/(256/0ftCountTTTH(1-4)256)%12/(256%0ftCountTTTL(1-5)如果单片机外接12MHz的晶振,则MHzf120,将t=1136us和MHzf120代入上面两式,即可求得标准音高A在单片机定时器工作方式1下的定时器高低计数器的初值为:FBHTTTHA256)12/12113665536(256/(1-6)HTTTHA90256)%12/12113665536(256%(1-7)根据上面的求法,我们可以求出其他音调相应的计数器的预置初值。在单片机晶振频率MHzf120,定时器在工作方式1下定时器计数初值见表1-1表1-1晶振频率MHzf120定时器在工作方式1下定时器计数初值表音符频率/Hz计数初值音符频率/Hz计数初值低1DO26263628#4FA#74064860#1DO#27763731中5SO78464898低2RE29463835#5SO#83164934#1RE#31163928中6LA88064968低3MI33064021#6LA#93264994低4FA34964013中7SI98895030数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-7-#4FA#37064185高1DO104665058低5SO39264260#1DO#110965085#5SO41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI131865157低7SI49464524高4FA139765178中1DO52364580#4FA#148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#62264732高6LA176065252中3MI65964777#6LA#186565268中4FA69864820高7SI1967652831.1.2节拍在一张完整乐谱开头,都有如1=C44、1=G43……等等的标识。这里1=C,1=G标识乐谱的曲调,简单的说就是跟音调有关系;这里的44、43用来表示节拍。对于音符的节拍,以43为例。它表示乐谱中以四分音符为节拍,每一小节有三拍。1=G43的节拍示意图,见图1-2在图中,总共有三拍:1、2为一拍,3、4、5为一拍,6为一拍。从时长角度看,1、2的时长为四分音的一半,即为八分音符长;3、4的时长为八分音符的一半,即为十六分音符长;5的时长为四分音符的一半,即为八分音符长;6的时长为四分音符长。图1-2节拍示意图对于一拍的发音时间,如果乐曲没有特殊说明,一般说来,一拍的时长大约为400~450ms1=G43数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-8-。如果这里规定一拍的时长为400ms,那么以四分音符为节拍时,四分音符的时长为400ms,八分音符的时长为200ms,十六分音符的时长为100ms。从而,在单片机上可采用循环延时的办法来实现控制一个音符唱多长时间。首先要编写一个精确的基本时长的延时程序,比如说以八分音符的时长为基本延时时间,那么对于一个音符,如果它是四分音符,只需调用四次延时程序,如果它是二分音符,则只需调用八次延时程序,以此类推。1.1.3单片机电子琴演奏音乐的方法步骤一:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍数。步骤二:将这些参数做成数据表格,存放在存储器中。步骤三:通过按键调用程序取出一个音符的相关参数,播放该音符。步骤四:播放完该音符后,等待下一次按键调用程序去取出下一次的音符的相关参数,再播放音符。对于演奏乐曲,一般将休止符的音调参数设置为FFH,节拍参数设置为00H。1.2本设计任务和主要内容本次课程设计主要研究基于AT89C52单片机的16键简易电子琴的设计。具体要求实现以下功能:①按下音符键可以发出相应的音符②按下音乐播放键可以自动播放预先存在内存中的曲子数理与信息工程学院《单片机原理及应用》期末课程设计——基于AT89C52单片机的简易电子琴-9-第2节系统主要硬件电路设计2.1单片机控制系统原理2.1.1芯片选用在本次课程设计中我采用Atmel公司的AT89C52单片机。AT89C52是美国Atmel公司生产的低电压、高性能CMOS8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片