当前位置:
文档之家› 广东海洋大学《单片机原理及应用》课程设计—单片机电子琴设计
广东海洋大学《单片机原理及应用》课程设计—单片机电子琴设计
2.课题设计的任务及要求
我所选择的的任务题目是:设计一个电子琴。利用所给键盘的 1,2,3,4, 5,6,7,8 八个键,能够发出 8 个不同的音调,并且要求按下按键发声,松开 延时一段时间停止,中间再按别的键则发另一音调的声音 a.首先按设计题目要求制订方案。 b.设计出硬件原理图。 c.编写程序。 d.用 Proteus 软件进行系统仿真,直至正确地实现系统功能。 本文的主要内容是用 AT89C51 单片机为核心控制元件, 设计一个简单的电子 琴。以单片机作为主控核心,与键盘、蜂鸣器等模块组成核心主控制模块,在主 控模块上设有 8 个按键。 定时器按设置的定时参数产生中断, 由于定时参数不同, 就会发出不同频率的脉冲, 不同频率的脉冲经喇叭驱动电路放大滤波后,就会发 出不同音调。 先根据要求设计硬件电路和编写相应的程序,然后进行仿真调试,最后细心 焊接硬件电路图,将程序烤入芯片中,最终达到设计目的。本系统运行稳定,其 优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定 的实用和参考价值。
3.3.2 键盘设计
键盘在单片机应用系统中是一个关键的部件,它能实现向计算机输入数据, 传送命令等功能,是人工干预计算机的主要手段。 键盘可以分为 2 类:独立连接式键盘和矩阵式键盘。 (1)矩阵式键盘 单片机系统中,若按键较多时,通常采用矩阵式(也称行列式)键盘。矩阵 式键盘由行线和列线组成,按键位于行、列线的交叉点上。显然,在按键数量较 多时,矩阵式键盘较之独立式按键键盘要节省很多 I/O 口。 矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接 到+5V 上.当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导 通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下 的关键。 (2)独立连接式键盘 独立式按键是直接用 I/O 口线构成的单个按键电路, 其特点是每个按键单独 占用一根 I/O 口线, 每个按键的工作不会影响其它 I/O 口线的状态。独立式按键 电路配置灵活,软件结构简单,但每个按键必须占用一根 I/O 口线,然而,在按 键较多时,I/O 口线浪费较大,不宜采用。 独立式按键软件常采用查询式结构。先逐位查询每根 I/O 口线的输入状态, 如某一根 I/O 口线输入为低电平,则可确认该 I/O 口线所对应的按键已按下,然 后,再转向该键的功能处理程序。
3.2.2 复位电路
单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复 位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接 通的条件下, 在单片机运行期间, 用按钮开关操作使单片机复位。 其结构如下图。 上电自动复位通过电容 C3 充电来实现。
3
3.2.3 音频放大电路
2
3.2 单片机的最小工作系统
单片机加上适当的外围器件和应用程序, 构成的应用系统称为最小系统。
3.2.1 时钟电路
单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚 XTALl 和 XTAL2 跨接石英晶体和两个补偿电容构成自激振荡器,结构图 2 中 X1、 C1、C2。可以根据情况选择 6MHz、12MHz 或 24MHz 等频率的石英晶体,补偿电容 通常选择 22pF 左右的瓷片电容。
1.课题设计目的及其意义
单片机 (单片微型计算机) 是大规模集成电路技术发展的产物, 具有高性能、 高速度、体积小、价格低廉、稳定可靠等特点。单片机的应用相当广泛,从平常 的家用电器到航空航天系统和国防军事、尖端武器都能找到它的身影。因此,单 片机的开发应用已成为高科技和工程领域的一项重大课题。 音乐随着人们的生活水平也逐步提高已经成为了我们生活中很重要的一部 分,在工作和学习之余,欣赏音乐不仅使身心得到放松,同时也提高人们的精神 品质和个人素养。当代,爱好音乐的年轻人越来越多,也有不少人自己练习弹奏 乐器, 作为业余爱好和一种放松的手段,鉴于一些乐器学习难度大需花费太多精 力,且其价格太过于高昂,使得一部分有这种想法的人不得不放弃这种想法,而 电子琴又是一种新型的键盘乐器,它是现代电子科技与音乐结合的产物,价格相 对便宜,能够满足一般爱好者的需求,因此,在现代音乐中扮演着重要的角色。 故简易电子琴的研制具有一定的社会意义。
使用PNP管来放大,其中发射极接5V电源,集电极接喇叭,电路中的电容是 用来隔离直流电用的。 PNP管放大原理:当PNP管的VC<VB<VE时,使得集电结反偏,发射结正偏时, 管子的发射极电流流入管子, 基极电流和集电极电流流出管子,且集电极电流跟 基极电流之间成β关系,三极电流满足IE=IB+IC=IB(1+β·IB)。即,基极电流 可以控制集电极电流,这种控制作用就称为冲,只要算出某一音频的周期(1/频率) ,再将此周期除以 2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将 P1.0 反相, 然后重复计时再反相。 就可在 P1.0 引脚上得到此频率的脉冲。 利用 AT89C51 的内部定时器使其工作计数器模式(MODE1)下,改变计数值 TH0 及 TL0 以产生 不同频率的方法产生不同音阶。 例如: TH0=(65536-640)/256; TL0=(65536-640)%256; 通过改变里面 640 的数值就可以改变其频率。
1
把一首歌曲的音阶对应频率与计数器的频率对应起来就可通过计数器产生音乐 了。根据本实验要求,采用 8279 将键扫得到的键值通过查表得到相应的 8253 的频率值,将从 8253 得到相对应的按键弹奏信号经过 LM386 进行放大,再用喇 叭输出,就实现了简易电子琴的基本功能,也就完成了实验的要求。 方案二: 采用 AT89S51 单片机作为主控芯片, 设置键盘、 蜂鸣器等外围器件, 另外还用到一些简单器件如:三极管、电阻、独立按键等。利用按键实现音符和 音调的输入;用三极管实现低音频功率放大;最后用蜂鸣器发音。 两种方案的比较: 方案一采用单个的逻辑器件组合实现。这样虽然比较直观,逻辑器件分工鲜 明,思路也比清晰,一目了然,但是由于元器件种类、个数繁多,而过于复杂的 硬件电路也容易引起系统的精度不高、体积过大等不利因素。例如七个不同的音 符是由七个不同的频率来控制发出的,所用仪器之多显而易见。方案二与方案一 相比,主控芯片采用 AT89S51 单片机,它是大规模集成电路技术发展的产物,具 有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。同时具有 强大的控制功能和灵活的编程实现特性,由于本设计主要用于人们娱乐方面,因 此在设计上尽量使其安全以及简单易操作。而第三种方案具有经济可行性、技术 可行性、实物应用性。 综上所述,本次课程设计采用第二种方案。 系统流程图
5
由于本程序较为简单,为了使用方便及节省资源,选择独立式键盘。下图为 独立式键盘电路图:
3.3.3 消除按键抖动
键盘编程中主要考虑去抖动的问题。 当测试表明有键被按下之后,紧接着就进行去抖动处理。因为键是机械开关 结构, 由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现 电压抖动。 为保证键识别的准确, 在电压信号抖动的情况下不能进行行状态输入。 为此需进行去抖动处理。 去抖动有硬件和软件两种方法。硬件方法就是加去抖动 电路,从根本上避免抖动的产生。软件消抖,在第一次检测到有键按下时,执行 一段延时程序之后,再检测此按键,如果第二次检测结果仍为按下状态,CPU 便 确认此按键己按下,消除了抖动。
目 录
1.课题设计目的及其意义.......................................................... 1 2.课题设计的任务及要求.......................................................... 1 3.系统总体方案及单元设计...................................................... 1 3.1 总体设计.......................................................................... 1 3.2 单片机的最小工作系统................................................. 3 3.2.1 时钟电路............................................................... 3 3.2.2 复位电路................................................................. 3 3.2.3 音频放大电路........................................................4 3.3 按键部分设计................................................................. 5 3.3.1 操作键设计.............................................................5 3.3.2 键盘设计................................................................. 5 3.3.3 消除按键抖动........................................................6 4.系统软件设计.......................................................................... 7 4.1 系统的软件程序(C 语言) :........................................7 4.2 系统的软件的调试仿真............................................... 10 5.设计心得与体会.................................................................... 12