電子琴的實(shí)驗(yàn)報(bào)告_第1頁
電子琴的實(shí)驗(yàn)報(bào)告_第2頁
電子琴的實(shí)驗(yàn)報(bào)告_第3頁
電子琴的實(shí)驗(yàn)報(bào)告_第4頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、單片機(jī)課程設(shè)計(jì)設(shè)計(jì)題目電子琴指導(dǎo)老師:蘇參與實(shí)驗(yàn)者:moxiaoxiao專業(yè):統(tǒng)本電信0801地點(diǎn): 3#樓北樓 605供參考電子琴一 .設(shè)計(jì)目的:( 1) .培養(yǎng)綜合運(yùn)用知識(shí)的能力( 2) .朋友查閱資料,使用工程設(shè)計(jì)標(biāo)準(zhǔn)及編寫設(shè)計(jì)文檔的能力.( 3) .掌握單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)方法 .( 4) .提高計(jì)算機(jī)繪圖能力二 .設(shè)計(jì)任務(wù):利用 DP51PROC 實(shí)驗(yàn)系統(tǒng)上的定時(shí)器 /計(jì)數(shù)器,按鍵和蜂鳴器單元。用單片機(jī) I/O 口線控制蜂鳴器發(fā)出不同的音調(diào),程序檢測(cè)按鍵狀態(tài), 7 個(gè)按鍵中某一鍵按下時(shí),蜂鳴器對(duì)應(yīng)標(biāo)稱音階 .三 .設(shè)計(jì)與調(diào)試環(huán)境KEIL uVision2是眾多單片機(jī)應(yīng)用開發(fā)軟件中優(yōu)秀

2、的軟件之一,它支持眾多不同公司的MCS51 架構(gòu)的芯片,它集編輯,編譯,仿真等于一體,同時(shí)還支持,PLM,匯編和C 語言的程序設(shè)計(jì),它的界面和常用的微軟 VC+ 的界面相似,界面友好,易學(xué)易用,在調(diào)試程序,軟件仿真方面也有很強(qiáng)大的功能。1:按下面的步驟建立一個(gè)項(xiàng)目:圖 14 選取芯片圖 1 5 新建程序文件(1)點(diǎn)擊 圖 1 5中的 3 保存新建的程序, 也可以用菜單File Save 或快捷鍵 Ctrl+S進(jìn)行保存。因是新文件所以保存時(shí)會(huì)彈出類似圖1 3 的文件操作窗口,我們把第一個(gè)程序命名為 test1.c,保存在項(xiàng)目所在的目錄中,這時(shí)程序單詞有了不同的顏色,說明 KEIL 的 C語法檢查

3、生效了。如圖 1 6 鼠標(biāo)在屏幕左邊的Source Group1 文件夾圖標(biāo)上右擊彈出菜單,在這里可以做項(xiàng)目中增加減少文件等操作。我們選 “ Add File to GroupSourceGroup”1 彈出文件窗口,選擇剛剛保存的文件,按ADD按鈕,關(guān)閉文件窗,程序文件已加到項(xiàng)目中了。這時(shí)在 Source Group1 文件夾圖標(biāo)左邊出現(xiàn)了一個(gè)小+號(hào)說明,文件組中有了文件,點(diǎn)擊它可以展開查看。供參考圖 1 6 把文件加入到項(xiàng)目文件組中編譯程序(2) 進(jìn)入調(diào)試模式, 軟件窗口樣式大致如圖 18 所示。圖中1 為運(yùn)行, 當(dāng)程序處于停止?fàn)顟B(tài)時(shí)才有效, 2 為停止,程序處于運(yùn)行狀態(tài)時(shí)才有效。3 是復(fù)

4、位,模擬芯片的復(fù)位,程序回到最開頭處執(zhí)行。按4 我們可以打開5 中的串行調(diào)試窗口,這個(gè)窗口我們可以看到從51芯片的串行口輸入輸出的字符,這項(xiàng)目也正是在這里看運(yùn)行結(jié)果。2.輸入輸出引腳(1) P0 端口 P0.0-P0.7 P0 是一個(gè)8 位漏極開路型雙向I/O端口,端口置 1(對(duì)端口寫1)時(shí)作高阻抗輸入端。 作為輸出口時(shí)能驅(qū)動(dòng)8 個(gè) TTL 。對(duì)內(nèi)部Flash 程序存儲(chǔ)器編程時(shí),接收指令字節(jié); 校驗(yàn)程序時(shí)輸出指令字節(jié),要求外接上拉電阻。 在訪問外部程序和外部數(shù)據(jù)存儲(chǔ)器時(shí), P0 口是分時(shí)轉(zhuǎn)換的地址(低 8位)/ 數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。(2) P1 端口 P1.0 P1.7 P

5、1是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向 I/0 端口。輸出時(shí)可驅(qū)動(dòng)4 個(gè) TTL 。端口置 1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接收低8位地址信息。(3) P2 端口 P2.0 P2.7 P2是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向 I/0 端口。輸出時(shí)可驅(qū)動(dòng)4 個(gè) TTL 。端口置 1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí), 接收高8 位地址和控制信息。 在訪問外部程序和16 位外部數(shù)據(jù)存儲(chǔ)器時(shí),P2 口送出高 8 位地址。而在訪問8 位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí)其引腳上的內(nèi)容在此期間不會(huì)改變。(4) P3 端口 P3.0

6、 P3.7 P2是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向 I/0 端口。輸出時(shí)可驅(qū)動(dòng)4 個(gè) TTL 。端口置 1時(shí),內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對(duì)內(nèi)部Flash程序存儲(chǔ)器編程時(shí),接控制信息。除此之外P3 端口還用于一些專門功能,具體請(qǐng)看表22.。P1 3 端口在做輸入使用時(shí),因內(nèi)部有上接電阻,被外部拉低的引腳會(huì)輸出一定的電流。P3引腳兼用功能P3.0串行通訊輸入( RXD )供參考P3.1串行通訊輸出( TXD )P3.2外部中斷0(P3.3外部中斷1( INT1 )P3.4定時(shí)器 0P3.5定時(shí)器 1P3.6外部數(shù)據(jù)存儲(chǔ)器寫選通WRP3.7外部數(shù)據(jù)存儲(chǔ)器寫選通RD生成 HEX 文件和最

7、小化系統(tǒng)3:如何用 KEIL uVision2來編譯生成用于燒寫芯片的HEX 文件。HEX文件格式是Intel 公司提出的按地址排列的數(shù)據(jù)信息,數(shù)據(jù)寬度為字節(jié) ,所有數(shù)據(jù)使用 16 進(jìn)制數(shù)字表示, 常用來保存單片機(jī)或其他處理器的目標(biāo)程序代碼。它保存物理程序存儲(chǔ)區(qū)中的目標(biāo)代碼映象。一般的編程器都支持這種格式。打開第一課做的項(xiàng)目,打開它的所在目錄,找到test.Uv2 的文件就可以打開先前的項(xiàng)目了。然后右擊圖31中的 1項(xiàng)目文件夾,彈出項(xiàng)目功能菜單,選Optionsfor Target Target1彈出,項(xiàng)目選項(xiàng)設(shè)置窗口,同樣先選中項(xiàng)目文件夾圖標(biāo),這時(shí)在Project菜單中也有一樣的菜單可選。打

8、開項(xiàng)目選項(xiàng)窗口,轉(zhuǎn)到Output 選項(xiàng)頁 圖32 所示,圖中 1 是選擇編譯輸出的路徑,2 是設(shè)置編譯輸出生成的文件名,3 則是決定是否要?jiǎng)?chuàng)建 HEX 文件,選中它就可以輸出HEX文件到指定的路徑中。將它重新編譯一次,很快在編譯信息窗口中就顯示HEX 文件創(chuàng)建到指定的路徑中了,如 圖 3 3。這樣就可用編程器所附帶的軟件去讀取并燒到芯片了。(技巧:一、在 圖 3 1 中的1 里的項(xiàng)目文件樹形目錄中,先選中對(duì)象,再單擊它就可對(duì)它進(jìn)行重命名操作,雙擊文件圖標(biāo)便可打開文件。二、在Project 下拉菜單的最下方有最近編輯過的項(xiàng)目路徑保存,可以快速打開最近在編輯的項(xiàng)目。)圖 3 1 項(xiàng)目功能菜單供參考

9、圖 3 2 項(xiàng)目選項(xiàng)窗口四 .工作原理:要求設(shè)計(jì)的電子琴共有七個(gè)按鍵對(duì)應(yīng)著七個(gè)音階,也就是按下不同的按鍵時(shí),蜂鳴器會(huì)發(fā)出不同平率的聲音。而這些聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機(jī)某個(gè)口線不斷的輸出“高 ”“低”電平,則在該口線上就能產(chǎn)生一定頻率的方波,將該方波接上喇叭就能發(fā)出一定頻率的聲音,若再利用程序控制“高 ”“低 ”電平的持續(xù)時(shí)間,就能改變輸出波形的頻率,從而改變音調(diào)。我們用MC51 單片機(jī)實(shí)現(xiàn)這一功能。不同音階所對(duì)應(yīng)的頻率如下圖所示:音名1234567頻率( Hz)523.3587.3659.3698.3784880987.8樂曲中,每一音符對(duì)應(yīng)著確定的頻率,表1

10、 給出 C 調(diào)時(shí)各音符頻率。如果單片機(jī)某個(gè)口線輸出 “高 ”“低 ”電平的頻率和某個(gè)音符的頻率一樣, 那么將此口線接上喇叭就可以發(fā)出此音符的聲音。供參考本系統(tǒng)就是根據(jù)此原理設(shè)計(jì),對(duì)于 51 單片機(jī)來說要產(chǎn)生一定頻率的方波大致是先將某口線輸出高電平然后延時(shí)一段時(shí)間再輸出低電平,如此循環(huán)的輸出就會(huì)產(chǎn)生一定頻率的方波,通過改變延時(shí)的時(shí)間就可以改變輸出方波的頻率本系統(tǒng)的具體電路如右圖所示。圖中P1 1-P1 7 分別接 7 個(gè)按鍵對(duì)應(yīng)著樂曲中的1、2、 3、 4、5、 6、7 七個(gè)音符。 P36 口通過功率放大芯片LM386 與喇叭相連。當(dāng)P11P1.7 中有一個(gè)按鍵按下時(shí)單片機(jī)便執(zhí)行相應(yīng)的子程序?qū)Χ?/p>

11、時(shí)器賦一個(gè)計(jì)數(shù)初值同時(shí)使P36口輸出高電平。當(dāng)定時(shí)器定時(shí)結(jié)束時(shí)將P3 6 口的值取反并重新賦計(jì)數(shù)初值繼續(xù)計(jì)數(shù),再次計(jì)完時(shí)再將P3 6 口的值取反再賦初值計(jì)數(shù),如此循環(huán)便在P36 口產(chǎn)生一定頻率的方波, LM386 將此方波經(jīng)過功率放大后通過喇叭輸出便產(chǎn)生對(duì)應(yīng)音符的聲音。按不同的按鍵單片機(jī)便執(zhí)行不同的子程序給定時(shí)器賦不同的初值得到不同頻率的方波從而輸出不同的聲音,因此按一個(gè)按鍵輸出一種音符。在單片機(jī)的特殊功能寄存器中有6 個(gè)寄存器 (TH1 、 TH0 、 TL1 、 TL0 、TMOD 、 TCON)是用來控制單片機(jī)的定時(shí)器的, 通過編程對(duì)這些特殊功能寄存器的讀寫就可以控制單片機(jī)的兩個(gè)定時(shí)器

12、T0 、 T1。當(dāng)單片機(jī)復(fù)位時(shí)這 6 個(gè)寄存器默認(rèn)值都是 00H 。五.設(shè)計(jì)思想( 1)系統(tǒng)的總框圖( 2)系統(tǒng)電路圖供參考( 3)軟件設(shè)計(jì)思路由于每個(gè)音階對(duì)應(yīng)著不同的頻率,當(dāng)然對(duì)單片機(jī)來說產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)、計(jì)數(shù)器T0 來產(chǎn)生這樣的方波頻率信號(hào),因此我們只要把1-7 的七個(gè)音階對(duì)應(yīng)的頻率關(guān)系弄正確即可。本次設(shè)計(jì)中單片機(jī)晶振為12MHz ,那么定時(shí)器的計(jì)數(shù)周期為1MHz ,假如選擇工作方式為1,那 T 值便為 T=216-5*105/ 相應(yīng)的頻率, 那么根據(jù)不同的頻率計(jì)算出應(yīng)該賦給定時(shí)器的計(jì)數(shù)值,列出不同音符與單片機(jī)計(jì)數(shù)T0 相關(guān)的計(jì)數(shù)值如下表所示:采用查表程序查

13、表時(shí), 可以為這個(gè)音符建立一個(gè)表格, 有助于單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù)。供參考工作方式 1工作方式1 是 16 位的定時(shí)計(jì)數(shù)方式,將M1M0 設(shè)為 01。對(duì)于定時(shí)器的工作模式可以根據(jù)定時(shí)器的寄存器TMOD 來設(shè)置:M1M0 :定時(shí)計(jì)數(shù)器共有四種工作方式,就是用M1M0 來控制的, 2 位正好是四種組合。C T:定時(shí)計(jì)數(shù)器即可作定時(shí)用也可用計(jì)數(shù)用,如果C/T 為 O 就是用作定時(shí)器( 開關(guān)往上打 ),如果 C T 為 1 就是用作計(jì)數(shù)器 ( 開關(guān)往下打 )。一個(gè)定時(shí)計(jì)數(shù)器同一時(shí)刻要么作定時(shí)用,要么作計(jì)數(shù)用,不能同時(shí)用的。GATE :當(dāng)我們選擇了定時(shí)或計(jì)數(shù)工作方式后,定時(shí)計(jì)數(shù)脈沖卻不一定

14、能到達(dá)計(jì)數(shù)器端, 中間還有一個(gè)開關(guān), 顯然這個(gè)開關(guān)不合上,計(jì)數(shù)脈沖就沒法過去,那么開關(guān)什么時(shí)候過去呢 ? 有兩種情況GATE=0 ,分析一下邏輯, GATE 非后是 1,進(jìn)入或門,或門總是輸出 1,和或門的另一個(gè)輸入端 INT1 無關(guān), 在這種情況下, 開關(guān)的打開、 合上只取決于 TR1 ,只要 TR1 是 1,開關(guān)就合上,計(jì)數(shù)脈沖得以暢通無阻,而如果TR1 等于 0 則開關(guān)打開,計(jì)數(shù)脈沖無法通過,因此定時(shí)計(jì)數(shù)是否工作,只取決于TR1 。GATE=1 ,在此種情況下, 計(jì)數(shù)脈沖通路上的開關(guān)不僅要由TR1 來控制, 而且還要受到 INT1 引腳的控制,只有TRl 為 1,且 INT1 引腳也是高

15、電平,開關(guān)才合上,計(jì)數(shù)脈沖才得以通過。這個(gè)特性可以用來測(cè)量一個(gè)信號(hào)的高電平的寬度。 程序流程圖第一步是對(duì)定時(shí)器T0 進(jìn)行初始化,設(shè)定它的工作狀態(tài)(對(duì)于本系統(tǒng)將T0 設(shè)定為工作方式 O);然后判斷是否有鍵按下,如果沒有按鍵按下,繼續(xù)判斷,如果有按鍵按下,則判斷是哪個(gè)鍵按下;再根據(jù)按鍵的功能將計(jì)數(shù)初值裝入定時(shí)器T0 中中并啟動(dòng)T0,當(dāng) T0 定時(shí)完畢后,重新裝入計(jì)數(shù)初值繼續(xù)定時(shí)并將P3 6 取反,再次定時(shí)完畢后再一次的裝入計(jì)數(shù)初值繼續(xù)定時(shí)并將P3 6 取反,一直循環(huán)此操作直到按鍵釋放為止,按鍵釋放后停止T0 工作并再次判斷是否又有按鍵按下,并繼續(xù)執(zhí)行以前的過程。供參考 程序BUZZ EQU P3.

16、3 ;定義端口ORG 1000HLJMP MAINORG 000BHLJMP INT_T0ORG 1100HMAIN:供參考MOV SP,#60H ;初始化堆棧指針MOV P1,#0FFH ;設(shè)置 P1 口為輸入模式MOV TMOD,#01H ;設(shè)置定時(shí)器0 為工作模式1SETB ET0 ;開定時(shí)器0 中斷SETB EA ;開總中斷CLR TR0 ;關(guān)閉定時(shí)器 0START:MOV R0,P1CJNE R0,#0FFH,KEY1;鍵盤掃描CLR TR0SJMP STARTKEY1:CJNE R0,#0FEH,KEY2 ;K1 鍵按下MOV 30H,#0FBH ;設(shè)置音階 1MOV 31H,#0

17、E9HLJMP SET_TIMERKEY2:CJNE R0,#0FDH,KEY3;K2 鍵按下MOV 30H,#0FCH ;設(shè)置音階 2MOV 31H,#5CHLJMP SET_TIMERKEY3:CJNE R0,#0FBH,KEY4;K3 鍵按下MOV 30H,#0FCH ;設(shè)置音階 3供參考MOV 31H,#0C1HLJMP SET_TIMERKEY4:CJNE R0,#0F7H,KEY5 ;K4 鍵按下MOV 30H,#0FCH ;設(shè)置音階 4MOV 31H,#0EFHLJMP SET_TIMERKEY5:CJNE R0,#0EFH,KEY6 ;K5 鍵按下MOV 30H,#0FDH ;設(shè)置音階 5MOV 31H,#045HLJMP SET_TIMERKEY6:CJNE R0,#0DFH,KEY7;K6 鍵按下MOV 30H,#0FDH ;設(shè)置音階 6MOV 31H,#92HLJMP SET_TIMERKEY7:CJNE R0,#0BFH,NOKEY;K7 鍵按下MOV 30H,#0FDH ;設(shè)置音階 7MOV 31H,#0D6HSET_TIMER:S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論