2022年基于单片机的简易电子琴设计课程设计 .pdf
-
资源ID:34239826
资源大小:998.27KB
全文页数:36页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年基于单片机的简易电子琴设计课程设计 .pdf
湖南文理学院课程设计报告课程名称:单片机课程设计专业班级:自动化 10102 班 17 号学生姓名:肖 葵指导教师:王南兰完成时间: 2013 年 6 月 13 日报告成绩:湖南文理学院制评阅意见:评阅教师日期 2013.6.20 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 36 页摘 要随着社会地发展进步,音乐逐渐成为人们生活中很重要地一部分,有人曾说喜欢音乐地人不会向恶 . 我们都会抽空欣赏世界名曲,作为对精神地洗礼. 本论文设计一个基于单片机地简易电子琴 . 人们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇.电子琴是现代电子科技与音乐结合地产物,是一种新型地键盘乐器. 它在现代音乐扮演着重要地角色,单片机具有强大地控制功能和灵活地编程实现特性,它已经溶入现代人们地生活中,成为不可替代地一部分. 本文地主要内容是用AT89S52单片机为核心控制元件,设计一个电子琴. 以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16 个按键和扬声器 . 本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定地实用和参考价值.关键词: AT89S51; 音色节拍器;电子琴ABSTRACT精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 36 页With the development of our society, music has become an important part of life. Theres a saying goes that people who likes music cannot be an evil. During our life, we often enjoy all kinds of music in the world to baptize our spirits. This thesis has designed a simple microcontroller-based electronic key board. We are curious about the foundation of electronic keyboard, such as the choice of timber, the control of volume, the metrononme and automatic playback. The keyboard is a product of modern electronic technology combined with music, it is a new type of keyboard instruments. And it plays an important role in modern music. Single chip has a powerful control functions and flexible programming characteristics. It has converged with modern peoples lives, become an irreplaceable part. The main content is AT89S51 control of the core components, Design of an electronic organ, single chip as a host to the core, with the keyboard, speakers and other core modules main control module, in the main control module has 16 keys and speakers. Stability of the system, its advantages are simple hardware circuits, software functions, control system reliability, high cost performance and have certain practical and reference value.Key words : single chip MCU keyboard speaker electronic organ精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 36 页目 录第一章 设计方案分析 . 11.1 设计背景 . 11.2 设计任务 . 12.1 总体设计 . 1第二章 电子琴总体电路图设计. 32.1 单片机最小系统. 32.1.1 AT89S52 简介 . 32.1.2 时钟电路与复位电路. 62.2 显示部分设计. 72.2.1 数码显示方式. 72.2.2 八位数码管地结构. 82.3 按键模块设计. 82.3.1 按键选取 . 82.3.2 键盘设计 . 92.4 发音模块设计. 10第三章 程序设计 . 123.1 系统总体功能流程图. 123.2 参数计算 . 123.3 判断音阶(高中低音)子程序 . 143.4 播放子程序 . 15第四章 Proteus软件仿真 . 174.1 编程环境 PROTEUS . 174.2 用 PROTEUS ISIS 进行硬件电路绘制 . 174.3 下载 HEX 文件 . 194.4 软件调试 . 20心得体会 . 22参考文献 . 23附录一原理图 . 24附录二源代码 . 25精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 36 页第一章 设计方案分析1.1 设计背景随着电子科学技术地飞速发展,电子技术正在逐渐改善着人们地学习、生活、工作,因此开发本系统希望能够给人们带来更多地生活乐趣.基于当前市场上地玩具需求量增大,其中电子琴就是一个很好地应用方面.单片机技术使我们可以利用软硬件来实现电子琴地功能,从而可以实现电子琴地微型化,可以用作玩具琴、音乐转盘以及音乐童车等等 .并且可以进行一定地功能扩展.鉴于传统电子琴可以用键盘上地“1”到“A”键演奏从低So 到高 DO 等 11 个音,从而也可以通过单片机实现对十个按键地扩展,实现七个音符键地高、中、低21个音调地显示播放和任意音乐地自动播放.该设计将十个音键制作成独立键盘,其中七个为音符键,三个为控制键,并用数码管进行显示,使电子琴地功能更加完美.不但可以实现对按键地显示,而且可以实现对音乐地自动存储和播放,使该设计功能更加完善.1.2 设计任务实现电子琴发声控制系统;要求电路实现如下功能:利用蜂鸣器作为发声部件,两个数码管作为显示部件,设置10 个按键,实现高音、中音、低音地1、2、3、4、5、6、7 地发音 .并在存储一首歌曲地内容,可以实现自动播放.用 PROTEUS 实现地电子琴仿真设计,通过Protel 绘制原理图 .2.1 总体设计实现本次设计地方案有多种,下面比较说明一下最佳方案地选择.方案一:采用单个地逻辑器件组合音乐是有由不同地音阶组成地,而不同地音阶又是由不同地频率发出地,那么利用不同地频率,就可以发出不同地音乐了.我们知道计数器8253 可以产生任意频率地方波频率信号,因此,我们只要把一首歌曲地音阶对应频率与计数器地频率对应起来就可通过计数器产生音乐了.根据本实验要求,采用8279 将键扫得到地键值通过查表得到相应地8253 地频率值,将从8253 得到相对应地按键弹奏信号经过LM386进行放大,再用喇叭输出,就实现了简易电子琴地基本功能,也就完成了实验地要求.方案二:采用AT89S51 单片机作为主控芯片,设置键盘、蜂鸣器等外围器件,另外还用到一些简精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 36 页单器件如:两位数码管,和NPN 型三极管及电阻等.利用按键实现音符和音调地输入;两位地数码管进行被操作地按键显示;用NPN 型三极管8550实现低音频功率放大;最后用蜂鸣器发音.方案一采用单个地逻辑器件组合实现.这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂地硬件电路也容易引起系统地精度不高、体积过大等不利因素.例如七个不同地音符是由七个不同地频率来控制发出地,所用仪器之多显而易见.方案二与方案三相比,主控芯片采用AT89S51 单片机,它是大规模集成电路技术发展地产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛地特点.同时具有强大地控制功能和灵活地编程实现特性,由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作.而第三种方案具有经济可行性、技术可行性、实物应用性.综上所述,本次课程设计采用第二种方案.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 36 页第二章 电子琴总体电路图设计电子琴总体电路分别由单片机最小系统模块、显示模块、按键模块、发音模块四个模块组成.如下图所示 . 89S52单片机按键模块发音单元显示模块2.1 单片机最小系统2.1.1 AT89S52 简介本系统采用地是美国ATMEL 公司生产地AT89C51 单片机,首先我们来熟悉一下AT89S52 单片机地外部引脚和内部结构 .其引脚图如图2.1 所示 .1.单片机地引脚功能AT89S52 单片机有40 个引脚 .Vcc:电源电压 +5VGND :接地P0 口: P0 口是一组8 位漏极开路型双向I/O 口,也即地址 /数据总线复用口.作为输出口用时,每位能驱动8 个TTL 逻辑门电路,对端口写“ 1”可作为高阻抗输入端用.在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线服用,在访问期间激活内部上拉电阻 .在Flash 编程时, P0 口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻.P1 口: P1 口是一个带内部上拉电阻地8 位双向I/O,P1 地输出缓冲级可驱动(吸收或输出电流)4 个 TTL图 2.1 单片机引脚图精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 36 页逻辑门电路.对端口写 “1”,通过内部地上拉电阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流. Flash 编程和程序校验期间,P1接收低 8 位地址 .P2 口: P2 口是一个带内部上拉电阻地8 位双向I/O,P2 地输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路 .对端口写 “1”,通过内部地上拉电阻把端口拉到高电平,此时可作输入口.作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流.在访问外部程序存储器或16 位地址地外部数据存储器(例如执行MOVXDPTR指令)时, P2口送出高8 位地址数据 .在访问8 位地址地外部数据存储器(MOVX Ri 指令)时, P2 口线上地内容(也即特殊功能寄存器(SFR)区中 P2寄存器地内容),在整个访问期间不改变.Flash 编程和程序校验期间,P2亦接收低高位地址和其他控制信号.P3 口: P3 口是一组带内部上拉电阻地8 位双向I/O,P3 地输出缓冲级可驱动(吸收或输出电流) 4 个 TTL 逻辑门电路 .对 P3口写入 “1”时,它们被内部地上拉电阻拉高并可作为输入端口.作输入端时,被外部拉低地P3 口将用上拉电阻输出电流.P3 口除了作为一般地I/O 口线外,更重要地用途是它地第二功能,见表2-1 所示:P3 口还接收一些用于Flash 闪速存储器编程和程序校验地控制信号.表 2-1 P3 口地第二功能图端口引脚第二功能P3.0 RXD (串行输入口)P3.1 TXD (串行输出口)P3.2 INT0 (外中断0)P3.3 INT1 (外中断1)P3.4 T0(定时 /计时器 0 外部输入)P3.5 T1(定时 /计时器 1 外部输入)P3.6 WR (外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)RST:复位输入.当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位.WDT溢出将使引脚输出高电平,设置SFR AUXR地 DISRT0(地址8EH)可打开或关闭该功能.DISRT0 位缺省为RESET 输出高电平打开状态.ALE/PROG :当访问外部程序存储器或数据存储器时,ALE (地址锁存器允许)输出脉冲用于锁存地址地低8 位字节 .即使不访问外部存储器,ALE 仍以时钟振荡频率地1/6 输出固定地正脉冲信号,因此它可对外输出时钟或用于定时目地.要注意地是:每当访问外部数据存储器时将跳过一个ALE脉冲 .对 Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG).如有必要,可通过多特殊功能寄存器(SFR)区中地8EH 单元地 D0 位置,可禁止ALE 操作 .该位置后,只有一条MOVX和 MOVC 指令ALE 才会被激活 .另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 无效 .精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 36 页PSEN:程序存储允许(PSEN)输出是外部程序存储器地读选通信号,当AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲.当访问外部数据存储器,没有两次有效地PSEN 信号 .EA/VPP :外部访问允许.欲使 CPU 仅访问外部程序存储器(地址为0000H FFFFH), EA 端必须保持低电平(接地).需要注意地是:如果加密位LB1 被编程,复位时内部会锁存EA 端状态 .如 EA 端为高电平(接Vcc 端), CPU 则执行内部程序存储器中地指令.Flash 存储器编程时,该引脚加上+12V 地变成电压Vpp.XTAL1 :振荡器反相放大器及内部时钟发生器地输入端.XTAL2 :振荡器反相放大器地输出端.AT89C51 单片机内部结构2.AT89C51 单片机与MCS-51 完全兼容看门狗( WDT ): WDT 是一种需要软件控制地复位方式.WDT 由 13位计数器和特殊功能寄存器中地看门狗定时器复位存储器(WDTRST )构成 .WDT 在默认情况下无法工作;为了激活WDT ,用户必须往 WDTRST 寄存器(地址:0A6H )中依次写入01EH 和 0E1H.当WDT激活后,晶振工作,WDT在每个机器周期都会增加.WDT 计时周期依赖于外部时钟频率.除了复位(硬件复位或WDT 溢出复位),没有办法停止WDT 工作 .当WDT 溢出,它将驱动RSR引脚输出一个高电平.可编程串口( UART )在 AT89C51中, UART 地操作与 AT89C51 和AT89C52 一样 .AT89C51系列单片机地串行通信口可以工作于同步和异步通信方式.当工作于异步方式时,它具有全双工地操作功能,也就是说,它可以同时进行数据地发送和接收.串行口内地接收器采用地是双缓冲结构,能够在接收到地第一个字节从接收寄存器读走之前就开始接收第二个字节(当然,如果第二个字节接收完毕,而第一个字节仍然没有被读走,那将会丢掉一个字节).串行口地发送和接收操作都是通过特殊功能寄存器中地数据缓冲寄存器SBUF进行地,但在 SBUF地内部,接收寄存器和发送寄存器在物理结构上是完全独立地 .如果将数据写入SBUF,数据会被送入发送寄存器准备发送.如果执行 SBUF指令,则读出地数据一定来自接收缓存器.因此, CPU对SBUF地读写,实际上是分别访问2个不同地寄存器.这 2个寄存器地功能决不能混淆.振荡电路: AT89C51系列单片机地内部振荡器,由一个单极反相器组成.XTAL1 反相器地输入, XTAL2 为反相器地输出.可以利用它内部地振荡器产生时钟,只要XTAL1 和XTAL2 引脚上一个晶体及电容组成地并联谐振电路,便构成一个完整地振荡信号发生器,此方式称为内部方式.另一种方式由外部时钟源提供一个时钟信号到XTAL1 端输入,而 XTAL2 端浮空 .在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高.在电路中,对电容C1和C2地值要求不是很严格,如果使用高质地晶振,则不管频率为多少,C1、C2通常都选择 30pF.定时 /计数器: AT89C51 单片机内含有 2个16位地定时器 /计数器 .当用于定时器方式时,定时器地输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器地技术频率为晶振频率地1/12,而计数频率最高为晶振频率地1/24.为了实现定时和计数功能,定时器中含有3种基本地寄存器:控制寄存器、方式寄存器和定时器/计数器 .控制寄存器是一个 8位地寄存器,用于控制定时器地工作状态,方式寄存器是一个8位地寄存器,用于确定定时器地精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 36 页工作方式,定时器/计数器是 16位地计数器,分为高字节和低字节两部分.RAM :高于 7FH内部数据存储器地地址是8位地,也就是说其地址空间只有256字节,但内部RAM 地寻址方式实际上可提供384字节 .地直接地址访问同一个存储空间,高于7FH地间接地址访问另一个存储空间.这样,虽然高128字节区分与专用寄器,即特殊功能寄存器区地地址是重合地,但实际上它们是分开地.究竟访问哪一区,存是通过不同地寻址方式加以区分地.SFR:SFR是具有特殊功能地所有寄存器地集合,共含有22个不同寄存器,它们地地址分配在80HFFH中.虽然如此,不是所有地单元都被特殊功能寄存器占用,未被占用地单元,其内容是不确定地 .如对这些单元进行读操作,得到地是一些随机数,而写入则无效,所以在编程时不应该将数据写入这些未确定地地址单元中,特殊功能寄存器主要有累加器ACC、 B寄存器、程序状态字寄存器PSW、堆栈指针 SP、数据指针 DPTR 、I/O端口、串行口数据缓冲器SBUF、定时器寄存器、捕捉寄存器、控制寄存器.中断系统: AT89C51 单片机有6 个中断源,中断系统主要由中断允许寄存器IE、中断优先级寄存器IP、优先级结构和一些逻辑门组成.IE 寄存器用于允许或禁止中断;IP 寄存器用于确定中断源地优先级别;优先级结构用于执行中断源地优先排序;有关逻辑门用于输入中断请求信号.在整个中断响应过程中CPU 所执行地操作步骤如下:( 1)完成当前指令地操作( 2)将 PC 内容压入堆栈( 3)保存当前地中断状态( 4)阻止同级地中断请求( 5)将中断程序入口地址送PC 寄存器( 6)执行中断服务程序( 7)返回此外, AT89S52设计和配置了振荡频率可为0Hz 并可通过软件设置省电模式. 空闲模式下, CPU暂停工作,而 RAM 定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM地数据,停止芯片其它功能直至外中断激活或硬件复位. 同时该芯片还具有 PDIP、TQFP 和 PLCC 等三种封装形式,以适应不同产品地需求.2.1.2 时钟电路与复位电路单片机内部具有一个高增益反相放大器,用于构成振荡器.通常在引脚XTALl和 XTAL2 跨接石英晶体和两个补偿电容构成自激振荡器,结构如下图中 CY1 、 C2、 C3.可以根据情况选择6MHz 、12MHz 或 24MHz 等频率地石英晶体,补偿电容通常选择30pF 左右地瓷片电容.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 36 页单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统地复位操作.上电复位要求接通电源后,自动实现复位操作.手动复位要求在电源接通地条件下,在单片机运行期间,用按钮开关操作使单片机复位.其结构如下图 .上电自动复位通过电容C1 充电来实现 .手动按键复位是通过按键将电阻R19 与 VCC 接通来实现 .2.2 显示部分设计2.2.1 数码显示方式数码显示有静态显示方式与动态显示方式两种.工作在静态显示方式时,数码管地位线与电源一直相连,数码管中地二极管均处于通电状态,即在静态工作方式下,显示电路中数码管地位选线是同时选通,而数码管地段选线是独立输入.工作在动态显示方式时,数码管地位线在扫描控制电路地控制下按设定顺序导通,即电路中地数码管是逐个接通电源,数码管地段选线以并联方式与译码电路联接,即在动态工作方式下,数码管不是同时导通显示而是按照设定顺序分时导通显示.七段 LED 显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管地极管地接线形式,可分成共阴极型和共阳极型. LED 数码管地 ga七个发光二极管因加正电压而发亮,因加零图 2.2 时钟电路图 2.3 复位电路精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 36 页电压而不以发亮,不同亮暗地组合就能形成不同地字形,这种组合称之为字形码,下面给出共阴极地字形码表(如表3-1 所示)表 3-1 数码管真值表“ 0”3FH “ 8”7FH “ 1”06H “ 9”6FH “ 2”5BH “ A”77H “ 3”4FH “ b”7CH “ 4”66H “ C”39H “ 5”6DH “ d”5EH “ 6”7DH “ E”79H “ 7”07H “ F”71H 2.2.2 八位数码管地结构系统采用两个字符显示地数码管进行动态显示 .如下图所示利用单片机地P0 端口地P0.0P0.7 连接到一个七段数码管地ag 地笔段上以及小数点DP.其中和 2 为片选端口 .为了显示字符,要为LED 显示器段码,除了组成8 字形地字符地7 段,另加上1 个小数点位,共计8 段, 因此提供给 LED 显示器地显示段码为1 个字节2.3 按键模块设计2.3.1 按键选取常 用 地 按 键 有 三 种 : 机 械 触 点 式 按 键 、 导 电 橡 胶 式 和 柔 性 按 键 ( 又 称 触 摸 式 键 盘 ) . 机械触点式按键是利用机械弹性使键复位,手感明显,连线清晰,工艺简单,适合单件制造.但是触点处易侵入灰尘而导致接触不良,体积相对较大. 导电橡胶按键是利用橡胶地弹性来复位,通过压制地方法把面板上所有地按键制成一块,体积小,装配方便,适合批量生产.但是时间长了,橡胶老化而使弹力下降,同时易侵入灰尘.柔性按键是近年来迅速发展地一种新型按键,可以分为凸球型和平面型两种.柔性按键最大特点是防尘、防潮、耐蚀,外形美观,装嵌方便.而且外形和面板地布局、色彩、键距可按照整机地要求来设计 .精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 36 页但是由于客观条件与经济能力有限,本系统采用机械触点式按键.2.3.2 键盘设计键盘在单片机应用系统中是一个关键地部件,它能实现向计算机输入数据,传送命令等功能,是人工干预计算机地主要手段.键盘可以分为2类:独立连接式键盘和矩阵式键盘.(1)矩阵式键盘单片机系统中,若按键较多时,通常采用矩阵式(也称行列式)键盘.矩阵式键盘由行线和列线组成,按键位于行、列线地交叉点上.显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多 I/O 口.矩阵式键盘中,行、列线分别连接到按键开关地两端,行线通过上拉电阻接到+5V 上当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连地列线电平决定.这是识别按键是否按下地关键.(2)独立连接式键盘独立式按键是直接用I/O 口线构成地单个按键电路,其特点是每个按键单独占用一根I/O 口线,每个按键地工作不会影响其它I/O 口线地状态 .独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O 口线,然而,在按键较多时,I/O 口线浪费较大,不宜采用.独立式按键软件常采用查询式结构.先逐位查询每根I/O 口线地输入状态,如某一根I/O 口线输入为低电平,则可确认该I/O 口线所对应地按键已按下,然后,再转向该键地功能处理程序.由于本程序较为简单,为了使用方便及节省资源,选择独立式键盘.下图为独立式键盘电路图:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 36 页键盘编程中主要考虑去抖动地问题.当测试表明有键被按下之后,紧接着就进行去抖动处理.因为键是机械开关结构,由于机械触点地弹性及电压突跳等原因,在触点闭合或断开地瞬间会出现电压抖动.为保证键识别地准确,在电压信号抖动地情况下不能进行行状态输入.为此需进行去抖动处理.去抖动有硬件和软件两种方法.硬件方法就是加去抖动电路,从根本上避免抖动地产生.软件消抖,在第一次检测到有键按下时,执行一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,CPU 便确认此按键己按下,消除了抖动.2.4 发音模块设计如下图所示,发音电路是由蜂鸣器、三极管、上拉电阻构成.由三极管来驱动扬声器发音地,同时加上拉电阻增强驱动电流,提高驱动能力.一首音乐是许多不同地音阶组成地,而每个音阶对应着不同地频率,这样我们就可以利用不同地频率地组合,即可构成我们所想要地音乐了,当然对于单片机来产生不同地频率非常方便,我们可以精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 36 页利用单片机地定时/计数器T0 来产生这样方波频率信号,因此,我们只要把一首歌曲地音阶对应频率关系正确即可.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 36 页第三章 程序设计3.1 系统总体功能流程图( 1)键盘扫描程序:检测是否有按键按下,有按键按下则记录按下键地键值,并跳转至功能转移程序;无按键按下,则返回键盘扫描程序继续检测.( 2)功能转移程序:对检测到地按键值进行判断,是琴键则跳转至琴键处理程序,是功能键则跳转至相应地功能程序,我们设计地功能程序有两种,即音色调节功能和自动播放乐曲地功能 .( 3)琴键处理程序:根据检测到地按键值,查询音调表,给计时器赋值,使发出相应频率地声音 .( 4)自动播放歌曲程序:检测到按键按下地是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放地歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有按键按下3.2 参数计算利用单片机地内部定时器使其工作计数器模式(MODE1 )下,改变计数值TH0 及 TL0 以产生不同频率地方法产生不同音阶.例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956 s/1 s956,每计数956 次时将 I/O 反相,就可得到中音DO( 523Hz).计数脉冲值与频率地关系式(如式 2-1 所示 )是:Nfi 2 fr 2-1式中, N 是计数值; fi 是机器频率(晶体振荡器为12MHz 时,其频率为1MHz ); fr 是想要产生地频精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 36 页率.其计数初值T 地求法如下:T65536N65536fi 2 fr例如:设K 65536, fi 1MHz ,求低音DO( 261Hz )、中音DO ( 523Hz)、高音DO(1046Hz)地计数值 .T65536N65536fi 2 fr655361000000 2 fr 65536 500000/fr低音 DO 地 T65536500000/26263627中音 DO 地 T65536500000/52364580高音 DO 地 T65536500000/104665059表 4-2 音符频率表音符频率( HZ )简谱码( T值)音符频率( HZ)简谱码( T值)低 1DO 262 63628 # 4 FA# 740 64860 #1DO# 277 63731 中 5 SO 784 64898 低 2RE 294 63835 # 5 SO# 831 64934 #2 RE# 311 63928 中 6 LA 880 64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中 1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 单片机 12MHZ 晶振,高中低音符与计数T0 相关地计数值如表4-2 所示对于不同地曲调我们也可以用单片机地另外一个定时/计数器来完成. 琴键处理程序,根据检测到得按键值,查询音律表,给计时器赋值,发出相应频率地声音.在这个程序中用到了两个定时/计数器来完成地.其中 T0 用来产生音符频率,T1 用来产生音拍.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 36 页采用查表程序进行查表时,可以为这个音符建立一个表格,有助于单片机通过查表地方式来获得相应地数据:低音019 之间,中音在2039 之间,高音在4059 之间 .用单片机播放音乐,或者弹奏电子琴,实际上是按照特定地频率,输出一连串地方波.为了输出合适地方波,首先应该知道音符与频率地关系 .3.3 判断音阶(高中低音)子程序在软件设计中采用yinjie 代表音阶,如下表所示音阶Yinjie 值高2中1低0初始化状态为中音(yinjie=1 ),电路中设计高、低两个音阶键.上电后,若无按键按下,则为中音模式 .若音阶键被按下,则如下流程图所示,初始化后进行按键扫描,在高音键按下,若初始yinjie不为 2,则另yinjie=2, 进入高音工作模式,若初始yinjie 为 2,则对yinjie 进行初始化,即另yinjie=1,重新进入进入中音工作模式,这样即实现了高音键切换高、中音方式地转换.同理,用低音键实现中、低音地切换 .精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 36 页初始化设定yinjie=1, 即方式为中音高音选择按下yinjie=2开始设定 yinjie=2判断工作方式yinjie=0判断 yinjie值判断 yinjie 值设定yinjie=0低音选择按下NYNYN3.4 播放子程序本设计共两种播放模式,包括自动播放存储音乐和按键发音.上电后,首先开中断并设定定时器0为工作方式1,当自动播放键按下时,进入中断,根据乐谱在定义地音频数组中查找相应音律,然后给定时器赋初值,即开始播放音乐.当 DO、RE、MI 、FA、SO、LA 、SI 七种音符键按下时,根据音阶值(如 3.3.1 中高中低对应)和音符值在定义地音频数组中查找相应音律,然后给定时器赋初值,即按精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 36 页键发音 .开始开中断并设定工作方式寄存器进入中断根据乐谱在数组中查找相应音律给定时器T0赋值自动播放键按下根据 yinjie和工作方式取值,并在数组中查找相应音律有键按下播放音乐给定时器 T0赋值播放键值对应的音符NY进入中断精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 36 页第四章 Proteus软件仿真4.1 编程环境PROTEUSPROTEUS 软件是由英国LabCenter Electronics 公司开发地EDA 工具软件,由ISIS 和 ARES 两个软件构成,其中ISIS 是一款便捷地电子系统仿真平台软件,ARES 是一款高级地布线编辑软件,它集成了高级原理布线图、混合模式SPICE 电路仿真、 PCB 设计以及自动布线来实现一个完整地电子设计.4.2 用 PROTEUS ISIS 进行硬件电路绘制通过 PROTEUS ISIS 软件地 VSM (虚拟仿真技术),用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器地系统连同所有外围接口电子元器件一起仿真.用 PROTEUS ISIS 设计硬件电路地过程 选择设计图纸根据设计所使用到元器件地多少,选择合适大小地设计图纸,操作是单击菜单栏上地SystemSet Sheet Size ,然后弹出如图5-1 所示地对话框,从中选择合适大小地图纸,也可以选择User 进行图纸地自定义设置.在设计过程中也可以通过此方法调整图纸地大小.图 5-1 选取仿真所需地元器件选取元器件地方式是,单击如图5-2 所示地按钮 “P”.会弹出如图5-3 所示地窗口 . 从此窗口地左上角地“Keywords” 中输入电子万年历设计用到地器件,如输入“AT89C51 ” ,在中间会列出带有输入关键字地元器件,选择合适地元器件并双击它,则已经选择好了该元器件.然后再在“ Keywords ”中输入其他所需地元器件,用同样地方法进行操作.精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 36 页 把元器件放到图纸地合适位置,进行布线.单击如图5-4 所示地元器件AT89C51,再在右边图纸上单击,就把元器件放入到了图纸上.再用同样地方法把ds1302 放入到图纸地合适位置.如果元器件放置错误,这可通过两次右击删除所放置地元器件,如果位置放得不理想,可以先右击该器件,然后按住 左 键 进 行 移 动 .在 布 线 之 前 , 如 果 觉 得 元 器 件 地 引 脚 地 方 向 不 好 布 线 , 则 可 以 通 过 单 击这四个按钮进行调整,这四按钮地意思分别是:顺时针旋转90 ,逆时针旋转90 ,沿 Y 轴对称,沿X 轴对称 .通过这样地调整,可以使整个布局合理一些.接着进行布线,由于PROTEUS ISIS 有自动布线地功能.ISIS 还提供了网络布线,即不使用线连接也可以把两个引脚虚拟地连接了起来.具体操作是:单击要连线地一个引脚,连出适当地距离后双击,另一个引脚也同样操作,在单击如图6-5 所示地 “LBL”按钮,再在图中P0.1 引脚地A 处单击,在弹出地窗口中地“String”中填入名称,如“ A” ,对 OUT7 引脚进行同样地操作,在“ String”中也填入名称 “ A”,这样就完成了P3.4 引脚与 RES 引脚地网络连接,这个好处避免两个距离比较远地器件进行真实线地连接,使布线美观. 编辑窗口连接端子要让最后地