51單片機串口通信及電子音響_第1頁
51單片機串口通信及電子音響_第2頁
51單片機串口通信及電子音響_第3頁
51單片機串口通信及電子音響_第4頁
51單片機串口通信及電子音響_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、項目一: 電子音響1.1實訓(xùn)目的了解計算機發(fā)出不同音調(diào)聲音的編程方法。1.2實訓(xùn)內(nèi)容編寫單片機程序組成樂譜,用I/O接口 P1.7口輸出,經(jīng)過功率放大控制喇叭演奏一首完整的歌曲。(歌曲自選)1.3編程提示 利用單片機內(nèi)部的定時器可以產(chǎn)生不同周期(頻率)的脈沖信號,輸出的信號再經(jīng)過功率放大電路可以驅(qū)動喇叭等電聲設(shè)備發(fā)出聲音。(1)要產(chǎn)生音頻信號,只要知道某一音頻的周期(1/頻率),然后將此周期除以2即為半周期的時間,利用定時器定時產(chǎn)生半周期時間,計時到后反相輸出,重復(fù)此過程即得到此頻率的脈沖信號。(2)讓定時器工作在定時方式,改變定時時間常數(shù)TH0及TL0,以產(chǎn)生不同的頻率。(3)把整首歌曲的樂

2、譜信息存儲在單片機數(shù)據(jù)存儲區(qū)中一段連續(xù)的區(qū)域。每個音符使用一個字節(jié),字節(jié)的高四位代表音符的高低,低四為代表音符的節(jié)拍。演奏時連續(xù)讀取音符數(shù)據(jù),在程序中分析處理后輸出相應(yīng)的脈沖信號。1.4實訓(xùn)電路386J2P1.780329VIN10SPEAKER386421+圖1-11.5實訓(xùn)步驟 實驗連線:把P1.7用導(dǎo)線連至VIN插孔上,打開音頻驅(qū)動單元的按鈕開關(guān)。編寫并運行程序,驗證歌曲演奏效果。附件:音樂播放器軟件設(shè)計相關(guān)知識音樂相關(guān)知識在設(shè)計之前,我們還需要了解一些音樂的相關(guān)知識。在人類還沒有產(chǎn)生語言時,就知道利用聲音的高低、強弱等來表達(dá)自己的思想和感情。聲帶、琴弦等物體振動時會發(fā)出聲波,聲波通過空

3、氣傳播進(jìn)入人耳,人們就聽到了聲音。聲音有噪音和樂音之分,振動有規(guī)律的聲音是樂音,如人聲帶發(fā)出的歌聲、由琴弦發(fā)出的琴音等。音樂中所用的聲音主要是樂音。樂音聽起來有的高,有的低,這就叫音高。音高是由發(fā)音物體振動頻率的高低決定的,頻率高聲音就高,頻率低聲音就低。比如,女人唱歌時聲帶振動頻率高,男人唱歌時聲帶振動頻率低,所以男聲比女聲低。音樂中所用樂音的范圍從每秒鐘振動16次的最低音到每秒鐘振動4186次的最高音,大約97個。現(xiàn)在最大的鋼琴可以奏出其中的88個音,是音樂范圍最大的樂器。人唱歌時因受生理限制,所能唱出的樂音僅是樂音范圍中的一小部分。不同音高的樂音是用C、D、E、F、G、A、B來表示的,這

4、7個字母就是樂音的音名,它們一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成簡譜的1、2、3、4、5、6、7,相當(dāng)于漢字“多來米發(fā)梭拉西”的讀音,這是唱曲時樂音的發(fā)音,所以叫唱名。把C、D、E、F、G、A、B這一組音的距離分成12個等份,每一個等份叫一個“半音”。兩個音之間的距離有兩個“半音”的,就叫“全音”。在鋼琴等鍵盤樂器上,C-D、D-E、F-G、G-A、A-B兩音之間隔著一個黑鍵,它們之間的距離就是全音;E-F、B-C兩音之間沒有黑鍵相隔,它們之間的距離就是半音。通俗地說,那些唱成1、2、3、4、5、6、7的音叫自然音,那些在它們的左上角加上#號(如#4、#1)或者b號(如

5、b7、b3)的叫變化音。#叫升記號,表示把音在原來的基礎(chǔ)上升高半音;b叫降記號,表示把音在原來的基礎(chǔ)上降低半音。音持續(xù)時間的長短即時值,一般用拍數(shù)表示。休止符表示暫停發(fā)音。一首音樂是由許多不同的音符組成的,而每個音符對應(yīng)著不同的頻率,這樣就可以利用不同的頻率的組合,加以與拍數(shù)對應(yīng)的延時,構(gòu)成音樂。在設(shè)計中我將音樂的簡譜編成音符表和節(jié)拍表。所謂簡譜,是指一種簡易的記譜法。有字母簡譜和數(shù)字簡譜兩種。一般所稱的科譜,系指數(shù)字簡譜。數(shù)字簡譜以可動唱名法為基礎(chǔ),用1、2、3、4、5、6、7代表音階中的7個基本音級,讀音為do、re、mi、fa、sol、la、si,休止以O(shè)表示。每一個數(shù)字的時值名相當(dāng)于五

6、線譜的4分音符了解音樂的一些基本知識后可知,產(chǎn)生不同頻率的音頻脈沖,不同頻率的脈沖經(jīng)濾波放大電路驅(qū)動喇叭,就會發(fā)出不同的音調(diào)。對于單片機而言,產(chǎn)生不同頻率的脈沖非常方便,可以利用它的定時/計數(shù)器T0,工作模式1,設(shè)定計數(shù)值TH0和TL0,定時器按設(shè)置的定時參數(shù)產(chǎn)生中斷,這一次中斷發(fā)出脈沖低電平,下一次反轉(zhuǎn)發(fā)出脈沖高電平。因為定時參數(shù)不同,所以產(chǎn)生不同頻率的脈沖信號。在此情況下,C調(diào)的各音符頻率與在12Mz的單片機下的計數(shù)值T的對照表4.1所示。T的值決定了TH0和TL0的值,其關(guān)系如下。TH0=T/256,TL0=T%256。表4.1 C調(diào)各音符頻率與計數(shù)值T(12Mz單片機,T0工作模式1)

7、對照表音符頻率簡譜碼(T值)音符頻率簡譜碼(T值)低1DO26263628#4FA#74064860#1DO#27763731中5SO78464898低2RE29463835#5SO#83164934#2RE#31163928中6LA88064968低3MI33064021#6LA#93264994低4FA34964103中7SI98865030#4FA#37064185高1DO104665058低5SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#6LA#46664463高3MI13186

8、5157低7LA49464524高4FA139765178中1DO52364580#4FA#148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#62264732高6LA176065252中3MI65964777#6LA#186565268中4FA69864820高7SI197665283除了音符以外,節(jié)拍也是音樂的關(guān)鍵組成部分。節(jié)拍實際上就是音持續(xù)時間的長短,在單片機系統(tǒng)中可以用延時來實現(xiàn)。如果1/4拍的延時設(shè)為0.1秒,則1拍的延時是0.4秒。只要知道1/4拍的延時時間,其余的節(jié)拍延時時間就是它的倍數(shù)。表4.2所

9、示的為1/4節(jié)拍和1/8節(jié)拍的延時時間設(shè)定。表4.2 1/4節(jié)拍和1/8節(jié)拍的延時時間曲調(diào)值(1/4節(jié)拍)延時DELAY曲調(diào)值(1/8節(jié)拍)延時DELAY調(diào)4/4125ms調(diào)4/462ms調(diào)3/4187ms調(diào)3/4ms94ms調(diào)2/4250ms調(diào)2/4125ms 單片機產(chǎn)生不同頻率脈沖信號的原理:1)要產(chǎn)生音頻脈沖,只要算出某一音頻的脈沖(1/頻率),然后將此周期除以2,即為半周期的時間,利用定時器計時這個半周期的時間,每當(dāng)計時到后就將輸出脈沖的I/O反相,然后重復(fù)計時此半周期的時間再對I/O反相,就可以在I/O腳上得到此頻率的脈沖。2)利用8051的內(nèi)部定時器使其工作在計數(shù)器模式MODE1下

10、,改變計數(shù)值TH0及TL0以產(chǎn)生不同頻率的方法如下: 例如,頻率為523Hz,其周期天/523 S=1912uS,因此只要令計數(shù)器計時956uS/1us=956,在每計數(shù)956次時就將I/O反接,就可得到中音DO(532Hz)。計數(shù)脈沖值與頻率的關(guān)系公式如下:N=Fi/2/Fr (N:計數(shù)值,F(xiàn)i:內(nèi)部計時一次為1uS,故其頻率為1MHz,F(xiàn)r:要產(chǎn)生的頻率 )3) 其計數(shù)值的求法如下:T=65536-N=65536-Fi/2/Fr計算舉例:設(shè)K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的計數(shù)值。T=65536-

11、N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr低音DO的T=65536-500000/262=63627中音DO的T=65536-500000/523=64580高音DO的T=65536-500000/1047=650594) 每個音符使用1個字節(jié),字節(jié)的高4位代表音符的高低,低4位代表音符的節(jié)拍,下表為節(jié)拍碼的對照。但如果1拍為0.4秒,1/4拍是0.1秒,只要設(shè)定延遲時間就可求得節(jié)拍的時間。假設(shè)1/4節(jié)拍為1DELAY,則1拍應(yīng)為4DELAY,以此類推。所以只要求得1/4拍的DELAY時間,其余的節(jié)拍就是它的倍數(shù), 5) 建立音樂的步驟

12、: 1、先把吧樂譜的音符找出,然后由上表建立T值表的順序。 2、把T值表建立在TABLE1,構(gòu)成發(fā)音符的計數(shù)值放在“TABLE”。3、簡譜碼(音符)為高位,節(jié)拍為(節(jié)拍數(shù))為低4位,音符節(jié)拍碼放在程序的“TABLE”處。1.6程序流程圖開始T0初始化并開中斷允放T0中斷裝入音符到T值到T0啟動T0工作停止T0工作T0中斷入口重裝TH0,TL0初值P1.7取反中斷返回1.7程序設(shè)計源程序設(shè)計如下:org 0000h sjmp main org 000bh mov th0,r1 mov tl0,r0 cpl p1.7 retimain: mov tmod,#01h mov ie,#82h mov

13、dptr,#tabloop: clr a movc a,a+dptr mov r1,a inc dptr clr a movc a,a+dptr mov r0,a orl a,r1 jz next0 mov a,r0 anl a,r1 cjne a,#0ffh,next sjmp mainnext: mov th0,r1 mov tl0,r0 setb tr0 sjmp next1next0: clr tr0next1: clr a inc dptr movc a,a+dptr mov r2,aloop1: acall d200c djnz r2,loop1 inc dptr ajmp loo

14、pd200c: mov r3,#81hd200b: mov a,#0ffhd200a: dec a jnz d200a dec r3 cjne r3,#00h,d200b rettab: db 0feh,25h,04h,0feh,25h,02h db 0feh,25h,02h,0fdh,80h,04h db 0feh,84h,02h,0feh,84h,02h db 0feh,84h,04h,0feh,25h,04h db 0feh,25h,02h,0feh,84h,02h db 0feh,0c0h,04h,0feh,84h,02h db 0feh,98h,02h,0feh,84h,02h db

15、 0feh,57h,08h,00h,00h,04h db 0ffh,0ffh end 上面程序歌曲表為新年好的樂譜項目二:MCS-51串行口應(yīng)用實訓(xùn)雙機通信1.1實訓(xùn)目的掌握串行口工作方式的程序設(shè)計,掌握單片機通信程序編制方法。了解實現(xiàn)串行通信的硬環(huán)境,數(shù)據(jù)格式的協(xié)議,數(shù)據(jù)交換的協(xié)議。掌握雙機通信的原理和方法。1.2實訓(xùn)內(nèi)容利用MCS-51單片機串行口,實現(xiàn)雙機通信。本實驗將1號實驗機鍵盤上鍵入的數(shù)字顯示到2號實驗機的數(shù)碼管上。1.3實訓(xùn)電路1.4實訓(xùn)步驟實訓(xùn)連線用隨機所配的串行通信電纜把兩臺實驗儀RS232-9芯串行接口相連。PC環(huán)境1號機發(fā)送,2號機接收1號機:在與PC聯(lián)機狀態(tài)下,編輯、調(diào)

16、試程序,然后編譯、連接、下載程序,退出系統(tǒng),聯(lián)機狀態(tài),釋放串口;在“P.”狀態(tài)下按F2功能鍵,使系統(tǒng)進(jìn)入串行口出借狀態(tài),顯示“P.”,鍵入“EXEC”用連續(xù)方式運行程序。2號機:在與PC聯(lián)機狀態(tài)下,編輯、調(diào)試程序,然后編譯、連接、下載程序,退出系統(tǒng)聯(lián)機狀態(tài),釋放串口;在“P.”狀態(tài)下按F2功能鍵,使系統(tǒng)進(jìn)入串行口出借狀態(tài),顯示“P.”,鍵入“EXEC”用連續(xù)方式運行程序。在1號機上輸入數(shù)字鍵通過串行口發(fā)送到2號機的LED顯示器上。同理亦可實現(xiàn)從2號機鍵盤輸入數(shù)字串行發(fā)送到1號機的LED顯示器上。觀察運行結(jié)果以連續(xù)方式運行程序,觀察LED顯示器數(shù)據(jù)收發(fā)是否正常。1.5編程提示由任務(wù)可知,對于一個

17、單片機系統(tǒng)而言,要求程序要完成的功能一是將本機的按鍵通過串口用異步通信的方式發(fā)送出去,二是對接收到另一單片機傳送到串口的數(shù)據(jù),先保存下來,再送LED數(shù)碼管依次顯示出來。因此,程序?qū)榉秩齻€部分組成,其一是隨時掃描鍵盤,如果有鍵按下,則調(diào)用串口發(fā)送程序;其二是串口接收程序,只要有數(shù)據(jù)到了,就執(zhí)行數(shù)據(jù)接收程序,并把數(shù)據(jù)送到顯示數(shù)組里;其三是動態(tài)顯示程序。為了完成這三個并行任務(wù),最簡單的方法采用中斷進(jìn)行任務(wù)分配,將串口接收程序使用串口中斷對輸入的數(shù)據(jù)進(jìn)行檢測和接收,將動態(tài)顯示程序使用定時中斷完成,而鍵盤掃描則采用主程序?qū)崟r檢測。1.6參考程序流程1.7程序代碼OUTBIT EQU 08002 ;數(shù)碼

18、管位控制口OUTSEG EQU 0800 ;數(shù)碼管段控制口IN EQU 0991 ;鍵盤讀入口HASRCV EQU 20H.0 ;接受標(biāo)志位LEDBUF EQU 40H ;顯示緩沖RECBUF EQU 50H ;接受緩沖 ORG 0000HLJMP STARTORG 0023H; 串口中斷入口LJMP SINLEDMAPDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDELAY:MOV R7,#0DELAYLOOP:DJNZ R7,DELAYLOOPDJNZ R6,DELAYLOOPRETDISPLAYLE

19、D:MOV R0,#LEDBUFMOV R1,#6MOV R2,#00100000BLOOP:MOV DPTR,#OUTBITMOV A,#0MOVX DPTR,AMOV A,R0MOV DPTR,#OUTBITMOV A,R2MOVX DPTR,AMOV R6,#1CALL DELAYMOV A,R2RR AMOV R2,AINC R0DJNZ R1,LOOPRETTESTKEY:MOV DPTR,#OUTBITMOV A,#0MOVX DPTR,AMOV DPTR,INMOVX A,DPTRCPL AANL A,#0FHRETKEYTABLE:DB 16H,15H,14H,0FFHDB 1

20、3H,12H,11H,10HDB 0DH,0CH,0BH,0AHDB 0EH,03H,06H,09HDB 0FH,02H,05H,08HDB 00H,01H,04H,07HGETKEY: MOV DPTR,#OUTBITMOV P2,DPHMOV R0,#LOWMOV R1,#00100000BMOV R2,#6KLOOP:MOV A,R1CPL AMOVX DPTR,ACPL ARR AMOV R1,AMOVX A,R0CPL AANL A,0FHJNZ GOON1DJNZ R2,KLOOPMOV R2,#0FFHSJMP WXITGOON1:MOV R1,AMOV A,R2DEC ARL ARL AMOV R2,AMOV A,R1MOV R1,LOOPCEXIT:MOV A,R2MOV DPTR,#KEYTABLEMOVC A,A+DPT

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論