0 引言
随着计算机在社会各领域的渗透,单片机的应用正在不断地走向深入,同时带动着工业、农业、商业、家电以及玩具的日新月异更新,极大地提高了电子电路及系统设计质量和效率。本设计是以主控芯片STC89C5l为中心器件,辅以小键盘、LCD显示和功放电路及扬声器等来设计电子琴系统。同时详细论述了该系统的设计过程及关键技术。
1 系统硬件组成
电子琴的控制电路分为单片机STC89C51、工作指示LED、LCD显示器、按键输入、喇叭接口等几部分。其硬件电路结构框图如图1所示。
1.1 单片机STC89C51简介
STC单片机是一款增强型5l单片机,完全兼容MCS-51。STC89C51可以代替AT89C51,而且功能更强,速度更快,寿命更长,价格更低。该单片机具有40个引脚,采用双列直插DIP-40封装。STC89C51可以完成ISP在线编程功能,而AT89C51则不能。因此,将AT89C51中的程序直接烧录到STC89C51中后,STC89C5l就可以代替AT89C51直接工作。STC推出的系列51单片机芯片全面兼容其它51单片机。 STC89C51内部有E2PROM,可以在程序中修改,而且断电不丢失数据。此外,还增加了两级中断优先级等等,STC89系列单片机的基本特性如图2 所示。
通常电子琴所输入的音阶值都先存入变量数组中,演奏时才逐一取出来播放单音。程序中的变量使用的是内部存储器RAM,范围为空间30H~7FH,因此,其程序内存规划是:RAM地址30H~70H存放音阶值,最大内存空间为64字节;RAM地址71H~7FH存放程序其他变量。程序执行后,工作指示LED 闪动,表示程序开始执行。当按下键盘组中的相对按键时,压电喇叭会发出相对音阶单音,全系统共有2个8度音阶,DO~SI,HI DO~HI SI,14个音阶,所输入的单音会存入89C5l内,至多可以输入64个单音,并可以一起演奏出来,同时还有清除存储功能,可将原数据清除后再重新输入。
1.2 LCD硬件接口
本设计所用LCD的引脚如图3所示,其中,DO~D7为双向数据总线,LCD数据读写方式可以分为8位及4位两种。若以8位数据进行读写,则DO~D7皆有效,若以4位方式进行读写,则只用到D7~D4。RS为寄存器选择控制线,当RS为O且做写入操作时,可以写指令寄存器;若RS为l,则用于读写数据寄存器。P/W为LCD读写控制线,R/W为0,LCD执行写作,R/W为1时,则做读操作。VO为亮度调整电压输入控制引脚,输入0V时,字符显示最亮。
LCD可以实时显示目前演奏的单音码,可以实时显示所存储的单音计数。按键9是清除键,可将存储的单音计数清0;按键8是放音键,可将内存中的单音逐一演奏出来,演奏中可以按K4键来中断。本设计使用一般的LCD显示器来显示音乐演奏的消息及单音码。按下键盘组按键,喇叭就会发出相对音阶。将这些音阶存储起来然后放音,就可成为自动演奏电子琴。
1.3 键盘扫描
整个4x4键盘按键的分配及配置原理图如图4所示。图4中为16键的控制电路,使用AT89S51端口2的8条I/O线做16个按键的键盘扫描,并由 P2.0~P2.3送出扫描信号,而由P2.4~P2.7读取按键数据返回码。表l所列是4x4按键与音阶的对应表。
2 系统软件设计
由于本系统可以产生各种频率的声音,所以可由喇叭发出“DO”、“RE”、“ME”……的音阶。系统中的定时器O工作于模式0,计时时长可根据所发音的频率而定,表2所列是各个音符所对应的频率值。而由频率值推得的定时器计数初值。则可由以下关系式求得:
式中,f为频率值;t为方波的宽度,以μs表示;co为定时器所计数的次数,lo为计数初值的低字节,hi为计数初值的高字节。图5所示为主程序的工作流程。
3 结束语
本文中所设计的具有存储功能的电子琴是由STC89C51单片机、小键盘、LCD以及音频功放电路和扬声器组成的。利用该电子琴电路。用户可以自由地输入音符,从而使扬声器发出悦耳的音乐。此外,通过改变按键式电子琴的控制程序,也可以设计不同类型的电子琴。还可以通过扩展RAM的方法增加内存容量,从而更大地发挥电子琴的存储功能。