




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、VHDL硬件描述語言程序設計簡易電子琴演奏器姓名:chi目錄一、設計課題的任務要求3二、系統(tǒng)設計3三、仿真波形及波形分析11四、源程序12五、功能說明41六、元器件清單及資源利用情況41七、故障及問題分析43八、總結和結論44一、 設計課題的任務要求基本要求:1、 用8×8點陣顯示“1 2 3 4 5 6 7”七個音符構成的電子琴鍵盤。其中點陣的第一列用一個LED點亮表示音符“1”,第二列用二個LED點亮表示音符“2”,依此類推,如下圖所示。1 2 3 4 5 6 7圖1 點陣顯示的電子琴鍵盤2、 用BTN1BTN7七個按鍵模擬電子琴手動演奏時的“1 2 3 4 5 6 7”七個音符
2、。當某個按鍵按下時,數(shù)碼管顯示相應的音符,點陣上與之對應的音符顯示列全滅,同時蜂鳴器演奏相應的聲音;當按鍵彈開時數(shù)碼管顯示的音符滅掉,點陣顯示恢復,蜂鳴器停止聲音的輸出。下圖所示為按下BTN3按鍵時點陣的顯示情況。1 2 3 4 5 6 7圖2 按鍵按下后的點陣顯示3、 由撥碼開關切換選擇高、中、低音,并用數(shù)碼管進行相應的顯示。4、 通過按鍵BTN0進行復位,控制點陣顯示圖1的初始狀態(tài)。提高要求:1、 可通過一個撥碼開關進行手動/自動演奏的切換,并與點陣顯示配合增加自動演奏樂曲的功能。2、 增加手動演奏的音符存儲、播放功能。二、 系統(tǒng)設計1. 設計思路簡易電子琴的制作主要是利用不同頻率的波來驅
3、動蜂鳴器發(fā)出聲響。通過輸入不同的音符來設置不同的分頻系數(shù),使得50MHz的主頻分頻出不同頻率的波。同時,演奏的音符還可以通過數(shù)碼管和8*8點陣來動態(tài)顯示。根據(jù)系統(tǒng)設計要求,該電子琴設計采用自頂向下的設計方法。整體的功能通過不同的底層模塊配合來完成電子琴的功能。底層模塊主要包括樂曲自動演奏模塊、分頻預置值產(chǎn)生模塊和數(shù)控分頻模塊,數(shù)碼管顯示模塊,8*8點陣顯示模塊五部分組成。用這種設計思路把整個系統(tǒng)分為了若干個模塊,然后再在頂層文件中將各個模塊組合在一起,從而體現(xiàn)出超、高速硬件描述語言VHDL的優(yōu)勢, 關于提高要求中通過一個撥碼開關進行手動/自動演奏的切換,并與點陣顯示配合增加自動演奏樂曲的功能,
4、我打算將一首曲子的音符儲存在自動播放的數(shù)組里面,然后通過計數(shù)器來順序播放儲存的音符。關于提高要求中的手動演奏的音符存儲、播放功能,我打算通過編程實現(xiàn)類似數(shù)據(jù)結構中隊列的模塊,來儲存手動輸入的音符,然后在要播放的時候,隊列里面的音符依次出隊,從而實現(xiàn)音符儲存播放的功能。2. 總體框圖數(shù)碼管顯示8*8點陣顯示蜂鳴器輸出音符輸入高低音,自動手動圖3簡易電子琴總體結構框圖是否自動播放查找對應的頻率值結束開始輸入按鍵點陣顯示蜂鳴器輸出數(shù)碼管顯示選擇高低音是否圖4簡易電子琴邏輯流程圖圖5簡易電子琴VHDL電路原理圖3. 分塊設計(1) 分頻模塊div0由于實驗電路板的主頻是50Mhz,為了數(shù)碼管和點陣的刷
5、新顯示,我們必須將50Mhz的頻率進行分頻。分頻的程序來自電路中心的網(wǎng)站上面。在這個模塊里,我設置分頻系數(shù)為cnt=2499。從實驗結果看,這個分頻對數(shù)碼管和點陣的顯示有很好的效果(2) 數(shù)碼管顯示模塊shuma我使用了2個數(shù)碼管,第一個數(shù)碼管顯示17的音符,第二個數(shù)碼管顯示相關的信息,比如高音用H表示,低音用L表示,自動播放用A表示。兩個數(shù)碼管分別刷新,但由于刷新頻率太快,人眼不能察覺,以為是兩個數(shù)碼管是同時亮的。在程序中我們通過duan : out std_logic_vector(7 downto 0)和 cat : out std_logic_vector(5 downto 0)來控制
6、數(shù)碼管的顯示。當輸入不同的音符和不同的控制信息時,duan和cat向量都有不同的值與之對應。(3) 8*8點陣顯示模塊dianzhen8*8點陣的顯示和數(shù)碼管的顯示運用了同樣的原理,在程序中我們通過row : out std_logic_vector(7 downto 0)和col : out std_logic_vector(7 downto 0)這兩個向量來控制點陣的顯示。當輸入不同的音符時,點陣顯示相應的形狀。(4) 音符產(chǎn)生模塊auto。這個模塊的功能是,選擇的不同模式來產(chǎn)生不同的音符。當選擇自動播放模式時,隨著計數(shù)器count的值增加,即地址值遞增時,程序自動讀取出事先儲存的音符,并
7、把這個音符輸出。當選擇手動演奏模式時,直接將通過BTN1BTN7輸入的向量當做音符輸出yin :out std_logic_vector(6 downto 0);。(5) 分頻預置值產(chǎn)生模塊該模塊的功能是通過音符以及高低音選項來查表找到對應的頻率值。在程序中設置了全部音符對應的分頻預置數(shù)。通過判斷音符產(chǎn)生模塊輸出的音符 yin :in std_logic_vector(6 downto 0),以及撥碼開關的高低音highlow :in std_logic_vector(1 downto 0)控制鍵,來查找出該音符的頻率值,然后將該頻率賦值給tone :out integer range 0 t
8、o 2000000);。 (6) 數(shù)控分頻發(fā)聲模塊從實驗板上面輸入的時鐘是50MHz的,必須經(jīng)過分頻后由clk_out輸出,驅動蜂鳴器發(fā)聲。Clk_out的輸出頻率就對應著音符的音調。分頻系數(shù)由來自分頻預置值模塊的tone :out integer range 0 to 2000000)。由于直接從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號。為了利用驅動蜂鳴器,需要再增加一個進程,多波形進行整理,均衡占空比三、 仿真波形及波形分析1. 數(shù)碼管顯示模塊仿真波形 波形分析:不同的yin,和highlow組合,數(shù)碼管顯示不同的字符。duan0duan7對應著數(shù)碼管的a段到h段,cat0cat5
9、控制不同的數(shù)碼管2. 點陣顯示模塊仿真波形波形分析:不同的yin輸入,點陣的col和row會有不同的波形,利用clk_in的上升沿來動態(tài)掃描點陣。從而得顯示出指定的圖形。3. 自動播放模塊仿真波形波形分析:當auto 置1,clear置0,yin_out輸出儲存在程序里面的曲子音符,這時候相當于自動播放。當auto置0,clear置0,yin_out輸出從BTN1BTN7讀取的手動輸入的信號,這時候相當于手動演奏。4. 分頻預置值產(chǎn)生模塊仿真波形波形分析:輸入不同的高低音highlow,和音符yin,輸出不同的tone。而tone將作為發(fā)聲模塊的分頻預置值四、 源程序1. 分頻模塊源程序lib
10、rary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div0 isport(clk_in : in std_logic; -輸入時鐘 clk_tmp : out std_logic); -輸出時鐘end;architecture b of div0 is signal clk : std_logic;beginp0:process(clk_in) variable cnt : integer range 0 to 2499;beginif (clk_in'event and clk_i
11、n='1') thenif cnt=2499 then -分頻系數(shù)為2499cnt:=0;clk<= not clk;elsecnt:=cnt+1; -每個輸入時鐘上升沿到來時cnt加1end if;end if;end process p0;clk_tmp<=clk;end b ;2. 數(shù)碼管顯示源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shuma isport(clk_in : in std_logic; -以分頻的時鐘輸入 yin : i
12、n std_logic_vector(6 downto 0); -輸入音符 highlow :in std_logic_vector(1 downto 0); -輸入高低音 auto : in std_logic; -自動播放 auto1 : in std_logic; -自動播放1 duan : out std_logic_vector(7 downto 0); cat : out std_logic_vector(5 downto 0) );end;architecture b of shuma issignal duant : std_logic_vector(7 downto 0);s
13、ignal catt : std_logic_vector(5 downto 0);beginp1: process(clk_in,yin,highlow,auto,auto1) beginif auto ='1' thencatt<="111101"duant<="00111111" -顯示“8”表示自動播放elsif auto1 ='1' then catt<="111101"duant<="01111111"-顯示“0”表示試音elsif auto =&
14、#39;0' then if(clk_in ='0') thencase yin iswhen "0000001" => catt<="111110"duant<="00000110" -顯示“1”when "0000010" => catt<="111110"duant<="01011011"-顯示“2”when "0000100" => catt<="111110&quo
15、t;duant<="01001111"-顯示“3”when "0001000" => catt<="111110"duant<="01100110"-顯示“4”when "0010000" => catt<="111110"duant<="01101101"-顯示“5”when "0100000" => catt<="111110"duant<="
16、01111101"-顯示“6”when "1000000" => catt<="111110"duant<="00000111"-顯示“7”when others=> catt<="111111"duant<="00000000"end case; elsif (clk_in ='1') thencase highlow iswhen "10" => catt<="111101"du
17、ant<="01110100" -顯示“L”when "01" => catt<="111101"duant<="00111000" -顯示“H”when others=> catt<="111111"duant<="00000000" end case; end if;end if; end process p1; cat<= catt; duan<= duant;end b;3. 點陣顯示源程序library ieee
18、;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dianzhen isport(clk_in : in std_logic; -時鐘輸入 yin : in std_logic_vector(6 downto 0); -輸入音符 row : out std_logic_vector(7 downto 0); -點陣行向量 col : out std_logic_vector(7 downto 0) -點陣列向量 );end;architecture b of dianzhen issignal count :
19、 integer range 0 to 6;signal rowt : std_logic_vector(7 downto 0);signal colt : std_logic_vector(7 downto 0);beginp1:process(clk_in)beginif (clk_in'event and clk_in='1') thenif count = 6 then count<=0;elsecount<=count+1;-用count來記數(shù)end if;end if;end process p1;p2: process(count,yin) b
20、egin if (yin = "0000001") thencase count is-點陣顯示,表示“1”音符 when 0=> rowt<="11111110"colt<="01111110" when 1=> rowt<="11111101"colt<="01111110" when 2=> rowt<="11111011"colt<="01111100" when 3=> rowt<
21、="11110111"colt<="01111000" when 4=> rowt<="11101111"colt<="01110000" when 5=> rowt<="11011111"colt<="01100000" when 6=> rowt<="10111111"colt<="01000000" when others=> rowt<="1111
22、1111"colt<="00000000"end case; elsif (yin = "0000010") thencase count is-點陣顯示,表示“2”音符 when 0=> rowt<="11111110"colt<="01111101" when 1=> rowt<="11111101"colt<="01111100" when 2=> rowt<="11111011"col
23、t<="01111100" when 3=> rowt<="11110111"colt<="01111000" when 4=> rowt<="11101111"colt<="01110000" when 5=> rowt<="11011111"colt<="01100000" when 6=> rowt<="10111111"colt<="0100
24、0000" when others=> rowt<="11111111"colt<="00000000"end case;elsif (yin = "0000100") thencase count is-點陣顯示,表示“3”音符 when 0=> rowt<="11111110"colt<="01111011" when 1=> rowt<="11111101"colt<="01111010"
25、; when 2=> rowt<="11111011"colt<="01111000" when 3=> rowt<="11110111"colt<="01111000" when 4=> rowt<="11101111"colt<="01110000" when 5=> rowt<="11011111"colt<="01100000" when 6=> ro
26、wt<="10111111"colt<="01000000" when others=> rowt<="11111111"colt<="00000000"end case;elsif (yin = "0001000") thencase count is-點陣顯示,表示“4”音符 when 0=> rowt<="11111110"colt<="01110111" when 1=> rowt<=&q
27、uot;11111101"colt<="01110110" when 2=> rowt<="11111011"colt<="01110100" when 3=> rowt<="11110111"colt<="01110000" when 4=> rowt<="11101111"colt<="01110000" when 5=> rowt<="11011111&quo
28、t;colt<="01100000" when 6=> rowt<="10111111"colt<="01000000" when others=> rowt<="11111111"colt<="00000000"end case;elsif (yin = "0010000") thencase count is -點陣顯示,表示“5”音符 when 0=> rowt<="11111110"colt&l
29、t;="01101111" when 1=> rowt<="11111101"colt<="01101110" when 2=> rowt<="11111011"colt<="01101100" when 3=> rowt<="11110111"colt<="01101000" when 4=> rowt<="11101111"colt<="0110000
30、0" when 5=> rowt<="11011111"colt<="01100000" when 6=> rowt<="10111111"colt<="01000000" when others=> rowt<="11111111"colt<="00000000"end case;elsif (yin = "0100000") thencase count is-點陣顯示,表示“6”音符 w
31、hen 0=> rowt<="11111110"colt<="01011111" when 1=> rowt<="11111101"colt<="01011110" when 2=> rowt<="11111011"colt<="01011100" when 3=> rowt<="11110111"colt<="01011000" when 4=> rowt&
32、lt;="11101111"colt<="01010000" when 5=> rowt<="11011111"colt<="01000000" when 6=> rowt<="10111111"colt<="01000000" when others=> rowt<="11111111"colt<="00000000"end case;elsif (yin = "1
33、000000") thencase count is-點陣顯示,表示“7”音符 when 0=> rowt<="11111110"colt<="00111111" when 1=> rowt<="11111101"colt<="00111110" when 2=> rowt<="11111011"colt<="00111100" when 3=> rowt<="11110111"c
34、olt<="00111000" when 4=> rowt<="11101111"colt<="00110000" when 5=> rowt<="11011111"colt<="00100000" when 6=> rowt<="10111111"colt<="00000000" when others=> rowt<="11111111"colt<=&qu
35、ot;00000000"end case;else case count is-點陣顯示,表示不輸入音符 when 0=> rowt<="11111110"colt<="01111111" when 1=> rowt<="11111101"colt<="01111110" when 2=> rowt<="11111011"colt<="01111100" when 3=> rowt<="11
36、110111"colt<="01111000" when 4=> rowt<="11101111"colt<="01110000" when 5=> rowt<="11011111"colt<="01100000" when 6=> rowt<="10111111"colt<="01000000" when others=> rowt<="11111111"
37、;colt<="00000000"end case;end if; end process p2; row<= rowt; col<= colt;end b;4. 選擇音符及自動播放源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity auto isport( clk_in :in std_logic;-輸入時鐘 auto :in std_logic;-自動播放 auto1 :in std_logic;-試音播放 clear :in std_lo
38、gic;-復位 yin_in :in std_logic_vector(6 downto 0);-輸入音符 yin_out :out std_logic_vector(6 downto 0); -輸出音符end auto;architecture a of auto issignal count : integer range 0 to 35;signal n: integer range 0 to 6;signal yin : std_logic_vector(6 downto 0);begin p1:process(clk_in,clear)variable i : integer ran
39、ge 0 to 63000000;begin if clear ='1' then count<=0; elsif (clk_in'event and clk_in='1') thenif (i=20000000) then i:=0; if count =15 then count <=0;-自動播放count記數(shù) else count <=count+1; end if; if n =6 then n <=0; -試音播放n記數(shù) else n <=n+1; end if;else i:=i+1;end if; end i
40、f;end process p1;p2:process(count,auto,yin_in,clear)begin if clear='1' then yin<="0000000"-音符清零elseif auto ='1' then-自動播放歌曲case count iswhen 1 => yin<="0000100"-3when 2 => yin<="1000000"-7when 3 => yin<="0000100"-3when 4 =&
41、gt; yin<="0100000"-6when 5 => yin<="0010000"-5when 6=> yin<="0100000"-6when 7 => yin<="0000001"-1when 8 => yin<="0000100"-3when 9 => yin<="0010000"-5when 10 => yin<="0000100"-3when 11 => y
42、in<="0000100"-3when 12 => yin<="0001000"-4when 13 => yin<="0000100"-2when 14 => yin<="0001000"-4when others => yin<="0000000"end case;elsif auto1 ='1' thencase n is-試音播放when 0 => yin<="0000001"-1when
43、 1 => yin<="0000010"-2when 2 => yin<="0000100"-3when 3 => yin<="0001000"-4when 4 => yin<="0010000"-5when 5 => yin<="0100000"-6when 6 => yin<="1000000"-7when others => yin<="0000000"end cas
44、e;elseyin<=yin_in;-動手演奏end if;end if;end process p2;yin_out<=yin;end a;5. 預置分頻系數(shù)模塊源代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity seletone isport( highlow :in std_logic_vector(1 downto 0); -高低音 yin :in std_logic_vector(6 downto 0);-要演奏的音符 tone :out integer ra
45、nge 0 to 2000000); -預置分頻系數(shù)end seletone;architecture a of seletone issignal tone0 :integer range 0 to 2000000;begin process(highlow,yin)begin if highlow ="00" thencase yin is-中音部分when "0000001"=> tone0<=523;when "0000010"=> tone0<=587;when "0000100"
46、=> tone0<=659;when "0001000"=> tone0<=698;when "0010000"=> tone0<=784;when "0100000"=> tone0<=880;when "1000000"=> tone0<=988;when others => tone0<=2000000;end case;elsif highlow ="10" then-高音部分case yin iswhen &quo
47、t;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<
48、=1975;when others => tone0<=2000000;end case;elsif highlow ="01" then-低音部分case yin iswhen "0000001"=> tone0<=261;when "0000010"=> tone0<=293;when "0000100"=> tone0<=329;when "0001000"=> tone0<=349;when "0010000"
49、;=> tone0<=392;when "0100000"=> tone0<=440;when "1000000"=> tone0<=494;when others => tone0<=2000000;end case; end if;end process ;tone <=tone0;end a;6. 分頻發(fā)音模塊源代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div isport(
50、clk_in : in std_logic;-輸入時鐘 tone: in integer range 0 to 2000000;-預置頻率 clk_out : out std_logic);-輸出時鐘end div;architecture a of div issignal clk_tmp0 : std_logic;signal clk_tmp1: std_logic;begin p0:process(clk_in, tone)variable cnt : integer range 0 to 49999999;beginif (clk_in'event and clk_in=
51、9;1') then if cnt <12999999/tone then-分頻系數(shù) cnt:=cnt+1; clk_tmp0<='1' else cnt:=0; clk_tmp0<='0' end if;end if;end process p0;p1:process(clk_tmp0)variable count :std_logic;beginif(clk_tmp0'event and clk_tmp0='1') thencount:=not count;if count ='1' then
52、clk_tmp1 <='1'-輸出平穩(wěn)的波形elseclk_tmp1 <='0'end if;end if;end process p1;clk_out<=clk_tmp1;end a;7. 電子琴頂層設計library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dianzq isport(clk : in std_logic;-時鐘輸入 yin : in std_logic_vector(6 downto 0);-音符輸入 highlow:
53、in std_logic_vector(1 downto 0);-高低音輸入 auto_in: in std_logic;-自動播放 auto1 : in std_logic;-試音播放 clear : in std_logic;-復位 clk_out: out std_logic;-輸出時鐘 row : out std_logic_vector(7 downto 0);-點陣顯示 col : out std_logic_vector(7 downto 0);-點陣顯示 duan : out std_logic_vector(7 downto 0);-數(shù)碼管顯示 cat : out std_l
54、ogic_vector(5 downto 0);-數(shù)碼管顯示end dianzq;architecture a of dianzq iscomponent div0 is-分頻模塊port(clk_in : in std_logic; clk_tmp : out std_logic);end component;component dianzhen is-點陣顯示模塊port(clk_in : in std_logic; yin : in std_logic_vector(6 downto 0); row : out std_logic_vector(7 downto 0); col : ou
55、t std_logic_vector(7 downto 0) );end component;component shuma is-數(shù)碼管顯示模塊port(clk_in : in std_logic; yin : in std_logic_vector(6 downto 0); highlow :in std_logic_vector(1 downto 0); auto : in std_logic; auto1 : in std_logic; duan : out std_logic_vector(7 downto 0); cat : out std_logic_vector(5 downt
56、o 0) );end component;component auto is-自動播放模塊port( clk_in :in std_logic; auto :in std_logic; auto1 : in std_logic; yin_in :in std_logic_vector(6 downto 0); clear : in std_logic; yin_out:out std_logic_vector(6 downto 0); end component;component seletone is-預置分頻系數(shù)模塊port( highlow:in std_logic_vector(1
57、downto 0); yin :in std_logic_vector(6 downto 0); tone :out integer range 0 to 2000000); end component;component div is-分頻發(fā)音模塊port(clk_in : in std_logic; tone : in integer range 0 to 2000000; clk_out : out std_logic);end component;signal yin_tmp :std_logic_vector(6 downto 0);signal tone_tmp : integer
58、 range 0 to 2000000;signal clk_tmp : std_logic;beginu1: auto port map (clk_in=>clk,auto=>auto_in,yin_in=>yin,yin_out=>yin_tmp,clear=>clear,auto1=>auto1);u2: seletone port map (highlow=>highlow,yin=>yin_tmp,tone=>tone_tmp); u3: shuma port map (duan=>duan,cat=>cat,yin=>yin_tmp,clk_in=>c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 資陽醫(yī)院保潔合同協(xié)議
- 貨物出口代理協(xié)議書模板
- 購物材料協(xié)議合同協(xié)議
- 課程退課協(xié)議書范本
- 購房合同沒簽補充協(xié)議
- 貨物買賣三方協(xié)議合同書
- 詐騙退款協(xié)議書模板
- 2025年大學化學試題及答案揭密
- 2025年老年護理專業(yè)技能認證考試試題及答案
- 2025年跨境電商經(jīng)營能力考試試卷及答案
- 2024年四川省公安廳招聘警務輔助人員真題
- 機械制造及非標零部件加工項目突發(fā)環(huán)境事件應急預案
- 2025年紹興市九年級中考語文一模試卷附答案解析
- 9.1科學立法 課件高中政治統(tǒng)編版必修三政治與法治
- 施工現(xiàn)場臨時用電安全
- 2025年3月廣東省高三語文一模作文題目解析及范文6篇:“人們認知世界的方式”
- 小學教育學(第5版)課件 第九章 小學教育評價
- 硫酸銅晶體的制備實驗課件
- 閘門液壓維修施工方案
- 江蘇省建筑與裝飾工程計價定額(2014)電子表格版
- 勞動保障監(jiān)察執(zhí)法課件
評論
0/150
提交評論