音樂程序編制ppt課件_第1頁
音樂程序編制ppt課件_第2頁
音樂程序編制ppt課件_第3頁
音樂程序編制ppt課件_第4頁
音樂程序編制ppt課件_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 8255并行接口 B口端口地址0 x61) 音樂程序設(shè)計1.PC機的揚聲器驅(qū)動系統(tǒng) 與門8254的2號定時器7 6 5 4 3 2 1 01.193MHz輸入脈沖1118255并行接口 B口的第 0 位為1時,定時器開始工作,產(chǎn)生音頻信號。8255并行接口 B口的第 1 位為1時,與門打開,音頻信號送到揚聲器??刂茡P聲器發(fā)聲 8254是可編程的定時器,有0號、1號、2號共3個可獨立編程的16位定時器,還有一個控制字寄存器。 2號定時器工作在方波頻率發(fā)生器方式,即輸出方波信號。輸出方波的頻率為:1193180Hz / 計數(shù)初值。 向2號定時器寫入不同的計數(shù)初值,可控制輸出方波的頻率??刂谱旨拇?/p>

2、器的I/O端口地址是 0 x430號定時器的I/O端口地址是 0 x401號定時器的I/O端口地址是 0 x412號定時器的I/O端口地址是 0 x42計數(shù)初值是16位的,要分兩次寫入2號定時器,先寫低8位,再寫高8位。8位端口輸入函數(shù) inportb( )函數(shù)原型:unsigned char inportb(int portid);功能: 從地址為 portid 的8位端口輸入一個字節(jié)8位), 所讀的值是該函數(shù)的返回值,由頭文件 dos.h 說明。用法: #include unsigned char b; b = inportb(端口地址);8位端口輸出函數(shù) outportb( )函數(shù)原型:

3、void outportb(int portid ,unsigned char value);功能:向地址為 portid 的8位端口輸出一個字節(jié)(8位),其值為 value,由頭文件 dos.h 說明。用法: #include outportb(端口地址,無符號字符型數(shù)據(jù)或變量);音符的定義 音頻信號的頻率范圍是 202000Hz,音樂中使用的頻率一般為1311976Hz , 包括中央C調(diào)及其前后的4個八度的音程。音符與頻率的關(guān)系如下表所示。音符頻率音符頻率音符頻率音符頻率C131C262C523C1047D147D294D587D1175E165E330E659E1319F175F349F

4、698F1397G196G392G784G1568A220A440A880A1760B247B494B988B1976音長的定義音長即一個音符持續(xù)的時間。N1 表示全音符N2 表示半音符N4 表示4分音符N8 表示8分音符N16 表示16分音符用C語言定義音樂2. 32 1 . 6 |5 35 6 .1|1 2 3 4 5 6 7 C0 D0 E0 F0 G0 A0 B0第一小節(jié):D0,N4+N8 , E0,N16 , D0,N16 , C0,N4+N8 , A0,N8第二小節(jié):G0,N4 , E0,N8 , G0,N8, A0,N4+N8 , C0,N8源程序#include #includ

5、e #include #include #include #include #define N1 64#define N2 32#define N4 16#define N8 8#define N16 4#define END 0enum NOTESC10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247,C0=262,D0=296,E0=330,F0=349,G0=392,A0=440,B0=494,C1=523,D1=587,E1=659,F1=698,G1=784,A1=880,B1=988,C2=1047,D2=1175,E2=13

6、19,F2=1397,G2=1568,A2=1760,B2=1976;typedef enum NOTES SONG;SONG song=D0,N4,E0,N8,D0,N8,C0,N4,A10,N4,G10,N8,E10,N8, G10,N8,A10,N8,C0,N2,A10,N4,A10,N8,C0,N8,G10,N8,A0,N8, E0,N8,G0,N8,D0,N2,E0,N4,D0,N8,E0,N8,G0,N4,E0,N4,G0,N8, E10,N8,G10,N8,A10,N8,C0,N2,A10,N4,A10,N8,C0,N8,A10,N8, A10,N8,D10,N8,E10,N8,

7、G10,N2,D0,N4,D0,N4,G0,N4,A0,N8, G0,N8,F0,N2,G0,N2,A0,N4,G0,N8,E0,N8,D0,N8,E0,N8,C0,N8, A10,N8,D0,N2,E0,N4,G0,N8,E0,N8,G0,N4,E0,N4,G10,N8,E10,N8, G10,N8,A10,N8,C0,N4,A10,N4,A10,N8,C0,N8,D0,N8,A10,N8, C0,N8,E0,N8,D0,N1,END,END; main()int note=0, fre , dur , control;clock_t goal;while(songnote!=END) fr

8、e=songnote; dur=songnote+1; if(kbhit() break; if(fre) /*若頻率值fre非0*/ outportb(0 x43,0 xb6); /*初始化2號定時器 */ fre=(unsigned)(1193180L/fre); /*計算計數(shù)初值 */ outportb(0 x42,(char)fre); /*先寫計數(shù)初值的低8位*/ outportb(0 x42,(char)(fre8); /*再寫計數(shù)初值的高8位*/ control=inportb(0 x61); /*讀0 x61的狀態(tài)*/ outportb(0 x61,control|0 x03); /*將第0位,第1位置1,使喇叭發(fā)聲*/ goal=(clock_t)dur+clock( ); while(goalclock( ); if(dur) outportb(0

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論