重庆三峡学院单片机课程设计报告书学院:年级专业:学号:学生姓名:指导教师:教师职称:成绩:制作日期2012年11月29日基于AT89C51单片机的多音阶电子琴的设计重庆三峡学院摘要单片机是电子、计算机及机电专业的一门重要的必修课程。
要求我们掌握单片机的基本组成和工作原理、会变程序的一般编写方法、常用接口电路的软硬件设计方法,具备基本的单片机系统应用与开发能力。
随着科技的快速发展,单片机的应用日益普遍。
单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本单片机系统设计应用单片机控制技术,用AT89C51单片机为核心控制元件根据本学期所学的单片机知识结合设计了一套单片机控制的电子琴系统。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器,它在现代音乐扮演着重要的角色。
本次设计首先对单片机设计简易电子琴仔细分析,接着制作硬件电路和编写软件的程序,最后进行软硬件的调试运行。
并且从原理图,主要芯片,各模块的原理和各个模块的程序调试来阐述。
利用单片机产生不同频率来获得我们要求的音阶,实现高、中、低共21个音符的发音和显示和音乐播放时的控制显示,并且能自动播放程序中编排的音乐。
系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比高等,具有一定的使用和参考价值。
关键词:单片机、电子琴、AT89C51、独立键盘、目录第 1 章引言......................................................................................................................... 1.1. 1 设计背景 (1)1.2 设计任务 (1)1.3 设计目的 (1)1.4 设计思路 (1)第 2 章方案论证 (1)2.1 方案论证 (1)第 3 章硬件系统设计 (2)3.1时钟电路 (2)3.2 复位电路 (3)3.3 原理框图 (3)3. 4 显示部分设计 (3)3.5 按键部分设计 (4)3.6 发音部分设计 (5)第 4 章软件系统设计 (5)4.1 系统分析 (5)4.2 参数计算 (7)4.3 程序设计 (8)第 5 章实验结果 (10)5.1硬件调试 (10)5.2 软件调试 (10)5.3 仿真结果 (10)5.4 结果分析 (11)第 6 章总结 (11)附录一:系统整体电路图 (12)附录二:元器件清单 (12)附录三:源程序代码 (13)参考文献 (19)第一章引言1.1 设计背景随着电子科学技术的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们带来更多的生活乐趣。
基于当前市场上的玩具需求量增大,其中电子琴就是一个很好的应用方面。
单片机技术使我们可以利用软硬件来实现电子琴的功能,从而可以实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。
并且可以进行一定的功能扩展。
鉴于传统电子琴可以用键盘上的“1”到“A”键演奏从低So到高DO等11个音,从而也可以通过单片机实现对十个按键的扩展,实现七个音符键的高、中、低21个音调的显示播放和任意音乐的自动播放。
本次设计将十个音键制作成独立键盘,其中七个为音符键,三个为控制键,并用数码管进行显示,使电子琴的功能更加完美。
不但可以实现对按键的显示,而且可以实现对音乐的自动存储和播放,使该设计功能更加完善。
1.2 设计任务1、根据要求,设计以单片机为核心的多音阶电子琴系统,可随意弹奏想要表达的音乐;2、针对要求控制的对象完成程序的编制;3、硬件软件联调,完成题目所要求的功能;4、有高中低三个音阶,并有显示电路。
1.3 设计目的1、通过课程设计,使我们能够深入理解单片机系统的工作原理,接口电路的设计及调试方法,培养综合运用所学理论知识分析和解决实际问题的能力;2、使用AT89C51芯片的串口功能,利用独立式键盘和A T89C51单片机以及扬声器实现乐曲的演奏;3、用keil软件进行编程与调试,利用Proteus 7 Professional软件进行绘制硬件电路图且进行仿真。
1.4 设计思路用独立式键盘的7个按键分别对应相应的音符,当按下某一个按键时,产生一个相应音符,操作者按一定的节奏、规律进行输入时,信号经过单片机处理,然后经音频放大后经扬声器输出音频信号,产生乐曲。
本次设计有一个创新,就是预先存放一段音乐程序在芯片内,整个设计既可以作电子琴用又可以作音乐盒用,且带显示功能。
第二章方案论证2.1 方案论证2.1.1总体设计采用AT89S52单片机作为主控芯片,设置键盘、蜂鸣器等外围器件,另外还用到一些简单器件如:四位数码管,和NPN型三极管及电阻等。
利用按键实现音符和音调的输入;两位的数码管进行被操作的按键显示;用NPN型三极管8550实现低音频功率放大;最后用蜂鸣器发音。
主控芯片采用AT89S52单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
避免了由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。
同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。
具有经济可行性、技术可行性、实物应用性。
2.1.2单片机选型硬件电路要以单片机作为主控芯片,实现按键输入音符和音调,四位数码管的显示以及低音频功率放大和蜂鸣器发音。
针对本设计的功能和用途,采用AT89C51单片机更好,实现功能完全,性价比较高,更适合本设计。
第三章硬件系统设计3.1 时钟电路单片机内部具有一个高增益反相放大器,用于构成振荡器。
通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构图2 中X1、C1、C2。
可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。
图3-1、时钟电路3.2 复位电路单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。
上电复位要求接通电源后,自动实现复位操作。
手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。
其结构如下图。
上电自动复位通过电容C3充电来实现。
手动按键复位是通过按键将电阻R1与VCC 接通来实现。
图3-2、复位电路3.3 原理框图本系统有主控芯片89S52、发音单元、显示模块、按键模块组成。
89S52单片机按键模块发音单元显示模块图3-3、原理框图3.4 显示部分设计3.4.1数码显示方式数码显示有静态显示方式与动态显示方式两种。
工作在静态显示方式时,数码管的位线与电源一直相连,数码管中的二极管均处于通电状态,即在静态工作方式下,显示电路中数码管的位选线是同时选通,而数码管的段选线是独立输入。
工作在动态显示方式时,数码管的位线在扫描控制电路的控制下按设定顺序导通,即电路中的数码管是逐个接通电源,数码管的段选线以并联方式与译码电路联接,即在动态工作方式下,数码管不是同时导通显示而是按照设定顺序分时导通显示。
3.4.2八位数码管的结构本次课程设计的显示电路采用两位数码管进行显示,由于此设计采用的是共阴极的,使用时不加限流电阻。
为了显示字符,要为 LED 显示器段码,除了组成8字形的字符的7段,另加上1个小数点位,共计8段,因此提供给 LED 显示器的显示段码为1个字节。
图3-4、数码管电路3.5 按键部分设计3.5.1键盘设计键盘在单片机应用系统中是一个关键的部件,它能实现向计算机输入数据,传送命令等功能,是人工干预计算机的主要手段。
键盘可以分为2类:独立连接式键盘和矩阵式键盘。
本设计采用独立式键盘。
独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。
独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,然而,在按键较多时,I/O口线浪费较大,不宜采用。
独立式按键软件常采用查询式结构。
先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。
由于本程序较为简单,为了使用方便及节省资源,选择独立式键盘。
下图为独立式键盘电路图:图3-5、独立式键盘电路图3.6 发音部分设计图3-6、扬声器电路图第四章软件系统设计4.1 系统分析4.1.1系统软件的组成(1)键盘扫描程序:检测是否有按键按下,有按键按下则记录按下键的键值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测。
(2)功能转移程序:对检测到的按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音色调节功能和自动播放乐曲的功能。
(3)琴键处理程序:根据检测到的按键值,查询音调表,给计时器赋值,使发出相应频率的声音。
(4)自动播放歌曲程序:检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有按键按下。
4.1.2 系统总体功能流程图图4-1、系统总体功能流程图4.2 参数计算4.2.1发音原理若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。
利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。
就可在P1.0引脚上得到此频率的脉冲。
利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。
4.2.2 计算举例例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系式是:N=fi÷2÷fr,式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。
其计数初值T的求法如下:T=65536-N=65536-fi÷2÷fr例如:设K=65536,fi=1MHz,求中音DO(261Hz)。
T=65536-N=65536-fi÷2÷fr =65536-1000000÷2÷fr=65536-500000/fr,中音DO的T=65536-500000/523=64580。
4.2.3 计算结果采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:低音0-19之间,中音在20-39之间,高音在40-59之间。