1、简易电子琴 课程设计课程名称:现代电子技术综合实验 实验名称:简易电子琴 学生姓名:张 通 班级: 08通信B班 学号: 28010101096 实验地点:电子设计实验(A408) 实验学时:32学时 摘 要当前市场上的玩具市场需求量大,其中电子琴就是一个很好的应用,本设计的主要任务是要实现以单片机STC89C51RC为控制核心的简单音乐发生器。本系统由51系列单片机STC89C51RC,矩阵键盘、LED数码管、扬声器组成,可通过按压不同的按键控制不同音符的播放和显示。关键词:51单片机;电子琴;行列键盘;定时/计数器目录1 项目的主要任务 42 总体设计方案 52.1 控制模块选择方案 53
2、.1 按键选择方案 53 硬件设计 63.1 SST89E58单片机简介 63.2系统工作原理 83.3系统硬件总体设计 93.4 LED显示模块 103.5扬声器模块 103.6按键模块 104 软件设计 124.1 显示模块 124.2 按键模块 125 系统调试 146 设计总结 15附录1 实物图 16附录2 C51源程序清单 17参考文献 错误!未定义书签。1、项目主要任务1.1 课程设计的目的巩固和运用所学课程,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个简易的八音符电子琴的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字
3、电路系统设计、制作与调试的方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机组成原理与系统结构,用C语言去控制将会使我们对本专业知识可以更好地掌握。1.2 课程设计的内容(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。(2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。(3)能够自动演奏多首乐曲,且每首乐曲可重复演奏。2、总体设计方案2.1 控制模块选择方案由于STC89C51单片机性价比较高,并完全满足本设计作品智能化的要求,所以采用STC89C51单片机进行控制。2.2 按键选择方案传统电子琴可以
4、用键盘上的“1”到“A”键演奏从低SO到高DO等11音。该设计有13个按钮矩阵,设计成21个音,比传统音阶范围大,弹奏效果好。该设计要实现一种由单片机控制的电子琴,具有4X4行列式键盘,并根据按键通过扬声器将音乐播放出来。所以本系统由以51单片机为主控核心,和矩阵键盘、扬声器、LED显示管模块一起组合而成。具体如图2.1。图2.1 系统总体框图流程图3、硬件设计3.1 STC89C51RC单片机简介STC89C51RC是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器, 一个5中断源两个
5、优先级的中断结构,一个双工的串行口, 片上震荡器和时钟电路。引脚说明:VCC:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。当对0端口写入1时,可以作为高阻抗输入端使用。当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。在这种模式下,P0口具有内部上拉电阻。在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。程序校验时需要外接上拉电阻。P1口:P1口是一带有内部上拉电阻的8位双向I/O口。P1口的输出缓冲能接受或输出4个TTL逻辑门电路。当对P1口写1时,它们被内部的上拉电阻拉
6、升为高电平,此时可以作为输入端使用。当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。P2口:P2是一带有内部上拉电阻的8位双向的I/O端口。P2口的输出缓冲能驱动4个TTL逻辑门电路。当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX DPTR)时,P2口送出高8位地址数据。在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。当利用8位地址线访问外部数据存储器时(例MOVX
7、R1),P2口输出特殊功能寄存器的内容。当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。P3口:P3是一带有内部上拉电阻的8位双向的I/O端口。P3口的输出缓冲能驱动4个TTL逻辑门电路。当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P3口同时具有STC89C51RC的多种特殊功能,具体如表1所示。表3-1 P3口的第二功能端口引脚第二功能P3.0RXD (串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.3(外部中断1)P3.4T0(定时器0)P3.5
8、T1(定时器1)P3.6(外部数据存储器写选通)P3.7(外部数据存储器都选通)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。ALE/:当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。当在Flash编程时还可以作为编程脉冲输出()。一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。:程序存储允许时外部程序存储器的读选通信号。/VPP:外部访问允许。为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,必须同GND相连接。需要主要的是,
9、如果加密位1被编程,复位时EA端会自动内部锁存。当执行内部编程指令时,应该接到VCC端。XTAL1:振荡器反相放大器以及内部时钟电路的输入端。XTAL2:振荡器反相放大器的输出端。3.2系统工作原理本系统扫描键盘矩阵、显示按键、扬声器发出对应音符。4*4行列式键盘识别及显示原理如下:组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。编码键盘:键盘本身带有实现接口主要功能所需的硬件电路。不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按
10、键功能对应的键码(如ASCII码)送往CPU。所以,编码键盘接口简单、使用方便。但由于硬件电路较复杂,因而价格较贵。非编码键盘:键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。目前微机系统中,一般为了降低成本大多数采用非编码键盘。键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。(1)去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。去抖问题可通过软件延时或硬件电路解决。(2)防串键:防
11、串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。常用的方法有双键锁定和N键轮回两种方法。双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。(3)被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。常用的方法有行扫描法和线反转法两种。行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键
12、,为此需要提供两个可编程的双向输入/输出端口。(4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。总体电路具体流程图如图:3.3系统硬件总体设计本系统由键盘矩阵、LED显示管、扬声器这几个部分组成,LED显示管显示当前按键,扬声器发出对应音符。硬件总体设计图如下:图3.3 系统硬件总体设计图3.4 LED显示模块LED显示模块的接口电路如图3.4所示。图中,数码管采用共阳结构,为节省单片机口线,采用动态扫描显示。PNP型三极管Q1Q4实现数码管驱动。图3.4 LED显示模块接口电路3.5 扬声器模块矩阵扫描扬声器发出对应音符模
13、块如下:图3.5 扬声器模块3.6 按键模块对键盘扫描电路的扫描方式有行扫描法和线反转法,在此次程序编写中,采用行扫描法,通过扫描口线电平信息给单片机,经处理程序,判断出是哪个按键按下,并送主程序调子程序以实现不同功能。4、软件设计4.1 显示模块七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。LED数码管的g-a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码。本系统按键显示模块软件流程图如图4.1:4.2 按键模块一首音乐是许多不同的音阶组成的,而每个音阶对应
14、着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。计数脉冲值与频率的关系式:N=fi2fr上式中,N是计数值;fi是机器频率(晶体振荡器为1
15、2MHz时,其频率为1MHz);fr是想要产生的频率。其计数初值T的求法如下:T65536N65536fi2fr例如:设K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。T65536N65536fi2fr6553610000002fr65536500000/fr低音DO的T65536500000/26263627中音DO的T65536500000/52364580高音DO的T65536500000/104665059本系统按键发出对应音符模块软件流程图如图4.2:NY5、系统调试调试是电路与系统设计中的重要环节,通过调试,逐步排除电
16、路连接、元件装配、程序运行过程中可能存在的各种故障,使系统在满足功能要求的前提下稳定、可靠地工作。焊好电路板后先用万用表检测是否存在短路故障,有的话一定要找到短路点,否则,一旦通电,极有可能损坏电源或电路板。在没有短路存在的情况下,初次上电也一定要细心,不要接反电源极性,否则很容易烧坏芯片。电路板除短路或断路外还可能存在其它故障,如元器件老化失效或管脚接错等,为了验证电路板硬件的正确性,可先编写一些针对硬件各单元的基本测试程序,经编译、连接、转换后下载到单片机运行,发现硬件故障要及时排除,直到各部分硬件都能独立正常工作。6、设计总结单片机作为我们的主要专业课之一,虽然在开学初我对这门课并没有太
17、大兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。在课堂上我们掌握的仅仅是理论上的知识,但此次的课程设计锻炼了我们的实践能力,让我们学会如何把学到的专业理论知识运用到实践中去。整个设计过程中,不仅巩固了书本知识,更学到了许多平时不会去注意的知识,这是在设计过程中遇到问题而查阅大量资料去解决才能获得的。同时,课程设计还锻炼了我们的思维能力。要做好一个设计,必须在设计之前先根据要设计的内容选取合适的单片机和设计方案,对所用单片机的内部结构有一个系统的了解;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,一次就想设计好是不现实的,必须经过
18、反复的改进和完善,不仅能实现应有的功能,并能完整的展现出自己的思路;碰到问题时不要着急,这正是一个学习分析的好机会,解决过后之后就不会困于相同的问题了。另外,同学间的交流也能让我们吸收不同的思维,互帮互助。还要感谢指导老师在我们遇到困难时给予我们的建议与帮助。课程设计虽然结束了,但是从中学到的知识却会让我受益终生。发现、提出、分析、解决问题和实践能力的提高都将益于今后的学习工作。附录1实物图 附录2 C51源程序清单#include#include#include#define uchar unsigned char#define uint unsigned int/共阳数码管编码uchar
19、code DSY_Table = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, /0,1,2,3,4,5,6,7,8 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF; /9,A,B,C,D,E,F,-/各音符应对的延时uint code Tone_Delay_Table =64580,64684,64777,64820, /中1DO,中2RE,中3ME,中4FA 64898,64968,65030,63628, /中5SO,中6LA,中7SI,低1DO 64021,64260,64524, /低3ME,低5SO,低7
20、SI 65058,65110,65157,65178, /高1DO,高2RE,高3ME,高4FA 65217,65252,65283,63835, /高5SO,高6LA,高7SI,低2RE 64103,64400,64524; /低4FA,低6LA,低7SI0uchar code led99224 = 0xf9,0xBF,0xBF,0xBF, 0xa4,0xBF,0xBF,0xBF, 0xb0,0xBF,0xBF,0xBF, 0x99,0xBF,0xBF,0xBF, 0x92,0xBF,0xBF,0xBF, 0x82,0xBF,0xBF,0xBF, 0xf8,0xBF,0xBF,0xBF, 0
21、xf9,0xF7,0xF7,0xF7, 0xb0,0xF7,0xF7,0xF7, 0x92,0xF7,0xF7,0xF7, 0xf8,0xF7,0xF7,0xF7, 0xf9,0xFE,0xFE,0xFE, 0xa4,0xFE,0xFE,0xFE, 0xb0,0xFE,0xFE,0xFE, 0x99,0xFE,0xFE,0xFE, 0x92,0xFE,0xFE,0xFE, 0x82,0xFE,0xFE,0xFE, 0xf8,0xFE,0xFE,0xFE, 0xa4,0xF7,0xF7,0xF7, 0x99,0xF7,0xF7,0xF7, 0x82,0xF7,0xF7,0xF7, 0xf8,0x
22、F7,0xF7,0xF7 ;unsigned char code Music_Girl= 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03, 0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x
23、15,0x03, 0x16,0x03, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03, 0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,
24、0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x6
25、6, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03, 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,
26、0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E, 0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x04, 0x1
27、B,0x0E, 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0
28、x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02, 0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02, 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00;unsigned char code Music_Same= 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0
29、x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03, 0x1A,0x01, 0x19
30、,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C, 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03, 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02, 0x10,0
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1