電子音調發(fā)生器---單片機實驗報告_第1頁
電子音調發(fā)生器---單片機實驗報告_第2頁
電子音調發(fā)生器---單片機實驗報告_第3頁
電子音調發(fā)生器---單片機實驗報告_第4頁
電子音調發(fā)生器---單片機實驗報告_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機課程設計實驗報告電子音調發(fā)生器電子音調發(fā)生器(-)實驗目的1. 了解計算機發(fā)聲原理。2. 熟悉定時器和鍵盤掃描電路的工作原理及編程方法。(二)設計任務及要求利用實驗平臺上的開關k0-k7和蜂鳴器設計電子音調發(fā)生器,要求:1. 利用實驗平臺上開關k0-k7進行音調選擇,即撥動不同的開關產(chǎn)生不同的音調,依 次撥動k0k7,蜂鳴器發(fā)出1234567i八個音調。2. 編寫2支歌曲,并可進行選擇播放。(三)工作原理及設計思路1音節(jié)由不同頻率的方波產(chǎn)生,音節(jié)與頻率的關系如表1所示。要產(chǎn)生音頻方波,只要 算出某一音頻的周期(1/頻率),然后將此周期除以2,即為半周期的時間。利用計時器計時 此半周期吋間

2、,每當計吋到后就將輸出方波的i/o反相,然后重復計時此半周期吋間再對i/o 反相,就可在i/o腳得到此頻率的方波。在zks-03實驗儀上,產(chǎn)生方波的i/o腳選用p1.7, 通過跳線選擇器jp1將單片機的p1.7與蜂鳴器的驅動電路相連。這樣p1.7輸出不同頻率的 方波,蜂鳴器便會發(fā)出不同的聲音。另外,音樂的節(jié)拍是由延時實現(xiàn)的,如果1拍為0.4秒, 1/4拍是0.1秒。只要設定延時時間,就可求得節(jié)拍的時間。延時作為基本延時時間,節(jié)拍 值只能是它的整數(shù)倍,每個音節(jié)相應的定時器初值x可按下法計算:(1/2) *( 1 /f)=(l2/fose)*(216-x)b|j x=216-(fose/24f)其

3、中f:音調頻率,當晶振fose= 11.0592mhz時,音節(jié)“1”相應的定時器初值為x,則可得x二63777d二f921h其它的可同樣求得。音調頻率(hz)x(hex)1262e9212294f9e13330fa8c4349fad85392fb686440fbe97494fc5b1523fc8f表1各音調對應頻率及計數(shù)器初值2蜂鳴器模塊由驅動電路和kcl206無源一體蜂鳴器組成。蜂鳴器電路如圖6所示。三 極管選的是s8550o圖6(4)實驗設計1. 實現(xiàn)功能設計實現(xiàn)兩個主要功能:電子琴與咅樂播放。1、電子琴:可播放12345671 個音調。2、音樂播放:同時按下ko,kl時啟動播放歌曲歡樂頌

4、;同時按下k7,k6時啟動播放 歌曲因為愛情2. 流程圖圖1程序流程圖3. 軟件設計思路電子琴主要的工作是將按鍵的信息讀取,然后根據(jù)按鍵的數(shù)字,用計數(shù)器輸出相對應的 頻率,實現(xiàn)電子琴的音調。程序主要為5部分,鍵盤掃描、中斷計時、數(shù)碼顯示、音樂播放、主程序,他們分別執(zhí) 行不同的功能。4. 各部分功能具體介紹(1) 鍵盤鍵值讀取程序根據(jù)鍵盤值判斷是執(zhí)行電子琴還是播放音樂。同時判斷出如果是電子琴是哪種音調,如 果是播放音樂,是哪首歌。(2) 中斷計時中斷部分,通過設置不同的計數(shù)初值,控制pl.7產(chǎn)生不同頻率的方波.(3) 音樂播放音樂播放部分主要是播放音樂,實現(xiàn)按鍵電子琴和播放程序里面的音樂的功能。

5、信號從 pl.7輸出后,要先經(jīng)過三極管放大,才能驅動蜂鳴器。(4) 主程序主程序主要是通過對按鍵掃描,執(zhí)行相應操作,在該程序中在播放音斥過程中按pl.2(kl) 可停止播放。源程序:org 0000h;啟動鍵盤選擇程序:;按下k0-k7鍵分別對應1-i這8個音符;同吋按下ko,kl吋啟動播放歌曲歡樂頌;同時按下k7,k6時啟動播放歌曲因為愛情keypro:jb p1.2,g01;p1.2 口為 1 時跳轉ljmp gomus1;p1.2 口為0時判斷p1.4是否也為0,p1.4為0時長轉移go1:jbp1.4,go2ljmp gomus4 g10:ljmp keyp02 go2:jbp1.5,

6、go3ljmp keyp03go3:jbp1.6,go4ljmp keyp04go4:jb p3.2,go5ljmp keyp05go5:jb p3.3,go6ljmp keyp06go6:jb p3.4,go8goo:ljmpkeyp01 ;p1.4 口不為 0, p1.2 口為 0 時發(fā) 1 咅;檢查pl.2不為0后,pl.4 口為0發(fā)“2”音;pl.5 口為 0 發(fā) “3” 咅;pl.6 口為 0 發(fā) “4” 音;p3.2 口為 0 發(fā) “5” 音;p3.3 口為 0 發(fā) “6” 音ljmp gomus2go7:ljmpkeyp07 ;p3.4 口為 0 發(fā) “7” 音go8:jb p3

7、.5,keypro ;都為1則重新掃描ljmp g0mus3g09:ljmp keyp08gomus1:jbp1.4,gooljmpmustart1;跳到再次判定k6;判定k6不為0,則p3.5 口為0發(fā)“i”音;k0,kl同為0播歌1, kl不為0,返冋1.2發(fā) t 音gomus2:jb p3.5,go7ljmp mustart2 ;k6,k7 同為 0 播歌 2, k7 不為 0,返回 3.4 發(fā) “7” 音gomus3:jb p3.4,go9;k7 為 0,再檢查 k6 是否為 0ljmp mustart2gomus4:jbp1.2,g10 ljmpmustart1keyp01:setb

8、p1.7mov r3,#100main01:mov tmod,#01hmov tl0,#44hmov th0,#0fch setb trowait1:jnb tfo,wait1 clr tfo cplp1.7djnz r3,main01 mov a,#0f9h acallshow;kl為0,再檢查ko是否為0;音調1的方波發(fā)生;設循環(huán)初值,使開關在0時播放一段時間;設置定吋器to工作方式1;音調1對應初值fc44h;啟動t0工作;定時未到,循環(huán)等待;定時到,清tfo;由卩17輸出,信號取反ljmp keyprokeyp02:setb pl.7mov r3,#100main02:;音調2的方波發(fā)

9、生mov tmod,#01hmov tl0,#0aehmov th0,#0fchsetb trowait2:jnb tf0,wait2clr tfocplp1.7djnz r3,main02mov a,#0a4hacallshowljmp keyprokeyp03:setb pl.7mov r3,#100main03:mov tmod,#01hmov tl0,#0ahmov th0,#0fdh;咅調3的方波發(fā)生setb trowait3:jnb tf0,wait3clr tfocplp1.7djnz r3,maino3mov a,#0b0hacallshowljmp keyprokeyp04:

10、setb pl.7mov r3,#100setb pl.6main04:mov tmod,#01hmov tl0,#034hmov th0,#0fdhsetb trowait4:jnb tf0,wait4clr tfocplp1.7djnz r3,main04 mov a,#99h acallshowljmp keyprokeyp05:setb pl.7mov r3,#100main05:mov tmod,#01hmov tl0,#82hmov th0,#0fdhsetb trowait5:jnb tf0,wait5clr tfocplp1.7djnz r3,main05 mov a,#92h

11、 acall showljmp keyprokeyp06:setb pl.7mov r3,#100main06:mov tmod,#01hmov tl0,#0e2hmov th0,#0fdhsetb tro;咅調4的方波發(fā)生;咅調5的方波發(fā)生;音調6的方波發(fā)牛wait6:jnb tf0,wait6clr tfocplp1.7djnz r3,main06acall showmov a,#82hljmp keyprokeyp07:setb pl.7mov r3,#100main07:mov tmod,#01hmov tl0,#06hmov th0,#0fehsetb trowait7:jnb tf

12、0,wait7clr tfocplp1.7djnz r3,main07mov a,#0f8hacall showljmp keyprokeyp08:setbp1.7mov r3,#100main08:mov tmod,#01hmov tl0,#22hmov th0,#0fehsetb trowait8:jnb tf0,wait8clr tfocplp1.7djnz r3,main08mov a,#80hacall showljmp keyprojieli:jmp keypromustart1:mov r0,#00hmovr1,#ooh rtab:mova,romov dptr,#ryth mo

13、vc a,a+dptr mov r2,ar2計數(shù)器中;音調7的方波發(fā)牛;音調i的方波發(fā)生;歌曲1的播放程序;節(jié)拍表指針置零;咅符表指針置零;查表法將一個節(jié)拍數(shù)據(jù)取出放ttab:mova,r1mov dptr,#tone movca,a+dptr mov r3,aincr1mova,r1mov dptr,#tone movca,a+dptr mov r4,asetbp 1.7loop:mov r5,#3bhmain:mov tmod,#01hmov tl0,r4mov th0,r3 setb trowait:jnb tf0,wait clr tfo cplp1.7maya:jbp1.2,mayb

14、 jbp1.4,mayb ljmp ramayb:jb p3.4,jielijb p3.5jieliljmp mustart2ra: mov a,#86hacall showdjnz r5,maindjnz r2,loopinc roincr1cjner1,#166,rtabljmp keypro;歡樂頌咅符表tone:;3342 1 1 2 db;取出咅符表高8位;指針加1;取出低8位;輸出相應音調的方波;判斷1.2, 1.4 口是否有為1;判斷3.4, 3.5 口是否有為1;3.4, 3.5 口皆為0則放第二首歌;無打斷則繼續(xù)放第一首歌;兩個表的指針都加1;判斷是否取完554333220f

15、dh,0ah,0fdh,0ah,0fdh,34h,0fdh,82h,0fdh,82h,0fdh,34h,0fdh,0ah,0fch,0aeh,0fch,44h,0fch,44h,0fch,0aeh,0fdh,0ah,0fdh,0ah,0fch,0aehqfch,oaeh;33455432 1123211db0fdh,0ah,0fdh,0ah,0fdh,34h,0fdh,82h,0fdh,82h,0fdh,34h,0fdh,0ah,0fch,0aeh,0fch,44h,0fch,44h,0fch,0aeh,0fdh,0ah,0fch,0aeh,0fch,44h.0fch.44h92 231234

16、31 234311253db0fch,0aeh,0fch,0aeh,0fdh,0ah,0fch,44h,0fch,0aeh,0fdh,0ah,0fdh,34h,0fdh,0ah,0fch,44h,0fch,0aeh,0fdh,0ah,0fdh,34h,0fdh,0ah,0fch,4 4h,0fch,44h,0fch,0aeh,0fbh,04h, ofdh,oah;334554321123211db0fdh,0ah,0fdh,0ah,0fdh,34h,0fdh,82h,0fdh,82h,0fdh,34h,0fdh,0ah,0fch,0aeh,0fch,44h,0fch,44h,0fch,0aeh

17、,0fdh,0ah,0fch,0aeh,0fch,44 h,0fch,44h;歡樂頌節(jié)拍表ryth:db 0&0&0&0&0&0&0&0&0&0&0&0& 12,04,16db 0&0&0&0&0&0&0&0&0&0&0&0& 12,04,16db 0&08,0&08,0&04,04,0&08,0&04,04,0&08,0&08,0&08db

18、 0&08,0&08,0&08,0&08,0&08,08,08,12,04,16mustart2:mov r0,#00hmov r1 ,#00hrtab2:mov a,romov dptr,#ryth2movc a,a+dptrmov r2,attab2:mov a,r1mov dptr,#tone2movc a,a+dptrmov r3,aincr1mov a,r1mov dptr,#tone2movc a,a+dptrmov r4,asetbp 1.7loop2:mov r5,#3bhmain2:mov tmod,#01hmov tl0,r4mov

19、th0,r3setb trowait22:jnb tf0,wait22clr tfocplp1.7maya1:jb p3.4,mayb1 jb p3.5,mayb1 ljmp rbmayb1:jbp12,back jb pl.4,back ljmpmustart1back:ljmp jielirb:mova,#8ehacallshowdjnz r5,main2djnz r2,loop2inc roincr1cjner1,#222,rtab2ljmp keypro;判斷3.4, 3.5 口是否有為1;1.2, 1.4 口皆為0則放第一首歌;無打斷則繼續(xù)放第二首歌;因為愛情音符表tone2:; 2

20、35255db3.50fch,0aeh,0fdh,0ah,0fdh,82h,0fdh,0ah,0fdh,82h,0fdh,82h,0fdh,0ah,0fch,0aeh,0fdh,82h,0fdh,82h,;67iii7i7753db0fdh,0e2h,0feh,06h,0feh,22h,0feh,22h,0feh,22h,0feh,06h,0feh,22h,0feh,06h,0feh,06h,0fdh,82h,0fdh,0ah;5355656551db 0fdh,82h,0fdh,0ah,0fdh,82h,0fdh,82h,0fdh,0e2h,0fdh,82h,0fdh,0e2h,0fdh,8

21、2h,0fdh,82h,0fch,44h;6132632665db0fbh,90h,0fch,44h,0fdh,0ah,0fch,0aeh,0fbh,90h,0fdh,0ah,0f9h,21h,0fbh,90h,0fdh,0e2h,0fdh,82h;因為愛情節(jié)拍表ryth2:db 0& 0&04,12,04,04,04, 04, 04, 16db 04 ,04,04,04,08,04,08, 03, 01, 04, 20db 08, 08,04,04,12,04,03, 01, 04, 20db 04, 04,04,04,04,04,04, 04, 04, 32show:mov p2,a;retend(5)電路圖1l . c1xtal1crystalqir2pn5spz wa9 pzfaio f2ta11 pz.wa1z fzata13 f7a*a1« fz

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論