版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p> 課 程 名 稱 單片機(jī)原理及應(yīng)用A </p><p> 設(shè) 計(jì) 課 題 電子琴設(shè)計(jì) </p><p> 院(系、部、中心) 自動(dòng)化學(xué)院 </p><p> 專 業(yè)
2、 自動(dòng)化(數(shù)控技術(shù)) </p><p> 班 級(jí) 數(shù)控094 </p><p><b> 目 錄</b></p><p><b> 設(shè)計(jì)目的及任務(wù)</b></p><p><b> 設(shè)計(jì)目的</b></p>&
3、lt;p><b> 設(shè)計(jì)任務(wù)題目及要求</b></p><p><b> 總體方案設(shè)計(jì)</b></p><p><b> 設(shè)計(jì)任務(wù)分析</b></p><p><b> 設(shè)計(jì)方案</b></p><p><b> 設(shè)計(jì)原理<
4、/b></p><p><b> 程序流程圖</b></p><p><b> 硬件原理圖</b></p><p><b> 模塊設(shè)計(jì)</b></p><p><b> 鍵盤(pán)掃描模塊</b></p><p><b
5、> 定時(shí)器模塊</b></p><p><b> 調(diào)試過(guò)程</b></p><p><b> 問(wèn)題發(fā)現(xiàn)與解決</b></p><p><b> 設(shè)計(jì)總結(jié)</b></p><p><b> 七、參考文獻(xiàn)</b></p>
6、<p><b> 八.程序清單</b></p><p><b> 一、設(shè)計(jì)目的及任務(wù)</b></p><p> 1.課程設(shè)計(jì)應(yīng)達(dá)到的目的</p><p> ?。?)運(yùn)用<<單片機(jī)原理及應(yīng)用A>>課程等知識(shí),根據(jù)題目要求進(jìn)行軟硬件系統(tǒng)的設(shè)計(jì)和調(diào)試,從而加深對(duì)本課程知識(shí)點(diǎn)的理解,使學(xué)
7、生綜合應(yīng)用知識(shí)能力、設(shè)計(jì)能力、調(diào)試能力及報(bào)告撰寫(xiě)能力等顯著提高。</p><p> ?。?)了解計(jì)算機(jī)發(fā)聲原理, 進(jìn)一步熟悉定時(shí)器編程方法及鍵盤(pán)掃描電路工作原理及編程方法。</p><p> 2.課程設(shè)計(jì)題目及要求</p><p><b> ?。?)、題目</b></p><p><b> 電子琴設(shè)計(jì)<
8、;/b></p><p><b> ?。?)、設(shè)計(jì)要求:</b></p><p> 利用實(shí)驗(yàn)儀上提供的鍵盤(pán),使數(shù)字鍵1、2、3、4、5、6、7、8、9作為電子琴按鍵,其中1~7號(hào)鍵按下后即發(fā)出相應(yīng)的音調(diào)。8號(hào)鍵按下后依次發(fā)出“1、2、3、4、5、6、7” 音調(diào),9號(hào)鍵按下后依次發(fā)出“7、6、5、4、3、2、1” 音調(diào),用8255的PA.0 口發(fā)出音頻脈沖,驅(qū)動(dòng)
9、喇叭。</p><p> 利用定時(shí)器,可以發(fā)出不同頻率的脈沖,不同頻率的脈沖經(jīng)喇叭驅(qū)動(dòng)電路放大濾波后,就會(huì)發(fā)出不同的音調(diào).定時(shí)器按設(shè)置的定時(shí)參數(shù)產(chǎn)生中斷,這一次中斷發(fā)出脈沖低電平,下一次反轉(zhuǎn)發(fā)出脈沖高電平.由于定時(shí)參數(shù)不同,就發(fā)出了不同頻率的脈沖. 本實(shí)驗(yàn)中按鍵一次,會(huì)發(fā)50個(gè)脈沖.發(fā)完后繼續(xù)檢測(cè)鍵盤(pán),如果鍵還按下,繼續(xù)發(fā)音。</p><p><b> 二、總體方案設(shè)計(jì)<
10、;/b></p><p><b> 1、設(shè)計(jì)任務(wù)分析</b></p><p> 本任務(wù)的要求是根據(jù)不同的數(shù)字鍵被按下后,發(fā)出相對(duì)應(yīng)的音調(diào),或者順序、逆序連續(xù)的發(fā)出七中音調(diào),不同音調(diào)的產(chǎn)生對(duì)喇叭發(fā)出不同頻率的脈沖,而脈沖則是根據(jù)定時(shí)器中斷產(chǎn)生正負(fù)脈沖的跳變,這樣就形成了脈沖。與此同時(shí),定時(shí)時(shí)間的長(zhǎng)短,及頻率的高低,是由定時(shí)間的初值決定的。</p>
11、<p> 通過(guò)以上的析,可以明確,本課題需要涉及到的就是鍵盤(pán)掃描,和定時(shí)器。圍繞這兩個(gè)模塊,就可以制定出總體的設(shè)計(jì)方案。</p><p><b> 2、設(shè)計(jì)方案</b></p><p> 通過(guò)以上的分析,可以制定出以下的設(shè)計(jì)方案:</p><p> ?。?)、 因?yàn)橐玫?個(gè)按鍵,可以用4*4的矩陣鍵盤(pán),,對(duì)其中的9個(gè)按鍵進(jìn)行
12、標(biāo)號(hào),再根據(jù)鍵盤(pán)掃描的原理,就可以找出是哪個(gè)鍵被按下。</p><p> ?。?)、不同頻率的脈沖均通過(guò)定時(shí)器來(lái)產(chǎn)生,定時(shí)器的初值不同,計(jì)滿溢出的頻率</p><p> 也是不同的,從而正負(fù)電平的跳變的頻率也不同,就產(chǎn)生了不停頻率的脈沖,所以只需對(duì)定時(shí)器設(shè)置不同德計(jì)數(shù)初值,便可實(shí)現(xiàn)不同頻率脈沖的產(chǎn)生。</p><p> ?。?)、喇叭發(fā)聲原理則是:對(duì)喇叭驅(qū)動(dòng)電路交
13、替的施加施加低電平,喇叭發(fā)聲;否則就不發(fā)聲。把這一原理和定時(shí)器中斷產(chǎn)生的電平跳變相結(jié)合,就可以聽(tīng)到不同頻率的音調(diào)。</p><p><b> 三、設(shè)計(jì)原理</b></p><p><b> 1、程序流程圖</b></p><p> 根據(jù)上述的設(shè)計(jì)方案,可以用流程圖畫(huà)出本次課程設(shè)計(jì)的整體思路,在以下的流程圖中,包括主程
14、序和各個(gè)相關(guān)的子程序。</p><p> 在程序中,首先是進(jìn)行掃描,找出是哪個(gè)鍵被按下,然后根據(jù)相應(yīng)的鍵號(hào),采取不同的操作,以此構(gòu)成循環(huán)</p><p> 本程序中涉及到的子程序模塊包括:鍵盤(pán)掃描子程序;定時(shí)器中斷子程序;順序連續(xù)發(fā)出1234567七個(gè)音調(diào);連續(xù)發(fā)出7654321七個(gè)音調(diào)。</p><p> 以下分別主程序各個(gè)相關(guān)的子程序:</p>
15、<p><b> 2、硬件原理圖</b></p><p> 以下是電子琴電路的實(shí)際硬件原理圖,主要是一個(gè)單片機(jī),和一個(gè)8255以及一個(gè)喇叭組成。是通過(guò)8255的PA.0口發(fā)出脈沖,來(lái)產(chǎn)生不同頻率的音調(diào)。單片機(jī)則是用到一個(gè)定時(shí)器,來(lái)產(chǎn)生定時(shí)中斷。</p><p> 值得注意的是,由于電路圖中是直接用P1口來(lái)進(jìn)行鍵盤(pán)掃描的,則在實(shí)驗(yàn)箱上進(jìn)行實(shí)物連接時(shí),
16、一定要把跳線器短接,否則將使鍵盤(pán)掃描不能正常工作。</p><p> 在連線時(shí),不能使用已損壞的導(dǎo)線,并且把多余的導(dǎo)線放到一邊,一面影響正常的工作。</p><p><b> 四.模塊設(shè)計(jì)</b></p><p><b> 1.鍵盤(pán)掃描模塊</b></p><p> 通過(guò)鍵盤(pán)掃描的流程圖可以
17、清晰的知道其工作原理,可將其歸納為:</p><p> 先將P1的高四位置1,低四位置0,在讀P1口的值,若讀到的值得高四位不是全1,則代表有鍵按下或者是鍵盤(pán)抖動(dòng)。</p><p> 為消除鍵盤(pán)抖動(dòng)的影響,先采用延時(shí),延時(shí)后重復(fù)上述操作,若讀到的值得高四位不是全1,則代表確實(shí)有鍵按下。</p><p> 在有鍵按下的情況下,則可以找出是哪個(gè)鍵被按下,方法是:在
18、值為0的那一行,繼續(xù)賦零,其余行和所有列均給1,在此情況下,讀出列的值,在列中,哪一列為0,則代表該列的鍵被按下。</p><p> 用上述的方法就可以找出被按下的鍵,然后將對(duì)應(yīng)的鍵號(hào)取出,就可以在主程序中使用。</p><p><b> 2、定時(shí)器模塊</b></p><p> 定時(shí)器模塊則是簡(jiǎn)單的運(yùn)用定時(shí)器的中斷,對(duì)于定時(shí)器而言,其初
19、值不同,計(jì)數(shù)的溢出率就不同,又因?yàn)?,每次定時(shí)器產(chǎn)生的中斷將電平信號(hào)取反,就可以產(chǎn)生不同頻率的脈沖,有了脈沖就可以驅(qū)動(dòng)喇叭產(chǎn)生不同頻率的音調(diào)。</p><p> 以上就是該任務(wù)的兩個(gè)模塊,這都是簡(jiǎn)單的運(yùn)用單片機(jī)鍵盤(pán)掃描知識(shí)和定時(shí)器的運(yùn)用,其原理都是很基本的。</p><p><b> 五、調(diào)試過(guò)程</b></p><p><b>
20、 1、問(wèn)題發(fā)現(xiàn)與解決</b></p><p> 在進(jìn)行調(diào)試是,還是發(fā)現(xiàn)了一些問(wèn)題。但最終都得到解決。問(wèn)題之一就是,在等待50脈沖時(shí),由于while語(yǔ)句位置的使用不當(dāng),導(dǎo)致程序不能正常運(yùn)行。其次,就是1234567七個(gè)音調(diào)的不準(zhǔn)確,需要正確計(jì)算出定時(shí)器初值,而后在進(jìn)行調(diào)試,就可以聽(tīng)到效果較好的其中音調(diào)。</p><p><b> 設(shè)計(jì)總結(jié)</b><
21、/p><p> 在此次課程設(shè)計(jì)中,我通過(guò)實(shí)踐操作,更好的正握了書(shū)本知識(shí),尤其是鍵盤(pán)掃描模塊,其次就是定時(shí)的使用,當(dāng)然,對(duì)喇叭的發(fā)生原理也能掌握。</p><p> 另外,我還學(xué)到了如何正確,有效的調(diào)試程序。這說(shuō)明,只有掌握正確的方法,才能提高效率。</p><p> 最重要的是,我的動(dòng)手實(shí)踐能力,得到了較大的提高。所以,此次的課程使勁兒還是受益頗多的。 <
22、/p><p><b> 參考文獻(xiàn)</b></p><p> 《單片機(jī)原理及應(yīng)用實(shí)驗(yàn)指導(dǎo)書(shū)》,屈波等編,2007年</p><p> 《單片機(jī)原理及應(yīng)用》,趙德安等編,機(jī)械工業(yè)出版社,2011</p><p> 《單片機(jī)基礎(chǔ)》,李廣弟等,北京航空航天大學(xué)出版社,2004年</p><p><
23、;b> 程序清單</b></p><p> 以下是電子琴設(shè)計(jì)的程序:</p><p> #include<reg52.h> //頭文件的說(shuō)明</p><p> #include<absacc.h> //用于8255的使用</p><p> #define uint unsi
24、gned int</p><p> #define uchar unsigned char</p><p> #define COM8255 XBYTE [0X8003] //8255的控制字地址</p><p> #define PA XBYTE [0X8000] //8255端口A的地址</p><p&g
25、t; uchar flag; //在鍵盤(pán)掃描時(shí)使用</p><p> uchar key; //用于存放按鍵的對(duì)應(yīng)標(biāo)號(hào)</p><p> uchar num; //用于對(duì)50次脈沖的電平跳變進(jìn)行計(jì)數(shù),跳變100次后就達(dá)到50次脈沖</p><p> uint code table[]={ 64100,64224,64333,
26、64484,64577,64660,64734}; </p><p> //以上數(shù)組中的數(shù)分別是發(fā)出1234567七個(gè)音調(diào)的定時(shí)器的初值</p><p><b> //子程序的說(shuō)明</b></p><p> void keyscan(); //鍵盤(pán)掃描</p><p> void delay(
27、); //簡(jiǎn)單的延時(shí)程序,用于鍵盤(pán)掃描時(shí)的消抖</p><p> void shun(); //順序播放1234567</p><p> void ni(); //逆序播放7654321</p><p> //簡(jiǎn)單的延時(shí)子程序,用于鍵盤(pán)掃描時(shí)消抖</p><p> void delay()<
28、/p><p><b> {</b></p><p><b> uchar a;</b></p><p><b> a=250;</b></p><p> while(a--);</p><p><b> }</b></p
29、><p><b> //鍵盤(pán)掃描</b></p><p> /*鍵盤(pán)掃描的原理是:用P1口的高四位分別連接4*4鍵盤(pán)的行,P1口的低四位分別連接列,在進(jìn)行鍵盤(pán)掃描時(shí)先判斷是否有鍵按下,若消抖后仍有鍵按下,則找出是哪個(gè)鍵被按下*/</p><p> void keyscan()</p><p><b> {
30、</b></p><p> flag=0; //變量賦初值</p><p><b> do{</b></p><p> P1=0xf0; //檢查是否有鍵按下</p><p><b> flag=P1;</b></p><p>
31、 flag=flag&0xf0;</p><p> if(flag!=0xf0) //等待有鍵按下,若有鍵按下則向下執(zhí)行</p><p><b> {</b></p><p> delay(); //延時(shí)消抖</p><p> P1=0xf0; //重新檢測(cè)是否有鍵按下</
32、p><p><b> flag=P1;</b></p><p> flag=flag&0xf0;</p><p><b> }</b></p><p> } while(flag==0xf0); //確認(rèn)有鍵按下后,找出是1至9個(gè)鍵中哪個(gè)鍵按下</p><
33、;p> if(flag==0xb0) //檢查第三行</p><p><b> {</b></p><p> P1=0xbf; /*給第三行賦零值,檢查該行哪個(gè)鍵被按下,哪一列電平被拉低,則該列的鍵被按下*/</p><p><b> flag=P1;</b></p>
34、<p> flag=flag&0x0f;</p><p> switch(flag)</p><p><b> {</b></p><p> case 0x07:key=9;break; /*第三行中除了9號(hào)鍵外,其余鍵按下不采取操作*/</p><p> case 0x0b:k
35、ey=0;break;</p><p> case 0x0d:key=0;break;</p><p> case 0x0e:key=0;break;</p><p><b> }</b></p><p><b> }</b></p><p> if(flag==0
36、xd0) //檢查第二行</p><p><b> {</b></p><p> P1=0xdf; /*給第二行賦零值,檢查該行哪個(gè)鍵被按下,哪一列電平被拉低,則該列的鍵被按下*/</p><p><b> flag=P1;</b></p><p> flag=fl
37、ag&0x0f;</p><p> switch(flag)</p><p><b> {</b></p><p> case 0x0e:key=8;break; //根據(jù)對(duì)應(yīng)的鍵,對(duì)key賦值</p><p> case 0x0d:key=7;break;</p><
38、;p> case 0x0b:key=6;break;</p><p> case 0x07:key=5;break;</p><p><b> }</b></p><p><b> }</b></p><p> if(flag==0xe0) //檢查第一行</p&g
39、t;<p><b> {</b></p><p> P1=0xef; /*給第一行賦零值,檢查該行哪個(gè)鍵被按下,哪一列電平被拉低,則該列的鍵被按下*/</p><p><b> flag=P1;</b></p><p> flag=flag&0x0f;</p><p
40、> switch(flag)</p><p><b> {</b></p><p> case 0x0e:key=4;break; //根據(jù)對(duì)應(yīng)的鍵,對(duì)key賦值</p><p> case 0x0d:key=3;break;</p><p> case 0x0b:key=2;break;
41、</p><p> case 0x07:key=1;break;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> //順序播放1234567七個(gè)音調(diào)</p
42、><p> void shun() //順序播放</p><p><b> {</b></p><p> uchar i; //用于取數(shù)組中的對(duì)應(yīng)的數(shù)</p><p> for(i=0;i<7;i++)</p><p><b> {</b>
43、;</p><p> TH0=table[i]/256; //定時(shí)器賦初值</p><p> TL0=table[i]%256;</p><p> TR0=1; // 開(kāi)始計(jì)時(shí)</p><p> while(num<100); //等待發(fā)出50個(gè)脈沖</p><p>
44、<b> }</b></p><p> TR0=0; //若已到50次脈沖,則關(guān)定時(shí)器</p><p> PA=0x01; //喇叭停止發(fā)聲</p><p> num=0; //num清零,準(zhǔn)備下次計(jì)數(shù)</p><p><b> }</b></
45、p><p> //逆序播放7654321七個(gè)音調(diào)</p><p> void ni() //逆序播放</p><p><b> {</b></p><p> uchar i; //用于取數(shù)組中的對(duì)應(yīng)的數(shù)</p><p> for(i=0;i<7;i++)<
46、/p><p><b> {</b></p><p> i=6-i; //逆序取數(shù)組中的數(shù)</p><p> TH0=table[i]/256; //定時(shí)器賦初值</p><p> TL0=table[i]%256;</p><p> TR0=1; // 開(kāi)
47、始計(jì)時(shí)</p><p> while(num<100); //等待發(fā)出50個(gè)脈沖</p><p><b> }</b></p><p> TR0=0; //若已到50次脈沖,則關(guān)定時(shí)器</p><p> PA=0x01; //喇叭停止發(fā)聲</p><p>
48、; num=0; //num清零,準(zhǔn)備下次計(jì)數(shù)</p><p><b> }</b></p><p> //利用定時(shí)器的中斷來(lái)產(chǎn)生脈沖</p><p> void time() interrupt 1 //定時(shí)中斷</p><p><b> {</
49、b></p><p> TH0=table[key]/256; //每次定時(shí)產(chǎn)生中斷,重新賦初值,可以產(chǎn)生連續(xù)的脈沖</p><p> TL0=table[key]%256;</p><p> PA=~PA;//對(duì)喇叭端口電平取反,形成脈沖</p><p> num++; //對(duì)正
50、負(fù)電平數(shù)計(jì)數(shù),其值時(shí)脈沖數(shù)的兩倍</p><p><b> }</b></p><p><b> //主程序</b></p><p> //主程序中根據(jù)鍵盤(pán)掃描得到是哪個(gè)鍵按下,來(lái)給定時(shí)器賦相應(yīng)的初值,產(chǎn)生不同頻率的脈沖</p><p> void main()</p><
51、;p><b> {</b></p><p> key=0; //key值清零,用于鍵盤(pán)掃描</p><p> num=0; //清零,用于脈沖計(jì)數(shù)</p><p> PA=1; //初始化,使喇叭不發(fā)聲</p><p> TMOD=0x01; //用T0工作于方式
52、1,用于定時(shí)</p><p> EA=1; //開(kāi)總中斷</p><p> ET0=1; //開(kāi)T0中斷</p><p> COM8255 = 0X80; //8255初始化,僅使用PA口,用于輸出方式</p><p><b> while(1)</b></p>&
53、lt;p><b> {</b></p><p><b> do{</b></p><p> keyscan(); /*進(jìn)行鍵盤(pán)掃描,若有鍵按下,則KEY的值會(huì)改變,跳出循環(huán)*/</p><p> }while(key==0); //等待鍵按下</p><p><b>
54、; if(key<8)</b></p><p><b> {</b></p><p> key--; //key值減1后就可在數(shù)組中取到對(duì)應(yīng)的取值</p><p> TH0=table[key]/256; //定時(shí)器賦初值</p><p> TL0=table[key]%256;
55、</p><p> TR0=1;//開(kāi)定時(shí)器</p><p> while(num<100); //等待產(chǎn)生50個(gè)脈沖</p><p> TR0=0; //50次脈沖后關(guān)定時(shí)器</p><p> PA=0x01; //停止喇叭發(fā)聲</p><p> num=0; //n
56、um清零,為下次計(jì)數(shù)做好準(zhǔn)備</p><p><b> }</b></p><p> if(key==8)</p><p><b> {</b></p><p> shun(); //8鍵按下,進(jìn)行順序播放</p><p><b> }</
57、b></p><p> if(key==9)</p><p><b> {</b></p><p> ni(); //9鍵按下,進(jìn)行逆序播放</p><p><b> }</b></p><p> key=0; //key重新賦零,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)(電子琴)
- 單片機(jī)課程設(shè)計(jì)---電子琴設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-電子琴
- 單片機(jī)課程設(shè)計(jì)——電子琴
- 單片機(jī)課程設(shè)計(jì)---電子琴設(shè)計(jì)
- 電子琴課程設(shè)計(jì)--基于單片機(jī)的電子琴設(shè)計(jì)
- 電子琴課程設(shè)計(jì)--基于單片機(jī)的電子琴設(shè)計(jì)
- 電子琴課程設(shè)計(jì)-- 基于單片機(jī)的電子琴設(shè)計(jì)
- 單片機(jī)簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易電子琴
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 簡(jiǎn)易電子琴單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--電子琴
- 單片機(jī)課程設(shè)計(jì)簡(jiǎn)易電子琴
- 單片機(jī)課程設(shè)計(jì)——簡(jiǎn)易電子琴
- 單片機(jī)課程設(shè)計(jì)---簡(jiǎn)易電子琴
- 單片機(jī)課程設(shè)計(jì)--簡(jiǎn)易電子琴設(shè)計(jì)
- 電子琴單片機(jī)課程設(shè)計(jì)--電子琴模擬實(shí)驗(yàn)
- 單片機(jī)課程設(shè)計(jì)---基于單片機(jī)的電子琴設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論