电子琴课程设计修正版.docx

上传人:b****1 文档编号:2576762 上传时间:2023-05-04 格式:DOCX 页数:29 大小:202.03KB
下载 相关 举报
电子琴课程设计修正版.docx_第1页
第1页 / 共29页
电子琴课程设计修正版.docx_第2页
第2页 / 共29页
电子琴课程设计修正版.docx_第3页
第3页 / 共29页
电子琴课程设计修正版.docx_第4页
第4页 / 共29页
电子琴课程设计修正版.docx_第5页
第5页 / 共29页
电子琴课程设计修正版.docx_第6页
第6页 / 共29页
电子琴课程设计修正版.docx_第7页
第7页 / 共29页
电子琴课程设计修正版.docx_第8页
第8页 / 共29页
电子琴课程设计修正版.docx_第9页
第9页 / 共29页
电子琴课程设计修正版.docx_第10页
第10页 / 共29页
电子琴课程设计修正版.docx_第11页
第11页 / 共29页
电子琴课程设计修正版.docx_第12页
第12页 / 共29页
电子琴课程设计修正版.docx_第13页
第13页 / 共29页
电子琴课程设计修正版.docx_第14页
第14页 / 共29页
电子琴课程设计修正版.docx_第15页
第15页 / 共29页
电子琴课程设计修正版.docx_第16页
第16页 / 共29页
电子琴课程设计修正版.docx_第17页
第17页 / 共29页
电子琴课程设计修正版.docx_第18页
第18页 / 共29页
电子琴课程设计修正版.docx_第19页
第19页 / 共29页
电子琴课程设计修正版.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子琴课程设计修正版.docx

《电子琴课程设计修正版.docx》由会员分享,可在线阅读,更多相关《电子琴课程设计修正版.docx(29页珍藏版)》请在冰点文库上搜索。

电子琴课程设计修正版.docx

电子琴课程设计修正版

课程设计任务书

题目电子琴的设计与实现

专业电子信息工程07-2班学号200701030229姓名彭成

主要内容、基本要求、主要参考资料等:

主要内容

1.阅读相关科技文献。

2.学习单片机编程软件应用。

3.学会整理和总结设计文档报告。

4.学习如何查找相关手册及相关参数。

技术要求

1.要求有系统组成框图。

2.要求能演奏不同音阶的音乐。

3.要求有原理图及单元电路说明。

主要参考资料

1.姚福安,电子电路设计与实践,山东科学技术出版社,2001年10月

2.涂时亮,单片机软件设计技术,重庆科技文献出版社,1987

3.张毅刚,新编MCS51实用汇编程序设计,哈尔滨工业大学出版社,2003

4.康华光,电子技术基础,高教出版社,2003

5.胡汉才,单片机原理及接口技术,清华大学出版社,1996

完成期限:

2011.1.17—2011.1.23

指导教师签名:

课程负责人签名:

2011年1月15日

 

摘要

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。

它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。

本文的主要内容是用STC89C51单片机为核心控制元件,设计一个电子琴。

以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有16个按键和扬声器。

本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

关键词STC89C51单片机音色节拍器自动放音

 

 

 

 

4程序框图与实现程序………………………………………12

1方案论证

1.1原理图

图1-1 电子琴电路图

1.2系统板硬件连线

系统板硬件连线如图1-1所示,发生模块,键盘模块,及LED显示模块连接如下

1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPKIN端口上;

2.把“单片机系统”区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;

3.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:

P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

1.3主芯片简介

1.3.1AT89S51简介

功能特性:

AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:

40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

图1-2管脚图

1.3.2主要功能特性

与MCS-51单片机产品兼容

8K字节在系统可编程Flash存储器

1000次擦写周期

全静态操作:

0Hz~33Hz 

三级加密程序存储器

32个可编程I/O口线

三个16位定时器/计数器八个中断源

全双工UART串行通道、低功耗空闲和掉电模式

掉电后中断可唤醒

看门狗定时器

双数据指针

掉电标识符

1.3.3LM386电内部路

LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。

LM386特性:

静态功耗低,约为4mA,可用于电池供电;

工作电压范围宽,4V-12V或5V-18V;

外围元件少;

电压增益可调,20-200;

低失真度。

LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。

图1-3 LM386内部电路原理图

LM386内部电路原理图如图1-3所示。

与通用型集成运放相类似,它是一个三级放大电路.

第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从管的基极输入,从T2管的集电极输出,为双端输入单端输出差分电路。

使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益

第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。

第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。

二极管D1和D2为输出级提供合适的偏置电压,可以消除交越失真。

引脚2为反相输入端,引脚3为同相输入端。

电路由单电源供电,故为OTL电路。

输出端(引脚5)应外接输出电容后再接负载。

电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。

图1-4音频放大器电路

2过程实现

2.14×4行列式键盘识别及显示

组成键盘的按键有机械式、电容式、导电橡胶式、薄膜式多种,但不管什么形式,其作用都是一个使电路接通与断开的开关。

目前微机系统中使用的键盘按其功能不同,通常可分为编码键盘和非编码键盘两种基本类型。

编码键盘:

键盘本身带有实现接口主要功能所需的硬件电路。

不仅能自动检测被按下的键,并完成去抖动、防串键等功能,而且能提供与被按键功能对应的键码(如ASCII码)送往CPU。

所以,编码键盘接口简单、使用方便。

但由于硬件电路较复杂,因而价格较贵。

非编码键盘:

键盘只简单地提供按键开关的行列矩阵。

有关按键的识别、键码的确定与输入、去抖动等功能均由软件完成。

目前微机系统中,一般为了降低成本大多数采用非编码键盘。

键盘接口必须具有去抖动、防串键、按键识别和键码产生4个基本功能。

(1)去抖动:

每个按键在按下或松开时,都会产生短时间的抖动。

抖动的持续时间与键的质量相关,一般为5—20mm。

所谓抖动是指在识别被按键是必须避开抖动状态,只有处在稳定接通或稳定断开状态才能保证识别正确无误。

去抖问

题可通过软件延时或硬件电路解决。

(2)防串键:

防串键是为了解决多个键同时按下或者前一按键没有释放又有新的按键按下时产生的问题。

常用的方法有双键锁定和N键轮回两种方法。

双键锁定,是当有两个或两个以上的按键按下时,只把最后释放的键当作有效键并产生相应的键码。

N键轮回,是当检测到有多个键被按下时,能根据发现它们的顺序依次产生相应键的键码。

(3)被按键识别:

如何识别被按键是接口解决的主要问题,一般可通过软硬结合的方法完成。

常用的方法有行扫描法和线反转法两种。

行扫描法的基本思想是,由程序对键盘逐行扫描,通过检测到的列输出状态来确定闭合键,为此,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。

线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入/输出端口。

(4)键码产生:

为了从键的行列坐标编码得到反映键功能的键码,一般在内AT89S51存区中建立一个键盘编码表,通过查表获得被按键的键码。

用AT89S51的并行口P0接4×4矩阵键盘,以P0.0-P0.3作输入线,以P0.4-P0.7作输出线。

图2-1键盘识别模块

2.1.1系统板上硬件连线设计

键盘模块硬件连线如图2-1所示:

把“单片机系统”区域中的P0.0-P0.7端口用8芯排线连接到“4X4行列式键盘”区域中对应的端口上;

2.1.2程序设计内容

(1)4×4矩阵键盘识别处理,每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。

矩阵的行线和列线分别通过两并行接口和CPU通信。

每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。

(2)键盘处理程序的任务是:

确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

电路图如下:

图2.1.1行列式键盘电路

 

3音乐产生方法

3.1原理简介

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这

样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。

若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,

即为半周期的时间。

利用定时器计时半周期时间,每当计时终止后就将P1.0反相,然后重复计时再反相。

就可在P1.0引脚上得到此频率的脉冲。

   利用AT89S51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。

   计数脉冲值与频率的关系式(如式2-1所示)是:

N=fi÷2÷fr(2-1)

式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。

其计数初值T的求法如下:

T=65536-N=65536-fi÷2÷fr

例如:

设K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。

T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr

   低音DO的T=65536-500000/262=63627

   中音DO的T=65536-500000/523=64580

   高音DO的T=65536-500000/1046=65059

单片机12MHZ晶振,高中低音符与计数T0相关计数值如表2-2所示

表2-2音符频率表

音符

频率(HZ)

简谱码(T值)

音符

频率(HZ)

简谱码(T值)

低1 DO

262

63628

#4FA#

740

64860

#1 DO#

277

63731

中5SO

784

64898

低2 RE

294

63835

#5SO#

831

64934

#2RE#

311

63928

中6LA

880

64968

低3M

330

64021

#6

932

64994

低4FA

349

64103

中7SI

988

65030

#4FA#

370

64185

高1DO

1046

65058

低5SO

392

64260

#1DO#

1109

65085

#5SO#

415

64331

高2RE

1175

65110

低6LA

440

64400

#2RE#

1245

65134

#6

466

64463

高3M

1318

65157

低7SI

494

64524

高4FA

1397

65178

中1DO

523

64580

#4FA#

1480

65198

#1DO#

554

64633

高5SO

1568

65217

中2RE

587

64684

#5SO#

1661

65235

#2RE#

622

64732

高6LA

1760

65252

中3M

659

64777

#6

1865

65268

中4FA

698

64820

高7SI

1967

65283

我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据:

低音0-19之间,中音在20-39之间,高音在40-59之间

 TABLE1:

DW64021,64103,64260,64400

DW64524,64580,64684,64777

DW64820,64898,64968,65030

DW65058,65110,65157,65178

音乐的音拍,一个节拍为单位(C调)(如表2-3所示)

表2-3曲调值表

曲调值

DELAY

曲调值

DELAY

调4/4

125ms

调4/4

62ms

调3/4

187ms

调3/4

94ms

调2/4

250ms

调2/4

125ms

对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。

琴键处理程序,根据检测到得按键值,查询音律表,给计时器赋值,发出相应频率的声音。

对音调的控制:

根据不同的按键,对定时器T1送入不同的初值,调节T1的溢出时间,这样就可以输出不同音调频率的方波。

不同音调下各个音阶的定时器。

在这个程序中用到了两个定时/计数器来完成的。

其中T0用来产生音符频率,T1用来产生音拍。

 

4程序框图与实现程序

4.1实现程序框图

图4-1程序框图

图4-2 键盘识别框图

图4-3音乐发声程序框图

4.2实现程序

KEYBUFEQU30H

STH0EQU31H

STL0EQU32H

TEMPEQU33H

SPKEQUP1.0;蜂鸣器所在端口

ORG0000H

LJMPSTART

ORG0BH

LJMPINT_T0

START:

MOVTMOD,#01H

SETBET0

SETBEA

WAIT:

MOVP2,#0FFH

CLRP2.4;从第四行开始扫描

MOVA,P2

ANLA,#0FH;屏蔽高四位,高四位为行,低四位为列

XRLA,#0FH

JZNOKEY1;判断是否有键按下,没有就跳转

LCALLDELY10MS

MOVA,P2;消除抖动和干扰

ANLA,#0FH

XRLA,#0FH

JZNOKEY1

MOVA,P2;确定有键按下以后的处理

ANLA,#0FH

CJNEA,#0EH,NK1;是否为第四行第一列的键被按下

MOVKEYBUF,#0;保存列号

LJMPDK1

NK1:

CJNEA,#0DH,NK2

MOVKEYBUF,#1

LJMPDK1

NK2:

CJNEA,#0BH,NK3

MOVKEYBUF,#2

LJMPDK1

NK3:

CJNEA,#07H,NK4

MOVKEYBUF,#3

LJMPDK1

NK4:

NOP

DK1:

;第四行的处理

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,KEYBUF

MOVB,#2;Table1以字保存,所以散转

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A;送入高字节

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVCA,@A+DPTR

MOVSTL0,A;送入低字节

MOVTL0,A

SETBTR0

DK1A:

MOVA,P2;判断按键是否松开

ANLA,#0FH

XRLA,#0FH

JNZDK1A

CLRTR0

NOKEY1:

MOVP2,#0FFH

CLRP2.5

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

LCALLDELY10MS

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY2

MOVA,P2

ANLA,#0FH

CJNEA,#0EH,NK5

MOVKEYBUF,#4

LJMPDK2

NK5:

CJNEA,#0DH,NK6

MOVKEYBUF,#5

LJMPDK2

NK6:

CJNEA,#0BH,NK7

MOVKEYBUF,#6

LJMPDK2

NK7:

CJNEA,#07H,NK8

MOVKEYBUF,#7

LJMPDK2

NK8:

NOP

DK2:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,KEYBUF

MOVB,#2

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVCA,@A+DPTR

MOVSTL0,A

MOVTL0,A

SETBTR0

DK2A:

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JNZDK2A

CLRTR0

NOKEY2:

MOVP2,#0FFH

CLRP2.6

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

LCALLDELY10MS

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY3

MOVA,P2

ANLA,#0FH

CJNEA,#0EH,NK9

MOVKEYBUF,#8

LJMPDK3

NK9:

CJNEA,#0DH,NK10

MOVKEYBUF,#9

LJMPDK3

NK10:

CJNEA,#0BH,NK11

MOVKEYBUF,#10

LJMPDK3

NK11:

CJNEA,#07H,NK12

MOVKEYBUF,#11

LJMPDK3

NK12:

NOP

DK3:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,KEYBUF

MOVB,#2

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVCA,@A+DPTR

MOVSTL0,A

MOVTL0,A

SETBTR0

DK3A:

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JNZDK3A

CLRTR0

NOKEY3:

MOVP2,#0FFH

CLRP2.7

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

LCALLDELY10MS

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JZNOKEY4

MOVA,P2

ANLA,#0FH

CJNEA,#0EH,NK13

MOVKEYBUF,#12

LJMPDK4

NK13:

CJNEA,#0DH,NK14

MOVKEYBUF,#13

LJMPDK4

NK14:

CJNEA,#0BH,NK15

MOVKEYBUF,#14

LJMPDK4

NK15:

CJNEA,#07H,NK16

MOVKEYBUF,#15

LJMPDK4

NK16:

NOP

DK4:

MOVA,KEYBUF

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,KEYBUF

MOVB,#2

MULAB

MOVTEMP,A

MOVDPTR,#TABLE1

MOVCA,@A+DPTR

MOVSTH0,A

MOVTH0,A

INCTEMP

MOVA,TEMP

MOVCA,@A+DPTR

MOVSTL0,A

MOVTL0,A

SETBTR0

DK4A:

MOVA,P2

ANLA,#0FH

XRLA,#0FH

JNZDK4A

CLRTR0

NOKEY4:

JNBP1.0,MUSIC

LJMPWAIT

MUSIC:

MOVR3,#00H

NEXT:

MOVA,R3

MOVDPTR,#TABLE2

MOVCA,@A+DPTR

JZMUSIC

MOVR7,A

INCR3

MOVA,R3

MOVCA,@A+DPTR

MOVR2,A

ACALLSONG

INCR3

SJMPNEXT

 

;===============================================================================

;===歌曲播放子程序===

SONG:

MOVA,R2;取出节拍

RLA

JNZKEEP

MOVA,#01H

KEEP:

MOVR2,A

REPEAT:

ACALLEIGHTH

DJNZR2,REPEAT

RET

;========================

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2