硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx

上传人:b****1 文档编号:5757938 上传时间:2023-05-05 格式:DOCX 页数:13 大小:114.94KB
下载 相关 举报
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第1页
第1页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第2页
第2页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第3页
第3页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第4页
第4页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第5页
第5页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第6页
第6页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第7页
第7页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第8页
第8页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第9页
第9页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第10页
第10页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第11页
第11页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第12页
第12页 / 共13页
硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx

《硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx(13页珍藏版)》请在冰点文库上搜索。

硬件电子琴及硬件乐曲演奏电路Word格式文档下载.docx

IFcnt1<

2THEN

cnt1<

=cnt1+1;

ELSE

=0;

ENDIF;

1THEN

clk1<

='

1'

;

ELSE

0'

ENDPROCESS;

IFfalling_edge(clk_in)THEN

IFcnt2<

cnt2<

=cnt2+1;

=0;

ENDIF;

IFcnt2<

1then

clk2<

;

ENDPROCESS;

clk_out<

=clk1ORclk2;

END;

(3).七个中音主程序

modulebeepx(clk,key,beep,led,ledbt);

//模块名称beep

inputclk;

//系统时钟12MHz

input[7:

0]key;

//按键输入

outputbeep;

//蜂鸣器输出端

output[7:

0]led;

0]ledbt;

//LED输出

regbeep_r;

//寄存器

reg[15:

0]count,count_end;

reg[7:

0]key_r;

0]led_bt;

always@(posedgeclk)

begin

count<

=count+1'

b1;

//计数器加1

if((count==count_end)&

(!

(count_end==16'

hffff)))

begin

count<

=16'

h0;

//计数器清零

beep_r<

=!

beep_r;

//取反输出信号

end

end

always@(key)

key_r=key;

//取键值

case(key_r)

8'

b11111110:

begincount_end=16'

h2CCA;

key_r=8'

b11111001;

led_bt=8'

b11111110;

end//中音1的分频系数值

b11111101:

h27E8;

b10100100;

end//中音2的分频系数值

b11111011:

h238D;

key_r=8'

b10110000;

end//中音3的分频系数值

b11110111:

h218E;

b10011001;

end//中音4的分频系数值

b11101111:

h1DE5;

b10010010;

end//中音5的分频系数值

b11011111:

h1AA2;

b10000010;

end//中音6的分频系数值

b10111111:

begincount_end=16'

h17BA;

b11111000;

end//中音7的分频系数值

b01111110:

h166B;

key_r=8'

end//高音1的分频系数值

b01111101:

h13F4;

end//高音2的分频系数值

b01111011:

h11C7;

end//高音3的分频系数值

b01110111:

h10C7;

end//高音4的分频系数值

b01101111:

h0EF3;

end//高音5的分频系数值

b01011111:

h0D51;

end//高音6的分频系数值

b00111111:

h0BDD;

end//高音7的分频系数值

default:

count_end=16'

hffff;

endcase

assignbeep=beep_r;

//输出音乐

assignled=key_r;

//输出按键状态

assignledbt=led_bt;

endmodule

2.硬件乐曲演奏电路。

(1)内存分配图

(2)主程序

libraryIEEE;

useIEEE.STD_LOGIC_1164.ALL;

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYbuzzerIS

PORT(

ch:

INstd_logic;

--键盘与歌曲播放选择

cho:

--歌曲切换

key_data:

INstd_logic_vector(2DOWNTO0);

--电子琴组合键盘输入

clk:

--系统时钟

out_bit:

OUTstd_logic);

--输出给蜂鸣器

ENDbuzzer;

ARCHITECTUREarchOFbuzzerIS

COMPONENTliangzhu

PORT(address:

instd_logic_vector(7downto0);

clock:

instd_logic;

q:

outstd_logic_vector(15downto0));

ENDCOMPONENT;

signalsta1:

std_logic_vector(7downto0);

signalsta:

integerrange0to147;

signalcount:

std_logic_vector(15DOWNTO0);

signalcount_end:

signalcount1:

std_logic_vector(23DOWNTO0);

signalout_bit_temp:

std_logic;

signalkey_temp:

std_logic_vector(2DOWNTO0);

signalcount_end_temp:

signalchoice:

--音调分频数

CONSTANTsuo0:

std_logic_vector(15DOWNTO0):

="

1110111100101000"

--61224

CONSTANTla0:

1101010100010001"

--54545

CONSTANTxi0:

1011110111010001"

--48593

CONSTANTduo:

1011001100100111"

--45863

CONSTANTlai:

="

1001111110100000"

--40864

CONSTANTme:

1000111000110010"

--36402

CONSTANTfa:

1000011000110111"

--34359

CONSTANTsuo:

0111011110010100"

--30612

CONSTANTla:

0110101010001001"

--27273

"

010*********

CONSTANTsuo1:

0011101111001010"

--15306

CONSTANTla1:

0011010101000100"

--13636

CONSTANTxi1:

0010111101110111"

--12151

CONSTANTduo2:

0010101001100011"

--10851

CONSTANTt:

std_logic_vector(23DOWNTO0):

101101110001101100000000"

out_bit<

=out_bit_temp;

key_temp<

=key_data;

PROCESS(cho)--歌曲间切换

IF(cho'

EVENTANDcho='

)THEN

choice<

=NOTchoice;

PROCESS(clk)--分频后的音调输出控制

IF(clk'

EVENTANDclk='

=count+1;

IF(count=count_end)THEN

count<

=x"

0000"

out_bit_temp<

=NOTout_bit_temp;

ENDIF;

ENDIF;

U:

liangzhuPORTMAP(address=>

sta1,q=>

count_end_temp,clock=>

clk);

--与liangzhu.vhd的接口

PROCESS(clk,ch,choice,cho)--音调单位时长和曲谱依次播放(sta自加)控制

IF(ch='

)THEN--键盘与歌曲播放切换

IF(clk'

IF(count1<

t)THEN

count1<

=count1+1;

ELSE

000000"

IF(choice='

sta<

=0;

IF(sta1=10001010)THEN

sta1<

00000000"

ELSE

=sta1+1;

count_end<

=count_end_temp;

--《梁祝》曲谱信息赋给count_end

ENDIF;

sta1<

IF(sta=147)THEN

sta<

=sta+1;

CASEstaIS--《友谊天长地久》曲谱信息

WHEN0|1=>

count_end<

=suo0;

WHEN2TO8=>

=duo;

WHEN9|10=>

=me;

WHEN11TO14=>

=lai;

WHEN15=>

WHEN16|17=>

WHEN18|19=>

WHEN20TO24=>

WHEN25|26=>

WHEN27|28=>

=suo;

WHEN29TO33=>

=la;

WHEN34TO38=>

WHEN39TO42=>

WHEN43TO45=>

WHEN46|47=>

WHEN48TO51=>

WHEN52=>

WHEN53|54=>

WHEN55|56=>

WHEN57TO60=>

WHEN61TO63=>

=la0;

WHEN64TO65=>

WHEN66TO69=>

WHEN70TO73=>

WHEN74|75=>

WHEN76TO79=>

WHEN80TO82=>

WHEN83|84=>

WHEN85TO88=>

WHEN89=>

WHEN90|91=>

WHEN92|93=>

WHEN94TO97=>

WHEN98TO100=>

WHEN101|102=>

WHEN103TO106=>

WHEN107TO110=>

WHEN111|112=>

=duo1;

WHEN113TO116=>

WHEN117TO119=>

WHEN120|121=>

WHEN122TO125=>

WHEN126=>

WHEN127|128=>

WHEN129|130=>

WHEN131TO134=>

WHEN135TO137=>

WHEN138|139=>

WHEN140TO143=>

WHEN144TO147=>

WHENOTHERS=>

=(others=>

'

);

ENDCASE;

ENDIF;

CASEkey_tempIS--组合琴键设置

WHEN"

011"

=>

101"

110"

001"

=fa;

100"

010"

000"

=xi;

WHENOTHERS=>

=(others=>

ENDCASE;

ENDPROCESS;

ENDarch;

五、实验现象:

按键1到7表示七个音符,当按下一个按键时发出对应的音符声音,并且在第一位数码管上显示对应的数字。

让程序运行后使蜂鸣器播放一段音乐,并且通过按键可对其进行暂停、播放、切换等操作。

六、实验感想:

通过这次试验让我更加认识到EDA在多方面的应用,以及了解一些相关的编程,提高了我对实验箱的操作能力。

为即将进行的毕业设计做了良好的基础。

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

当前位置:首页 > 医药卫生 > 基础医学

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

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