![用單片機(jī)制作電子琴_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/668c0c79-48bb-4324-978d-d70d52c18a77/668c0c79-48bb-4324-978d-d70d52c18a771.gif)
![用單片機(jī)制作電子琴_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/668c0c79-48bb-4324-978d-d70d52c18a77/668c0c79-48bb-4324-978d-d70d52c18a772.gif)
![用單片機(jī)制作電子琴_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/668c0c79-48bb-4324-978d-d70d52c18a77/668c0c79-48bb-4324-978d-d70d52c18a773.gif)
![用單片機(jī)制作電子琴_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/668c0c79-48bb-4324-978d-d70d52c18a77/668c0c79-48bb-4324-978d-d70d52c18a774.gif)
![用單片機(jī)制作電子琴_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/668c0c79-48bb-4324-978d-d70d52c18a77/668c0c79-48bb-4324-978d-d70d52c18a775.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章 總體方案2.1系統(tǒng)設(shè)計要求本系統(tǒng)分為兩個部分,一個是音樂播放,另一個就是電子琴彈奏。 關(guān)于聲音的處理,使用單片機(jī)C語言,利用定時器來控制頻率,而每個音符的符號只是存在我自己定義的表中。具體要求如下: 1.要求達(dá)到電子琴的基本功能,可以用彈奏出簡單的樂曲。 2.用鍵盤作出電子琴的按鍵,每鍵代表一個音符。 3.各音符按一定的順序排列,必須符合電子琴的按鍵排列順序。 4.固定音樂播放有按鍵控制:“播放”、“彈奏/停止”。 5.彈奏電子琴時能播放出準(zhǔn)確的聲音,不彈奏時可以播放內(nèi)置音樂。2.2 電子琴系統(tǒng)的組成單片機(jī)因體積小、功能強(qiáng)、價格低廉而得到廣泛應(yīng)用。STC89C52單片機(jī)設(shè)計微型電子琴的
2、方法,僅需STC89C52最小系統(tǒng),擴(kuò)展一組矩陣鍵盤,再接一組發(fā)光二極管用來指示電子琴的工作狀態(tài)。本系統(tǒng)分為兩個部分,一個是音樂另一個就是電子琴。音樂播放部分:音樂實際上是有固定周期的信號。本文介紹用STC89C52的兩個定時器(如T0,T1)控制,在P1.3腳上輸出方波周期信號,產(chǎn)生樂音,通過矩陣鍵盤按鍵產(chǎn)生不同的音符,由此操作人員可以隨心所欲的彈奏自己所喜愛的樂曲,當(dāng)不想彈奏時通過按放歌鍵可以演奏事先存放在單片機(jī)中的幾首動聽的曲子供消遣。當(dāng)歌曲演奏完時,通過按復(fù)位鍵便可回到初始狀態(tài),這樣就做出了一臺微型電子琴。由于一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利
3、用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。樂曲中,每一音符對應(yīng)著確定的頻率,我們將每一音符的時間常數(shù)和其相應(yīng)的節(jié)拍常數(shù)作為一組,按順序?qū)非械乃谐?shù)排列成一個表,然后由查表程序依次取出,產(chǎn)生音符并控制節(jié)奏,就可以實現(xiàn)演奏效果。電子琴彈奏部分:實際上就是把每個按鍵所對應(yīng)的值經(jīng)過處理后發(fā)給單片機(jī),再在單片機(jī)內(nèi)把數(shù)字當(dāng)作指針指向所對應(yīng)的音符。2.4 系統(tǒng)框圖該系統(tǒng)通過電子琴按鍵隨意鍵入所要表達(dá)的音符,作為電平送給主體電路,中央處理器通過識
4、別,解碼輸出音符,在揚聲器中發(fā)出有效的聲音。通過這樣可以不斷的彈奏音樂。嵌入式電路,按鍵電路,LED顯示電路和兩個功能鍵組成,通過功能鍵可以選擇播放音樂。其主要模塊由五個部分組成,具體關(guān)系如圖3-1所示:圖3-1 帶存儲的電子琴框圖上圖即為此次設(shè)計中的電子琴的硬件結(jié)構(gòu)圖,我們運用單片機(jī)的最小系統(tǒng),用P0口的高四位和P0口的低四位作4X4矩陣式按鍵的接口,用P2口作數(shù)碼管的接口,用P1.3作信號輸出口。 第二章 硬件介紹3.1 STC89C523.1.1 STC89C52STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。在單芯片上,擁有靈巧的8
5、 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。3.1.2 主要功能特性 與MCS-51 兼容 8K字節(jié)可編程閃爍存儲器 壽命:1000寫/擦循環(huán) 數(shù)據(jù)保留時間:10年 全靜態(tài)工作:0Hz-24Hz 三級程序存儲器鎖定 512內(nèi)部RAM 32可編程I/O線 兩個16位定時器/計數(shù)器 5個中斷源 可編程串行通道 低功耗的閑置和掉電模式 片
6、內(nèi)振蕩器和時鐘電路3.2 矩陣式鍵盤的識別和顯示3.2.1.矩陣式鍵盤的結(jié)構(gòu)與工作原理在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構(gòu)成4*4=16個按鍵,比之直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯,比如再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識別也要復(fù)雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單
7、片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當(dāng)按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。具體的識別及編程方法如下所述。3.2.2.矩陣式鍵盤的按鍵識別方法確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。1、判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相
8、交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。2、判斷閉合鍵所在的位置 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。3.2.3. 鍵盤接口必須具有的4個基本功能。(1)去抖動:每個按鍵在按下或松開時,都會產(chǎn)生短時間的抖動。抖動的持續(xù)時間與鍵的質(zhì)量相關(guān),一般為520mm。所謂抖動是指在識別被按鍵是必須避開抖動狀態(tài),只有處在穩(wěn)定接通或穩(wěn)定斷開狀態(tài)才能保證識別正確無誤。去抖問題可通過軟件
9、延時或硬件電路解決。(2)防串鍵:防串鍵是為了解決多個鍵同時按下或者前一按鍵沒有釋放又有新的按鍵按下時產(chǎn)生的問題。常用的方法有雙鍵鎖定和N鍵輪回兩種方法。雙鍵鎖定,是當(dāng)有兩個或兩個以上的按鍵按下時,只把最后釋放的鍵當(dāng)作有效鍵并產(chǎn)生相應(yīng)的鍵碼。N鍵輪回,是當(dāng)檢測到有多個鍵被按下時,能根據(jù)發(fā)現(xiàn)它們的順序依次產(chǎn)生相應(yīng)鍵的鍵碼。(3)被按鍵識別:如何識別被按鍵是接口解決的主要問題,一般可通過軟硬結(jié)合的方法完成。常用的方法有行掃描法和線反轉(zhuǎn)法兩種。行掃描法的基本思想是,由程序?qū)︽I盤逐行掃描,通過檢測到的列輸出狀態(tài)來確定閉合鍵,為此,需要設(shè)置入口、輸出口一個,該方法在微機(jī)系統(tǒng)中被廣泛使用。線反轉(zhuǎn)法的基本思
10、想是通過行列顛倒兩次掃描來識別閉合鍵,為此需要提供兩個可編程的雙向輸入/輸出端口。(4)鍵碼產(chǎn)生:為了從鍵的行列坐標(biāo)編碼得到反映鍵功能的鍵碼,一般在內(nèi)存區(qū)中建立一個鍵盤編碼表,通過查表獲得被按鍵的鍵碼。用AT89C51的并行口P0接44矩陣鍵盤,以P0.0P0.3作輸入線,以P0.4P0.7作輸出線;在數(shù)碼管上顯示每個按鍵的“0F”序號。3.3硬件設(shè)計圖圖中的矩陣鍵盤,從上到下,從左到右,依次為鍵盤的0-15,在數(shù)碼管上顯示時順序為0-9和A-F,在按功能鍵時,圖上的兩個指示燈會根據(jù)功能的不同實現(xiàn)亮/滅狀態(tài)的切換。在播放內(nèi)置音樂時,指示燈在一定程度上能指示出曲目的音符。第四章 軟件設(shè)計4.1
11、整體程序處理 在電子琴開始工作時,系統(tǒng)默認(rèn)電子琴處于彈奏狀態(tài),歌曲選擇功能鍵的目的是賦予矩陣鍵盤第二功能,即對系統(tǒng)內(nèi)置的歌曲進(jìn)行選擇,在放歌時能且只能通過彈奏/停止鍵來結(jié)束放歌,選歌時必須先按下歌曲選擇功能鍵,在通過矩陣鍵盤來選擇和切換曲目。4.2 I/O并行口直接驅(qū)動LED顯示把“STC89C52”區(qū)域中的P2.0/A8P2.7/A15端口用8芯排線連接到一位數(shù)碼管的ah端口上;要求:P2.0/A8與a相連,P2.1/A9與b相連,P2.2/A10與c相連,P2.7/A15與h相連。 表1 字形碼表及對應(yīng)的音符10x3f低 5 SO90x7f中 6 LA20x06低 6 LAA0x6f中 7
12、 SI30x5b低 7 SIb0x77高 1 DO40x4f中 1 DOC0x7c高 2 RE50x66中 2 REd0x39高 3 M60x6d中 3 ME0x5e高 4 FA70x7d中 4 FAF0x79高 5 SO80x07中 5 SO00x71高 6 LA 在本設(shè)計中,數(shù)碼管的顯示通過 P2=DSY_CODEk 這句語言來查表并輸出,實現(xiàn)音符的顯示。 4.3 音樂播放設(shè)計一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時/計數(shù)器T0來產(chǎn)生這樣方波頻
13、率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。若要產(chǎn)生音頻脈沖,只要算出某一音頻的周期(1/頻率),再將此周期除以2,即為半周期的時間。利用定時器計時半周期時間,每當(dāng)計時終止后就將P3.7反相,然后重復(fù)計時再反相。就可在P1.3引腳上得到此頻率的脈沖。利用STC89C52的內(nèi)部定時器使其工作計數(shù)器模式(MODE1)下,改變計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法產(chǎn)生不同音階,例如,頻率為523Hz,其周期T1/5231912s,因此只要令計數(shù)器計時956s/1s956,每計數(shù)956次時將I/O反相,就可得到中音DO(523Hz)。 計數(shù)脈沖值與頻率的關(guān)系式是: Nfi2fr 式
14、中,N是計數(shù)值;fi是機(jī)器頻率(晶體振蕩器為12MHz時,其頻率為1MHz);fr是想要產(chǎn)生的頻率。其計數(shù)初值T的求法如下: T65536N65536fi2fr例如:設(shè)K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計數(shù)值。 T65536N65536fi2fr6553610000002fr 65536500000/fr低音DO的T65536500000/26263628中音DO的T65536500000/52364580高音DO的T65536500000/104665058 單片機(jī)12MHZ晶振,高中低音符與計數(shù)T0相關(guān)的計數(shù)值如表4-1
15、所示 表4-1 音符頻率表音符頻率(HZ)簡譜碼(T值)音符頻率(HZ)簡譜碼(T值)休止00中 4 FA69864820低1DO26263628中 5 SO78464898低2RE29463835中 6 LA88064968低 3 M33064021中 7 SI98865030低 4 FA34964103高 1 DO104665058低 5 SO39264260高 2 RE117565110低 6 LA44064400高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580高 5 SO156865217中 2 RE58764684高
16、6 LA176065252中 3 M65964777高 7 SI196765283我們要為這個音符建立一個表格,單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù) uint code tab= 0,63628,63835,64021,64103,64260,64400,64524, 64580,64684,64777,64820,64898,64968,65030, 65058,65110,65157,65178,65217,65252,65283 音樂的音拍,一個節(jié)拍為單位(C調(diào))(如表4-2所示) 表4-2 曲調(diào)值表曲調(diào)值DELAY曲調(diào)值DELAY調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3
17、/494ms調(diào)2/4250ms調(diào)2/4125ms 對于不同的曲調(diào)我們也可以用單片機(jī)的另外一個定時/計數(shù)器來完成。在這個程序中用到了兩個定時/計數(shù)器來完成的。其中T0用來產(chǎn)生音符頻率,T1用來產(chǎn)生音拍。 附錄 完整程序#include #include #include #include #define uchar unsigned char#define uint unsigned intuchar STHO;uchar STLO;bit FY=0;uchar Song_Index=0,Tone_Index=0;uchar k,key;sbit SPK=P13;sbit LED1=P10;sb
18、it LED2=P11;uchar code DSY_CODE=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;uchar code Song50=1,2,3,1,1,2,3,1,1,3,4,5,3,4,5,5,6,5,3,5,6,5,3,5,3,2,1,2,1,-1,3,3,3,4,5,5,5,5,6,5,3,5,3,2,1,5,6,5,3,3,2,1,1,-1,3,2,1,3,2,1,1,2,3,2,1,2,3,1,3,4,5,3,4,5,5,6,5,3,5,3,2,1,3,2,
19、1,1,-1,10,10,10,9,10,9,10,9,9,6,6,7,8,9,8,7,6,5,6,-1,10,10,10,9,10,13,12,13,12,12,9,9,10,11,12,11,10,9,8,10,10,-1,13,14,13,12,12,10,12,10,12,9,13,12,10,9,10,10,-1,9,13,13,13,8,13,13,13,13,14,15,14,13,14,13,14,10,10,-1,13,14,13,12,12,10,12,10,12,13,14,13,14,13,14,10,-1,9,13,13,13,8,13,13,13,13,14,15,
20、14,13,13,14,12,13,-1,5,5,10,9,8,5,5,5,5,10,9,8,6,6,6,11,10,9,6,-1,6,12,12,11,9,10,8,5,5,10,9,8,5,5,5,10,9,8,6,-1,6,6,11,10,9,12,12,12,12,13,12,11,9,8,10,10,10,-1,10,10,10,10,12,8,9,10,11,1,11,11,11,10,10,10,10,10,9,9,8,9,12,12,12,11,9,8,-1,13,13,8,13,13,13,13,14,15,14,13,14,13,14,10,10,13,14,13,12,1
21、2,10,12,10,12,13,14,13,14,13,14,10,9,13,13,13,8,13,13,13,13,14,15,14,13,13,14,12,13,-1,6,6,11,10,9,12,12,12,12,13,12,11,9,8,10,10,10,10,10,10,10,12,8,9,10,11,11,11,11,11,10,10,10,10,10,9,9,8,9,12,12,12,11,9,8,-1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,-1;uchar code Len50=1,1,1,1,1,1,1,
22、1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,-1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,2,2,-1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,2,1,1,2,2,-1,1,1,1,1,2,1,1,1,1,0,1,1,0,1,1,0,1,1,2,-1,1,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,0,1,1,3,1,-1,0,1,1,0,1,1,2,1,1,0,1,1,0,1,1,2,-1,0,1,1,2,0,1,1,0,1,
23、1,0,1,1,0,1,1,2,1-1,0,1,1,0,1,1,2,1,1,0,1,1,0,1,1,4,-1,0,1,1,2,0,1,1,0,1,1,0,1,1,0,1,4,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,1,1,2,0,1,1,0,1,1,0,1,1,0,1,1,2,
24、1,0,1,1,0,1,1,2,1,1,0,1,1,0,1,1,4,0,1,1,2,0,1,1,0,1,1,0,1,1,0,1,4,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1; uint code tab=0,63628,63835,64021,64103,64260,64400,64524, 64580,64684,64777,64820,64898,649
25、68,65030, 65058,65110,65157,65178,65217,65252,65283; void delay1(uint ms) uchar t; while(ms-) for(t=0;t0;i-); uchar getkey(void) uchar scancode,tmpcode; if(P0&0xf0)=0xf0) return(0); scancode=0xfe; while(scancode&0x10)!=0) P0=scancode;if (P0&0xf0)!=0xf0) tmpcode =(P0&0xf0)|0x0f; return(scancode)+(tmpcode); else scancode=(scancode1)|0x01; void EX0_INT() interrupt 0 FY=0; LED1=1; LED2=0; void EX1_INT() interrupt 2 FY=1; LED1=0; LED2=1; void time0_int(void) interrupt 1 using 0 TH0=STHO; TL0=STLO; SPK=!SPK
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 20991-2024足部防護(hù)鞋的測試方法
- RNF5-agonist-1-生命科學(xué)試劑-MCE-3083
- Acremine-F-生命科學(xué)試劑-MCE-8674
- 二零二五年度船舶船員勞動合同及船舶航行風(fēng)險承擔(dān)合同
- 2025年度汽車美容店員工勞動合同簽訂與解除流程合同
- 2025年度航空設(shè)施面積差額補(bǔ)充合同
- 2025年度汽車銷售合同和購車售后服務(wù)質(zhì)量監(jiān)控協(xié)議
- 施工日志填寫中的質(zhì)量和安全事故記錄方法
- 運動與心理健康如何通過鍛煉提升幸福感
- 教育科技下的道德與法治教育融合探討
- 臨床提高膿毒性休克患者1h集束化措施落實率PDCA品管圈
- 液壓式隨鉆震擊器設(shè)計
- 空氣能熱泵系統(tǒng)設(shè)計與安裝融資計劃書
- 2021中考地理真題試卷 山東省煙臺地理含答案
- 非法捕撈水產(chǎn)品罪
- 新概念第一冊單詞匯總帶音標(biāo)EXCEL版
- 作用于血液及造血器官的藥 作用于血液系統(tǒng)藥物
- 心肺復(fù)蘇(最全版)完整版
- 春節(jié)節(jié)后施工復(fù)工安全培訓(xùn)
- GB/T 3478.1-1995圓柱直齒漸開線花鍵模數(shù)基本齒廓公差
- GB/T 1346-2001水泥標(biāo)準(zhǔn)稠度用水量、凝結(jié)時間、安定性檢驗方法
評論
0/150
提交評論