单片机课程设计---简易电子琴设计_第1页
单片机课程设计---简易电子琴设计_第2页
单片机课程设计---简易电子琴设计_第3页
单片机课程设计---简易电子琴设计_第4页
单片机课程设计---简易电子琴设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单 片 机课 程 设 计 课程设计名称 : 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间 : 一、 需求分析1.1课题背景随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。电子科技也在不断的前进,电子技术正在以不同的方式改变着我们的生活,电子琴设计也是

2、希望给人们带来一些生活的乐趣。电子琴可以应用在很多方面,比如一些简易的玩具上或手机上。单片机技术使我们可以利用软硬件实现电子琴的功能,从而实现电子琴的微型化。本文主要对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的音乐。并且本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。1.2 课题设计的任务与主要内容本文的主要内容是用AT89C51单片机为核心控制元件,设计一个简单的电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。定时器

3、按设置的定时参数产生中断,由于定时参数不同,就会发出不同频率的脉冲,不同频率的脉冲经喇叭驱动电路放大滤波后,就会发出不同音调。先根据要求设计硬件电路和编写相应的程序,然后进行仿真调试,最后细心焊接硬件电路图,将程序烤入芯片中,最终达到设计目的。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。1.3简易电子琴功能概述 单片机因体积小、功能强、价格低廉而得到广泛应用。AT89C51单片机设计微型电子琴的方法,仅需AT89C51最小系统,扩展一组矩阵键盘,再接一组发光二极管用来指示电子琴的工作状态。本系统分为两个部分,一个是音乐,另一个就是电

4、子琴。1.单片机并行连接4*4矩阵键盘和一位数码管2.利用单片机内部定时器T0的定时功能产生音符所对应的音调3.经功率放大器后输出至音箱4.在弹奏音乐的同时将音符显示与数码管5.具备存储在播放所弹奏的音乐的功能6.具备示范音乐播放功能二、 概要设计2.1硬件系统的组成嵌入式电路,按键电路,LED显示电路和三个功能键组成,通过功能键可以选择播放音乐。(按键一:是否录音;按键二:是否播放;按键三:复位键) AT89C51 中心控制该系统通过电子琴按键随意键入所要表达的音符,作为电平送给主体电路,中央处理器通过识别,解码输出音符,在扬声器中发出有效的声音。通过这样可以不断的弹奏音乐。4*4矩阵键盘晶

5、振产生频率LED灯的显示供电复位电路扬声器,放大音乐弹奏或播放音乐图1 硬件系统总体框图2.2软件设计流程图P1图2 软件设计流程图2.3工作原理打开电子琴电源开关后,电子琴默认为弹奏状态(录音LED灯亮表示按键弹奏录音,不亮则普通按键弹奏功能),弹奏/播放显示灯点亮。此时可以进行弹奏音乐,按下矩阵键盘中的任意键,扬声器发相应的音调,数码管显示对应的数字。按下播放按钮,电子琴处于自动播放状态,弹奏/播放显示灯不亮,就会播放刚才弹走过的音乐,并循环进行播放,如果按下录音按键,将录音灯灭掉,此时播放的音乐改变,播放电子琴内置的音乐,并显示相应音符,循环播放。此时,如果按下复位键,数码管显示0,清楚

6、录音,此时系统又处于弹奏状态。本设计存储了二首音乐,可循环播放.(小星星和欢乐颂)三、 运行环境3.1硬件环境3.1.1总体设计软件模型连线:P37蜂鸣器P20连接LED0(模式指示灯:弹奏-亮,播放-不亮)P21连接LED1和独立开关(录音指示灯:弹奏保存-亮,弹奏不保存-不亮)P32独立按键,外部中断控制复位键P33独立按键,外部中断播放/弹奏切换按键P1连接数码管显示P0连接矩阵键盘此设计模块实现的功能有:1.把不同的频率也就是节拍的声音输入到放大器,播放弹奏的声音;2.在弹奏音乐的同时将音符显示于数码管;3.弹奏音乐的时候要将音符输入到数码管;4.播放内置储存的音乐时要显示此时播放的音

7、乐音符;5.具备存储在播放所弹奏的音乐的功能;6.复位功能,模式复位、录音清楚,数码管显示为0。3.1.2 AT89C51单片机相关介绍1)AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C51它是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。

8、AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图3.2所示。图3 AT89C51引脚分布图主要引脚功能: 1、 RST(9):复位输入。当振荡器复位时,要保持RST引脚2个机器周期的高电平时间;2、 XTAL1(19):反向振荡器放大器的输入及内部时钟工作电路的输入; 3、 XTAL2(18):来自反向振荡器的输出;4、 P1口(18):P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流;5、 /:当保持低电平时,单片机只访问外部程序存储器。为高电平时,单片机只访问内部程序存储器。2)芯片擦除整个PEROM阵列和三

9、个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM、定时器、计数器、串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.1.3 矩阵式键盘的结构与工作原理矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,本系统中的矩阵键盘中,列线通过电阻接正电源,并将行线所接的单片机

10、的I/O口作为输出端,而列线所接的I/O口则作为输入。当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。图4 矩阵式键盘3.1.4按键显示模块1)数码管的分类本设计用的是七段码。可显示0-F。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。1. 共阳数码管:是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将

11、所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。2. 共阴数码管:在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。2)数码管的驱动方式数码管的驱动方式分为:静态式和动态式两类。1.静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。优点是:编程简单,显示亮度高,缺点是占用I/O端口多。2.动态显示驱动:动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外

12、为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示

13、是一样的,能够节省大量的I/O端口,而且功耗更低。显示模块如图所示。图5 显示模块3.1.5功能显示灯模块当按下弹奏/播放功能键时,LED0灯亮(P20)表示弹奏模式,再次按下LED0熄灭表示播放模式;当独立开关控制LED1亮时表示弹奏保存录音或者播放录音歌曲,不亮时则表示弹奏不会保存录音或者播放内置音乐。图6 功能显示灯模块3.1.6音乐播放装置本次设计很简陋,没有MP3那样优美的音乐,但此次设计分成“音调”和“节拍”两部分,听起来还是不错的。音调:表示一个音符唱多高的频率节拍:表示一个音符唱多长的时间。由于本课程设计是由用户通过键盘输入弹奏乐曲的,所以节拍由用户掌握,不由程序控制。因此,我

14、们只需弄清楚音乐中的音符和对应的频率,利用单片机的定时/计数器来产生方波频率信号即可。要产生相应的音频脉冲,只需要计算出某音频的周期,再除以2。利用计数器计时半周期,计满时使P2.0反向,然后重复计时再反向。本例中,单片机工作在12MHz时钟,使用定时器/计数器T0,工作模式为1,改变计数初值TH0、TL0就可产生不同频率的脉冲信号。例如低3MI音,频率为330Hz,其周期T=1/f=1/330=3030us,计数值N=3030/2=1515,所以每计数1515次P2.0反向。计数初值T=65536-N=64021。C调的各音符频率与计数值T的对照表如下图所示。表1 C调各音符频率与计数值T对

15、照表音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低 1 DO26263628# 4 FA#74064860# 1 DO#27763731中 5 SO78464898低 2 RE29463853# 5 SO#83164934# 2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA4406

16、4400# 2 RE#124565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI1967652833.1.7振荡电路在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部震荡方式

17、。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选用6MHz、12MHz或者24MHz。本设计中采用的是12MHz。电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般530pF。内部振荡方式所得的时钟信号比较稳定,电路中使用较多。振荡方式如下图: 图7 振荡电路3.1.8控制按钮电路控制按钮,控制是弹奏还是演唱(P3.3)以及复位功能(P3.2)图8 控制按钮电路3.1.9扬声器电路图9 扬声器电路3.2软件环境3.2.1 I/O并行口直接驱动LED显示对应键值的显示:表2 字形码表及对应的音符00x3f低 5 SO80x7f中 6

18、LA10x06低 6 LA90x6f中 7 SI20x5b低 7 SIA0x77高 1 DO30x4f中 1 DOB0x7c高 2 RE40x66中 2 REC0x39高 3 M50x6d中 3 MD0x5e高 4 FA60x7d中 4 FAE0x79高 5 SO70x07中 5 SOF0x71高 6 LA在本设计中,数码管的显示通过 P1=DSY_CODEx这句语言来查表并输出,实现音符的显示。图10 LED显示3.2.2音乐播放设计在音乐播放程序中用到了两个定时/计数器。其中T0用来产生音调,播放弹奏时的按键音调声音,T1用来播放音乐。弹奏时根据不同的键值,调用不同的音符表中的值,并赋值给

19、定时器以便产生不同的声音。下图为演奏发声的流程图:图11 演奏发声流程图四、 开发工具和编程语言4.1 开发工具4.1.1 Proteus软件Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在

20、编译方面,它也支持IAR、Keil和MATLAB等多种编译器。Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:1原理布图2PCB自动或人工布线3SPICE电路仿真革命性的特点:1互动的电路仿真用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。2仿真处理器及其外围电路可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。4.1

21、.2 Keil软件1)系统概述Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil 的优势。下面详细介绍Keil C51开发系统各部分功能和使用。2)Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件

22、可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。使用独立的Keil仿真器时,注意事项:*仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。*仿真器上的复位按钮只复位仿真芯片,不复位目标系统。* 仿真芯片的31脚(/EA)已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的

23、31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。3)优点1.Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。2.与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。五、 详细设计5.1矩阵式键盘的按键识别方法矩阵扫描法:行扫描法 ,是一种最常用的按键识别方法,介绍过程如下。1、 判断键盘中有无键按下。将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的

24、键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。2、 判断闭合键所在的位置。在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。相关代码:P0 = 0xff; Line = 1; Mask = 0x01; for(i=0;i0) num = (Line-1)*4+Col;if(SAVE=0) /保存 ,灯亮savea=num;a+; if(num=0) TR0=0;

25、 SPK=1; /在未按键时,防止长期高电平损坏喇叭 else P1 = CharCodenum-1;High=tabnum-10; Low =tabnum-11;TR0=1;while(1) ScanCode = P0 & 0xf0;if(ScanCode = 0xf0) TR0 = 0;SPK=1;break; Mask =1; Line +; 5.2键盘接口必须具有的4个基本功能(1) 去抖动:每个按键在按下或松开时,都会产生短时间的抖动。抖动的持续时间与键的质量相关,一般为520mm。所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。(2)

26、 被按键识别:如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。(3)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。如下为键盘编码表:unsigned char code tab2= 0x00,0x00, 0xf8,0x8c, 0xf9,0x5b, 0xfa,0x15, 0xfa,0x67, 0xfb,0x04, 0xfb,0x90, 0xfc,0x0c, 0xfc,0x44, 0xfc,0xac, 0xfd,0x09, 0xfd,0x34, 0xfd,0x82, 0xfd,0xc8, 0xfe,0x06, 0

27、xfe,0x22, 0xfe,0x56, 0xfe,0x85, 0xfe,0x9a, 0xfe,0xc1, 0xfe,0xe4, 0xff,0x03;这是个二维数组,第一列是高位(THx),第二列是地位(TLx),一共有16行,第一行对应休止符。用AT89C51的并行口P0接44矩阵键盘,以P0.0P0.3作输入线,以P0.4P0.7作输出线;(4)在数码管上显示每个按键的“0F”序号。5.3数码管的相关代码unsigned char code CharCode=0xc0, 0xf9, 0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80, 0x90, 0x88, 0x83,

28、 0xc6,0xa1,0x86,0x8e;5.4 C调各音符频率的相关代码将数值转换为16进制的数,分成高八位和低八位,我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据。unsigned char code tab2= 0x00,0x00, 0xf8,0x8c, 0xf9,0x5b, 0xfa,0x15, 0xfa,0x67, 0xfb,0x04, 0xfb,0x90, 0xfc,0x0c, 0xfc,0x44, 0xfc,0xac, 0xfd,0x09, 0xfd,0x34, 0xfd,0x82, 0xfd,0xc8, 0xfe,0x06, 0xfe,0x22, 0xfe,

29、0x56, 0xfe,0x85, 0xfe,0x9a, 0xfe,0xc1, 0xfe,0xe4, 0xff,0x03;5.5 放歌子程序放歌子程序设计类似于音乐播放,将每个音调循环播放出来。if(MODE=1)/播放模式 ,灯不亮if(SAVE=1)/保存灯不亮,播放内置音乐SPK = 1;/P1 = CharCodeSongTone_Index;dis = SongTone_Index; High = tabSongTone_Index0;Low = tabSongTone_Index1;TR1 = 1;delay1(6000*PaiTone_Index);/取音节TR1 = 0;SPK=

30、1;/if(Tone_Index+1)%7)=0)delay1(1000);/else delay1(400);Tone_Index+;if(Tone_Index=sizeof(Song) Tone_Index =0;if(SAVE=0)/保存灯亮,播放录制的音乐Tone_Index =0;SPK = 1;for(j=0;ja;j+) /P1 = CharCodesavej-1;dis = savej-1;High = tabsavej-10;Low = tabsavej-11;TR1 = 1;delay1(6000);/取音节TR1 = 0;SPK=1;delay1(1000);if(MOD

31、E!=1&a=0)break;5.6 内置歌曲子程序unsigned char code Song=8,8,12,12,13,13,12, 11,11,10,10,9,9,8,12,12,11,11,10,10,9, 12,12,11,11,10,10,9,8,8,12,12,13,13,12, 11,11,10,10,9,9,8,/小星星10,10,11,12,12,11,10,9,8,8,9,10,3,2,2,10,10,11,12,12,11,10,9,8,8,9,10,9,8,8,9,9,10,8,9,10,11,10,8,9,10,11,10,8,8,9,12,10,10,11,12

32、,12,11,10,9,8,8,9,10,9,8,8/欢乐颂;六、 系统调试6.1硬件调试硬件调试主要是针对单片机部分进行调试。在上电前,先确保电路中不在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。注意焊点之间,确保焊点没有短接在一起,同时注意焊点的美观,确保没有开路以及短路的现象出现。在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次设计中,上电调试主要键盘单片机控制部分、数码管点亮部分和音频转换电路硬件调试。1、数码管LED电路调试:接通电源,随机按下按钮可以看到数码管显示数字。2、键盘单片机控制部分调试:上电后,随机按动键盘可以发现各个按键对应的音正确。6.2软件调试调试主要方法和技巧:通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。整个程序是一个主程序调用各个子程序实现功能的过程,要使主程序和整个程序都能平稳运行,各个模块的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论