#基于51单片机的简易电子琴设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机的简易电子琴设计
一.问题提出
为什么选择简易电子琴设计?
1.对于音乐的兴趣
我们对音乐都有着浓厚的兴趣,喜欢听钢琴曲,如理查德·克莱德曼演奏的《思乡曲》《星空》《秋日的私语》等,音乐在我们的生活中扮演着很重要的角色。

有人曾说,喜欢音乐的人不会向恶。

以前不以为然,可是随着这些年来慢慢喜欢上阴郁,听了越来越多的钢琴曲之后,觉得这句话非常有道理。

音乐是用艺术家用音符记录世界,传达情感的一种艺术形式,音乐里有一种和谐之美,听音乐可以让人心情舒畅,与外界和谐统一。

音乐现在已经成为我生活中很重要的一部分,我们每周都会抽些时间去欣赏世界名曲,作为对精神的洗礼。

2.对于电子琴的好奇
好奇是人的天性,人类对于自然的认识,对于科学的探索,无不始于好奇。

我们对电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器、自动放音功能等等也很好奇,想通过学习单片机这个机会,深入了解电子琴的功能实现原理。

3.对于51单片机强大功能的信赖
51单片机有基本特性:
(1)面向控制的8位CPU和指令系统
(2)4K字节的程序存储器(ROM或EPROM)
(3)128字节的数据存储器
(4)可编程的并行I/O口P0~P3,有32位双向输入/输出线
(5)一个全双工串行口
(6)两个16位定时器/计数器
(7)五个中断源,两个优先级的中断结构
(8)一个片内时钟振荡器和时钟电路
(9)可以寻址64K字节的程序存储器和64K字节的外部数据存储器51单片机功能强大,性能日趋完善,在工业测控、智能仪器仪表、机电一体化产品、家电领域中应用广泛,因此基于51单片机设计简易的电子琴可行性非常大。

二.功能需求
1.能够实现基本的琴键功能
即每按下一个琴键,单片机能够检测到键盘的按键,并根据按键的位置,通过程序来控制,使蜂鸣器发出不同频率(音调)的声音,声音延迟一段时间,等到按键放开后,声音停止。

然后再继续扫描,看是否有键按下,如此循环下去,即可实现基本的琴键功能。

2.能够实现调节电子琴音色的功能
在键盘上设置功能键,通过按键来选择不同的音色。

当选通后,按下琴键,蜂鸣器就一直发出此种音色的声音。

直到下一次再次按下音色选择功能键,才会改变音色。

系统共设置五种音色:长笛音,钢琴音,小号音,小提琴音,短笛音,默认状态为钢琴音。

3.能够实现通过按键自动播放歌曲的功能
在键盘上设置几个功能键,按下之后会根据功能键跳转到自动播放歌曲的程序,来播放相应的歌曲。

播放歌曲的默认音色为钢琴音,若希望调整音色,只需在自动播放歌曲之前,按下相应的音色选择功能键即可实现。

三.总体方案
1.电子琴原理
在介绍总体方案之前,先简单介绍一下电子琴的发生原理以及如何改变音色的基本原理:声音的频谱范围约在几十到几千赫兹, 若能利用程序来控制单片机某个口线不断输出“高”“低”电平, 则在该口线上就能产生一定频率的方波, 将该方波接上喇叭就能发出一定频率的声音, 若再利用程序控制“高”“低”电平的持续时间, 就能改变输出波形的频率从而改变音调。

乐曲中, 每一音符对应着确定的频率, 下表给出各音符频率。

如果单片机某个口线输出“高”“低”电平的频率和某个音符的频率一样, 那么将此口线接上喇叭就可以发出此音符的声音。

本系统就是根据此原理设计, 对于单片机来说要产生一定频率的方波大致是先将某口线输出高电平然后延时一段时间再输出低电平, 如此循环的输出就会产生一定频率的方波, 通过改变延时的时间就可以改变输出方波的频率。

单片机内部有两个位的定时计数器T1和T0, 单片机的定时计数器实际上是个计数装置它既可以对单片机的内部晶振驱动时钟计数也可以对外部输入的脉冲计数, 对内部晶振计数时称为定时器, 对外部时钟计数时称为计数器。

当对单片机的内部晶振驱动时钟计数时,每个机器周期定时计数器的计数值就
加, 当计数值达到计数最大值时计数完毕并通知单片机的尸比对外部输入的时钟信号计数时, 外部时钟的每个时钟上升沿定时计数器的计数值就加, 当计数值达到计数最大值时计数完毕并通知单片机的尸。

因此, 如果知道单片机的机器周期或者外部输入时钟信号的周期单片机就可以根据定时器的计数值计算出定时的时间。

用此方法定时十分准确, 想得到多大的延时时间就可以给定时器赋一定的计数初值, 定时器从预先设置的计数初值开始不断增当增加到计数最大值时计数完毕, 调整计数初值的大小就可以调整定时器定时的时间, 从而达到准确的延时。

在本设计中我们使用的外部时钟信号的晶振频率为12MHz,而采用的计数方式为方式1,所以计数器的初始值可以由如下公式求得。

T=65536-1000000/2/f
f为对应音调的频率;
通过以上方法,可求出各音调对应的频率,如下表
2. 外观设计
2.硬件部分总体方案
51单片机P0口通过8155扩展,连接4*8的矩阵键盘,作为琴键键盘和相应的功能控制键;并P2口一起,与EPROM连接;P0口则接通不通音色的滤波电路,通过程序控制P0口,选通不通的琴声音色滤波电路,使电子琴发出不同音色的声音。

3.软件部分总体方案
(1)键盘扫描程序:
检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测
(2)功能转移程序:
对检测到得按键值进行判断,是琴键则跳转至琴键处理程序,是
功能键则跳转至相应的功能程序,我们设计的功能程序有两种,即音
色调节功能和自动播放乐曲功能
(3)琴键处理程序:
根据检测到得按键值,查询音律表,给计时器赋值,使发出相应频率的声音
(4)音色调节程序:
检测到键盘按下的是音色调节功能键后执行该程序,改变P0端口的值,选通相应的音色滤波电路,达到调节音色的目的
(5)自动播放歌曲程序:
检测到按键按下的是自动播放歌曲功能键后执行该程序,电子琴会自动播放事先已经存放好的歌曲,歌曲播放完毕之后自动返回至键盘扫描程序,继续等待是否有键按下
四.硬件详细设计
总电路图
8155扩展
外部EPROM扩展电路
键盘电路
长笛滤波电路
钢琴滤波电路
小号滤波电路
小提琴滤波电路
短笛滤波电路四.软件框图
总程序简易流程图
键盘扫描程序流程图
弹奏程序流程图
音色调整子程序
自动播放歌曲程序流程图
六.软件清单
ORG 0200H
MOV P1, #02H ; 初始化P1口,使得电子琴默认为钢琴声KEYPRO: ;键盘扫描程序
ACALL KEXAM ; 检查是否有键按下
JZ KEYPRO ;若无键按下,则转KEYPRO,继续等待并检查ACALL D10ms ;若有键按下,则延时10ms,进行曲抖动处理
ACALL KEXAM ;再次检查是否有键按下
JZ KEYPRO ;若无键按下,则转KEYPRO
KEY1:
MOV R2,#OFEH ;输出使第X0行为低电平模型数值
MOV R3,#OFFH ;列值寄存器预置初值
MOV R4,#OOH ;行值寄存器清零
KEY2:
MOV DPTR,#0303H ;送8155PC口地址
MOV A,R2 ;扫描第一行
MOVX @DPTR,A
MOV DPTR,#0301H ;送8155PA口地址
MOVX A,@DPTR ;读列数据值
CPL A
ANL A,#OFFH
JNZ KEY3 ;有键按下,请求转值
MOV A,R4 ;无键按下,行值寄存器加8
ADD A,#08H
MOV R4,A
MOV A,R2 ;求下一行为低电平模型数值
RL A
MOV R2,A
JB ACC.4,KEY2 ;判断各行是否完全扫描完,若未完,则继续扫描下一行AJMP KEYPRO ;若全部扫描完毕,则等待下一次按键
KEY3:
CPL A ;恢复列模型
KEY4:
INC R3
RRC A ;求列值
JC KEY4
KEY5:
ACALL D10ms
ACALL KEXAM
JNZ KEY5 ;若有键按下,则转KEY5,等待键释放
MOV A,R4 ;计算键值
ADD A,R3
MOV BUFF,A
AJMP KEYADR ;转查找功能键入口地址子程序
D10ms: ;延时10ms的子程序
MOV R5,#14H
DL: MOV R6,DL0
DL0: DJNZ R6,DL0
DJNZ R5,DL
RET
BUFF EQU 30H
KEXAM:
MOV DPTR,#0303H ;送端口C地址
MOV A,#00H ;输出使所有的行均为低电平模型数值MOVX @DPTR,A
MOV @DPTR,#0301H
MOVX A,@DPTR
CPL A
ANL A,#0FFH
RET
ORG 8000H ; 跳转功能程序
KEYADR:
MOV A, BUFF ; 取出键值
CJNE A, #17H, KYARD1
AJMP PLAY ; 等于17H,转琴键处理
KEYRD1:
JC PLAY ; 小于17H,转琴键处理
KEYTBL:
MOV DPTR, # JMPTBL ;送功能键地址表指针
CLR C ;清进位位
SUBB A , #10H
RL A
JMP @A+DPTR ;转相应的功能键处理程序
BUFF EQU 30H
JMPTBL:
AJMP SONG1 ; 跳转至化蝶
AJMP SONG2 ;跳转至童年
AJMP SONG3 ;跳转至龙的传人
AJMP FLUTE ;调节成长笛音色状态
AJMP PIANO ;调节成钢琴音色状态
AJMP TRUMPET ;调节成小号音色状态
AJMP VIOLIN ;调节成小提琴音色状态
AJMP PICCOLO ;调节成短笛音色状态
SONG1:
MOV DPTR, #BUTTERFLY ;赋梁祝谱初值
ACALL SUB_SONG ;调用播放歌曲子程序
AJMP KEYPRO ;返回至键盘扫描程序
SONG2:
MOV DPTR, #YOUTH ;赋童年谱值
ACALL SUB_SONG ;调用播放歌曲子程序
AJMP KEYPRO ;返回至键盘扫描程序
SONG3:
MOV DPTR, #MULTIPLY_OF_THE_DRAGON ;赋龙的传人谱初值ACALL SUB_SONG
AJMP KEYPRO
FLUTE:
MOV P1, #01H ;使长笛滤波电路选通
AJMP KEYPRO ;跳转回键盘扫描程序
PIANO:
MOV P1, #02H ;使钢琴琴滤波电路选通
AJMP KEYPRO ;跳转回键盘扫描程序TRUMPET:
MOV P1, #04H ;使小号滤波电路选通
AJMP KEYPRO ;跳转回键盘扫描电路VIOLIN:
MOV P1, #08H ;使小提琴滤波电路选通
AJMP KEYPRO ;跳转回键盘扫描电路PICCOLO:
MOV P1, #10H ;使短笛滤波电路选通通AJMP KEYPRO ;跳转回键盘扫描电路PLAY: ; 弹琴子程序
ORG 0F00H ;子程序入口地址
SJMP MAIN
ORG 0F1BH ;设置中断入口地址
LJMP TINT1
MAIN:
MOV TMOD, #10H ; 计时器控制字T1方式计时SETB EA ;开中断总开关
SETB ET1 ; 允许T1中断
SETB TR1 ;定时开始
MOV DPTR, #TABLE1 ;查询音律表
PUSH ACC
MOVC A, @A+DPTR
MOV TH1,A ;音律表查询值高八位赋值POP ACC
INC A
MOVC A, @A+DPTR
MOV TL1,A ;音律表查询值低八位赋值ACALL DLAY
AJMP KEYPRO ;跳转回键盘扫描程序
TINT1:
JB P1.0, FLUTE_ON ;判断是否跳到长笛音色档JB P1.1, PIANO_ON ;判断是否调到钢琴音色档
JB P1.2, TRUMPET_ON ;判断是否调到小号音色档JB P1.3, VIOLIN_ON ;判断是否跳到小提琴音色档JB P1.4, PICCOLO_ON ;判断是否跳到短笛音色档FLUTE_ON: ;若是长笛音色档,则控制P1.0口电压变化CPL P1.0
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
PIANO_ON: ;若是钢琴琴音色档,则控制P1.1口电压变化
CPL P1.1
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
TRUMPET_ON: ;若是小号音色档,则控制P1.2口电压变化CPL P1.2
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
VIOLIN_ON: ;若是小提琴音色档,则控制P1.2口电压变化CPL P1.3
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
PICCOLO_ON: ;若是短笛音色档,则控制P1.2口电压变化CPL P1.4
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
DLAY: MOV R2, #0F0H ;延时程序
DL2: MOV R3,#0F0H
DL1: NOP
NOP
DJNZ R3, DL1
DJNZ R2, DL2
RET
TABLE1:;音律表
DW 0F88BH ;-1
DW 0F95BH ;-2
DW 0FA14H ;-3
DW 0FA67H ;-4
DW 0FB07H ;-5
DW 0FB8FH ;-6
DW 0FB9EH ;-6#
DW 0FC0BH ;-7
DW 0FC43H ;1
DW 0FCACH ;2
DW 0FD09H ;3
DW 0FD33H ;4
DW 0FD83H ;5
DW 0FDC7H ;6
DW 0FDE7H ;6#
DW 0FE05H ;7
DW 0FE22H ;+1
DW 0FE56H ;+2
DW 0FE84H ;+3
DW 0FE9AH ;+4
DW 0FEC1H ;+5
DW 0FEE3H ;+6
DW 0FEF3H ;+6#
DW 0FF02H ;+7
ORG 0F00H
SUB_SONG: ;自动播放歌曲的子程序-1 EQU 0H ;低音域简谱码
-2 EQU 1H
-3 EQU 2H
-4 EQU 3H
-5 EQU 4H
-6 EQU 5H
-6# EQU 6H
-7 EQU 7H
1 EQU 8H ;中音域简谱码
2 EQU 9H
3 EQU 0AH
4 EQU 0BH
5 EQU 0CH
6 EQU 0DH
6# EQU 0EH
7 EQU 0FH
+1 EQU 10H ;高音域简谱码
+2 EQU 11H
+3 EQU 12H
+4 EQU 13H
+5 EQU 14H
+6 EQU 15H
+6# EQU 16H
+7 EQU 17H
FREQ_TEMP .EQU 31H
TIME_TEMP .EQU 32H
TH0_TEMP .EQU 33H
TL0_TEMP .EQU 34H
ORG 00H ;播放乐曲子程序的主程序
JMP START
ORG OBH
JMP TIMER0
START:
MOV SP, #50H
MOV IE, #10000010B ;中断,EA=ET0=1
MOV TMOD, #00000001B ; 设定计数器0为mode1 BEGIN:
MOV A, #00H
MOVC A,@A+DPTR ;取得简谱码
MOV FREQ_TEMP,A
INC DPTR ;指向下一个地址
MOV A, #00H
MOVC A, @A+DPTR ;取得节拍码
MOV TIME_TEMP, A
JZ STOP ;比较唱歌是否结束
PUSH DPH
PUSH DPL
MOV A,FREQ_TEMP
CJNE A, #FFH, SING_SONG ;比较是否停止发音
CLR TR0 ;停止计时
JMP HOLD
SING_SONG:
CLR TR0 ;停止计时
MOV DPTR, #TABLE ;频率值存放开始地址
MOV A, FREQ_TEMP ;
RL A ;FREQ_TEMP地址乘以2 MOVC A, @A+DPTR ;取得频率值高位组
MOV TH0,A ;TH0=频率值高位组
MOV TH0_TEMP, A
MOV A, FREQ_TEMP
RL A ;FREQ_TEMP地址乘以2 INC A ;再加1
MOVC A,@DPTR ;取得频率值低位组
MOV TL0,A ;TL0=频率值低位组MOV TL0_TEMP,A
SETB TR0 ;开始计时
HOLD:
CALL DELAY_TIME ;延迟节拍数
POP DPL
POP DPH
INC DPTR ;指向下一个地址
JMP BEGIN
STOP CLR TR0 ;乐曲播放结束
SETB P1.0 ;关掉蜂鸣器
JMP $
DELAY_TIME: ;节拍数
DELAY #254, #245 ;125ms
DJNZ TIME_TEMP, DELAY_TIME
RET
TIMER0:
MOV TH0, TH0_TEMP ;重新载入频率值高位组MOV TL0, TL0_TEMP ;重新载入频率值低位组JB P1.0, FLUTE_ON ;判断是否调长笛音色档
JB P1.1, PIANO_ON ;判断是否调到钢琴音色档JB P1.2, TRUMPET_ON ;判断是否调到小号音色档JB P1.3, VIOLIN_ON ;判断是否跳到小提琴音色档JB P1.4, PICCOLO_ON ;判断是否跳到短笛音色档FLUTE_ON: ;若是长笛音色档,则是长笛版乐曲
CPL P1.0
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
PIANO_ON: ;若是钢琴音色档,则是钢琴版乐曲
CPL P1.1
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
TRUMPET_ON: ;若是小号音色档,则是小号版乐曲
CPL P1.2
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
VIOLIN_ON: ;若是小提琴音色档,则是小提琴版乐曲
CPL P1.3
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
PICCOLO_ON: ;若是短笛音色档,则是短笛版乐曲
CPL P1.4
POP DPH
POP DPL
PUSH DPL
PUSH DPH
RETI
TABLE:
DW 0F88BH ;-1
DW 0F95BH ;-2
DW 0FA14H ;-3
DW 0FA67H ;-4
DW 0FB07H ;-5
DW 0FB8FH ;-6
DW 0FB9EH ;-6#
DW 0FC0BH ;-7
DW 0FC43H ;1
DW 0FCACH ;2
DW 0FD09H ;3
DW 0FD33H ;4
DW 0FD83H ;5
DW 0FDC7H ;6
DW 0FDE7H ;6#
DW 0FE05H ;7
DW 0FE22H ;+1
DW 0FE56H ;+2
DW 0FE84H ;+3
DW 0FE9AH ;+4
DW 0FEC1H ;+5
DW 0FEE3H ;+6
DW 0FEF3H ;+6#
DW 0FF02H ;+7
BUTTERFLY: ; 化蝶曲谱
DW -3, 04H, -5, 03H, -6, 01H, 1, 03H, 2, 01H, -6, 01H, 1, 01H, -5, 02H
DW 5, 03H, +1, 01H, 6, 01H, 5, 01H, 3, 01H, 5, 01H, 2, 08H
DW 2, 02H, 2, 01H, 3, 01H, -7, 02H, -6, 02H, -5, 03H, -6, 01H, 1, 02H, 2, 02H
DW -3, 02H, 1, 02H, -6, 01H, -5, 01H, -6, 01H, 1, 01H, -5, 08H
DW 3, 03H, 5, 01H, -7, 03H, 2, 01H, -6, 01H, 1, 01H, 5, 05H
DW -3, 02H, -5, 01H, -3, 01H, -5, 01H, -6, 01H, -7, 01H, 2, 01H, -6, 06H, -5, 01H, -6, 01H DW 1, 03H, 2, 01H, 5, 02H, 3, 02H, 2, 02H, 3, 01H, 2, 01H, 1, 02H, -6, 01H, -5, 01H
DW -3, 04H, 1, 04H, -6, 01H, 1, 01H, -6, 01H, -5, 01H, -3, 01H, -5, 01H, -6, 01H, 1, 01H DW -5, 08H, FFH, 08H
DW 00H ;歌曲结束标志
YOUTH: ; 童年曲谱
DW FFH, 04H, 3, 02H, 5, 02H, 5, 04H, 3, 02H
6, 02H, 6, 02H, 7, 04H, 6, 04H, 6, 02H, 6, 02H, 5, 02H
DW +1, 04H, +1, 02H, +1, 02H, +1, 02H, 6, 02H, +1, 02H, 6, 02H,
5, 10H
DW FFH, 04H, 3, 02H, 5, 02H, 5, 04H, 5, 02H, 3, 02H,
6, 02H, 6, 02H, 7, 04H, 6, 04H, 6, 02H, 6, 02H, 5, 02H
DW +1, 04H, +1, 02H, +1, 02H, +1, 02H, 6, 02H, +1, 02H, 6, 02H,
+2, 10H
DW +5, 02H, +5, 04H, +5, 04H, +5, 02H, +3, 02H, +2, 02H
+1, 02H, +1, 04H, 6, 04H, +1, 02H, 6, 02H, +1, 02H
DW +2, 03H, +2, 01H, +2, 02H, +2, 02H, +2, 02H, +1, 02H, +3, 02H, +2, 02H +2, 10H
DW +3, 02H, +3, 04H, +3, 02H, +3, 02H, +2, 02H, +2, 02H
+1, 02H, +1, 04H, +1, 02H, +2, 02H, +1, 02H, 6, 02H, 5, 02H
DW 5, 02H, 5, 04H, 5, 02H, 6, 02H, 5, 02H, +2, 02H, +3, 02H
+1, 10H
DW 00H ;歌曲结束标志
MULIPLY_OF_THE_DRAGON: ; 龙的传人曲谱
DW 6, 04H, 7, 02H, +1, 02H, +2, 04H, +3, 02H, +2, 02H,
+1, 04H, +1, 02H, 7, 02H, 6, 08H
DW 6, 04H, 7, 02H, +1, 02H, +2, 04H, +3, 02H, +2, 02H,
+1, 04H, +1, 02H, 2, 02H, 3, 08H
DW 6, 04H, 7, 02H, +1, 02H, +2, 04H, +3, 02H, +2, 02H,
+1, 04H, +1, 02H, 7, 02H, 6, 08H
DW 7, 04H, 7, 04H, 7, 04H, +1, 02H, 7, 02H
6, 04H, 6, 02H, 5, 02H, 6, 08H
DW +3, 04H, +3, 04H, +3, 04H, +2, 02H, +1, 02H
+2, 04H, +2, 02H, +3, 02H, +2, 08H
DW +1, 04H, +1, 04H, +1, 04H, +2, 02H, +1, 02H
7, 04H, 7, 02H, +1, 02H, 7, 08H
DW +3, 04H, +3, 04H, +3, 04H, +2, 02H, +1, 02H
+2, 04H, +2, 02H, +3, 02H, +2, 08H
DW +1, 04H, +1, 04H, 7, 04H, 1, 02H, 7, 02H
7, 04H, 7, 02H, +1, 02H, 7, 08H
DW 00H ;歌曲结束标志
七.总结
在过去的一周里,我们的主要精力都集中在电子琴的设计上。

开始的头两天,我们去图书馆查阅电子琴的相关资料,熟悉了解
一般电子琴的工作原理。

对于电子琴有了基本的了解之后,我们开始了我们基于单片机的简易电子琴的总体方案设计。

如何发出不同频率的声音?键盘用什么实现?需要用A/D,D/A转换吗?如果需要,该如何连接芯片?能做出电子琴音色调控装置吗?如何改变电子琴的音色?如何实现电子琴自动放音功能?I/O口该如何扩展?需要电子琴节拍控制器吗?能够控制电子琴声音的强弱吗?一系列的问题堆在我们面前,亟待解决。

由于单片机这门课应用性特别强,需要多动手去实践才能切实地学好,而我们平时太缺少这样的实践机会,因此对于单片机的很多问题仍然是一知半解。

面对这么多问题,一个接一个,我们一开始都很泄气。

但是,当生活不允许你说不的时候,你是没有选择的。

有句话说的好,一个人的潜能往往在绝境中才会释放出来。

我们就处于这样的境地,所以也就不得不拼命开始看单片机的相关资料。

有两天,我每天花了10小时来看单片机的原理,早上天还没亮就起来,顶着寒风跑到自习室去抢位置,在那一坐就是一天。

平日里懒散的习惯在这两天被打入冷宫,一个全新的我开始了全新的生活。

正是在这两天,我慢慢懂了什么叫做中断,定时器如何工作,8051内部的结构,键盘电路该如何连接。

潜能就是被逼出来的,而男人,就应该对自己狠一点!
转眼元旦就到了,宿舍里四个同学,两个回家去了,一个看望远方的另一半去了,就剩我一个人。

新年钟声敲响的那一刻,我还在昏暗的灯光下看着那本从图书馆角落里翻出来的电子琴原理参考书。


旦是我们最后的机会,一旦错过就在也不会有了。

所以,我们都使尽浑身解数去奋力一搏,争取能在三天假期内完成简易电子琴设计。

三天里,我们唯一的目标就是尽快搞定电子琴设计。

我们一个问题一个问题攻克。

每解决一个问题,我们都激动不已,毕竟是自己设计的东西,颇有些成就感。

第一天过去之后,我们已经确定了我们设计的电子琴可以实现的三大功能:弹琴功能,音色转换功能,自动播放歌曲功能。

硬件设计,软件流程的总体规划都已经有点眉目了。

元旦第二天,我们借助前一天的势如破竹的气势,一举攻下几大难关。

硬件上键盘电路,EPROM扩展连接顺利,与音色滤波电路顺利会师。

软件方面,键盘扫描程序以及功能跳转程序有前人栽树,弹奏程序南山上有葫芦,我只需依之而画瓢。

一路高歌猛进,我们牛气冲天。

然而,革命的道路往往是曲折的,黎明前的黑暗也是最让人恐怖的。

在即将取得完胜的最后关头,我们遭遇了顽强的阻击。

该来的迟早要来,怎么也躲不过——音色调节电路的程序设计成了我们的拦路虎。

如何实现不同音色滤波电路的选通? 如何保持这一状态,使得选通之后一直发出所选的音色的音?自动播放乐程序里如何实现不同音色乐器的放音?一系列问题因为音色变换而生,之前所有的设计都得重新进行修改,才能与音色调整功能程序相匹配。

难啃的骨头还是得啃,这就是生活。

那天晚上,我们查资料一直查到晚上三点钟,然而还是没有找到任何相关问题的分析。

就这样,怀着恐惧与不安,我们守望着明日曙光。

最后一天了,革命尚未成功,同志仍须努力!
上午过去了,我们想过各种各样的办法,但都存在问题,程序无法实现预期的功能。

主要是音色调整程序执行后,无法保证其一直延续下去,直到下一次调整音色。

而且,其他子程序如弹琴程序,放歌程序里都与音色调整有牵连。

而他们就像三个彼此孤立的小岛,彼此需要照应,却又找不到这样一座桥梁。

我们要做的就是搭建这样几座桥梁,让彼此孤立的程序之间构建应有的联系,实现共同繁荣和谐发展。

出师未捷身先死,长使英雄泪满襟!然而,现实不想信眼泪!生活,很多时候你没有选择!我们开始头脑风暴,破釜沉舟跟他干上了!我开始感到身上有一股热流在游动,她深入我五脏六腑,触动我的大脑神经!突然,一道灵光从大脑闪过,我找到了!在最绝望的时刻,我终于找到了答案!多么激动人心,多么不可思议!我继承了先辈们光荣的革命传统,这一刻,我不是一个人在战斗!中国的年轻人,努力吧!胜利终将属于我们!我们有无限潜力,只是缺少激发自己潜能的机会!
经过一个星期的努力我们终于完成了简易电子琴的设计!
这一周是伟大的一周!
这一周是光辉的一周!
这一周是革命性的一周!
这一周是开创性的一周!
八.参考文献
1 胡乾斌,李光斌,李玲,喻红.单片微型计算机原理与应用(第二版).华中科技大学出版社
2刘启武,刘启文.电子琴原理使用与维修.电子工业出版社.
3徐明远,徐多闻.电子琴原理及电路.上海科学技术文献出版社.
4彭静,牛红.使用电路小丛书.电子工业出版社.
5阎石.数字电路技术基础.清华大学出版社
6喻红.单片微型计算机原理与应用试验指导.华中科技大学,机械学院内部资料.7喻红.数字电路技术基础实验指导.华中科技大学,机械学院内部资料.
8 郭天祥.单片机学习资料.机械电子工业出版社.1。

相关文档
最新文档