1、湖南文理学院课程设计报告课程名称: 单片机课程设计 专业班级: 自动化 10102 班 17 号 学生姓名: 肖 葵 指导教师: 王南兰 完成时间: 2013 年 6 月 13 日 报告成绩: 湖南文理学院制评阅意见:评阅教师 日期 2013.6.20 I摘 要随着社会的发展进步,音乐逐渐成为人们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。人们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着
2、重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用 AT89S52 单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有 16 个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。关键词:AT89S51; 音色节拍器;电子琴IIABSTRACTWith the development of our society, music has become an important part o
3、f 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
4、, 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 fu
5、nctions 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
6、 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 s
7、peaker electronic organ基于单片机的电子琴设计目 录第一章 设计方案分析 .11.1 设计背景 .11.2 设计任务 .12.1 总体设计 .1第二章 电子琴总体电路图设计 .32.1 单片机最小系统 .32.1.1 AT89S52 简介 .32.1.2 时钟电路与复位电路 .72.2 显示部分设计 .72.2.1 数码显示方式 .72.2.2 八位数码管的结构 .82.3 按键模块设计 .82.3.1 按键选取 .92.3.2 键盘设计 .92.4 发音模块设计 .10第三章 程序设计 .123.1 系统总体功能流程图 .123.2 参数计算 .123.3 判断音阶(高
8、中低音)子程序 .143.4 播放子程序 .15第四章 Proteus 软件仿真 .174.1 编程环境 PROTEUS .174.2 用 PROTEUS ISIS 进行硬件电路绘制 .174.3 下载 HEX 文件 .194.4 软件调试 .20心得体会 .22参考文献 .23附录一 原理图 .24附录二 源代码 .25基于单片机的电子琴设计1第一章 设计方案分析1.1 设计背景随着电子科学技术的飞速发展,电子技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们带来更多的生活乐趣。基于当前市场上的玩具需求量增大,其中电子琴就是一个很好的应用方面。单片机技术使我们可以利用软硬
9、件来实现电子琴的功能,从而可以实现电子琴的微型化,可以用作玩具琴、音乐转盘以及音乐童车等等。并且可以进行一定的功能扩展。鉴于传统电子琴可以用键盘上的“1”到 “A”键演奏从低 So 到高 DO 等 11 个音,从而也可以通过单片机实现对十个按键的扩展,实现七个音符键的高、中、低 21 个音调的显示播放和任意音乐的自动播放。该设计将十个音键制作成独立键盘,其中七个为音符键,三个为控制键,并用数码管进行显示,使电子琴的功能更加完美。不但可以实现对按键的显示,而且可以实现对音乐的自动存储和播放,使该设计功能更加完善。1.2 设计任务实现电子琴发声控制系统;要求电路实现如下功能:利用蜂鸣器作为发声部件
10、,两个数码管作为显示部件,设置 10 个按键,实现高音、中音、低音的 1、2、3、4、5、6、7 的发音。并在存储一首歌曲的内容,可以实现自动播放。用 PROTEUS 实现的电子琴仿真设计,通过 Protel 绘制原理图。2.1 总体设计实现本次设计的方案有多种,下面比较说明一下最佳方案的选择。方案一:采用单个的逻辑器件组合音乐是有由不同的音阶组成的,而不同的音阶又是由不同的频率发出的,那么利用不同的频率,就可以发出不同的音乐了。我们知道计数器 8253 可以产生任意频率的方波频率信号,因此,我们只要把一首歌曲的音阶对应频率与计数器的频率对应起来就可通过计数器产生音乐了。根据本实验要求,采用
11、8279 将键扫得到的键值通过查表得到相应的 8253 的频率值,将从 8253 得到相对应的按键弹奏信号经过 LM386 进行放大,再用喇叭输出,就实现了简易电子琴的基本功能,也就完成了实验的要求。基于单片机的电子琴设计2方案二:采用 AT89S51 单片机作为主控芯片,设置键盘、蜂鸣器等外围器件,另外还用到一些简单器件如:两位数码管,和 NPN 型三极管及电阻等。利用按键实现音符和音调的输入;两位的数码管进行被操作的按键显示;用 NPN 型三极管 8550 实现低音频功率放大;最后用蜂鸣器发音。方案一采用单个的逻辑器件组合实现。这样虽然比较直观,逻辑器件分工鲜明,思路也比清晰,一目了然,但
12、是由于元器件种类、个数繁多,而过于复杂的硬件电路也容易引起系统的精度不高、体积过大等不利因素。例如七个不同的音符是由七个不同的频率来控制发出的,所用仪器之多显而易见。方案二与方案三相比,主控芯片采用AT89S51 单片机,它是大规模集成电路技术发展的产物,具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。同时具有强大的控制功能和灵活的编程实现特性,由于本设计主要用于人们娱乐方面,因此在设计上尽量使其安全以及简单易操作。而第三种方案具有经济可行性、技术可行性、实物应用性。综上所述,本次课程设计采用第二种方案。基于单片机的电子琴设计3第二章 电子琴总体电路图设计电子琴总体电路分别由单
13、片机最小系统模块、显示模块、按键模块、发音模块四个模块组成。如下图所示。8 9 S 5 2单片机按键模块发音单元显示模块2.1 单片机最小系统 2.1.1 AT89S52 简介本系统采用的是美国 ATMEL 公司生产的AT89C51 单片机,首先我们来熟悉一下 AT89S52 单片机的外部引脚和内部结构。其引脚图如图 2.1 所示。1.单片机的引脚功能AT89S52 单片机有 40 个引脚。 Vcc:电源电压+5V GND:接地 P0 口:P0 口是一组 8 位漏极开路型双向 I/O口,也即地址/数据总线复用口。作为输出口用时,每位能驱动 8 个 TTL 逻辑门电路,对端口写 “1”可作为高阻
14、抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线服用,在访问期间激活内部上拉电阻。在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时要求外接上拉电阻。 图 2.1 单片机引脚图基于单片机的电子琴设计4 P1 口:P1 口是一个带内部上拉电阻的 8 位双向 I/O,P1 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写 “1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。Flash 编程和程序校验期间,P1 接收
15、低 8 位地址。 P2 口:P2 口是一个带内部上拉电阻的 8 位双向 I/O,P2 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写 “1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVXDPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(MOVX Ri 指令)时,P2 口线上的内容(也即特殊功能寄存器( SFR)区中 P2 寄存器的内容) ,在整个访问期间不改变。Flash 编
16、程和程序校验期间,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 INT
17、0(外中断 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 位字节。即使不访问外部存
18、储器,ALE 仍以时钟振荡频率基于单片机的电子琴设计5的 1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG) 。如有必要,可通过多特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置,可禁止ALE 操作。该位置后,只有一条 MOVX 和 MOVC 指令 ALE 才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。 PSEN:程序存储允许(PSEN )输出是外部程序存储器的读选通信号,当AT89C51 由外部程序存储
19、器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的 PSEN 信号。 EA/VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平(接地) 。需要注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的变成电压 Vpp. XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。AT89C51 单片机内
20、部结构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 的操作
21、与AT89C51 和AT89C52 一样。AT89C51系列单片机的串行通信口可以工作于同步和异步通信方式。当工作于异步方式时,它具有全双工的操作功能,也就是说,它可以同时进行数据的发送和接收。串行口内的接收器采用的是双缓冲结构,能够在接收到的第一个字节从接收寄存器读走之前就开始接收第二个字节(当然,如果第二个字节接收完毕,而第一个字节仍然没有被读走,那将会丢掉一个字节)。串行口的发送和接收操作都是通过特殊功能寄存器中的数据缓冲寄存器SBUF进行的,但在SBUF 的内部,接收寄存器和发送寄存器在物理结构上是完全独立的。如果将数据写入SBUF,数据会被送入发送寄存器准备发送。如果执行SBUF指令
22、,则读出的数据一定来自接收缓存器。因此,CPU对SBUF的读写,实际上是分别访问2个不同的寄存器。这2个寄存器的功能决不能混淆。 振荡电路:AT89C51系列单片机的内部振荡器,由一个单极反相器组成。XTAL1反相器的输入,XTAL2 为反相器的输出。可以利用它内部的振荡器产生时钟,只要基于单片机的电子琴设计6XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,此方式称为内部方式。另一种方式由外部时钟源提供一个时钟信号到XTAL1端输入,而XTAL2 端浮空。在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高。在电路中,
23、对电容C1和C2的值要求不是很严格,如果使用高质的晶振,则不管频率为多少,C1、C2通常都选择30pF。 定时/计数器:AT89C51单片机内含有2个16位的定时器 /计数器。当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加1,而一个机器周期包含有12个振荡周期,所以,定时器的技术频率为晶振频率的1/12 ,而计数频率最高为晶振频率的1/24。为了实现定时和计数功能,定时器中含有 3种基本的寄存器:控制寄存器、方式寄存器和定时器/计数器。控制寄存器是一个 8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个8位的寄存器,用于确定定时器的工作方式,定时器/计数
24、器是16位的计数器,分为高字节和低字节两部分。 RAM:高于7FH 内部数据存储器的地址是8位的,也就是说其地址空间只有256字节,但内部RAM 的寻址方式实际上可提供384字节。的直接地址访问同一个存储空间,高于7FH的间接地址访问另一个存储空间。这样,虽然高128字节区分与专用寄器 ,即特殊功能寄存器区的地址是重合的,但实际上它们是分开的。究竟访问哪一区,存是通过不同的寻址方式加以区分的。 SFR:SFR是具有特殊功能的所有寄存器的集合,共含有22个不同寄存器,它们的地址分配在80HFFH中。虽然如此,不是所有的单元都被特殊功能寄存器占用,未被占用的单元,其内容是不确定的。如对这些单元进行
25、读操作,得到的是一些随机数,而写入则无效,所以在编程时不应该将数据写入这些未确定的地址单元中,特殊功能寄存器主要有累加器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 定时计数器,串行口,外中断系统可继续工作,掉电模