基于单片机AT89C51电子琴课程设计.doc
《基于单片机AT89C51电子琴课程设计.doc》由会员分享,可在线阅读,更多相关《基于单片机AT89C51电子琴课程设计.doc(17页珍藏版)》请在咨信网上搜索。
重 庆 三 峡 学 院 单 片 机 课 程 设 计 报 告 书 基于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 基于AT89C51单片机的多音阶电子琴的设计 - 13 - 第一章 引言 1.1 设计背景 随着电子科学技术的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们带来更多的生活乐趣. 基于当前市场上的玩具需求量增大,其中电子琴就是一个很好的应用方面.单片机技术使我们可以利用软硬件来实现电子琴的功能,从而可以实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。并且可以进行一定的功能扩展. 鉴于传统电子琴可以用键盘上的“1”到“A”键演奏从低So到高DO等11个音,从而也可以通过单片机实现对十个按键的扩展,实现七个音符键的高、中、低21个音调的显示播放和任意音乐的自动播放。 本次设计将十个音键制作成独立键盘,其中七个为音符键,三个为控制键,并用数码管进行显示,使电子琴的功能更加完美.不但可以实现对按键的显示,而且可以实现对音乐的自动存储和播放,使该设计功能更加完善。 1。2 设计任务 1、根据要求,设计以单片机为核心的多音阶电子琴系统,可随意弹奏想要表达的音乐; 2、针对要求控制的对象完成程序的编制; 3、硬件软件联调,完成题目所要求的功能; 4、有高中低三个音阶,并有显示电路。 1.3 设计目的 1、通过课程设计,使我们能够深入理解单片机系统的工作原理,接口电路的设计及调试方法,培养综合运用所学理论知识分析和解决实际问题的能力; 2、使用AT89C51芯片的串口功能,利用独立式键盘和AT89C51单片机以及扬声器实现乐曲的演奏; 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、发音单元、显示模块、按键模块组成. 图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 计算结果 (1)单片机12MHZ晶振,中音符与计数T0相关的计数值如下表所示: 音符 频率(Hz) 计数值(T值) 音符 频率(Hz) 计数值(T值) 低1DO 262 63628 #4FA# 740 64860 #1DO# 277 63737 中5SO 784 64898 低2RE 294 63835 #5SO# 831 94934 #2RE# 311 63928 中6LA 880 64968 低3MI 330 64021 #6LA# 932 64994 低4FA 349 64103 中7SI 968 65030 #4FA# 370 64185 低1DO 1046 65058 低SO 392 64260 #1DO# 1109 65085 #5SO# 415 64331 高2RE 1175 65110 低6LA 440 64400 #2RE# 1245 65134 #6LA# 466 64463 高3MI 1318 65157 低7SI 494 64524 高4FA 1397 65178 中1DO 523 64580 #4FA# 1490 65198 #1DO# 554 64633 高5SO 1568 65217 中2RE 587 64633 #5SO# 1661 65235 #2RE# 622 64884 高6LA 1760 65252 中3MI 659 64732 #6LA# 1865 65268 中4FA 698 64820 高7SI 1967 65283 采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据:低音0-19之间,中音在20-39之间,高音在40-59之间。 4。3程序设计 4.3。1 判断音阶(高中低音)子程序 在软件设计中采用yinjie代表音阶,如下表所示: 音阶 Yinjie值 高 2 中 1 低 0 初始化状态为中音(yinjie=1),电路中设计高、低两个音阶键。上电后,若无按键按下,则为中音模式.若音阶键被按下,则如下流程图所示,初始化后进行按键扫描,在高音键按下,若初始yinjie不为2,则另yinjie=2,进入高音工作模式,若初始yinjie为2,则对yinjie进行初始化,即另yinjie=1,重新进入进入中音工作模式,这样即实现了高音键切换高、中音方式的转换。同理,用低音键实现中、低音的切换。 图4-2、判断音阶(高中低音)子程序 4。3。2 播放子程序(包括自动播放存储音乐和按键发音) 本设计共两种播放模式,包括自动播放存储音乐和按键发音。上电后,首先开中断并设定定时器0为工作方式1,当自动播放键按下时,进入中断,根据乐谱在定义的音频数组中查找相应音律,然后给定时器赋初值,即开始播放音乐.当DO、RE、MI、FA、SO、LA、SI七种音符键按下时,根据音阶值(如3。3。1中高中低对应)和音符值在定义的音频数组中查找相应音律,然后给定时器赋初值,即按键发音。 图4—3、播放子程序 第五章 实验结果 5.1硬件调试 硬件调试主要是针对单片机部分进行的调试。 在上电之前,先确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤.在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况的任务.注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现.在确保硬件电路正常且无异常情况(断路或短路)的情况下方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次设计中,上电调试主要是检测单片机控制部分、数码管点亮部分、和音频转换电路硬件调试。 1、数码管LED电路调试:接通电源,随机按下按钮可以看到数码管显示数字. 2、键盘单片机控制部分调试:上电后,随机按动键盘可以发现各个按键对应的音正确。 5.2 软件调试 调试主要方法和技巧:通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的子程序的正确与平稳运行必不可少,所以在软件调试的最初阶段就是把各个子程序模块进行分别调试。 5。3 仿真结果 图5—1、低音音符LA仿真图 5.4 结果分析 根据仿真结果可知,本次课程设计能够准确并彻底的完成设计要求。右侧数码管可以显示a、b、c三种结果,分别代表低音、中音和高音。右侧数码管可以显示1、2、3、4、5、6、7七个数字,分别代表DO、RE、MI、FA、SO、LA、SI七种音符.当系统上电后,若按下低音键,则选定工作方式为低音模式。P0口连接数码管段选端,右侧数码管显示的6即代表LA。四位数码管即代表低音LA. 第六章 总结 本次课程设计的课题是《基于AT89C51单片机的多音阶电子琴的设计》,这是一个实用性质非常强的题目。它与我们日常生活联系紧密。这个课题的选取对所有参加这个课题研究的同学们来说都是一个非常好的锻炼.这次实验总共经历了两周的时间,从功能需求分析到功能分析,从程序的设计到程序的调试、下载、最后终于完成了这次具有实际使用价值的实验。 在设计中我运用自己平时学到的一些知识,以及自己在课后所查找资料的进行设计,刚开始遇到很多困难,包括对使用C语言环境语言的不熟悉。后来一起和同学研究,最终找到了解决问题的答案。经过我们的努力,在仿真软件和实物上都实现了高、中、低21个音符的发声和音乐的自动播放,使我们有了一定的成就感,也使我们进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统设计的基本方法和步骤, 掌握了单片机仿真软件Proteus的使用方法和键盘、显示器在的单片机控制系统中的应用,同时也掌握了撰写课程设计报告的方法。我感觉自己在设计方面提高很大,特别是在设计程序时,逻辑思维能力有所加强,同时对以前所学的知识有了更深刻的认识,并进一步的得到了巩固和提高,充分的做到了理论联系实际,也使我认识到理论与实际的差别,通过该课程设计,不但对单片机有了较为全面的认识,而且相关的知识也有了足够的掌握,我感觉最重要的还是设计思维的形成。更发现自己在平时学习中的缺陷。对以后的学习也有很大的帮助。 这次课程设计,我所收获的不仅是学习知识方面,更多的是生活方面。我了解到,在我们生活中,应该学会与别人共同分享,分享知识,分享问题,这样更有助于我们的交流,有利于我们共同进步,有利于我们对学习养成良好的兴趣。 最后,我要感谢,带我们课程设计的老师,感谢您对我们的耐心,感谢您们对我们的鼓励,让我们有信心继续下去,成功走到最后。 附录一:系统整体电路图 附录二:元器件清单 序号 元器件名称 数量(个) 1 AT89C52 1 2 30P瓷片电容 2 3 12MHz晶振 1 4 10UF/16V电解电容 1 5 按钮 11 6 0.5W / 8Ω扬声器 1 7 数码管 1 8 10K电阻 1 9 排阻(9引脚) 1 附录三:源程序代码 #include<reg52.h> #define uchar unsigned char void Run(void); void KeyScan(void); void PlayKey(void); void delay_1ms(uchar i); void PlayMusic(void); void DisPlay(void); sbit Beep=P3^7; uchar TH0,TL0; //TH0,TL0 uchar flag=0XFF; //模式,0表示音乐,ff表示按键 uchar key=0; //按键代号 uchar a; uchar gaodi=0; //音乐音符 uchar code MusicCode[]={0XFC,0X44,0XFC,0XAC,0XFD,0X09,0XFD,0X34, 0XFD,0X82,0XFD,0XC8,0XFD,0X06,0XFB,0X04, 0XFB,0X90,0XFC,0X0C,0XFE,0X22,0XF9,0X5B,0XFA,0X15 }; //月亮代表我的心 uchar code Music[]={ 0X02,0X82, 0X16,0X32,0X54,0X02,0X52, 0XA6,0X32,0X54,0X02,0X52, 0X64,0X74,0XB6,0X64, 0X52,0X5C,0X32,0X22, 0X16,0X12,0X14,0X32,0X22, 0X16,0X12,0X14,0X22,0X32, 0X26,0X12,0X94,0X22,0X32, 0X2C, 0X32,0X52, 0X36,0X22,0X14,0X54, 0XAC,0X92,0XA2, 0X96,0X0A2,0X96,0X82, 0X3C,0X54, 0X36,0X22,0X14,0X54, 0XAC,0X92,0XA2, 0X16,0X12,0X14,0X22,0X32, 0X2C,0X02,0X82, 0X16,0X32,0X56,0X12, 0XA6,0X32,0X56,0X52, 0X66,0X72,0XB6,0X62, 0X62,0X52,0X58,0X32,0X22, 0X16,0X12,0X14,0X32,0X22, 0X16,0X12,0X14,0X22,0X32, 0X1C, 0XFF}; //按键音符 uchar code KeyCode[]={0XFF,0XFF, 0xF8,0x8B,0xF9,0x5B,0xFA,0x14,0xFA,0x66,0xFB,0x03,0xFB,0x8F,0xFC,0x0B,//低音 0xFC,0x43,0xFC,0xAB,0xFD,0x08,0xFD,0x33,0xFD,0x81,0xFD,0xC7,0xFE,0x05,//中音 0xFE,0x21,0xFE,0x55,0xFE,0x84,0xFE,0X99,0XFE,0xC0,0xFE,0xE3,0xFF,0x02,//高音 }; void main(void) { P1=0XFF; //初始化 P0=0XFF; P2=0; TMOD=0X01; IT0=1; TR0=0; EX0=1; ET0=1; EA=1; while(1) { KeyScan(); //按键扫描 Run(); //运行 DisPlay(); //显示 } } void Run(void) //运行 { if(flag==0) PlayMusic(); else PlayKey(); } void KeyScan(void) //按键扫描 { if(P1==0XFE) //第一按键按下 { delay_1ms(12); //延时12MS if(P1==0XFE) //确定按下 {key=1; a=key; } } else if(P1==0XFD) { delay_1ms(12); if(P1==0XFD) {key=2; a=key;} } else if(P1==0XFB) { delay_1ms(12); if(P1==0XFB) {key=3; a=key;} } else if(P1==0XF7) { delay_1ms(12); if(P1==0XF7) {key=4; a=key;} } else if(P1==0XEF) { delay_1ms(12); if(P1==0XEF) {key=5; a=key;} } else if(P1==0XDF) { delay_1ms(12); if(P1==0XDF) {key=6; a=key;} } else if(P1==0XBF) { delay_1ms(12); if(P1==0XBF) {key=7; a=key;} } else if(P0==0XFE) //低音模式键按下 { delay_1ms(12); if(P0==0XFE) {gaodi=0; a=gaodi;} } else if(P0==0XFD) //中音模式键按下 { delay_1ms(12); if(P0==0XFD) {gaodi=1; a=gaodi;} } else if(P0==0XFB) //高音模式键按下 { delay_1ms(12); if(P0==0XFB) {gaodi=2; a=gaodi;} } else return; } void PlayKey(void) //响应按键 { if(key==0) return; else { Th0=KeyCode[gaodi*14+key*2]; Tl0=KeyCode[gaodi*14+key*2+1]; TR0=1; delay_1ms(187); TR0=0; key=0; } } time0() interrupt 1 //定时器0中断 { TH0=Th0; TL0=Tl0; Beep=~Beep; } void interrupt0() interrupt 0 //外部中断0 { flag=~flag; if(flag==0) { a=8; P2=0; } } void delay_1ms(uchar i) //延时 { uchar j,k; for(j=0;j〈i;j++) for(k=0;k〈148;k++) ; } void PlayMusic(void) //播放音乐 { uchar yinfu,jiepai; uchar i,j; for(i=0;Music[i]!=0XFF;i++) { yinfu=(Music[i]〉〉4); jiepai=(Music[i]&0X0F); if(yinfu==0) continue; Th0=MusicCode[(yinfu-1)*2]; Tl0=MusicCode[(yinfu-1)*2+1]; TR0=1; for(j=jiepai;j〉0;——j) { delay_1ms(250); } TR0=0; if(flag!=0) break; } } void DisPlay(void) //显示 { switch(a) { case 0: P2= 0X3F;break; case 1: P2= 0X06;break; case 2: P2= 0X5B;break; case 3: P2= 0X4F;break; case 4: P2= 0X66;break; case 5: P2= 0X6D;break; case 6: P2= 0X7D;break; case 7: P2= 0X07;break; default: P2=0X00;break; }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 AT89C51 电子琴 课程设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文