



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機課程設(shè)計設(shè)計題目電子琴指導(dǎo)老師:蘇參與實驗者:moxiaoxiao專業(yè):統(tǒng)本電信0801地點: 3#樓北樓 605供參考電子琴一 .設(shè)計目的:( 1) .培養(yǎng)綜合運用知識的能力( 2) .朋友查閱資料,使用工程設(shè)計標(biāo)準(zhǔn)及編寫設(shè)計文檔的能力.( 3) .掌握單片機應(yīng)用系統(tǒng)的設(shè)計方法 .( 4) .提高計算機繪圖能力二 .設(shè)計任務(wù):利用 DP51PROC 實驗系統(tǒng)上的定時器 /計數(shù)器,按鍵和蜂鳴器單元。用單片機 I/O 口線控制蜂鳴器發(fā)出不同的音調(diào),程序檢測按鍵狀態(tài), 7 個按鍵中某一鍵按下時,蜂鳴器對應(yīng)標(biāo)稱音階 .三 .設(shè)計與調(diào)試環(huán)境KEIL uVision2是眾多單片機應(yīng)用開發(fā)軟件中優(yōu)秀
2、的軟件之一,它支持眾多不同公司的MCS51 架構(gòu)的芯片,它集編輯,編譯,仿真等于一體,同時還支持,PLM,匯編和C 語言的程序設(shè)計,它的界面和常用的微軟 VC+ 的界面相似,界面友好,易學(xué)易用,在調(diào)試程序,軟件仿真方面也有很強大的功能。1:按下面的步驟建立一個項目:圖 14 選取芯片圖 1 5 新建程序文件(1)點擊 圖 1 5中的 3 保存新建的程序, 也可以用菜單File Save 或快捷鍵 Ctrl+S進(jìn)行保存。因是新文件所以保存時會彈出類似圖1 3 的文件操作窗口,我們把第一個程序命名為 test1.c,保存在項目所在的目錄中,這時程序單詞有了不同的顏色,說明 KEIL 的 C語法檢查
3、生效了。如圖 1 6 鼠標(biāo)在屏幕左邊的Source Group1 文件夾圖標(biāo)上右擊彈出菜單,在這里可以做項目中增加減少文件等操作。我們選 “ Add File to GroupSourceGroup”1 彈出文件窗口,選擇剛剛保存的文件,按ADD按鈕,關(guān)閉文件窗,程序文件已加到項目中了。這時在 Source Group1 文件夾圖標(biāo)左邊出現(xiàn)了一個小+號說明,文件組中有了文件,點擊它可以展開查看。供參考圖 1 6 把文件加入到項目文件組中編譯程序(2) 進(jìn)入調(diào)試模式, 軟件窗口樣式大致如圖 18 所示。圖中1 為運行, 當(dāng)程序處于停止?fàn)顟B(tài)時才有效, 2 為停止,程序處于運行狀態(tài)時才有效。3 是復(fù)
4、位,模擬芯片的復(fù)位,程序回到最開頭處執(zhí)行。按4 我們可以打開5 中的串行調(diào)試窗口,這個窗口我們可以看到從51芯片的串行口輸入輸出的字符,這項目也正是在這里看運行結(jié)果。2.輸入輸出引腳(1) P0 端口 P0.0-P0.7 P0 是一個8 位漏極開路型雙向I/O端口,端口置 1(對端口寫1)時作高阻抗輸入端。 作為輸出口時能驅(qū)動8 個 TTL 。對內(nèi)部Flash 程序存儲器編程時,接收指令字節(jié); 校驗程序時輸出指令字節(jié),要求外接上拉電阻。 在訪問外部程序和外部數(shù)據(jù)存儲器時, P0 口是分時轉(zhuǎn)換的地址(低 8位)/ 數(shù)據(jù)總線,訪問期間內(nèi)部的上拉電阻起作用。(2) P1 端口 P1.0 P1.7 P
5、1是一個帶有內(nèi)部上拉電阻的8 位雙向 I/0 端口。輸出時可驅(qū)動4 個 TTL 。端口置 1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接收低8位地址信息。(3) P2 端口 P2.0 P2.7 P2是一個帶有內(nèi)部上拉電阻的8 位雙向 I/0 端口。輸出時可驅(qū)動4 個 TTL 。端口置 1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時, 接收高8 位地址和控制信息。 在訪問外部程序和16 位外部數(shù)據(jù)存儲器時,P2 口送出高 8 位地址。而在訪問8 位地址的外部數(shù)據(jù)存儲器時其引腳上的內(nèi)容在此期間不會改變。(4) P3 端口 P3.0
6、 P3.7 P2是一個帶有內(nèi)部上拉電阻的8 位雙向 I/0 端口。輸出時可驅(qū)動4 個 TTL 。端口置 1時,內(nèi)部上拉電阻將端口拉到高電平,作輸入用。對內(nèi)部Flash程序存儲器編程時,接控制信息。除此之外P3 端口還用于一些專門功能,具體請看表22.。P1 3 端口在做輸入使用時,因內(nèi)部有上接電阻,被外部拉低的引腳會輸出一定的電流。P3引腳兼用功能P3.0串行通訊輸入( RXD )供參考P3.1串行通訊輸出( TXD )P3.2外部中斷0(P3.3外部中斷1( INT1 )P3.4定時器 0P3.5定時器 1P3.6外部數(shù)據(jù)存儲器寫選通WRP3.7外部數(shù)據(jù)存儲器寫選通RD生成 HEX 文件和最
7、小化系統(tǒng)3:如何用 KEIL uVision2來編譯生成用于燒寫芯片的HEX 文件。HEX文件格式是Intel 公司提出的按地址排列的數(shù)據(jù)信息,數(shù)據(jù)寬度為字節(jié) ,所有數(shù)據(jù)使用 16 進(jìn)制數(shù)字表示, 常用來保存單片機或其他處理器的目標(biāo)程序代碼。它保存物理程序存儲區(qū)中的目標(biāo)代碼映象。一般的編程器都支持這種格式。打開第一課做的項目,打開它的所在目錄,找到test.Uv2 的文件就可以打開先前的項目了。然后右擊圖31中的 1項目文件夾,彈出項目功能菜單,選Optionsfor Target Target1彈出,項目選項設(shè)置窗口,同樣先選中項目文件夾圖標(biāo),這時在Project菜單中也有一樣的菜單可選。打
8、開項目選項窗口,轉(zhuǎn)到Output 選項頁 圖32 所示,圖中 1 是選擇編譯輸出的路徑,2 是設(shè)置編譯輸出生成的文件名,3 則是決定是否要創(chuàng)建 HEX 文件,選中它就可以輸出HEX文件到指定的路徑中。將它重新編譯一次,很快在編譯信息窗口中就顯示HEX 文件創(chuàng)建到指定的路徑中了,如 圖 3 3。這樣就可用編程器所附帶的軟件去讀取并燒到芯片了。(技巧:一、在 圖 3 1 中的1 里的項目文件樹形目錄中,先選中對象,再單擊它就可對它進(jìn)行重命名操作,雙擊文件圖標(biāo)便可打開文件。二、在Project 下拉菜單的最下方有最近編輯過的項目路徑保存,可以快速打開最近在編輯的項目。)圖 3 1 項目功能菜單供參考
9、圖 3 2 項目選項窗口四 .工作原理:要求設(shè)計的電子琴共有七個按鍵對應(yīng)著七個音階,也就是按下不同的按鍵時,蜂鳴器會發(fā)出不同平率的聲音。而這些聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線不斷的輸出“高 ”“低”電平,則在該口線上就能產(chǎn)生一定頻率的方波,將該方波接上喇叭就能發(fā)出一定頻率的聲音,若再利用程序控制“高 ”“低 ”電平的持續(xù)時間,就能改變輸出波形的頻率,從而改變音調(diào)。我們用MC51 單片機實現(xiàn)這一功能。不同音階所對應(yīng)的頻率如下圖所示:音名1234567頻率( Hz)523.3587.3659.3698.3784880987.8樂曲中,每一音符對應(yīng)著確定的頻率,表1
10、 給出 C 調(diào)時各音符頻率。如果單片機某個口線輸出 “高 ”“低 ”電平的頻率和某個音符的頻率一樣, 那么將此口線接上喇叭就可以發(fā)出此音符的聲音。供參考本系統(tǒng)就是根據(jù)此原理設(shè)計,對于 51 單片機來說要產(chǎn)生一定頻率的方波大致是先將某口線輸出高電平然后延時一段時間再輸出低電平,如此循環(huán)的輸出就會產(chǎn)生一定頻率的方波,通過改變延時的時間就可以改變輸出方波的頻率本系統(tǒng)的具體電路如右圖所示。圖中P1 1-P1 7 分別接 7 個按鍵對應(yīng)著樂曲中的1、2、 3、 4、5、 6、7 七個音符。 P36 口通過功率放大芯片LM386 與喇叭相連。當(dāng)P11P1.7 中有一個按鍵按下時單片機便執(zhí)行相應(yīng)的子程序?qū)Χ?/p>
11、時器賦一個計數(shù)初值同時使P36口輸出高電平。當(dāng)定時器定時結(jié)束時將P3 6 口的值取反并重新賦計數(shù)初值繼續(xù)計數(shù),再次計完時再將P3 6 口的值取反再賦初值計數(shù),如此循環(huán)便在P36 口產(chǎn)生一定頻率的方波, LM386 將此方波經(jīng)過功率放大后通過喇叭輸出便產(chǎn)生對應(yīng)音符的聲音。按不同的按鍵單片機便執(zhí)行不同的子程序給定時器賦不同的初值得到不同頻率的方波從而輸出不同的聲音,因此按一個按鍵輸出一種音符。在單片機的特殊功能寄存器中有6 個寄存器 (TH1 、 TH0 、 TL1 、 TL0 、TMOD 、 TCON)是用來控制單片機的定時器的, 通過編程對這些特殊功能寄存器的讀寫就可以控制單片機的兩個定時器
12、T0 、 T1。當(dāng)單片機復(fù)位時這 6 個寄存器默認(rèn)值都是 00H 。五.設(shè)計思想( 1)系統(tǒng)的總框圖( 2)系統(tǒng)電路圖供參考( 3)軟件設(shè)計思路由于每個音階對應(yīng)著不同的頻率,當(dāng)然對單片機來說產(chǎn)生不同的頻率非常方便,我們可以利用單片機的定時、計數(shù)器T0 來產(chǎn)生這樣的方波頻率信號,因此我們只要把1-7 的七個音階對應(yīng)的頻率關(guān)系弄正確即可。本次設(shè)計中單片機晶振為12MHz ,那么定時器的計數(shù)周期為1MHz ,假如選擇工作方式為1,那 T 值便為 T=216-5*105/ 相應(yīng)的頻率, 那么根據(jù)不同的頻率計算出應(yīng)該賦給定時器的計數(shù)值,列出不同音符與單片機計數(shù)T0 相關(guān)的計數(shù)值如下表所示:采用查表程序查
13、表時, 可以為這個音符建立一個表格, 有助于單片機通過查表的方式來獲得相應(yīng)的數(shù)據(jù)。供參考工作方式 1工作方式1 是 16 位的定時計數(shù)方式,將M1M0 設(shè)為 01。對于定時器的工作模式可以根據(jù)定時器的寄存器TMOD 來設(shè)置:M1M0 :定時計數(shù)器共有四種工作方式,就是用M1M0 來控制的, 2 位正好是四種組合。C T:定時計數(shù)器即可作定時用也可用計數(shù)用,如果C/T 為 O 就是用作定時器( 開關(guān)往上打 ),如果 C T 為 1 就是用作計數(shù)器 ( 開關(guān)往下打 )。一個定時計數(shù)器同一時刻要么作定時用,要么作計數(shù)用,不能同時用的。GATE :當(dāng)我們選擇了定時或計數(shù)工作方式后,定時計數(shù)脈沖卻不一定
14、能到達(dá)計數(shù)器端, 中間還有一個開關(guān), 顯然這個開關(guān)不合上,計數(shù)脈沖就沒法過去,那么開關(guān)什么時候過去呢 ? 有兩種情況GATE=0 ,分析一下邏輯, GATE 非后是 1,進(jìn)入或門,或門總是輸出 1,和或門的另一個輸入端 INT1 無關(guān), 在這種情況下, 開關(guān)的打開、 合上只取決于 TR1 ,只要 TR1 是 1,開關(guān)就合上,計數(shù)脈沖得以暢通無阻,而如果TR1 等于 0 則開關(guān)打開,計數(shù)脈沖無法通過,因此定時計數(shù)是否工作,只取決于TR1 。GATE=1 ,在此種情況下, 計數(shù)脈沖通路上的開關(guān)不僅要由TR1 來控制, 而且還要受到 INT1 引腳的控制,只有TRl 為 1,且 INT1 引腳也是高
15、電平,開關(guān)才合上,計數(shù)脈沖才得以通過。這個特性可以用來測量一個信號的高電平的寬度。 程序流程圖第一步是對定時器T0 進(jìn)行初始化,設(shè)定它的工作狀態(tài)(對于本系統(tǒng)將T0 設(shè)定為工作方式 O);然后判斷是否有鍵按下,如果沒有按鍵按下,繼續(xù)判斷,如果有按鍵按下,則判斷是哪個鍵按下;再根據(jù)按鍵的功能將計數(shù)初值裝入定時器T0 中中并啟動T0,當(dāng) T0 定時完畢后,重新裝入計數(shù)初值繼續(xù)定時并將P3 6 取反,再次定時完畢后再一次的裝入計數(shù)初值繼續(xù)定時并將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è)置定時器0 為工作模式1SETB ET0 ;開定時器0 中斷SETB EA ;開總中斷CLR TR0 ;關(guān)閉定時器 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等.壓縮文件請下載最新的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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海嘉定區(qū)安亭高級中學(xué)2025屆物理高一下期末達(dá)標(biāo)檢測試題含解析
- 安徽滁州市定遠(yuǎn)縣西片三校2025屆物理高二第二學(xué)期期末綜合測試模擬試題含解析
- 消防檢查情況怎么說明
- 銷售部部長安全生產(chǎn)職責(zé)
- 河北深州市長江中學(xué)2025屆物理高一下期末綜合測試試題含解析
- 貴州省安順市第二學(xué)期2025屆物理高二第二學(xué)期期末聯(lián)考模擬試題含解析
- 2025年寧夏長慶中學(xué)物理高二第二學(xué)期期末教學(xué)質(zhì)量檢測模擬試題含解析
- 2025屆山西省汾陽市汾陽中學(xué)高二物理第二學(xué)期期末教學(xué)質(zhì)量檢測模擬試題含解析
- 2025屆江蘇省東臺市物理高一第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 2025屆福建省南安市柳城中學(xué)物理高二第二學(xué)期期末達(dá)標(biāo)檢測試題含解析
- 機加工工藝培訓(xùn)
- CT增強掃描造影劑外滲的預(yù)防與處理
- 深靜脈置管的維護(hù)與護(hù)理
- 孤獨癥業(yè)務(wù)管理制度
- 勞務(wù)服務(wù)購買協(xié)議書范本
- 校準(zhǔn)員試題及答案
- 出香港貨物發(fā)票樣板樣本空白
- 醫(yī)院免疫室標(biāo)準(zhǔn)化操作程序免疫室內(nèi)質(zhì)量控制操作指南(ELISA)人民醫(yī)院檢驗科免疫SOP人民醫(yī)院質(zhì)量管理體系課件
- 柳州市柳東新區(qū)南慶安置區(qū)項目工程基坑支護(hù)方案
- 卵巢腫瘤ppt課件
- 發(fā)電可靠性考試真題及答案
評論
0/150
提交評論