版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VHDL硬件描述语言程序设计
简易电子琴演奏器
姓名:chi
目录
一、设计课题的任务要求...............................................3
二、系统设计.........................................................4
三、仿真波形及波形分析...............................................7
四、源程序..........................................................9
五、功能说明........................................................20
六、元器件清单及资源利用情况.......................................21
七、故障及问题分析..................................................22
八、总结和结论......................................................23
设计课题的任务要求
基本要求:
1、用8X8点阵显示“1234567”七个音符构成的电子琴键盘。其中点阵的第一列
用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,
如下图所示。
oooo。0O
oooo。•O
oooo・•O
oooe••O
oooe••O
ooee•O
oete••O
ee^e••O
・
1234567
图1点阵显示的电子琴键盘
2、用BTN1〜BTN7七个按键模拟电子琴手动演奏时的“1234567”七个音符。当某
个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时
蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,峰
鸣器停止声音的输出。下图所示为按下BTN3按键时点阵的显示情况。
ooOo。0O
ooOo。•O
ooOo・•O
ooOe••O
ooOe••O
ooOe•O
oeOe••O
eeO••O
*・
1234567
图2按键按下后的点阵显示
3、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。
4、通过按键BTNO进行复位,控制点阵显示图1的初始状态。
提高要求:
1、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏
乐曲的功能。
2、增加手动演奏的音符存储、播放功能。
二、系统设计
1.设计思路
简易电子琴的制作主要是利用不同频率的波来驱动蜂鸣器发出声响。通过输入不同的音
符来设置不同的分频系数,使得50MHz的主频分频出不同频率的波。同时,演奏的音符还
可以通过数码管和8*8点阵来动态显示。
根据系统设计要求,该电子琴设计采用自顶向下的设计方法。整体的功能通过不同的底
层模块配合来完成电子琴的功能。底层模块主要包括乐曲自动演奏模块、分频预置值产生模
块和数控分频模块,数码管显示模块,8*8点阵显示模块五部分组成。用这种设计思路把整
个系统分为了若干个模块,然后再在顶层文件中将各个模块组合在一起,从而体现出超、高
速硬件描述语言VHDL的优势,
关于提高要求中通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自
动演奏乐曲的功能,我打算将一首曲子的音符储存在自动播放的数组里面,然后通过计数器
来顺序播放储存的音符。
关于提高要求中的手动演奏的音符存储、播放功能,我打算通过编程实现类似数据结构
中队列的模块,来储存手动输入的音符,然后在要播放的时候,队列里面的音符依次出队,
从而实现音符储存播放的功能。
2.总体框图
图3简易电子琴总体结构框图
图4简易电子琴逻辑流程图
图5简易电子琴VHDL电路原理图
3.分块设计
(1)分频模块divO
由于实验电路板的主频是50Mhz,为了数码管和点阵的刷新显示,我们必须将50Mhz的
频率进行分频。分频的程序来自电路中心的网站上面。在这个模块里,我设置分频系数为
cnt=2499o从实验结果看,这个分频对数码管和点阵的显示有很好的效果
(2)数码管显示模块shuma
我使用了2个数码管,第一个数码管显示1~7的音符,第二个数码管显示相关的信息,
比如高音用H表示,低音用L表示,自动播放用A表示。两个数码管分别刷新,但由于刷
新频率太快,人眼不能察觉,以为是两个数码管是同时亮的。在程序中我们通过duan:out
std_logic_vector(7downto0)和cat:outstd_logic_vector(5downto0)来控制数码管的显示。当
输入不同的音符和不同的控制信息时,duan和cat向量都有不同的值与之对应。
(3)8*8点阵显示模块dianzhen
8*8点阵的显示和数码管的显示运用了同样的原理,在程序中我们通过row:out
std_logic_vector(7downto0)和col:outstd_logic_vector(7downto0)这两个向量来控制点阵的
显示。当输入不同的音符时,点阵显示相应的形状。
(4)音符产生模块autOo
这个模块的功能是,选择的不同模式来产生不同的音符。当选择自动播放模式时,随着
计数器count的值增加,即地址值递增时,程序自动读取出事先储存的音符,并把这个音符
输出。当选择手动演奏模式时,直接将通过BTNLBTN7输入的向量当做音符输出yin:out
std_logic_vector(6downto0);«
(5)分频预置值产生模块
该模块的功能是通过音符以及高低音选项来查表找到对应的频率值。在程序中设置了全
部音符对应的分频预置数。通过判断音符产生模块输出的音符yin:instd_logic_vector(6
downto0),以及拨码开关的高低音highlow:instd_logic_vector(ldownto0)控制键,来查找出
该音符的频率值,然后将该频率赋值给
tone:outintegerrange0to2000000);o
(6)数控分频发声模块
从实验板上面输入的时钟是50MHz的,必须经过分频后由clk_out输出,驱动蜂鸣器发
声。Clk_out的输出频率就对应着音符的音调。分频系数由来自分频预置值模块的tone:out
由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式
integerrangeOto2000000)o
信号。为了利用驱动蜂鸣器,需要再增加一个进程,多波形进行整理,均衡占空比
三、仿真波形及波形分析
1,数码管显示模块仿真波形
MasterTimeBar:17.425nsPointer:12.48usInterval:12.46usStart:)p$Erw
)PS1.28us2.56us3.84us5.12us6.4us7.68us8.96us10.24us
Name
17.43ns17.425ns
・0clk_inA0_r-1_rT____I_I____I~~L-L__rn__i_iJ-I__I_L_r1__
•1autoA0
是2田HRA[16][16]X[0]XC161X0][16]X0]X[8][0][2]x
♦10国highlowA[2][2X[0X[1]X[0]
⑥13□atA>>;*=X?X=x>x?>X?瓜?XX
014-...5]A1
315-...4]A1
♦16-...3]A1
-...2]A1
318-...1]A1l_J
L.0]1_1
~19A0-LJ-u1_1
⑥20曰duanAmj[0]0]:m*[0])[0]
Q21-.7]A0
222-...6]A11_r_L_-Ln_I_I
323-...5]A1—1___iii_-LL
324-...4]A0r-L_r
Q25-...3]A1n_11_-LJ_L_
»26-...2]A1—I_rn
327A0
-...1]—J—L_
।।।
<i]>|
波形分析:不同的yin,和highlow组合,数码管显示不同的字符。duan[O]~duan⑺对应着数
码管的a段到h段,cat[0]~cat[5]控制不同的数码管
2.点阵显示模块仿真波形
3.自动播放模块仿真波形
这时候相当于手动演奏。
4,分频预置值产生模块仿真波形
波形分析:输入不同的高低音highlow,和音符yin,输出不同的tone。而tone将作为发声模块
的分频预置值
四、源程序
1.分频模块源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydivOis
port(clk_in:instdjogic;■■输入时钟
clk_tmp:outstdjogic);-输出时钟
end;
architecturebofdivOis
signalelk:std_logic;
begin
pO:process(clk_in)
variableent:integerrange0to2499;
begin
if(clkjn'eventandclkjn='l')then
ifcnt=2499then-分频系数为2499
cnt:=O;
clk<=notelk;
else
cnt:=cnt+l;-每个输入时钟上升沿到来时
ent加1
endif;
endif;
endprocesspO;
clk_tmp<=clk;
endb;
2.数码管显示源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityshumais
port(clk_in:instd_logic;-以分频的时钟输入
yin:instd_logic_vector(6downto0);-输入音符
highlowinstd_logic_vector(ldownto0);-输入高低音
auto:instdjogic;-自动播放
autol:instdjogic;-自动播放1
duan:outstd_logic_vector(7downto0);
cat:outstd_logic_vector(5downto0)
end;
architecturebofshumais
signalduant:std_logic_vector(7downto0);
signalcatt:std_logic_vector(5downto0);
begin
pl:process(clk_in,yin,highlow,auto,autol)
begin
ifauto='l'then
catt<="111101";duant<=,,00111111";-显小"8"表不自动播放
elsifautol='l'then
catt<=,,111101";duant<="01111111";-显示“0”表示试音
elsifauto='0'then
if(clk_in='0')then
caseyinis
when"0000001"=>catt<="111110";duant<="00000110";"1”
when“0000010”=>catt<=”111110”;duant<=“01011011”;--显示“2”
when“0000100”=>catt<=”111110”;duant<="OlOOini”;--显示“3”
when”0001000”=>catt<=”111110”;duant<=“01100110”;--显示“4”
when”0010000”=>catt<二"llino”;duant<=“01101101”;--显示“5”
when"0100000"=>catt<="111110";duant<="01111101";-S^"6”
when“1000000”=>catt<=”111110”;duant<=”00000111”;--显示“7”
whenothers=>catt<="llllll";duant<="00000000";
endcase;
elsif(clk_in='l')then
casehighlowis
when"10"=>catt<="111101";duant<="01110100";一显示“L”
when"01"=>€3«<="111101"^03^<="00111000";一显示"H”
whenothers=>catt<="llllll";duant<="00000000";
endcase;
endif;
endif;
endprocesspl;
cat<=catt;
duan<=duant;
endb;
3.点阵显示源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydianzhenis
port(clk_in:instd_logic;一时钟输入
yin:instd_logic_vector(6downto0);-输入音符
row:outstd_logic_vector(7downto0);-点阵行向量
col:outstd_logic_vector(7downto0)-点阵列向量
Vb
end;
architecturebofdianzhenis
signalcount:integerrange0to6;
signalrowt:std_logic_vector(7downto0);
signalcolt:std_logic_vector(7downto0);
begin
pl:process(clk_in)
begin
if(clkjn'eventandclk_in=T)then
ifcount=6then
count<=0;
else
count<=count+l;一用count来记数
endif;
endif;
endprocesspl;
p2:process(count,yin)
begin
if(yin="0000001")then
casecountis--点阵显示,表示“1”音符
when0=>rowt<=Ulinil0”;coltv=5111110”;
when1=>rowt<="11111101,,;colt<=,,01111110";
when2=>rowt<=Ulin0"';colt<=”01111100”;
when3=>rowt<=,,11110111";colt<=,,01111000";
when4=>rowt<=,,11101111";colt<="01110000";
when5=>rowt<=,,11011111,,;colt<="01100000";
when6=>rowt<=,,10111111";colt<="01000000";
whenothers=>rowt<="llllllll";colt<="00000000";
endcase;
elsif(yin="0000010")then
casecountis--点阵显示,表示“2”音符
when0=>rowt<=,,11111110";colt<="01111101";
when1=>rowt<二”llini01”;colt<="01111100”;
when2=>rowt<=,,11111011,,;colt<="01111100";
when3=>rowt<=,,11110111,,;colt<="01111000";
when4=>rowt<=,,11101111,,;colt<="01110000";
when5=>rowt<=U10ni"';colt<=”01100000”;
when6=>rowt<="10111111";colt<=,,01000000";
whenothers=>rowt<="llllllll";colt<="00000000";
endcase;
elsif(yin="0000100")then
casecountis--点阵显示,表示“3”音符
when0=>rowt<=,,11111110";colt<="01111011";
when1=>rowt<="11111101";colt<="01111010";
when2=>rowt<=,,11111011";colt<=,,01111000";
when3=>rowt<="11110111";colt<="01111000";
when4=>rowt<=,,11101111,,;colt<="01110000";
when5=>rowt<=,,11011111";colt<="01100000";
when6=>rowt<="10111111";colt<="01000000";
whenothers=>rowt<="llllllll";colt<="00000000";
endcase;
elsif(yin="0001000")then
casecountis--点阵显示,表示“4”音符
when0=>rowt<=Ullini0";colt<="01110in”;
when1=>rowt<=,,11111101";colt<="01110110";
when2=>rowt<=,,11111011";colt<=,,01110100";
when3=>rowt<=”11110111”;colt<="01110000”;
when4=>rowt<="11101111";colt<="01110000";
when5=>rowt<=,,11011111";colt<="01100000";
when6=>rowt<="10111111";colt<="01000000";
whenothers=>rowt<="llllllll";colt<="00000000";
endcase;
elsif(yin="0010000")then
casecountis--点阵显示,表示“5”音符
when0=>rowt<=Ullini0";colt<="01101in”;
when1=>rowt<=,,11111101";colt<="01101110";
when2=>rowt<="11111011,,;colt<="01101100";
when3=>rowt<=,,11110111,,;colt<="01101000";
when4=>rowt<=,,11101111,,;colt<="01100000";
when5=>rowt<=”110111ll”;colt<=”01100000”;
when6=>rowt<="10111111";colt<=,,01000000";
whenothers=>rowt<="llllllll";colt<="00000000";
endcase;
elsif(yin="0100000")then
casecountis--点阵显示,表示“6”音符
when0=>rowt<=,,11111110";colt<="01011111";
when1=>rowt<=,,11111101,,;colt<="01011110";
when2=>rowt<=,,11111011";colt<=,,01011100";
when3=>rowt<=U11101ir;colt<="01011000”;
when4=>rowt<="11101111,,;colt<="01010000";
when5=>rowt<=,,11011111";colt<="01000000";
when6=>rowt<=”101111ir;colt<="01000000”;
whenothers=>rowt<="llllllll";colt<="00000000";
endcase;
elsif(yin="1000000")then
casecountis--点阵显示,表示"7"音符
when0=>rowt<=Ullini0";colt<="00111111”;
when1=>rowt<=,,11111101";colt<="00111110";
when2=>rowt<="11111011,,;colt<="00111100";
when3=>rowt<=,,11110111,,;colt<="00111000";
when4=>rowt<=,,11101111";colt<=,>00110000";
when5=>rowt<="11011111,,;colt<="00100000";
when6=>rowt<="10111111";colt<=,,00000000";
whenothers=>rowt<="llllllll";colt<="00000000";
endcase;
else
casecountis--点阵显示,表示不输入音符
when0=>
when1=>rowt<=,,11111101";colt<=,,01111110";
when2=>rowt<="11111011";colt<="01111100";
when3=>rowt<="11110111";colt<="01111000";
when4=>rowt<="11101111";colt<="01110000";
when5=>^1<="11011111";6011<="01100000";
when6=>rowt<=,,10111111,,;colt<=,,01000000";
whenothers=>rowt<="llllllll";colt<="00000000";
endcase;
endif;
endprocessp2;
row<=rowt;
col<=colt;
endb;
4.选择音符及自动播放源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityautois
port(clk_in:instd_logic;-输入时钟
auto:instdjogic;-自动播放
autol:instd_logic;-试音播放
clear:instd_logic;-复位
yin_in:instd_logic_vector(6downto0);-输入音符
yin_out:outstd_logic_vector(6downto0));-输出音符
endauto;
architectureaofautois
signalcount:integerrange0to35;
signaln:integerrange0to6;
signalyin:std_logic_vector(6downto0);
begin
pl:process(clk_in,clear)
variablei:integerrange0to63000000;
begin
ifclear-1'then
count<=0;
elsif(clkjn'eventandclkjn=’1')then
if(i=20000000)then
i:=0;
ifcount=15then
count<=0;-自动播放count记数
else
count<=count+l;
endif;
ifn=6then
n<=0;-试音播放n记数
else
n<=n+l;
endif;
else
i:=i+l;
endif;
endif;
endprocesspl;
p2:process(count,auto,yin_in,clear)
begin
ifclear='l'then
yin<="0000000";-音符清零
else
ifauto='l'then-自动播放歌曲
casecountis
when1=>yin<="0000100";-3
when2=>yin<="1000000";-7
when3=>yin<="0000100";-3
when4=>yin<="0100000";-6
when5=>yin<="0010000";-5
when6=>yin<="0100000";-6
when7=>yin<="0000001";-1
when8=>yin<="0000100";-3
when9=>yin<="0010000";-5
when10=>yin<="0000100";-3
when11=>yin<="0000100";-3
when12=>yin<="0001000";-4
when13=>yin<="0000100";-2
when14=>yin<="0001000";-4
whenothers=>yin<="0000000";
endcase;
elsifautol='l'then
casenis-试音播放
when0=>yin<="0000001";-1
when1=>yin<="0000010";-2
when2=>yin<="0000100";-3
when3=>yin<="0001000";-4
when4=>yin<="0010000";-5
when5=>yin<="0100000";-6
when6=>yin<="1000000";
whenothers=>yin<="0000000";
endcase;
else
yin<=yin_in;―动手演奏
endif;
endif;
endprocessp2;
yin_out<=yin;
enda;
5.预置分频系数模块源代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityseletoneis
port(highlow:instd_logic_vector(ldownto0);-高低音
yin:instd_logic_vector(6downto0);-要演奏的音符
tone:outintegerrange0to2000000);-预置分频系数
endseletone;
architectureaofseletoneis
signaltoneO:integerrange0to2000000;
begin
process(highlow,yin)
begin
ifhighlow="00"then
caseyinis--中音剖J分
when"0000001"=>tone0<=523;
when"0000010"=>tone0<=587;
when"0000100"=>tone0<=659;
when"0001000"=>tone0<=698;
when"0010000"=>tone0<=784;
when"0100000"=>tone0<=880;
when"1000000"=>tone0<=988;
whenothers=>tone0<=2000000;
endcase;
elsifhighlow="10"then-高音部分
caseyinis
when"0000001"=>tone0<=1045;
when"0000010"=>tone0<=1174;
when"0000100"=>tone0<=1318;
when"0001000"=>tone0<=1396;
when"0010000"=>tone0<=1568;
when"0100000"=>tone0<=1760;
when"1000000"=>tone0<=1975;
whenothers=>tone0<=2000000;
endcase;
elsifhighlow="01"then-低音部分
caseyinis
when"0000001"=>tone0<=261;
when"0000010"=>tone0<=293;
when"0000100"=>tone0<=329;
when"0001000"=>tone0<=349;
when"0010000"=>tone0<=392;
when"0100000"=>tone0<=440;
when"1000000"=>tone0<=494;
whenothers=>tone0<=2000000;
endcase;
endif;
endprocess;
tone<=tone0;
enda;
6.分频发音模块源代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydivis
port(clk_in:instd_logic;-输入时钟
tone:inintegerrange0to2000000;-预置频率
clk_out:outstd_logic);-输出时钟
enddiv;
architectureaofdivis
signalclk_tmp0:std_logic;
signalclk_tmpl:std_logic;
begin
pO:process(clk_in,tone)
variableent:integerrange0to49999999;
begin
if(clkjn'eventandclk_in='l')then
ifent<12999999/tonethen--分频系数
cnt:=cnt+l;
clk_tmpO<='l';
else
cnt:=0;
clk_tmp0<='0';
endif;
endif;
endprocesspO;
pl:process(clk_tmpO)
variablecount:std_logic;
begin
if(clk_tmpO'eventandclk_tmpO='l')then
count:=notcount;
ifcount='l'then
clk_tmpl<='l';-输出平稳的波形
else
clk_tmpl<='0';
endif;
endif;
endprocesspl;
clk_out<=clk_tmpl;
enda;
7.电子琴顶层设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydianzqis
port(clkinstdjogic;一时钟输入
yin:instd_logic_vector(6downto0);-音符输入
highlow:instd_logic_vector(ldownto0);-高低音输入
auto_in:instdjogic;-自动播放
autolinstdjogic;-试音播放
clear:instd_logic;-复位
clk_out:outstdjogic;-输出时钟
rowoutstd_logic_vector(7downto0);--点阵显示
col:outstd_logic_vector(7downto0);一点阵显示
duan:outstd_logic_vector(7downto0);-数码管显示
cat:outstd_logic_vector(5downto0));-数码管显示
architectureaofdianzqis
componentdivOis-分频模块
port(clk_in:instdjogic;
clk_tmp:outstdjogic);
endcomponent;
componentdianzhenis-点阵显示模块
port(clk_in:instdjogic;
yin:instd_logic_vector(6downto0);
row:outstd_logic_vector(7downto0);
col:outstd_logic_vector(7downto0)
endcomponent;
componentshumais-数码管显示模块
port(clk_in:instd_logic;
yin:instd_logic_vector(6downto0);
highlow:instd_logic_vector(ldownto0);
auto:instdjogic;
autolinstd_logic;
duan:outstd_logic_vector(7downto0);
cat:outstd_logic_vector(5downto0)
if
endcomponent;
componentautois-自动播放模块
port(clk_in:instdjogic;
autoinstd_logic;
autol:instd_logic;
yinjn:instd_logic_vector(6downto0);
clear:instdjogic;
yin_out:outstd_logic_vector(6downto0));
endcomponent;
componentseletoneis-预置分频系数模块
port(highlow:instd_logic_vector(ldownto0);
yin:instd_logic_vector(6downto0);
tone:outintegerrange0to2000000);
endcomponent;
componentdivis-分频发音模块
port(clk_in:instd_logic;
tone:inintegerrange0to2000000;
clk_out:outstdjogic);
endcomponent;
signalyin_tmp:std_logic_vector(6downto0);
signaltone_tmp:integerrange0to2000000;
signalclk_tmp:stdjogic;
begin
ul:autoportmap
(clk_in=>clk,auto=>auto_in,yin_in=>yin,yin_out=>yin_tmp,clear=>clear,autol=>autol);
u2:seletoneportmap(highlow=>highlow,yin=>yin_tmp,tone=>tone_tmp);
u3:shumaportmap
(duan=>duan,cat=>cat,yin=>yin_tmp,clk_in=>clk_tmp,highlow=>highlow,auto=>auto_in,aut
ol=>autol);
u4:dianzhenportmap(row=>row,col=>col,yin=>yin_tmp,clk_in=>clk_tmp);
u5:divportmap(clk_in=>clk,tone=>tone_tmp,clk_out=>clk_out);
u6:divOportmap(clk_in=>clk,clk_tmp=>clk_tmp);
enda;
五、功能说明
初始状态,8X8点阵显示“1234567”七个音符构成的电子琴键盘,其中点阵的第一
列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,
用BTN1〜BTN7七个按键模拟电子琴手动演奏时的“1234567”七个音符。
当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时
蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂鸣器停止
声音的输出。
由拨码开关切换选择高、中、低音,并用数码管进行相应的显示
可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动演奏乐曲
的功能。
六、元器件清单及资源利用情况
1.元器件清单
基本功能:Altra公司Maxll系列EPM71270T144C5开发板一块及电源线、下载线各
一根。开发板内元器件利用情况如下:
元器件数量
8X8点阵显示屏1
拨码开关4
按键8
数码管2
蜂鸣器1
2.管脚设置
NodeNameDirectionLocationI/OBankVREFGroupI/OStandard
1•autolInput
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学会计实习报告模板锦集5篇
- 出纳个人述职报告3篇
- 给物业的感谢信范文集锦五篇
- 合作协议完整版
- 湖北经济学院硕士学位授权扩点行动总体方案
- 关于如何才能成功的 英语
- 《人事专员招聘宝典》课件
- 非权力领导力培训课件
- 《世界金融危机及》课件
- 应聘运营职业规划
- 2024年炉外精炼工(高级)职业技能鉴定考试题库(含答案)
- 子宫腺肌瘤护理个案
- “双碳”碳达峰碳中和完全解读
- 2024年九年级语文中考专题复习现代文阅读(含答案)
- 人教版(2024)七年级上册数学第5章单元测试卷(含答案)
- 2024年高考全国甲卷英语试卷(含答案)
- 数控机床考试试题附答案
- 朝花夕拾-无常解析
- 餐饮服务电子教案 学习任务4 鸡尾酒调制
- 慢性阻塞性肺疾病(COPD)护理查房
- 2024年商铺租赁终止合同范本(四篇)
评论
0/150
提交评论