简易电子琴实验

时间:2024.4.20

哈尔滨理工大学

单片机原理及接口技术

课程设计报告

设计题目:简易电子琴实验

专    业: 电机与电器  

班    级: 电机10-1   

姓  名:  刘国生   

学    号:  1030350111 

《单片机原理及接口技术》课程设计任务书

课题描述

随着社会发展,计算机硬件技术越来越多的应用到生活中的各个领域,人们对软硬件技术结合开发出来的产品的要求越来越迫切,需求日益增加,如今用软硬件结合设计电子产品已经成为了一大时尚。本设计编写的一个用开关模拟电子琴的程序,以8086作为处理器,用8255接八个开关K1~K8,做电子琴按键输入,以8253控制扬声器,拨动不同的开关,发出相应的音阶。其中K1代表静音,K2发si的音,K3发la的音,K4发sol的音, K5发fa的音, K6发mi的音,K7发re的音,K8发do的音。

开发工具:汇编语言 ;DICE-8086K实验系统。

电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。

一、课程设计目的

1、通过本次课程设计加深对单片机课程的认识和掌握,对单片机的应用做进一步了解。

2、通过本次课程设计提高学生的编程能力、调试能力、文献资料查阅能力,为毕业设计  和以后工作打基础。

3、学生的创新意识,巩固了解汇编语言知识并要掌握8255芯片的使用并熟悉实验系统。

4、掌握蜂鸣器的使用方法;掌握蜂鸣器的不同发音的方法。

二、实验内容

1、简易电子琴原理:

(1)蜂鸣器输入不同频率的方波,会发出不同的声音

(2)通过按键,由单边机控制产生不同频率的方波,从而发出不同的声音。

2、实验过程

(1)通过单边机,使G6区的1到7号键由低到高发出1到7的音阶。

三、功能简介

本简易电子琴的设计可实现的功能如下:

通过一个独立键盘可以实现对该音乐的播放和停止操作的控制。连续按下不同的按键,可以实现乐曲的演奏。当按下某一按键,会发出相应的音调。按下按键时,扬声器会发出声音,松开按键后,扬声器停止发声。

四、连线说明

1、D1区:CTRL——A3区:P1.7

G6区:JP65——A3区:JP51(P1口)

2、运行程序,按G6区的1——7号键,输出7种音阶

3、使用G6区的1——7号键,弹一首生日快乐

五、实验原理图

六、程序流程图

实验一简易电子琴试验

主程序:

节拍1子程序(手动按键时用)                节拍2子程序(手动按键时用)

                    

节拍3子程序(手动按键时用)                节拍4子程序(手动按键时用)

                    

节拍5子程序(手动按键时用)            节拍6子程序(手动按键时用)

                     

节拍7子程序(手动按键时用)               节拍1子程序(自动放音时用,时间约0.2s)

圆角矩形: 开始                 

节拍2子程序(自动放音时用,时间约0.2s)   节拍3子程序(自动放音时用,时间约0.2s)

           

节拍4子程序(自动放音时用,时间约0.2s)   节拍5子程序(自动放音时用,时间约0.2s)

           

节拍6子程序(自动放音时用,时间约0.2s)   节拍7子程序(自动放音时用,时间约0.2s)

              


七、实验程序

K1 BIT   P1.0           ;按键1

K2 BIT   P1.1           ;按键2

K3 BIT   P1.2           ;按键3

K4 BIT   P1.3           ;按键4

K5 BIT   P1.4           ;按键5

K6 BIT   P1.5           ;按键6

K7 BIT   P1.6           ;按键7

Buzzer    BIT   P1.7    ;蜂鸣器

M1 EQU   17

M2 EQU   16

M3 EQU   15

M4 EQU   14

M5 EQU   13

M6 EQU   12

M7 EQU   11

ORG   0000H

  LJMP  START

  ORG   0100H

START:    MOV   SP,#60H

MAIN:     MOV   P1,#0FFH   ;P1口初始化

  LCALL Demo             ;播放一段演示音乐

MAIN_1:   JB K1,MAIN_2     ;判断1号键是否按下,否则检测2号键

  LCALL Sound1           ;发音子程序

MAIN_2:   JB K2,MAIN_3     ;判断2号键是否按下,否则检测3号键    

  LCALL Sound2           ;发音子程序

MAIN_3:   JB K3,MAIN_4     ;判断2号键是否按下,否则检测4号键    

  LCALL Sound3           ;发音子程序   

MAIN_4:   JB K4,MAIN_5     ;判断4号键是否按下,否则检测5号键    

  LCALL Sound4           ;发音子程序   

MAIN_5:   JB K5,MAIN_6     ;判断5号键是否按下,否则检测6号键    

  LCALL Sound5           ;发音子程序   

MAIN_6:   JB K6,MAIN_7     ;判断6号键是否按下,否则检测7号键 

LCALL   Sound6           ;发音子程序   

MAIN_7:   JB K7,MAIN_73    ;判断7号键是否按下,否则跳回检测1号键   

  LCALL Sound7           ;发音子程序   

MAIN_73:  SJMP  MAIN_1        ;返回从1号键开始扫描

;播放演示音乐

Demo:     MOV   DPTR,#Music

Demo_1:   CLR   A

  MOVC  A,@A+DPTR

  INC   DPTR   

  JZ Demo_Ret

  LCALL SoundMCU         ;放音子程序

  JMP   Demo_1

Demo_Ret: RET

;乐曲:),0-结果标志

Music:    DB M1,M2,M3,M4,M5,M6,M7,M7,M7,M6,M5,M4,M3,M2,M1

  DB M1,M2,M1,M2,M3,M2,M3,M4,M3,M4,M5,M4,M5,M6,M5

  DB M6,M7,M6,M7,M7,M6,M6,M6,0     

;程序控制发音

SoundMCU: MOV   R5,#40H       ;控制放音时间

  MOV   R7,A

  ACALL Time

  MOV   R6,A

SoundMCU_0:  PUSH  06H

SoundMCU_1:  ACALL MusicalScale

  DJNZ  R6,SoundMCU_1

  POP   06H

  DJNZ  R5,SoundMCU_0

  RET

;计算时长

Time:     MOV   B,#0FFH

  XCH   A,B

  DIV   AB

  XCH   A,B

  CJNE  A,#8,$+3

  JC Time_1

  INC   B

Time_1:   XCH   A,B

  RET

MusicalScale: MOV   A,R7

MusicalScale1:  CLR   Buzzer        ;1号键发音

  LCALL Delay      ;延时

  DJNZ  ACC,MusicalScale1

  MOV   A,R7

MusicalScale2:  SETB  Buzzer

  LCALL Delay      ;延时

  DJNZ  ACC,MusicalScale2

  RET

;1号键发音

Sound1:   MOV   R7,#M1        ;发音频率,越大频率越低

Sound1_1: ACALL MusicalScale

  JNB   K1,Sound1_1

  RET

;2号键发音        

Sound2:   MOV   R7,#M2        ;发音频率,越大频率越低

Sound2_1: ACALL MusicalScale

  JNB   K2,Sound2_1

  RET

;3号键发音        

Sound3:   MOV   R7,#M3

Sound3_1: ACALL MusicalScale

  JNB   K3,Sound3_1

  RET

;4号键发音        

Sound4:   MOV   R7,#M4

Sound4_1: ACALL MusicalScale

  JNB   K4,Sound4_1

  RET

;5号键发音        

Sound5:   MOV   R7,#M5

Sound5_1: ACALL MusicalScale

  JNB   K5,Sound5_1

  RET

;6号键发音        

Sound6:   MOV   R7,#M6

Sound6_1: ACALL MusicalScale

  JNB   K6,Sound6_1

  RET

;7号键发音

Sound7:   MOV   R7,#M7        ;发音频率,越大频率越低

Sound7_1: ACALL MusicalScale

  JNB   K7,Sound7_1

  RET  

;延时

Delay:    NOP

  RET

END

八、测试结果

 此次系统设计结果较好,分别播动8个按键会发出8种高低不同的声音,如果送入音乐程序,则会播放歌曲。

九、总结

本次所设计的具有存储功能的电子琴是由STC89C52单片机、小键盘和扬声器组成的。利用该电子琴电路。可以自由地输入音符,从而使扬声器发出悦耳的音乐,也可以通过特定的按键式扬声器自动播放音乐。此外,通过改变按键式电子琴的控制程序,也可以设计不同类型的电子琴。还可以通过扩展RAM的方法增加内存容量,从而更大地发挥电子琴的存储功能。

经过老师对硬件连接图的纠正,自己又调整.了程序最后终于方仿真成功.心情很激动,一方面:觉得很有成就感;另一方面:收获很大,不但锻炼了编程的能力,而且通过编程对硬件的整个流程了解了。用单片机控制播放模块和按键控制模块制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。

通过本次课程设计,不仅让我更深入的了解《单片机原理及接口技术

》这门学科,更使自己有了继续探索的兴趣。对我来说,在之前的学习过程中没有能够很好的掌握单片机原理及接口技术的学习,在很多地方还有生疏和遗漏,并且在此次课程设计过程中也遇到困难不能自已独立解决。但是,通过这次程序设计,除了增加了自己的编程能力,提高了自己的动手能力。同时我也深感“认真严谨”这个词的重要性,一点点小的马虎,便会导致整个程序不能正常运行。在今后的学习中,我将继续保持严谨的学习态度。与此同时,在同学的帮助下,让我体会到了相互学习的重要性,而更让人难以忘怀的是在热烈讨论问题时,那激情横溢的场面。总之,此次课程设计让我获益匪浅。

十一、参考文献:

1 马家辰,孙玉德,MCS—51单片机原来及接口技术(修订版) 【M】 .哈尔滨:哈尔滨工业大学出版社,1998.

2 徐淑华,程退安,姚万生.单片微型机原理及应用【M】.哈尔滨工业大学出版社,1997.

3 李朝青.单片机原理及接口技术【M】.北京:北京航空航天大学出版社1999.

4 何利民,MCS-51单片机及应用系统设计 【M】.北京:北京航空航天大学出版社,1998.

5 张洪洞,蓝清华,单片机应用技术教程【M】,北京:清华大学出版社,1998.


第二篇:数字电子技术综合实验报告——简易电子琴


数字电子技术综合实验报告

2012--2013学年第二学期

姓名:

学号:

班级:

实验时间:

实验指导老师:

目录

一、设计任务·········································································2

二、设计方案·········································································2

三、系统框图·········································································3

四、方案实现·········································································3

1.乐曲演奏的原理······································································3

2.总体方案·················································································4

五、实验结果·········································································6

六、方案优化·········································································7

七、心得体会·········································································7 附录·························································································7

1. VHDL源程序·····································································7

2. 各层次原理图·································································35

3.编译报告··········································································40

1

题目: 简易电子琴设计

摘要

电子琴的设计大规模可编程逻辑器件(FPGA)作为系统的核心控制部分通过软件的设计编写然后进行软硬件的调试运行最终达到设计电路的乐器演奏、选歌及显示功能。设计中采用计数原理控制演奏器发声,对音乐发生所必须确定的音符和节拍分别用程序语言实现。可以用它来弹奏和播放乐曲。特点是设计思路简单、清晰。

关键字:电子琴CPLD

一、设计任务

1. 基本要求

(1) 具有一般弹奏功能;

(2) 自动播放功能;

(3) 数码显示音符功能。

2.发挥部分

(1)能通过选择键在多首歌曲中选择播放;

(2)输出增加功率放大电路,增加歌曲容量;

(3)增加音效或节拍可调;

(4)无线弹奏。

二、设计方案

采用大规模可编程逻辑器件(FPGA),利用quartusII,通过verilog代码实现简易电子琴演奏电路。

2

三、系统框图

四、方案实现

1.乐曲演奏的原理:

乐曲演奏的原理:组成乐曲的每个音符的频率值(音调)以及持续时间(音长)是乐曲能持续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和持续的时间,就可以使扬声器发出持续的乐曲声。 ? 音调的控制

数字电子技术综合实验报告简易电子琴

数字电子技术综合实验报告简易电子琴

频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个八度音之间,又可分为十二个半音,每半个音的频率比为

。另外,音名A(简谱中的低音6)

的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间的每个音名对应的频率如图所示: 3

所有不同频率均从同一基准频率分频得到。将分频数四舍五入进行取整,并尽量减小误差。在本设计中选取6MHZ作为基准频率。从下表中可以看出最大分频系数为11468,采用14位二进制计数器分频可满足要求。此外还应给出预置数,对应不同的预置数,只需加载不同的预置数即可。采用加载预置数实现分频的方法比采用反馈复零法节省资源,实现起来更加容易。

数字电子技术综合实验报告简易电子琴

? 音长的控制

音符的持续时间须根据音乐的速度及每个音符的节拍数来确定。如果设定全音符的持续时间为1S的话,假设产生4分音符,则产生四分频即可实现四分音符的时长,并提供4HZ分频器。如图为乐曲演奏的原理图,其中,乐谱产生电路用来控制音乐的音调和时长。控制音调通过设置计数器的预置数来实现,预置不同的数值会可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置数的停留时间越长,则该音符的演奏时间越长,如2分音符,在记谱时将该音符记录两次即可。

2.总体方案

系统设计运用了自上而下的模块化设计思想,整个系统可分为分频,播放,弹奏,显示四个部分。 1. 分频部分

分频部分为一个可预置数的加计数器、二分频器和预置数选择器。预置数选择器选择来自播放和弹奏部分的不同的预置数。从预置数起循环作加计数,计到16383时产生一个高电平,否则得到低电平,将信号再进行二分频便可得到方波信号。预制数不同,产生的方波信号频率也不同。因此,只要

4

改变加计数器的预置数,便可由6MHz的时钟信号分频得到不同频率的方波。将方波信号输出到扬声器,便可发出不同音调的声音。

2. 播放部分

播放部分为一个节拍发生器、预置数获得器和一个存储器。节拍发生器将一个64Hz的时钟信号分为32Hz,16Hz,8Hz和4Hz的信号,以适应不同歌曲的播放速度。预置数获得器将音阶信号转换为对应的预置数。存储器将歌曲的预置数传送给分频器,实现曲目的不同音调和音长。

3. 弹奏部分

弹奏部分有十四个按键,每个按键对应一个音阶,及对应一个预置数,将预置数传递给分频部分便可得到不同频率的方波,从而产生不同的音调。

4. 显示部分

在进行音乐播放或弹奏时,将产生的预置数传递给此模块。根据不同的预置数,产生不同的信号,输出到数码管,便可显示出音阶数字。

5. 功能仿真

(1) 综合

仿真结果:设置输入信号key1为高电平,此时设置key=8192,即

key2=1,key3~key15=0。功能为播放第一首歌,在仿真结束后,如图示,fout为蜂鸣器的输出,led为数码管显示。如图示也正确,所以本设计经过仿真证明正确可行。

数字电子技术综合实验报告简易电子琴

5

(2) 总电路原理图

(3)引脚分配

输入信号:1个6MHz时钟信号,1个64Hz时钟信号,1个功能

选择按键,14个弹奏(选择)按键;

输出信号:3个数码管输出,一个蜂鸣器输出声音。

五、实验结果

在编译并仿真后下载,通过硬件测试,实验达到预期效果,当key1=0时,通过key2~key15这14个按键的键入蜂鸣器可以发出中音及高音的do~xi十四个音阶的音,即表示了电子琴的弹奏功能;当key1=1时,key2=1

数字电子技术综合实验报告简易电子琴

数字电子技术综合实验报告简易电子琴

时播放了第一首

6

歌;key3=1时,播放了第二首歌;key4=1时,播放第三首歌;key5=1时,播放了第四首歌。发出声音的同时,数码管可以显示不同的代表音符的数字。通过硬件的测试,所有的设计目标均实现。

六、方案优化

若采用正弦波代替方波来驱动扬声器将会有更好的效果。

七、心得体会

本次设计要用quartusII软件,由于之前对此软件不是太熟悉所以导致了一些错误和问题的发生,所以这次课程设计中认真学习了quartusII软件的具体使用步骤和操作流程,对所有可能出现的问题进行逐一攻破。通过这次实验,我不但熟悉了quartusII软件,也了解了开发的最基本流程和方法,也进一步加深了对Verilog编程语言的理解,最重要的是锻炼了我独立思考和分析的逻辑能力,通过从顶向下的设计方法,一步步实现,然后将整个设计串套起来,是我对设计的流程以及编程有了很大的提高。

附录:

1.VHDL源程序

modulechange_fenpinbi(clk_6m, prenum,tofout);//通过预置数改 变分频比; input clk_6m; input [13:0]prenum; outputtofout; wire clk_6m; reg [13:0]divider; regtofout;

always@(posedge clk_6m) begin

if(divider==16383) begin tofout=1'b1; divider=prenum; end else begin tofout=1'b0;

divider=divider+14'd1; end end

7

endmodule

moduleer_fen_pin(tofout,fout); //二分频模块; inputtofout; outputfout; regfout;

always@(posedgetofout) begin fout=~fout; end endmodule

modulefenpin(clk_64,clk_16,clk_8,clk_4); //获得适应不同曲目不同的时钟信号;input clk_64;

output clk_16,clk_8,clk_4; wire clk_64;

reg clk_32,clk_16,clk_8,clk_4; reg counter2; reg [1:0]counter4; always@(posedge clk_64) begin

clk_32=~clk_32; end

always@(posedge clk_32) begin

clk_16=~clk_16; if(counter2==1'b1) begin clk_8=~clk_8; counter2=1'b0; end else

counter2=counter2+1'b1; if(counter4==2'd3) begin clk_4=~clk_4; counter4=2'd0; end else

counter4=counter4+2'd1; end endmodule

moduleget_prenum(clk_sing,scale, prenum_s);//将音阶信号转换为预置数; inputclk_sing; input [4:0]scale; output [13:0]prenum_s; wireclk_sing; wire [4:0]scale; reg [13:0]prenum_s; always@(posedgeclk_sing)

8

begin case(scale)

5'd0:prenum_s=14'd16383; 5'd1:prenum_s=14'd4915; 5'd2:prenum_s=14'd6168; 5'd3:prenum_s=14'd7281; 5'd4:prenum_s=14'd7792; 5'd5:prenum_s=14'd8730; 5'd6:prenum_s=14'd9565; 5'd7:prenum_s=14'd10301; 5'd8:prenum_s=14'd10647; 5'd9:prenum_s=14'd11272; 5'd10:prenum_s=14'd11831; 5'd11:prenum_s=14'd12074; 5'd12:prenum_s=14'd12556; 5'd13:prenum_s=14'd12974; 5'd14:prenum_s=14'd13346; 5'd15:prenum_s=14'd13516; 5'd16:prenum_s=14'd13829; 5'd17:prenum_s=14'd14109; 5'd18:prenum_s=14'd14235; 5'd19:prenum_s=14'd14470; 5'd20:prenum_s=14'd14678; 5'd21:prenum_s=14'd14846; endcase end endmodule

modulepremusic(clk_16,clk_8,clk_4, key,clk_sing,scale); //预置曲目模块; input clk_16,clk_8,clk_4; input [13:0]key; output [4:0]scale; outputclk_sing; regclk_sing; reg [4:0]scale; reg [4:0]scale1; reg [4:0]scale2; reg [4:0]scale3; reg [4:0]scale4; reg [7:0]counter8_1; reg [7:0]counter8; reg [8:0]counter9; reg [8:0]counter9_1; always@(key)//选择曲目; begin case(key) 14'd8192: begin

scale=scale1;clk_sing=clk_4; end 14'd4096: Begin

9

scale=scale2;clk_sing=clk_4; end 14'd512: begin

scale=scale3;clk_sing=clk_8; end 14'd1024: Begin

scale=scale4;clk_sing=clk_8; end default:begin

scale=5'd0;clk_sing=clk_4; end endcase end

always@(posedge clk_4)//梁祝;begin

if(counter8==8'd134) counter8=8'd0; else

counter8=counter8+8'd1; case(counter8) 8'd0: scale1=5'd3; 8'd1: scale1=5'd3; 8'd2: scale1=5'd3; 8'd3: scale1=5'd3; 8'd4: scale1=5'd5;

8'd5: scale1=5'd5; 8'd6: scale1=5'd5; 8'd7: scale1=5'd6; 8'd8: scale1=5'd8; 8'd9: scale1=5'd8; 8'd10: scale1=5'd8; 8'd11: scale1=5'd9; 8'd12: scale1=5'd6; 8'd13: scale1=5'd8; 8'd14: scale1=5'd5; 8'd15: scale1=5'd5; 8'd16: scale1=5'd12; 8'd17: scale1=5'd12; 8'd18: scale1=5'd12; 8'd19: scale1=5'd15; 8'd20: scale1=5'd13; 8'd21: scale1=5'd12; 8'd22: scale1=5'd10; 8'd23: scale1=5'd12; 8'd24: scale1=5'd9; 8'd25: scale1=5'd9; 8'd26: scale1=5'd9; 8'd27: scale1=5'd9; 8'd28: scale1=5'd9; 8'd29: scale1=5'd9; 8'd30: scale1=5'd0; 8'd31: scale1=5'd0;

10

8'd32: scale1=5'd9; 8'd33: scale1=5'd9; 8'd34: scale1=5'd9; 8'd35: scale1=5'd10; 8'd36: scale1=5'd7; 8'd41: scale1=5'd5; 8'd42: scale1=5'd5; 8'd43: scale1=5'd6; 8'd44: scale1=5'd8; 8'd45: scale1=5'd8; 8'd46: scale1=5'd9; 8'd47: scale1=5'd9; 8'd48: scale1=5'd3; 8'd49: scale1=5'd3; 8'd50: scale1=5'd8; 8'd51: scale1=5'd8; 8'd52: scale1=5'd6; 8'd53: scale1=5'd5; 8'd54: scale1=5'd6; 8'd55: scale1=5'd8; 8'd56: scale1=5'd5; 8'd57: scale1=5'd5; 8'd58: scale1=5'd5; 8'd59: scale1=5'd5; 8'd60: scale1=5'd5; 8'd61: scale1=5'd5; 8'd62: scale1=5'd5;

8'd37: scale1=5'd7; 8'd38: scale1=5'd6; 8'd39: scale1=5'd6; 8'd40: scale1=5'd5;

8'd63: scale1=5'd5; 8'd64: scale1=5'd10; 8'd65: scale1=5'd10; 8'd66: scale1=5'd10; 8'd67: scale1=5'd12; 8'd68: scale1=5'd7; 8'd69: scale1=5'd7; 8'd70: scale1=5'd9; 8'd71: scale1=5'd9; 8'd72: scale1=5'd6; 8'd73: scale1=5'd8; 8'd74: scale1=5'd5; 8'd75: scale1=5'd5; 8'd76: scale1=5'd5; 8'd77: scale1=5'd5; 8'd78: scale1=5'd0; 8'd79: scale1=5'd0; 8'd80: scale1=5'd3; 8'd81: scale1=5'd5; 8'd82: scale1=5'd5; 8'd83: scale1=5'd3; 8'd84: scale1=5'd5;

11

8'd85: scale1=5'd6; 8'd86: scale1=5'd7; 8'd87: scale1=5'd9; 8'd88: scale1=5'd6; 8'd89: scale1=5'd6; 8'd90: scale1=5'd6; 8'd91: scale1=5'd6; 8'd92: scale1=5'd6; 8'd93: scale1=5'd6; 8'd94: scale1=5'd5; 8'd95: scale1=5'd6; 8'd96: scale1=5'd8; 8'd97: scale1=5'd8; 8'd98: scale1=5'd8; 8'd99: scale1=5'd9; 8'd100: scale1=5'd12; 8'd101: scale1=5'd12; 8'd102: scale1=5'd10; 8'd103: scale1=5'd10; 8'd104: scale1=5'd9; 8'd105: scale1=5'd9; 8'd106: scale1=5'd10; 8'd107: scale1=5'd9; 8'd108: scale1=5'd8; 8'd109: scale1=5'd8; 8'd110: scale1=5'd6; 8'd111: scale1=5'd5;

8'd112: scale1=5'd3; 8'd113: scale1=5'd3; 8'd114: scale1=5'd3; 8'd115: scale1=5'd3; 8'd116: scale1=5'd8; 8'd117: scale1=5'd8; 8'd118: scale1=5'd8; 8'd119: scale1=5'd8; 8'd120: scale1=5'd6; 8'd121: scale1=5'd8; 8'd122: scale1=5'd6; 8'd123: scale1=5'd5; 8'd124: scale1=5'd3; 8'd125: scale1=5'd5; 8'd126: scale1=5'd6; 8'd127: scale1=5'd8; 8'd128: scale1=5'd5; 8'd129: scale1=5'd5; 8'd130: scale1=5'd5; 8'd131: scale1=5'd5; 8'd132: scale1=5'd5; 8'd133: scale1=5'd5; 8'd134: scale1=5'd0; 8'd135: scale1=5'd0; default:scale1=5'd0; endcase end

12

always@(posedge clk_4)//小情歌; begin

if(counter9==9'd334) counter9=9'd0; else

counter9=counter9+9'd1; case(counter9) 9'd0: scale2=5'd0; 9'd1: scale2=5'd0; 9'd2: scale2=5'd15; 9'd3: scale2=5'd14; 9'd4: scale2=5'd15; 9'd5: scale2=5'd15; 9'd6: scale2=5'd14; 9'd7: scale2=5'd14; 9'd8: scale2=5'd15; 9'd9: scale2=5'd15; 9'd10: scale2=5'd14; 9'd11: scale2=5'd14; 9'd12: scale2=5'd12; 9'd13: scale2=5'd12; 9'd14: scale2=5'd10; 9'd15: scale2=5'd10; 9'd16: scale2=5'd12; 9'd17: scale2=5'd12; 9'd18: scale2=5'd12; 9'd19: scale2=5'd12;

9'd20: scale2=5'd14; 9'd21: scale2=5'd14; 9'd22: scale2=5'd14; 9'd23: scale2=5'd14; 9'd24: scale2=5'd13; 9'd25: scale2=5'd13; 9'd26: scale2=5'd13; 9'd27: scale2=5'd13; 9'd28: scale2=5'd13; 9'd29: scale2=5'd13; 9'd30: scale2=5'd13; 9'd31: scale2=5'd13; 9'd32: scale2=5'd0; 9'd33: scale2=5'd0; 9'd34: scale2=5'd15; 9'd35: scale2=5'd14; 9'd36: scale2=5'd15; 9'd37: scale2=5'd15; 9'd38: scale2=5'd14; 9'd39: scale2=5'd14; 9'd40: scale2=5'd15; 9'd41: scale2=5'd15; 9'd42: scale2=5'd14; 9'd43: scale2=5'd14; 9'd44: scale2=5'd15; 9'd45: scale2=5'd15; 9'd46: scale2=5'd17;

13

9'd47: scale2=5'd0; 9'd48: scale2=5'd17; 9'd49: scale2=5'd17; 9'd50: scale2=5'd17; 9'd51: scale2=5'd17; 9'd52: scale2=5'd17; 9'd53: scale2=5'd17; 9'd54: scale2=5'd17; 9'd55: scale2=5'd17; 9'd56: scale2=5'd0; 9'd57: scale2=5'd0; 9'd58: scale2=5'd0; 9'd59: scale2=5'd0; 9'd60: scale2=5'd0; 9'd61: scale2=5'd13; 9'd62: scale2=5'd15; 9'd63: scale2=5'd13; 9'd64: scale2=5'd15; 9'd65: scale2=5'd15; 9'd66: scale2=5'd15; 9'd67: scale2=5'd15; 9'd68: scale2=5'd15; 9'd69: scale2=5'd15; 9'd70: scale2=5'd16; 9'd71: scale2=5'd17; 9'd72: scale2=5'd16; 9'd73: scale2=5'd16;

9'd74: scale2=5'd16; 9'd75: scale2=5'd16; 9'd76: scale2=5'd0; 9'd77: scale2=5'd12; 9'd78: scale2=5'd14; 9'd79: scale2=5'd12; 9'd80: scale2=5'd14; 9'd81: scale2=5'd14; 9'd82: scale2=5'd14; 9'd83: scale2=5'd14; 9'd84: scale2=5'd16; 9'd85: scale2=5'd16; 9'd86: scale2=5'd15; 9'd87: scale2=5'd0; 9'd88: scale2=5'd15; 9'd89: scale2=5'd15; 9'd90: scale2=5'd15; 9'd91: scale2=5'd15; 9'd92: scale2=5'd15; 9'd93: scale2=5'd15; 9'd94: scale2=5'd15; 9'd95: scale2=5'd15; 9'd96: scale2=5'd17; 9'd97: scale2=5'd17; 9'd98: scale2=5'd17; 9'd99: scale2=5'd16; 9'd100: scale2=5'd16;

14

9'd101: scale2=5'd16; 9'd102: scale2=5'd15; 9'd103: scale2=5'd15; 9'd104: scale2=5'd16; 9'd105: scale2=5'd16; 9'd106: scale2=5'd16; 9'd107: scale2=5'd15; 9'd108: scale2=5'd15; 9'd109: scale2=5'd15; 9'd110: scale2=5'd12; 9'd111: scale2=5'd12; 9'd112: scale2=5'd12; 9'd113: scale2=5'd12; 9'd114: scale2=5'd12; 9'd115: scale2=5'd12; 9'd116: scale2=5'd12; 9'd117: scale2=5'd15; 9'd118: scale2=5'd14; 9'd119: scale2=5'd13; 9'd120: scale2=5'd12; 9'd121: scale2=5'd12; 9'd122: scale2=5'd12; 9'd123: scale2=5'd12; 9'd124: scale2=5'd12; 9'd125: scale2=5'd12; 9'd126: scale2=5'd12; 9'd127: scale2=5'd12;

9'd128: scale2=5'd0; 9'd129: scale2=5'd0; 9'd130: scale2=5'd15; 9'd131: scale2=5'd14; 9'd132: scale2=5'd15; 9'd133: scale2=5'd15; 9'd134: scale2=5'd14; 9'd135: scale2=5'd14; 9'd136: scale2=5'd15; 9'd137: scale2=5'd15; 9'd138: scale2=5'd14; 9'd139: scale2=5'd14; 9'd140: scale2=5'd12; 9'd141: scale2=5'd12; 9'd142: scale2=5'd10; 9'd143: scale2=5'd10; 9'd144: scale2=5'd12; 9'd145: scale2=5'd12; 9'd146: scale2=5'd12; 9'd147: scale2=5'd12; 9'd148: scale2=5'd14; 9'd149: scale2=5'd14; 9'd150: scale2=5'd14; 9'd151: scale2=5'd14; 9'd152: scale2=5'd15; 9'd153: scale2=5'd15; 9'd154: scale2=5'd15;

15

9'd155: scale2=5'd15; 9'd156: scale2=5'd15; 9'd157: scale2=5'd15; 9'd158: scale2=5'd15; 9'd159: scale2=5'd15; 9'd159: scale2=5'd0; 9'd160: scale2=5'd0; 9'd161: scale2=5'd15; 9'd162: scale2=5'd14; 9'd163: scale2=5'd15; 9'd164: scale2=5'd15; 9'd165: scale2=5'd14; 9'd166: scale2=5'd14; 9'd167: scale2=5'd15; 9'd168: scale2=5'd15; 9'd169: scale2=5'd14; 9'd170: scale2=5'd14; 9'd171: scale2=5'd15; 9'd172: scale2=5'd15; 9'd173: scale2=5'd17; 9'd174: scale2=5'd20; 9'd175: scale2=5'd19; 9'd176: scale2=5'd19; 9'd177: scale2=5'd19; 9'd178: scale2=5'd19; 9'd179: scale2=5'd19; 9'd180: scale2=5'd19;

9'd181: scale2=5'd19; 9'd182: scale2=5'd19; 9'd183: scale2=5'd19; 9'd184: scale2=5'd19; 9'd185: scale2=5'd19; 9'd186: scale2=5'd19; 9'd187: scale2=5'd0; 9'd188: scale2=5'd19; 9'd189: scale2=5'd18; 9'd190: scale2=5'd17; 9'd191: scale2=5'd18; 9'd192: scale2=5'd18; 9'd193: scale2=5'd18; 9'd194: scale2=5'd18; 9'd195: scale2=5'd18; 9'd196: scale2=5'd18; 9'd197: scale2=5'd19; 9'd198: scale2=5'd19; 9'd199: scale2=5'd16; 9'd200: scale2=5'd16; 9'd201: scale2=5'd16; 9'd202: scale2=5'd16; 9'd203: scale2=5'd0; 9'd204: scale2=5'd18; 9'd205: scale2=5'd17; 9'd206: scale2=5'd16; 9'd207: scale2=5'd17;

16

9'd208: scale2=5'd17; 9'd209: scale2=5'd17; 9'd210: scale2=5'd17; 9'd211: scale2=5'd16; 9'd212: scale2=5'd16; 9'd213: scale2=5'd16; 9'd214: scale2=5'd15; 9'd215: scale2=5'd15; 9'd216: scale2=5'd15; 9'd217: scale2=5'd15; 9'd218: scale2=5'd15; 9'd219: scale2=5'd15; 9'd220: scale2=5'd15; 9'd221: scale2=5'd15; 9'd222: scale2=5'd15; 9'd223: scale2=5'd17; 9'd224: scale2=5'd17; 9'd225: scale2=5'd17; 9'd226: scale2=5'd16; 9'd227: scale2=5'd16; 9'd228: scale2=5'd16; 9'd229: scale2=5'd17; 9'd230: scale2=5'd17; 9'd231: scale2=5'd18; 9'd232: scale2=5'd18; 9'd233: scale2=5'd18; 9'd234: scale2=5'd17;

9'd235: scale2=5'd17; 9'd236: scale2=5'd17; 9'd237: scale2=5'd15; 9'd238: scale2=5'd15; 9'd239: scale2=5'd16; 9'd240: scale2=5'd16; 9'd241: scale2=5'd16; 9'd242: scale2=5'd16; 9'd243: scale2=5'd16; 9'd244: scale2=5'd16; 9'd245: scale2=5'd16; 9'd246: scale2=5'd16; 9'd247: scale2=5'd0; 9'd248: scale2=5'd0; 9'd249: scale2=5'd12; 9'd250: scale2=5'd12; 9'd251: scale2=5'd0; 9'd252: scale2=5'd13; 9'd253: scale2=5'd15; 9'd254: scale2=5'd15; 9'd255: scale2=5'd0; 9'd256: scale2=5'd17; 9'd257: scale2=5'd17; 9'd258: scale2=5'd0; 9'd259: scale2=5'd17; 9'd260: scale2=5'd17; 9'd261: scale2=5'd16;

17

9'd262: scale2=5'd15; 9'd263: scale2=5'd17; 9'd264: scale2=5'd16; 9'd265: scale2=5'd15; 9'd266: scale2=5'd17; 9'd267: scale2=5'd17; 9'd268: scale2=5'd16; 9'd269: scale2=5'd15; 9'd270: scale2=5'd0; 9'd271: scale2=5'd15; 9'd272: scale2=5'd0; 9'd273: scale2=5'd15; 9'd274: scale2=5'd13; 9'd275: scale2=5'd15; 9'd276: scale2=5'd16; 9'd277: scale2=5'd17; 9'd278: scale2=5'd0; 9'd279: scale2=5'd17; 9'd280: scale2=5'd17; 9'd281: scale2=5'd17; 9'd282: scale2=5'd17; 9'd283: scale2=5'd0; 9'd284: scale2=5'd12; 9'd285: scale2=5'd13; 9'd286: scale2=5'd15; 9'd287: scale2=5'd0; 9'd288: scale2=5'd0;

9'd289: scale2=5'd15; 9'd290: scale2=5'd13; 9'd291: scale2=5'd15; 9'd292: scale2=5'd16; 9'd293: scale2=5'd17; 9'd294: scale2=5'd16; 9'd295: scale2=5'd17; 9'd296: scale2=5'd12; 9'd297: scale2=5'd12; 9'd298: scale2=5'd12; 9'd299: scale2=5'd0; 9'd300: scale2=5'd12; 9'd301: scale2=5'd13; 9'd302: scale2=5'd15; 9'd303: scale2=5'd0; 9'd304: scale2=5'd0; 9'd305: scale2=5'd15; 9'd306: scale2=5'd13; 9'd307: scale2=5'd15; 9'd308: scale2=5'd16; 9'd309: scale2=5'd17; 9'd310: scale2=5'd16; 9'd311: scale2=5'd17; 9'd312: scale2=5'd0; 9'd313: scale2=5'd16; 9'd314: scale2=5'd16; 9'd315: scale2=5'd15;

18

9'd316: scale2=5'd15; 9'd317: scale2=5'd16; 9'd318: scale2=5'd16; 9'd319: scale2=5'd15; 9'd320: scale2=5'd15; 9'd321: scale2=5'd15; 9'd322: scale2=5'd15; 9'd323: scale2=5'd15; 9'd324: scale2=5'd15; 9'd325: scale2=5'd15; 9'd326: scale2=5'd15; 9'd327: scale2=5'd15; 9'd328: scale2=5'd15; 9'd329: scale2=5'd15; 9'd330: scale2=5'd15; 9'd331: scale2=5'd15; 9'd332: scale2=5'd15; 9'd333: scale2=5'd15; 9'd334: scale2=5'd15; default:scale2=5'd0; endcase end

always@(posedge clk_8)//真的爱你;begin

if(counter8_1==8'd159) counter8_1=8'd0; else

counter8_1=counter8_1+8'd1; case(counter8_1) 8'd0: scale3=5'd0; 8'd1: scale3=5'd0; 8'd2: scale3=5'd0; 8'd3: scale3=5'd0; 8'd4: scale3=5'd0; 8'd5: scale3=5'd0; 8'd6: scale3=5'd0; 8'd7: scale3=5'd0; 8'd8: scale3=5'd0; 8'd9: scale3=5'd0; 8'd10: scale3=5'd5; 8'd11: scale3=5'd5; 8'd12: scale3=5'd8; 8'd13: scale3=5'd8; 8'd14: scale3=5'd9; 8'd15: scale3=5'd9; 8'd16: scale3=5'd10; 8'd17: scale3=5'd10; 8'd18: scale3=5'd10; 8'd19: scale3=5'd0; 8'd20: scale3=5'd10; 8'd21: scale3=5'd9; 8'd22: scale3=5'd8; 8'd23: scale3=5'd9; 8'd24: scale3=5'd9;

19

8'd25: scale3=5'd9; 8'd26: scale3=5'd9; 8'd27: scale3=5'd9; 8'd28: scale3=5'd9; 8'd29: scale3=5'd0; 8'd30: scale3=5'd9; 8'd31: scale3=5'd10; 8'd32: scale3=5'd9; 8'd33: scale3=5'd9; 8'd34: scale3=5'd8; 8'd35: scale3=5'd8; 8'd36: scale3=5'd7; 8'd37: scale3=5'd8; 8'd38: scale3=5'd7; 8'd39: scale3=5'd7; 8'd40: scale3=5'd6; 8'd41: scale3=5'd6; 8'd42: scale3=5'd6; 8'd43: scale3=5'd6; 8'd44: scale3=5'd6; 8'd45: scale3=5'd6; 8'd46: scale3=5'd8; 8'd47: scale3=5'd9; 8'd48: scale3=5'd10; 8'd49: scale3=5'd10; 8'd50: scale3=5'd10; 8'd51: scale3=5'd10;

8'd52: scale3=5'd10; 8'd53: scale3=5'd9; 8'd54: scale3=5'd8; 8'd55: scale3=5'd9; 8'd56: scale3=5'd9; 8'd57: scale3=5'd9; 8'd58: scale3=5'd9; 8'd59: scale3=5'd9; 8'd60: scale3=5'd9; 8'd61: scale3=5'd8; 8'd62: scale3=5'd7; 8'd63: scale3=5'd8; 8'd64: scale3=5'd8; 8'd65: scale3=5'd8; 8'd66: scale3=5'd8; 8'd67: scale3=5'd5; 8'd68: scale3=5'd8; 8'd69: scale3=5'd12; 8'd70: scale3=5'd7; 8'd71: scale3=5'd8; 8'd72: scale3=5'd12; 8'd73: scale3=5'd12; 8'd74: scale3=5'd5; 8'd75: scale3=5'd5; 8'd76: scale3=5'd8; 8'd77: scale3=5'd8; 8'd78: scale3=5'd9;

20

8'd79: scale3=5'd9; 8'd80: scale3=5'd10; 8'd81: scale3=5'd10; 8'd82: scale3=5'd10; 8'd83: scale3=5'd0; 8'd84: scale3=5'd10; 8'd85: scale3=5'd9; 8'd86: scale3=5'd8; 8'd87: scale3=5'd9; 8'd88: scale3=5'd9; 8'd89: scale3=5'd9; 8'd90: scale3=5'd9; 8'd91: scale3=5'd9; 8'd92: scale3=5'd9; 8'd93: scale3=5'd0; 8'd94: scale3=5'd9; 8'd95: scale3=5'd10; 8'd96: scale3=5'd9; 8'd97: scale3=5'd9; 8'd98: scale3=5'd8; 8'd99: scale3=5'd8; 8'd100: scale3=5'd7; 8'd101: scale3=5'd8; 8'd102: scale3=5'd7; 8'd103: scale3=5'd7; 8'd104: scale3=5'd6; 8'd105: scale3=5'd6;

8'd106: scale3=5'd6; 8'd107: scale3=5'd6; 8'd108: scale3=5'd6; 8'd109: scale3=5'd6; 8'd110: scale3=5'd8; 8'd111: scale3=5'd9; 8'd112: scale3=5'd10; 8'd113: scale3=5'd10; 8'd114: scale3=5'd10; 8'd115: scale3=5'd10; 8'd116: scale3=5'd10; 8'd117: scale3=5'd9; 8'd118: scale3=5'd8; 8'd119: scale3=5'd9; 8'd120: scale3=5'd9; 8'd121: scale3=5'd9; 8'd122: scale3=5'd9; 8'd123: scale3=5'd9; 8'd124: scale3=5'd9; 8'd125: scale3=5'd8; 8'd126: scale3=5'd7; 8'd127: scale3=5'd8; 8'd128: scale3=5'd8; 8'd129: scale3=5'd8; 8'd130: scale3=5'd8; 8'd131: scale3=5'd5; 8'd132: scale3=5'd8;

21

8'd133: scale3=5'd12; 8'd134: scale3=5'd7; 8'd135: scale3=5'd8; 8'd136: scale3=5'd12; default:scale3=5'd0; endcase end

always@(posedge clk_8)//星月神话; 8'd137: scale3=5'd12; 8'd138: scale3=5'd5; 8'd139: scale3=5'd5; 8'd140: scale3=5'd8; 8'd141: scale3=5'd8; 8'd142: scale3=5'd9; 8'd143: scale3=5'd9; 8'd144: scale3=5'd8; 8'd145: scale3=5'd8; 8'd146: scale3=5'd8; 8'd147: scale3=5'd8; 8'd148: scale3=5'd5; 8'd149: scale3=5'd5; 8'd150: scale3=5'd4; 8'd151: scale3=5'd4; 8'd152: scale3=5'd3; 8'd153: scale3=5'd3; 8'd154: scale3=5'd0; 8'd155: scale3=5'd0; 8'd156: scale3=5'd0; 8'd157: scale3=5'd0; 8'd158: scale3=5'd0; 8'd159: scale3=5'd0;

begin

if(counter9_1==9'd479) counter9_1=9'd0; else

counter9_1=counter9_1+9'd1; case(counter9_1) 9'd0: scale4=5'd10; 9'd1: scale4=5'd10; 9'd2: scale4=5'd10; 9'd3: scale4=5'd10; 9'd4: scale4=5'd9; 9'd5: scale4=5'd9; 9'd6: scale4=5'd8; 9'd7: scale4=5'd8; 9'd8: scale4=5'd9; 9'd9: scale4=5'd9; 9'd10: scale4=5'd9; 9'd11: scale4=5'd9; 9'd12: scale4=5'd8; 9'd13: scale4=5'd8; 9'd14: scale4=5'd7; 9'd15: scale4=5'd7; 9'd16: scale4=5'd8;

22

9'd17: scale4=5'd8; 9'd18: scale4=5'd8; 9'd19: scale4=5'd8; 9'd20: scale4=5'd7; 9'd21: scale4=5'd7; 9'd22: scale4=5'd6; 9'd23: scale4=5'd6; 9'd24: scale4=5'd5; 9'd25: scale4=5'd5; 9'd26: scale4=5'd5; 9'd27: scale4=5'd5; 9'd28: scale4=5'd5; 9'd29: scale4=5'd5; 9'd30: scale4=5'd5; 9'd31: scale4=5'd5; 9'd32: scale4=5'd6; 9'd33: scale4=5'd6; 9'd34: scale4=5'd6; 9'd35: scale4=5'd6; 9'd36: scale4=5'd8; 9'd37: scale4=5'd8; 9'd38: scale4=5'd7; 9'd39: scale4=5'd7; 9'd40: scale4=5'd7; 9'd41: scale4=5'd7; 9'd42: scale4=5'd7; 9'd43: scale4=5'd7;

9'd44: scale4=5'd5; 9'd45: scale4=5'd5; 9'd46: scale4=5'd3; 9'd47: scale4=5'd3; 9'd48: scale4=5'd3; 9'd49: scale4=5'd3; 9'd50: scale4=5'd3; 9'd51: scale4=5'd3; 9'd52: scale4=5'd3; 9'd53: scale4=5'd3; 9'd54: scale4=5'd3; 9'd55: scale4=5'd3; 9'd56: scale4=5'd3; 9'd57: scale4=5'd3; 9'd58: scale4=5'd3; 9'd59: scale4=5'd3; 9'd60: scale4=5'd8; 9'd61: scale4=5'd8; 9'd62: scale4=5'd9; 9'd63: scale4=5'd9; 9'd64: scale4=5'd10; 9'd65: scale4=5'd10; 9'd66: scale4=5'd10; 9'd67: scale4=5'd10; 9'd68: scale4=5'd9; 9'd69: scale4=5'd9; 9'd70: scale4=5'd8;

23

9'd71: scale4=5'd8; 9'd72: scale4=5'd9; 9'd73: scale4=5'd9; 9'd74: scale4=5'd9; 9'd75: scale4=5'd9; 9'd76: scale4=5'd8; 9'd77: scale4=5'd8; 9'd78: scale4=5'd7; 9'd79: scale4=5'd7; 9'd80: scale4=5'd8; 9'd81: scale4=5'd8; 9'd82: scale4=5'd8; 9'd83: scale4=5'd8; 9'd84: scale4=5'd7; 9'd85: scale4=5'd7; 9'd86: scale4=5'd6; 9'd87: scale4=5'd6; 9'd88: scale4=5'd5; 9'd89: scale4=5'd5; 9'd90: scale4=5'd5; 9'd91: scale4=5'd5; 9'd92: scale4=5'd5; 9'd93: scale4=5'd5; 9'd94: scale4=5'd5; 9'd95: scale4=5'd5; 9'd96: scale4=5'd6; 9'd97: scale4=5'd6;

9'd98: scale4=5'd6; 9'd99: scale4=5'd6; 9'd100: scale4=5'd10; 9'd101: scale4=5'd10; 9'd102: scale4=5'd7; 9'd103: scale4=5'd7; 9'd104: scale4=5'd7; 9'd105: scale4=5'd7; 9'd106: scale4=5'd7; 9'd107: scale4=5'd7; 9'd108: scale4=5'd8; 9'd109: scale4=5'd8; 9'd110: scale4=5'd9; 9'd111: scale4=5'd9; 9'd112: scale4=5'd8; 9'd113: scale4=5'd8; 9'd114: scale4=5'd8; 9'd115: scale4=5'd8; 9'd116: scale4=5'd8; 9'd117: scale4=5'd8; 9'd118: scale4=5'd8; 9'd119: scale4=5'd8; 9'd120: scale4=5'd8; 9'd121: scale4=5'd8; 9'd122: scale4=5'd8; 9'd123: scale4=5'd8; 9'd124: scale4=5'd8;

24

9'd125: scale4=5'd8; 9'd126: scale4=5'd8; 9'd127: scale4=5'd8; 9'd128: scale4=5'd6; 9'd129: scale4=5'd6; 9'd130: scale4=5'd6; 9'd131: scale4=5'd6; 9'd132: scale4=5'd6; 9'd133: scale4=5'd6; 9'd134: scale4=5'd8; 9'd135: scale4=5'd8; 9'd136: scale4=5'd7; 9'd137: scale4=5'd7; 9'd138: scale4=5'd7; 9'd139: scale4=5'd7; 9'd140: scale4=5'd8; 9'd141: scale4=5'd8; 9'd142: scale4=5'd9; 9'd143: scale4=5'd9; 9'd144: scale4=5'd10; 9'd145: scale4=5'd10; 9'd146: scale4=5'd10; 9'd147: scale4=5'd10; 9'd148: scale4=5'd10; 9'd149: scale4=5'd10; 9'd150: scale4=5'd12; 9'd151: scale4=5'd12;

9'd152: scale4=5'd10; 9'd153: scale4=5'd10; 9'd154: scale4=5'd10; 9'd155: scale4=5'd10; 9'd156: scale4=5'd10; 9'd157: scale4=5'd10; 9'd158: scale4=5'd10; 9'd159: scale4=5'd10; 9'd160: scale4=5'd6; 9'd161: scale4=5'd6; 9'd162: scale4=5'd6; 9'd163: scale4=5'd6; 9'd164: scale4=5'd6; 9'd165: scale4=5'd6; 9'd166: scale4=5'd8; 9'd167: scale4=5'd8; 9'd168: scale4=5'd7; 9'd169: scale4=5'd7; 9'd170: scale4=5'd7; 9'd171: scale4=5'd7; 9'd172: scale4=5'd8; 9'd173: scale4=5'd8; 9'd174: scale4=5'd9; 9'd175: scale4=5'd9; 9'd176: scale4=5'd8; 9'd177: scale4=5'd8; 9'd178: scale4=5'd8;

25

9'd179: scale4=5'd8; 9'd180: scale4=5'd8; 9'd181: scale4=5'd8; 9'd182: scale4=5'd8; 9'd183: scale4=5'd8; 9'd184: scale4=5'd8; 9'd185: scale4=5'd8; 9'd186: scale4=5'd8; 9'd187: scale4=5'd8; 9'd188: scale4=5'd8; 9'd189: scale4=5'd8; 9'd190: scale4=5'd9; 9'd191: scale4=5'd9; 9'd192: scale4=5'd10; 9'd193: scale4=5'd10; 9'd194: scale4=5'd10; 9'd195: scale4=5'd10; 9'd196: scale4=5'd9; 9'd197: scale4=5'd9; 9'd198: scale4=5'd8; 9'd199: scale4=5'd8; 9'd200: scale4=5'd9; 9'd201: scale4=5'd9; 9'd202: scale4=5'd9; 9'd203: scale4=5'd9; 9'd204: scale4=5'd8; 9'd205: scale4=5'd8;

9'd206: scale4=5'd7; 9'd207: scale4=5'd7; 9'd208: scale4=5'd8; 9'd209: scale4=5'd8; 9'd210: scale4=5'd8; 9'd211: scale4=5'd8; 9'd212: scale4=5'd7; 9'd213: scale4=5'd7; 9'd214: scale4=5'd6; 9'd215: scale4=5'd6; 9'd216: scale4=5'd5; 9'd217: scale4=5'd5; 9'd218: scale4=5'd5; 9'd219: scale4=5'd5; 9'd220: scale4=5'd5; 9'd221: scale4=5'd5; 9'd222: scale4=5'd5; 9'd223: scale4=5'd5; 9'd224: scale4=5'd6; 9'd225: scale4=5'd6; 9'd226: scale4=5'd6; 9'd227: scale4=5'd6; 9'd228: scale4=5'd8; 9'd229: scale4=5'd8; 9'd230: scale4=5'd7; 9'd231: scale4=5'd7; 9'd232: scale4=5'd7;

26

9'd233: scale4=5'd7; 9'd234: scale4=5'd7; 9'd235: scale4=5'd7; 9'd236: scale4=5'd8; 9'd237: scale4=5'd8; 9'd238: scale4=5'd9; 9'd239: scale4=5'd9; 9'd240: scale4=5'd10; 9'd241: scale4=5'd10; 9'd242: scale4=5'd10; 9'd243: scale4=5'd10; 9'd244: scale4=5'd10; 9'd245: scale4=5'd10; 9'd246: scale4=5'd9; 9'd247: scale4=5'd9; 9'd248: scale4=5'd9; 9'd249: scale4=5'd9; 9'd250: scale4=5'd9; 9'd251: scale4=5'd9; 9'd252: scale4=5'd8; 9'd253: scale4=5'd8; 9'd254: scale4=5'd9; 9'd255: scale4=5'd9; 9'd256: scale4=5'd10; 9'd257: scale4=5'd10; 9'd258: scale4=5'd10; 9'd259: scale4=5'd10;

9'd260: scale4=5'd9; 9'd261: scale4=5'd9; 9'd262: scale4=5'd8; 9'd263: scale4=5'd8; 9'd264: scale4=5'd9; 9'd265: scale4=5'd9; 9'd266: scale4=5'd9; 9'd267: scale4=5'd9; 9'd268: scale4=5'd8; 9'd269: scale4=5'd8; 9'd270: scale4=5'd7; 9'd271: scale4=5'd7; 9'd272: scale4=5'd8; 9'd273: scale4=5'd8; 9'd274: scale4=5'd8; 9'd275: scale4=5'd8; 9'd276: scale4=5'd7; 9'd277: scale4=5'd7; 9'd278: scale4=5'd6; 9'd279: scale4=5'd6; 9'd280: scale4=5'd5; 9'd281: scale4=5'd5; 9'd282: scale4=5'd5; 9'd283: scale4=5'd5; 9'd284: scale4=5'd8; 9'd285: scale4=5'd8; 9'd286: scale4=5'd5;

27

9'd287: scale4=5'd5; 9'd288: scale4=5'd6; 9'd289: scale4=5'd6; 9'd290: scale4=5'd6; 9'd291: scale4=5'd6; 9'd292: scale4=5'd10; 9'd293: scale4=5'd10; 9'd294: scale4=5'd7; 9'd295: scale4=5'd7; 9'd296: scale4=5'd7; 9'd297: scale4=5'd7; 9'd298: scale4=5'd7; 9'd299: scale4=5'd7; 9'd300: scale4=5'd8; 9'd301: scale4=5'd8; 9'd302: scale4=5'd9; 9'd303: scale4=5'd9; 9'd304: scale4=5'd8; 9'd305: scale4=5'd8; 9'd306: scale4=5'd8; 9'd307: scale4=5'd8; 9'd308: scale4=5'd8; 9'd309: scale4=5'd8; 9'd310: scale4=5'd8; 9'd311: scale4=5'd8; 9'd312: scale4=5'd8; 9'd313: scale4=5'd8;

9'd314: scale4=5'd8; 9'd315: scale4=5'd8; 9'd316: scale4=5'd10; 9'd317: scale4=5'd10; 9'd318: scale4=5'd12; 9'd319: scale4=5'd12; 9'd320: scale4=5'd13; 9'd321: scale4=5'd13; 9'd322: scale4=5'd13; 9'd323: scale4=5'd13; 9'd324: scale4=5'd13; 9'd325: scale4=5'd13; 9'd326: scale4=5'd13; 9'd327: scale4=5'd13; 9'd328: scale4=5'd12; 9'd329: scale4=5'd12; 9'd330: scale4=5'd9; 9'd331: scale4=5'd9; 9'd332: scale4=5'd9; 9'd333: scale4=5'd9; 9'd334: scale4=5'd12; 9'd335: scale4=5'd12; 9'd336: scale4=5'd10; 9'd337: scale4=5'd10; 9'd338: scale4=5'd8; 9'd339: scale4=5'd8; 9'd340: scale4=5'd8;

28

9'd341: scale4=5'd8; 9'd342: scale4=5'd6; 9'd343: scale4=5'd6; 9'd344: scale4=5'd6; 9'd345: scale4=5'd6; 9'd346: scale4=5'd6; 9'd347: scale4=5'd6; 9'd348: scale4=5'd6; 9'd349: scale4=5'd6; 9'd350: scale4=5'd7; 9'd351: scale4=5'd7; 9'd352: scale4=5'd8; 9'd353: scale4=5'd8; 9'd354: scale4=5'd8; 9'd355: scale4=5'd8; 9'd356: scale4=5'd10; 9'd357: scale4=5'd10; 9'd358: scale4=5'd9; 9'd359: scale4=5'd9; 9'd360: scale4=5'd9; 9'd361: scale4=5'd9; 9'd362: scale4=5'd9; 9'd363: scale4=5'd9; 9'd364: scale4=5'd12; 9'd365: scale4=5'd12; 9'd366: scale4=5'd10; 9'd367: scale4=5'd10;

9'd368: scale4=5'd10; 9'd369: scale4=5'd10; 9'd370: scale4=5'd10; 9'd371: scale4=5'd10; 9'd372: scale4=5'd10; 9'd373: scale4=5'd10; 9'd374: scale4=5'd10; 9'd375: scale4=5'd10; 9'd376: scale4=5'd10; 9'd377: scale4=5'd10; 9'd378: scale4=5'd10; 9'd379: scale4=5'd10; 9'd380: scale4=5'd10; 9'd381: scale4=5'd10; 9'd382: scale4=5'd12; 9'd383: scale4=5'd12; 9'd384: scale4=5'd13; 9'd385: scale4=5'd13; 9'd386: scale4=5'd13; 9'd387: scale4=5'd13; 9'd388: scale4=5'd13; 9'd389: scale4=5'd13; 9'd390: scale4=5'd13; 9'd391: scale4=5'd13; 9'd392: scale4=5'd12; 9'd393: scale4=5'd12; 9'd394: scale4=5'd9;

29

9'd395: scale4=5'd9; 9'd396: scale4=5'd9; 9'd397: scale4=5'd9; 9'd398: scale4=5'd12; 9'd399: scale4=5'd12; 9'd400: scale4=5'd10; 9'd401: scale4=5'd10; 9'd402: scale4=5'd8; 9'd403: scale4=5'd8; 9'd404: scale4=5'd8; 9'd405: scale4=5'd8; 9'd406: scale4=5'd6; 9'd407: scale4=5'd6; 9'd408: scale4=5'd6; 9'd409: scale4=5'd6; 9'd410: scale4=5'd6; 9'd411: scale4=5'd6; 9'd412: scale4=5'd10; 9'd413: scale4=5'd10; 9'd414: scale4=5'd9; 9'd435: scale4=5'd6; 9'd436: scale4=5'd6; 9'd437: scale4=5'd6; 9'd438: scale4=5'd6; 9'd439: scale4=5'd6; 9'd440: scale4=5'd6; 9'd441: scale4=5'd6;

9'd415: scale4=5'd9; 9'd416: scale4=5'd8; 9'd417: scale4=5'd8; 9'd418: scale4=5'd8; 9'd419: scale4=5'd8; 9'd420: scale4=5'd10; 9'd421: scale4=5'd10; 9'd422: scale4=5'd9; 9'd423: scale4=5'd9; 9'd424: scale4=5'd9; 9'd425: scale4=5'd9; 9'd426: scale4=5'd9; 9'd427: scale4=5'd9; 9'd428: scale4=5'd10; 9'd429: scale4=5'd10; 9'd430: scale4=5'd6; 9'd431: scale4=5'd6; 9'd432: scale4=5'd6; 9'd433: scale4=5'd6; 9'd434: scale4=5'd6; 9'd442: scale4=5'd6; 9'd443: scale4=5'd6; 9'd444: scale4=5'd0; 9'd445: scale4=5'd0; 9'd446: scale4=5'd0; 9'd447: scale4=5'd0; 9'd448: scale4=5'd6;

30

9'd449: scale4=5'd6; 9'd450: scale4=5'd6; 9'd451: scale4=5'd6; 9'd452: scale4=5'd6; 9'd453: scale4=5'd6; 9'd454: scale4=5'd6; 9'd455: scale4=5'd6; 9'd456: scale4=5'd6; 9'd457: scale4=5'd6; 9'd458: scale4=5'd6; 9'd459: scale4=5'd6; 9'd460: scale4=5'd10; 9'd461: scale4=5'd10; 9'd462: scale4=5'd12; 9'd463: scale4=5'd12; 9'd464: scale4=5'd6; 9'd465: scale4=5'd6; 9'd466: scale4=5'd6; 9'd467: scale4=5'd6; 9'd468: scale4=5'd6; 9'd469: scale4=5'd6; 9'd470: scale4=5'd6; 9'd471: scale4=5'd6; 9'd472: scale4=5'd6; 9'd473: scale4=5'd6; 9'd474: scale4=5'd6; 9'd475: scale4=5'd6;

9'd476: scale4=5'd13; 9'd477: scale4=5'd13; 9'd478: scale4=5'd12; 9'd479: scale4=5'd12; default:scale4=5'd0; endcase end endmodule

module play(key,prenum_p);//弹奏模块; input [13:0]key; output [13:0]prenum_p; wire [13:0]key; reg [13:0]prenum _p;

always@(key) begin case(key)

14'd0:prenum_p=14'd16383; 14'd8192:prenum_p=14'd10647; 14'd4096:prenum_p=14'd11272; 14'd2028:prenum_p=14'd11831; 14'd1024:prenum_p=14'd12074; 14'd512:prenum_p=14'd12556; 14'd256:prenum_p=14'd12974; 14'd128:prenum_p=14'd13346; 14'd64:prenum_p=14'd13516;

31

14'd32:prenum_p=14'd13829; 14'd16:prenum_p=14'd14109; 14'd8:prenum_p=14'd14235; 14'd4:prenum_p=14'd14470; 14'd2:prenum_p=14'd14678; 14'd1:prenum_p=14'd14846; default :prenum_p=14'd16383; endcase end endmodule

modulechoose_prenum(prenum_s, prenum_p,prenum,sing_play);//选择预置数;

input [13:0]prenum_s,prenum_p; inputsing_play; output [13:0]prenum;

wire [13:0]prenum_s,prenum_p; reg [13:0]prenum; wiresing_play; always@(sing_play) begin

if(sing_play==1'b1) prenum=prenum_s; else

prenum=prenum_p; end

endmodule

module show(clk_sing,clk_6m,prenum, led,code_low,code_med,code_high); //显示模块; input clk_sing,clk_6m; input [13:0]prenum; output [6:0]led;

outputcode_low,code_med,code_high; wire clk_sing,clk_6m; wire [13:0]prenum; reg [6:0]led;

regcode_low,code_med,code_high; always@(posedgeclk_sing) begin case(prenum)

14'd16383 : led=7'b0000000;//休止符; 14'd4915 : led=7'b0110000;//低音1; 14'd6168 : led=7'b1101101;//低音2; 14'd7281 : led=7'b1111001;//低音3; 14'd7792 : led=7'b0110011;//低音4; 14'd8730 : led=7'b1011011;//低音5; 14'd9565 : led=7'b1011111;//低音6; 14'd10301 : led=7'b1110000;//低音7; 14'd10647 : led=7'b0110000;//中音1; 14'd11272 : led=7'b1101101;//中音2; 14'd11831 : led=7'b1111001;//中音3;

32

14'd12074 : led=7'b0110011;//中音4; 14'd12556 : led=7'b1011011;//中音5; 14'd12974 : led=7'b1011111;//中音6; 14'd13346 : led=7'b1110000;//中音7; 14'd13516 : led=7'b0110000;//高音1; 14'd13829 : led=7'b1101101;//高音2; 14'd14109 : led=7'b1111001;//高音3; 14'd14235 : led=7'b0110011;//高音4; 14'd14470 : led=7'b1011011;//高音5; 14'd14678 : led=7'b1011111;//高音6; 14'd14846 : led=7'b1110000;//高音7; default : led=7'd0; endcase end

always@(posedgeclk_sing) begin

if(prenum>=14'd4195&&prenum<= 14'd10301||prenum==14'd16383) begin

code_low=1'b1; code_med=1'b0; code_high='b0; end

else if(prenum>=14'd10647&&prenum<= 14'd13346) begin wire clk_16;

code_low=1'b0; code_med=1'b1; code_high='b0; end

else if(prenum>=14'd13516&&prenum<= 14'd14846) begin

code_low=1'b0; code_med=1'b0; code_high='b1; end end endmodule

moduleelectronic_organ(clk_6m,clk_64, key,sing_play,fout,led,code_low,code_med, code_high);

input clk_6m,clk_64,sing_play; input [13:0]key;

outputfout,code_low,code_med, code_high; output [6:0]led; wire [13:0]key; wiresing_play; wire clk_6m; wire clk_64;

33

wire clk_8;

wire clk_4;

wireclk_sing;

wirefout,code_low,code_med,code_high;

wire [13:0]prenum,prenum_s,prenum_p;

wiretofout;

wire [4:0]scale;

change_fenpinbifpb(clk_6m,prenum,tofout);

er_fen_pinefp(tofout,fout);

fenpinfp(clk_64,clk_16,clk_8,clk_4);

get_prenumgpn(clk_sing,scale,prenum_s);

premusic pm(clk_16,clk_8,clk_4,key,clk_sing,scale);

play p(key,prenum_p);

choose_prenumcp(prenum_s,prenum_p,prenum,sing_play);

show s(clk_sing,clk_6m,prenum,led,code_low,code_med,code_high); endmodule

34

2.各层次原理图 (1) 加计数器

数字电子技术综合实验报告简易电子琴

(2) 二分频器

数字电子技术综合实验报告简易电子琴

(3) 预置数选择器

数字电子技术综合实验报告简易电子琴

35

(4) 节拍发生器

数字电子技术综合实验报告简易电子琴

(5) 预置数获得器

36

6)存储器

37

数字电子技术综合实验报告简易电子琴

数字电子技术综合实验报告简易电子琴

(7)弹奏模块

数字电子技术综合实验报告简易电子琴

38

(8)显示模块

数字电子技术综合实验报告简易电子琴

39

3.编译报告

数字电子技术综合实验报告简易电子琴

40

更多相关推荐:
简易电子琴设计报告

简易电子琴课程设计报告摘要555定时器是一种模拟和数字功能相结合的中规模集成器件555定时器成本低性能可靠只需要外接几个电阻电容就可以实现多谐振荡器单稳态触发器及施密特触发器等脉冲产生与变换电路它也常作为定时器...

电子琴的实验报告

单片机课程设计设计题目电子琴指导老师苏参与实验者moxiaoxiao专业统本电信0801地点3楼北楼605电子琴一设计目的1培养综合运用知识的能力2朋友查阅资料使用工程设计标准及编写设计文档的能力3掌握单片机应...

基于AT89C52单片机的简易电子琴设计报告

河南理工大学本科课程设计报告摘要本设计主要研究基于AT89C52单片机的简易电子琴设计它是以单片机作为主控核心设置键盘蜂鸣器等外围器件另外还用到一些简单器件如两位数码管和NPN型三极管及电阻等利用按键实现音符和...

北邮模电简易电子琴实验报告完整版

数字电路与逻辑设计实验上实验报告学院信息与通信工程学院专业通信工程班级班内序号学号姓名指导教师评分20xx年6月2日目录一实验要求二实验三3和实验四模块端口说明及连接图三实验一2实验三3和实验四的原理图或VHD...

《微机原理与接口技术》实验报告 简易电子琴

微机原理与接口技术课程设计海南大学信息学院信息安全系专业课程微机原理与接口技术简易电子琴实验报告微机原理与接口技术课程设计目录一设计要求3二设计思路3三实验材料工具或软件4四实验内容41实验电路连接42程序流程...

电子琴实验报告

电子琴实验报告一实验目的1进一步巩固和加深理论课基本知识的理解提高综合运用所学知识的能力2能根据需要选择参考书查阅资料通过独立思考深入钻研有关问题3学会自己独立分析问题解决问题4学习按键扫描及蜂鸣器应用和单片机...

单片机课程设计报告 简易电子琴

课程设计报告20xx20xx年度第二学期课程单片机及嵌入式系统A题目院系自动化系班级测控1201学号20xx020xx105学生姓名指导教师程海燕设计周数一周成绩日期20xx年6月日11一课程设计内容与要求1针...

数字电子技术综合实验报告——简易电子琴

数字电子技术综合实验报告20xx20xx学年第二学期姓名学号班级实验时间实验指导老师目录一设计任务2二设计方案2三系统框图3四方案实现31乐曲演奏的原理32总体方案4五实验结果6六方案优化7七心得体会7附录71...

cCAD课程设计简易电子琴设计及制作实验报告

目录摘要3前言31课程设计的要求42电路的分析43电路的绘制64pcb图绘制65热转印制版法75电路焊接与调试87总结8附录9参考文献9摘要本次设计在以STC89C52单片机为核心的系统板上利用C语言设计简易电...

微机接口课程设计---电子琴实验报告

河南科技学院信息工程学院信息工程学院微机接口课程设计报告题目名称简易电子琴设计小组成员院系班级信息工程学院计科085指导教师20xx年5月18日0河南科技学院信息工程学院目录第一章电子琴的设计要求和使用器件11...

北邮数字逻辑课程设计实验报告(简易电子琴)

实验一简易电子琴一实验目的1掌握较复杂逻辑的设计和调试2掌握用VHDL语言设计数字逻辑电路3掌握ispLEVER软件的使用方法4掌握ISP器件的使用二实验所用器件和设备在系统可编程逻辑器件ISP1032一片示波...

实验一 多功能电子琴实验报告

题目多功能电子琴设计课程复杂电子线路综合设计专业电子信息科学与技术班级电子信息学号姓名指导老师完成日期目录1引言2设计要求21基本功能22扩展功能111113设计方案31多功能电子琴的功能介绍132电子琴的主要...

简易电子琴实验报告(21篇)