该电子琴以AT89C51单片机为主控芯片,具有强大的控制功能和灵活的编程实现特性,处理速度快。外围电路由电源、时钟电路、振荡电路、键盘电路、发音电路、显示电路构成,硬件电路简单。设计产生八个音阶,通过软件控制改变单片机内部定时器的定时时间,产生不同频率来获得需要弹奏的音符。当电源打开,按下不同的按键会发出不同的音调,同时伴有LED灯指示具体哪个按键被按下。该设计硬件电路简单,运行稳定可靠,按键少,功能简单,操作方便,简单易学,在实际生活中具有一定的实用价值。
本次以单片机为选题,分别从硬件与软件两方面对简易电子琴进行了详细的分析与讨论,包括所选器件、各个功能模块、软件程序以及原理图等。通过这次的设计,把自己所学习的理论知识与实践紧密结合在一起,从实践中加深对单片机的认识与理解,也从中找到理论的不足之处,具有一定意义。
1. 系统总体方案
1.1方案论证
键盘作为单片机系统的输入设备分为非编码键盘和编码键盘。闭合键的识别由专门的硬件编码器来实现以产生键值的称为编码键盘,通过软件识别闭合键的键盘称为非编码键盘。相比较,非编码键盘功能简单,处理任务少,设计简单,运用更为广泛,所以选择非编码键盘。常见的非编码键盘分为:独立键盘和矩阵键盘。
方案一:用独立式键盘作为系统的输入设备,每一个按键占用一根I/O口线,分别与单片机的某端口相连。按键之间相互独立,可以通过软件检测I/O线的电平状态判断具体是哪个按键被按下。这种键盘优点是电路简单,编写判断按键按下的程序较简单,一般适用于按键数目较少的场合。缺点是占用I/O口线较多,一个按键需要一根I/O线,不适合按键较多的电路。
方案二:矩阵式键盘也就是通常所称的行列式键盘是由行线和列线共同组成。一组作为行线,另一组作为列线,按键分别位于各个行线和列线的交叉点上。对按键的识别方法通常用行扫描法,因为在矩阵键盘中行线和列线为多个按键公用,所以只要读取按键所在的行线和列线的电平状态就可以判断具体哪个按键被按下。这种键盘适合用于按键较多的电路,它的优点是可以节省I/O口线,在占用口线较多的电路中运用广泛。缺点是电路复杂,编写判定按键按下的程序复杂。
因为考虑到后续工作中可能需要对电子琴的设计进行一些改进,适当增加一些弹奏按键和功能按键,这样就需要占用更多的I/O口线。为了节省I/O口线为后续改进做铺垫,选择方案二,采用矩阵键盘。
1.2 本系统设计内容
本文以AT89C51芯片作为主要核心部件,设计一个八按键的电子琴。电源模块供电,八按键作为输入控制,LED显示模块和蜂鸣器作为输出设备,利用Keil和proteus软件对单片机进行编程和仿真相结合,利用单片机的内部定时器产生中断,定时参数不同就会产生不同的频率方波,经发音电路放大后,就会发出不同的音调,从而实现电子琴的弹奏功能。在弹奏的过程中,伴有LED灯指示。
1.3 系统设计要求
本系统主要有两个任务,一是电子琴弹奏,另一个是弹奏过程显示按键。音调的产生主要是利用单片机内部定时器产生不同的脉冲,经蜂鸣器驱动电路放大产生。具体要求如下所示:
(1) 实现电子琴的基本功能,可以弹奏一些简单的乐曲。
(2) 将键盘用作电子琴的按键,每个键代表不同的音符。
(3) 键盘的排列顺序要符合电子琴的按键顺序。
(4) 按下音阶控制键,产生相应的声音。
1.4 系统框图
图1 系统框图 51单片机八音阶电子琴设计+流程图+程序代码(2):http://www.751com.cn/zidonghua/lunwen_566.html