音樂設計圖
A. 單片機的音樂播放器設計電路圖和源程序(類似於MP3的功能)。
發發發發發發發發發
B. 單片機設計音樂播放器程序和模擬圖(用匯編語言)急求~謝謝!!!
NUMEQU30H
UPEQUP3.6
DNEQUP3.7
ORG0000H
AJMPSTART;Fosc=12MHz
ORG000BH;T0中斷入口地址
AJMPINT_T0
ORG001BH;T1中斷入口地址
AJMPINT_T1
START:
MOVSP,#60H
MOVTMOD,#11H
MOVIE,#8AH
MOVIP,#08H ;T1中斷優先於T0中斷
MOV TH1,#3CH
MOV TL1,#0BH ;以上為系統初始化,T=60ms
W1: MOV P2,#01110001B;等待提示"F" ,01110001
LCALL GETKEY
CJNEA,#0FFH,W1
MOVA,B
CJNEA,#0AH,W2
LCALLKEY_A;輸入鍵是'A',轉KEY_A
SJMP W1
W2: CJNE A,#0BH,W3
LCALLKEY_B;輸入鍵是'B',轉KEY_B
W3: CJNE A,#0CH,W4
LCALLKEY_C;輸入鍵是'C',轉KEY_C
W4: CJNE A,#0DH,W5
LCALLKEY_D
SJMP W1;輸入鍵是'D',轉KEY_D
W5: CJNEA,#0EH,W6 ;下一首
INCNUM
MOVA,NUM
CJNEA,#4,W51
W51:
JCW52
MOVNUM,#0
W52:
MOVA,NUM
SJMPD0
W6: CJNEA,#0FH,W7 ;上一首
MOVA,NUM
JNZW61
MOVNUM,#4
W61:
DECNUM
MOVA,NUM
SJMPD0
W7:
SJMP W1
KEY_A:;從1~4按順序播放
LCALL MUSIC1;樂曲《我和你》
LCALL MUSIC2;樂曲《萬水千山總是情》
LCALL MUSIC3;樂曲《送別》
LCALL MUSIC4;樂曲《北京歡迎您》
RET
KEY_B:;從1~4循環播放
T11: LCALL KEY_A
SJMP T11
RET
KEY_C:;循環播放某一樂曲
T3: LCALL GETWORD
CJNE A,#0FFH,T3
MOV A,B
D0:
JNZD1
SJMP E0
D1: DECA
JNZD2
SJMP E1
D2: DECA
JNZE3
SJMP E2
E0: LCALL MUSIC1;樂曲《我和你》
SJMP E0
E1: LCALL MUSIC2;樂曲《萬水千山總是情》
SJMP E1
E2: LCALL MUSIC3;樂曲《送別》
SJMP E2
E3: LCALL MUSIC4;樂曲《北京歡迎您》
SJMP E3
RET
KEY_D:;從某一樂曲開始播放,播放完後停止
T2: LCALL GETWORD
CJNE A,#0FFH,T2
MOV A,B
CJNE A,#00H,B1
SJMP C0
B1: CJNE A,#01H,B2
SJMP C1
B2: CJNE A,#02H,C3
SJMP C2
C0: LCALL MUSIC1;樂曲《我和你》
C1: LCALL MUSIC2;樂曲《萬水千山總是情》
C2: LCALL MUSIC3;樂曲《送別》
C3: LCALL MUSIC4;樂曲《北京歡迎您》
RET
MUSIC1:;第一首《我和你》
MOVP2,#00000110B ;顯示1,00000110
MOVR5,#11111001B
MOV52H,#HIGHTABLE10
MOV53H,#LOWTABLE10
MOVNUM,#0
LCALLmusic
RET
MUSIC2: ;第二首《萬水千山總是情》
MOV P2,#01011011B ;顯示2,01011011
MOV R5,#10100100B
MOV52H,#HIGHTABLE20
MOV53H,#LOWTABLE20
MOVNUM,#1
LCALL music
RET
MUSIC3: ;第三首《送別》
MOV P2,#01001111B ;顯示3,01001111
MOV R5,#10110000B
MOV52H,#HIGHTABLE30
MOV53H,#LOWTABLE30
MOVNUM,#2
LCALL music
RET
MUSIC4: ;第四首《北京歡迎您》
MOV P2,#01100110B ;顯示4,01100110
MOV R5,#10011001B
MOV52H,#HIGHTABLE40
MOV53H,#LOWTABLE40
MOVNUM,#3
LCALL music
RET
music: MOVR3,#00H ;音樂解碼器
NEXT20:
MOVA,P3
ORLA,#0C0H
MOVP3,A
MOVA,P3
CPLA
ANLA,#0C0H
JZNEXT21
POPACC
POPACC
LJMPW1
RET
NEXT21:
MOVA,R3
MOV DPH,52H
MOV DPL,53H
MOVC A,@A+DPTR
MOV R2,A
JZ STOP
ANL A,#0FH
MOV R1,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
JMP W11
;----------------------------------------------------------
SING:
DEC A
MOV22H,A
RL A
MOVDPTR,#TABLE00
MOVC A,@A+DPTR
MOV TH0,A
MOV 21H,A
MOV A,22H
RL A
INC A
MOVC A,@A+DPTR
MOV TL0,A
MOV 20H,A
SETB TR0
SETB TR1
W11:
LCALL DELAY3
INC R3
LJMP NEXT20
;-----------------------------------------------------------
STOP:
CLR TR0
CLR TR1
RET
;***************************************************
;定時器0中斷子程序
;***************************************************
INT_T0:
CLR TR0
MOV TL0,20H
MOV TH0,21H
CPL P3.0
SETB TR0
RETI
;***************************************************
;定時器1中斷子程序
;***************************************************
INT_T1:
CLRTR1
CLRTR0
LCALL KEY_E
MOVTH1,#3CH
MOVTL1,#0BH
DJNZ 60H,OUT
MOV 60H,#20
OUT:
SETB TR1
RETI
KEY_E:
JB P3.1,L2 ;中斷鍵盤檢測
LCALL DELAY2 ;消除抖動
JB P3.1,L2 ;如果是高電平就跳到L2
JNBP3.1,$ ;如果仍然是低電平就執行中斷程序
MOV P2,#0111100B ;讓LED顯示E,01111001
L3: JB P3.1,$ ;檢測低電平,直到低電平時才跳出該指令
LCALL DELAY2
JB P3.1,L3
JNBP3.1,$ ;如果再來一個高電平才跳出中斷
MOV P2,R5
L2: SETBTR0
RET
GETKEY: ;讀ABCD鍵盤子程序
SA: JB P1.0,SB ;讀A,是高電平表示沒有按鍵,跳轉到SB
LCALL DELAY2
JB P1.0,SA
JNB P1.0,$
MOV P2,#01110111B ;顯示A,01110111
MOV R5,#10001000B
MOV A,#0FFH
MOV B,#0AH
RET
SB: JB P1.1,C11 ;讀B,是高電平表示沒有按鍵按下,跳轉到C11
LCALL DELAY2
JB P1.1,SB
JNB P1.1,$
MOV P2,#01111100B ;顯示B,01111100
MOV R5,#10000011B
MOV A,#0FFH
MOV B,#0BH
RET
C11:JB P1.2,ED1 ;讀C
LCALL DELAY2
JB P1.2,C11
JNBP1.2,$
MOV P2,#00111001B ;顯示C,00111001
MOV R5,#11000110B
MOV A,#0FFH
MOV B,#0CH
RET
ED1:
JB P1.3,L0 ;讀D
LCALL DELAY2
JB P1.3,ED1
JNBP1.3,$
MOV P2,#01011110B ;顯示D,01011110
MOV R5,#10100001B
MOV A,#0FFH
MOV B,#0DH
L0: JBUP,L01
LCALLDELAY2
JBUP,L01
JNBUP,$
MOVA,#0FFH
MOVB,#0EH
RET
L01:
JBDN,L02
LCALLDELAY2
JBDN,L02
JNBDN,$
MOVA,#0FFH
MOVB,#0FH
L02:
RET
GETWORD:;讀音樂序號子程序
S1: JB P1.4,S2 ;讀1鍵
LCALL DELAY2
JB P1.4,S1
JNB P1.4,$
MOV P2,#00000110B ;顯示1
MOV R5,#11111001B
MOV A,#0FFH
MOV B,#00H
RET
S2: JB P1.5,S3 ;讀2鍵
LCALL DELAY2
JB P1.5,S2
JNB P1.5,$
MOV P2,#01011011B ;顯示2
MOV R5,#10100100B
MOV A,#0FFH
MOV B,#01H
RET
S3: JB P1.6,S4 ;讀3鍵
LCALL DELAY2
JB P1.6,S3
JNB P1.6,$
MOV P2,#01001111B ;顯示3
MOV R5,#10110000B
MOV A,#0FFH
MOV B,#02H
RET
S4: JB P1.7,L1 ;讀4鍵
LCALL DELAY2
JB P1.7,S1
JNB P1.7,$
MOV P2,#01100110B ;顯示4
MOV R5,#10011001B
MOV A,#0FFH
MOV B,#03H
L1: RET
DELAY:;延時子程序
PUSH0;保存現場
PUSH1
MOV0,#0H
DELAY1:MOV1,#0H
DJNZ1,$
DJNZ0,DELAY1
POP1;恢復現場
POP0
RET
DELAY2: MOV 41H,#100 ;延時子程序2
F1: MOV 42H,#250
DJNZ 42H,$
DJNZ 41H,F1
RET
DELAY3: ;延時子程序3
MOV R7,#2
W22: MOV R4,#125
W33: MOV R0,248
DJNZ R0,$
DJNZ R4,W33
DJNZ R7,W22
DJNZ R1,DELAY3
RET
TABLE00: ;頻率表
DW64260,64400,64524,64580;簡碼值低音5,低音6,低音7,1
DW64684,64777,64820,64898;簡碼值2,3,4,5
DW64968,65030,65058,65110;簡碼值6,7,高音1,高音
DW65157,65178,65217;簡碼值高音3,高音4,高音5
;--------------------------------------------------------------------
;第一首《我和你》
;--------------------------------------------------------------------
TABLE10:DB64H,82H,42H,48H
DB54H,64H,18H
DB44H,54H,64H,84H
DB5CH
DB64H,84H,44H,04H,42H
DB54H,64H,28H
DB54H,14H,54H,64H
DB4CH
DB98H,88H
DB98H,48H
DB64H,24H,64H,84H
DB5CH
DB64H,82H,42H,48H
DB54H,64H,28H
DB54H,14H,54H,34H
DB4CH
DB00H
;--------------------------------------------------------------------
;第二首《萬水千山總是情》
;--------------------------------------------------------------------
TABLE20: DB64H,74H,84H,04H,82H,94H,84H,6CH
DB54H,44H,04H,62H,54H,44H,2CH
DB24H,18H,44H,54H,64H,84H,94H,64H,5CH
DB64H,74H,84H,04H,82H,94H,84H,6CH
DB54H,44H,04H,62H,54H,44H,2CH
DB24H,18H,44H,64H,54H,04H,42H,24H,44H,4CH
DB64H,84H,9CH,0A4H,94H,74H,84H,04H,92H,8CH,64H,88H
DB64H,84H,9CH,0A4H,0A4H,94H,84H,64H,5CH
DB64H,74H,84H,04H,82H,94H,84H,6CH
DB54H,44H,04H,62H,54H,44H,2CH
DB24H,18H,44H,64H,54H,42H,24,44H,4CH
DB00H
;--------------------------------------------------------------------
;第三首《送別》
;--------------------------------------------------------------------
TABLE30:DB84H,62H,82H,0B8H
DB94H,0B2H,92H,88H
DB84H,42H,52H,64H,52H,44H
DB5CH
DB84H,62H,82H,0B4H,04H,82H
DB94H,0B4H,88H
DB84H,52H,62H,74H,04H,32H
DB4CH
DB94H,0B4H,0B8H
DB0A4H,92H,0A2H,0B8H
DB92H,0A2H,0B2H,92H,92H,82H,62H,42H
DB5CH
DB84H,62H,82H,0B4H,04H,0A2H
DB94H,0B4H,88H
DB84H,52H,62H,74H,04H,32H
DB4CH
DB00H
;--------------------------------------------------------------------
;第四首《北京歡迎您》
;--------------------------------------------------------------------
TABLE40:DB62H,82H,62H,52H,12H
DB62H,52H,12H,64H
DB62H,52H,22H,42H
DB62H,54H
DB52H,42H,22H,42H
DB52H,62H,82H,52H
DB62H,92H,82H,12H
DB52H,44H
DB52H,42H,22H,42H
DB52H,62H,82H,52H
DB62H,92H,82H,82H
DB68H
DB52H,62H,52H,42H
DB82H,92H,64H
DB22H,62H,64H
DB54H,64H
DB64H,84H
DB0B2H,82H,94H
DB02H,92H,82H,62H
DB62H,82H,88H
DB00H
END
C. 如何設計音樂圖譜
摘要:詳細談了圖譜的重大作用及設計圖譜的方法。關鍵詞:幼兒;音樂圖譜;版設計蘇霍姆林權斯基說:「音樂乃是一種使人迷戀善良、美和人道主義的最美妙、最精細的手段……」人們愛音樂,幼兒更愛音樂,不管是流行音樂,還是兒童音樂,幼兒都喜歡哼唱,但是哼唱時老是出現歌詞不正確、節拍不對等情況,這時可以讓圖譜幫忙。
D. 自己設計插入圖片,自己插入背景音樂的那種iphone App軟體,因為本人是新手,希望可以是簡單上
APP名:快秀 可以滿足你的需求內;
App Store查看:容https://itunes.apple.com/cn/app/id768598498
E. 音樂教學中的圖譜設計需要注意哪些問題
音樂教學是師生共同體驗美、享受美的過程。教師應運用藝術性與多樣性的教學方法,激發學生學習的興趣和強烈的慾望;教師應充分發揮自身的創造性,積極探索,在把握教學目標的基礎上,精心構思,要讓整個教學過程進行得生動、活潑,下面結合自己的教學實踐,談一談在音樂教學中的思考。
一、導入方法的藝術性與實效性。導入是上好課的一個重要環節。「良好的開端是成功的一半」。一節課的成功與否,導入是一個關鍵的環節。音樂教學是師生共同體驗美、享受美的過程。教師應運用多樣性與實效性的導入方法,激發學生學習的興趣,讓一節課的開始成為一塊「磁鐵」,深深地吸引每一個學生去盡情地享受音樂的美。如在教學《吹起羌笛跳鍋庄》這首歌曲時,課前讓一名女同學學習了鍋庄舞,課開始,這名同學在歌曲的伴奏下邊跳邊邀請同伴,一下子把全班學生的興趣和表現慾望激發出來。這樣既要帶領學生走進音樂,又要讓音樂走進學生。
二、以審美體驗為核心,激發學生興趣。音樂課堂教學應在教學過程中,以學生為本開展審美教育活動。從審美教育的角度把握音樂教學活動,並進行卓有成效的教學實踐。在《快樂的哆來咪》教學中,如果單從視唱開始,會使學生覺得枯燥而沒有興趣,特別是前面的休止符,若只單純教唱音符,又顯得單調乏味。我改變了教學方法,先給學生一個完整的音樂形象:即先聲情並茂地進行范唱,然後讓學生分句聽辨旋律,比較異同。一分析,學生覺得學起來容易多了。結尾處的跳音記號我是和歌詞的學唱一起教的,我邊唱,邊做了小鳥滑稽地歌唱時的動作,並問學生為什麼要在這里加跳音記號呢?學生一邊笑一邊爭先恐後的說:「因為春天來了,小鳥又可以出來做游戲,出來快樂的唱歌了。」有的同學則說:「快樂的音符又可以滿天飛了!」這時候我再告訴學生後邊襯詞應該唱的活潑而有彈性,以表現春天人們喜悅的心情,很快歌曲就學會了。學生們的演唱繪聲繪色,一邊唱還一邊晃著小腦袋,好像他們就是樹林里自由高歌的小鳥。音樂是情感藝術,它需要通過人的參與和體驗來達到其教育目的。在以美感人、以情動人的審美活動中,凈化心靈、陶冶情操、豐富情感、啟迪智慧,進而增強審美素質,提高音樂藝術能力。
三、面向全體學生,因材施教。音樂課上教學環節的設計要根據學生情況將教學內容與教學目標分解成不同知識層次的小內容、小目標,針對不同的學生進行分類學習、活動指導。因為各個學生在音樂基礎和音樂天賦及能力上存在明顯的差異,如果注意力經常停留在音樂天賦好的學生身上,差些的學生會慢慢地厭煩音樂課。所以在引導學生參與教學過程中,必須了解掌握各個學生的音樂學習水平和個別差異情況,以便心中有數、區別對待。四、培養學生的合作習慣,讓學生主動探究。在各個環節中,教師要注重調動學生參與活動的積極性,讓孩子自己去找,去感受音樂,去創造音樂。如在教學奧運歌曲時,我讓學生自己搜集奧運歌曲,學生們把自己喜歡的《北京歡迎你》拍成了小小MTV,收到了意想不到的效果。同學們在模仿、體驗、探究的音樂活動過程中,收獲到的是個體的情感體驗,是任何形式都代替不了的親身體驗。
在音樂教學中,教師要多學習、多思考、多探討、多挖掘,不斷改進教學方法,編創出有利於學生學習的教學設計,以提高工作效率,同時,只有不斷更新新的教學理念,我們的音樂課學生才會願意學,課堂才會越來越精彩!
F. 視頻、音樂、圖片放到資料庫中,怎麼設計表結構不考慮存儲原始數據 希望給個合理的存儲結構
tb_id int//主鍵
tb_name_before varchar//上傳自時候的名字,便與下載讓他名字恢復
tb_name_now str2 varchar//上傳的時候重命名的,防與其他文件重名,一般用日期加時間表示
tb_address str3 varchar//伺服器路徑
tb_date dates varchar//上傳日期
tb_type int//文件類型,itb_type=1表示音樂,2表示圖片,3表示視頻
這樣一個表把東西結合起來,操作起來也方便了
(如果你的數據太多了,不建議這么用,放一塊太多,影響速度,文件不多的話,這樣很爽的)
G. 設計一個音樂程序
有圖,Q我
1352282
一. 設計任務及要求
1. 以8255接八個開關K1~K8,做電子琴按鍵輸入。
2. 以8253控制揚聲器,撥動不同的開關,發出相應的音階。
要求: K1—靜音
K2—發si的音493Hz
K3—發la的音440Hz
K4—發sol的音392Hz
K5—發fa的音349Hz
K6—發mi的音329Hz
K7—發re的音293Hz
K8—發do的音261Hz
二. 方案比較和認證
通過8255和8253來實現電子琴模擬,主要可以分成兩部分,分別為輸入部分和發音部分。輸入部分主要是由8255和8個常開型開關來完成。常開型開關如右圖。8個常開型開關K1~K8與8255的A口PA0~PA7相接,不觸動開關時,為高電平輸入,當按下開關時,就接地,為低電平輸入。例如當K1鍵按下時,從8255中A口輸入的數為11111110B,十六進制為0FEH。每一個開關按下時,都對應一個ASCII碼,如下表所示:
開 關 K1 K2 K3 K4 K5 K6 K7 K8
對應數據 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 7FH
對應頻率 靜音 493 Hz 440 Hz 392 Hz 349 Hz 329 Hz 293 Hz 261 Hz
輸入部分的硬體實現比較簡單,所以說主要還是在發音部分。在設計中驅動揚聲器地聲的主要有兩種方式,分別是以位觸發和定時器控制。下面就這兩種不同的方式確定兩個不同的設計方案。
方案1:
發聲採用位觸發方式。電路原理圖如下所示。程序直接控制PPI(8255可編程序外圍介面晶元)的輸出控制寄存器(I/O埠為61H)的第一位,使該位按所需的頻率進行1和0的交替變化,從而產生一串脈沖控制波形,這些脈沖經過放大後驅動揚聲器發出聲音。
可以利用軟體延時來控制所產生的脈沖波形的長度和脈寬,就可以實現產生不同頻率和不同音長的聲音。軟體實現的程序如下:
IN AL,61H
MOV AH,AL
AND AL,0FCH ;關斷定時器通道2的門控
SOUND:XOR AL,2 ;觸發61H埠第1位
OUT 61H,AL
MOV CX,DX ;(DX)=控制脈沖的計數值
WAIT: LOOP WAIT ;延時循環
DEC BX ;(BX)=脈沖持續的時間
JNZ SOUND
MOV AL,AH
OUT 61H,AL ;恢復61H埠
在本方案中,通過程序的方法來控制PB1,使其在1和0之間按一定的頻率變,從而產生一串脈沖。控制脈沖寬度的計數值的演算法如下:
計數值=2801*100/音頻
如果音頻為f,則脈沖周期1/f一個半波的時間為1/2f秒,而1/2f秒的延時可簡單地通過LOOP指令的循環來取得,由於2801次LOOP指令循環執行所需時間是10MS,所以一秒鍾時間約執行2801*100次LOOP指令。控制脈沖寬度的計數值的實現程序如下:
MOV AX,2801
MOV BX,50 ;頻率不同該值就不同
MUL BX
DIV DI ;(DI)= f
MOV DX,AX ;(DX)=1/2f
算出了脈沖寬度,再通過高低電平的不斷變換,就可實現不同頻率的脈沖方波。把此方波經濾波放大即可驅動揚聲器發聲了。
方案2:
利用定時器發聲。這里是通過硬體即8253定時器產生聲音。
CUP通過對定時器的通道2進行編程,使其I/O寄存器接收一個控制聲音頻率的16位計數值,埠61H的最低位控制通道2門控的開斷,以產生特殊的音響。當定時器接收的計數值為533H時,能產生896Hz的聲音,因此產生其他頻率的計數值就可由下式計算:
計數值=533H×896÷ f=1234DCH÷ f
在送出頻率計數值之前,還要給方式寄存器送一個方式值,該數決定對哪一個通道編程,採用什麼模式,送入通道的計數值是一位元組還是兩位元組,是二進制碼還是BCD碼。其位組合的格式如下:
當通道2用於發聲時,採用的是模式3,在模式3下,輸出線為「1」和為「0」的時間各占計數時間的一半,因而產生一系列間隔均勻的脈沖。
產生指定頻率聲音的程序段如下:
MOV AL,0B6H
OUT 43H,AL ;43H為8253的控制字埠
MOV DX,12H
MOV AX,34DCH
DIV DI ;(DI)=頻率
OUT 42H,AL ;42H為8253的通道2埠
MOV AL,AH
MOV 42H,AL
從定時器輸出的方波信號,經功率放大和濾波後驅動揚聲器。送到揚聲器的信號還受到了從並行介面晶元8255(埠地址為61H)來的雙重控制,埠61H的最低位控制通道2的門控開斷,以產生特殊的音頻信號,埠61H的PB1位和定時器的輸出信號同時作為與門的輸入,PB0和PB1位可由程序決定為0還是為1。顯然只有PB0和PB1都是1時,才能使揚聲器發出聲音。控制音長的時間可以簡單地通過反復執行指令來得到。我們知道執行2801次LOOP指令約需要10MS的時間。因此用10MS的倍數值來控制揚聲器開關的時間間隔,就可控制發聲的音長了。實現程序如下:
IN AL,61H
MOV AH,AL
OR AL,3
OUT 61H,AL ;開揚聲器
L: MOV CX,2801
DY:LOOP DY
DEC BX
JNZ L
MOV AL,AH
OUT 61H,AL ;關揚聲器
下圖是利用定時器發音的電路圖。
方案比較:
在上述兩個方案中,輸入部分都是一樣的。區別在於以不同的方式來驅動揚聲器發聲。經對比可知,兩種方案都各有優缺點。在方案1中,其優點是電路簡單,所用的器件晶元少,主要晶元只有需一片8255,產生方波是通過軟體來實現的,易於修改和維護。然而它也存在一定的缺點,就是系統不斷地通過軟體來產生方波,系統資源被佔用,無法再做其它事。與方案1相比,方案2增加了一個8253晶元和一個與門,雖然電路比方案1復雜,但通過定時器產生方波,實現起來比較簡單,而且也不會出現系統資源被全部佔用的情況。
經分析,選擇方案2進行設計。
三. 硬體原理,器件功能
在方案2的設計中用到了兩個主要的晶元,一個是並行介面8255,另一個是計數器8253。下面就先介紹一下這兩個器件的主要功能以及在這個系統中所應用的功能。
1.8255並行介面。
8255是一個40引腳的雙列直插式集成電路晶元。按功能可把8255分為三個邏輯電路部分,即:口電路、匯流排介面電路和控制邏輯電路。8255共有三個8位口,其中A口和B口是單純的數據口,供數據I/O使用。而C口則既可以作數據口,又可以作控制口使用,用於實現A口和B口的控制功能。匯流排介面電路用於實現8255和單片微機的信號連接。其中包括:數據匯流排緩沖器,讀/寫控制邏輯,控制邏輯電路。內部的結構如下圖所示。
8255的引腳信號中,除了電源和地以外,其他信號可以分為兩組:
1.和外設一邊相連的:
PA7-PA0:A組數據信號
PB7-PB0:B組數據信號
PC7-PC0:C組數據信號
2.和CPU一邊相連的:
RESET:復位信號,低電平有效。當RESET信號來到時,所有內部寄存器就被清除,同時,3個數據埠被自動設為輸入埠。
D7-D0:它們是8255的數據線,和系統數據匯流排相連。
:晶元選擇信號,低電平有效。在一個系統中,一般根據全部介面晶元來分配若干較低位地址(比如A5、A4、A3)來組成各種晶元選擇碼,當這幾位地址組成某一個代碼時,解碼器便往8255的端 輸出一個低電平,於是8255被選中。只有當 有效時,讀信號 和寫信號 才對8255有效。
:晶元讀出信號低電平有效。
:晶元寫入信號低電平有效。
8255共有四個可定址的埠(即A口、B口、C口和控制寄存器),用二位地址編碼即可實現選擇。參見下表。
8255共有三種工作方式,即方式0、方式1、方式2。
1.方式0為基本輸入/輸出方式,方式0下,可供使用的是兩個8位口(A口和B口)及兩個4位口(C口高4位部分和低4位部分)。四個口可以是輸入和輸出的任何組合。方式0適用於無條件數據傳送,也可以把C口的某一位作為狀態位,實現查詢方式的數據傳送。
2.方式1為選通輸入/輸出方式,A口和B口分別用於數據的輸入/輸出。而C口則作為數據傳送的聯絡信號。A口和B口的聯絡信號都是三個,如果A或B只有一個口按方式1使用,則剩下的另外13位口線仍然可按方式0使用。如果兩個口都按方式1使用,則還剩下2位口線,這兩位口線仍然可以進行位狀態的輸入輸出。方式1適用於查詢或中斷方式的數據輸入/輸出。
8255作為輸入時如下圖。輸入過程如下:當輸入設備准備好數據,將數據送至PA7~PA0或PB7~PB0,同時發 ,在 下降沿控制下,8255將PA7~PA0或PB7~PB0上的數據鎖存到A口或B口數據輸入寄存器中,同時8255向輸入設備發IBF有效,告知輸入設備暫緩送數。8255A可以兩種方式通知CPU取走數據: 第一種方式是用中斷方式,在INTE=1∩IBF=1時, 的上升沿使INTR=1,8255向CPU提出中斷申請,CPU以中斷方式取走數據,在CPU響應中斷後,執行IN指令,將8255 A口或B口數據輸入寄存器中的數據取走,同時, 信號的下降沿清除INTR信號, 信號的上升沿復位IBF。輸入設備僅當檢測到IBF為低電平後,才開始傳送下一個數據,如此循環;第二種方式是用軟體查詢,CPU僅當查詢到IBF=1時,才從8255A 口或B口數據輸入寄存器中取走數據。
8255作為輸出時如下圖所示。輸出過程如下:首先CPU執行OUT指令,在 信號的下降沿CPU輸出的數據送入8255數據輸出緩沖器,並使INTR復位。 信號上升沿將 置為有效,通知輸出設備,CPU已把數據輸出到8255的指定埠中,輸出設備接到 信號有效後,發 有效, 下降沿將 置為1, 上升沿表示輸出設備已從8255A指定埠取走數據,此時若 INTE=1,則INTR被置為高電平,向CPU申請中斷,CPU可採用中斷方式輸出下一個數據。CPU也可通過查詢 信號,若 =1,CPU輸出下一個數據給8255A,即查詢方式傳送數據。
3.方式2雙向數據傳送方式。只允許A口工作在方式2,當A口工作在方式2時,B口可工作在方式0或方式1。 所謂雙向,即A口可分時進行I/O操作。 A口工作在方式2,信號聯絡線如下:
(PC6), (PC7), (PC4),IBFA(PC5);
INTE1(PC6)與輸出中斷有關,可由用戶給8255A控制字寄存器送PC6的置位/復位字來實現允許/禁止A口輸出中斷。
INTE2(PC4):與輸入中斷有關,可由用戶給8255A控制字寄存器送PC4的置位/復位字來實現允許/禁止A口輸入中斷。
INTRA(PC3):I/O中斷申請,高電平有效,產生中斷請求信號的條件為: INTRA=IBFA·INTE2· · (輸入中斷);
INTRA= ·INTE1· · (輸出中斷)。
在本設計系統中運用的是工作方式0,這種方式比較簡單。在這里,主要是A口用於輸入,與8個常開型開關連接,用於採集輸入。B口中的PB1和PB0用於控制發聲。
2.計數器/定時器8253。 8253是8254的改進型,右圖是它的晶元實物圖。8253包括3個獨立的16位計數器通道,而每個計數器都有6種工作方式,可以按二進制或十進制(BCD碼)進行計數。如下圖為8253的內部結構圖。在圖中可以清楚地看到,8253主要是由數據匯流排緩沖存儲器,讀寫控制電路,控制字寄存器和3個通道4部分所組成。
1. 數據匯流排緩沖器是8253與CPU DB連接的8位雙向三態緩沖器,CPU通過它向8253寫方式控制字到控制字寄存器中,寫計數初值到計數通道,讀取計數通道的當前計數值。
2. 讀/寫控制邏輯控制8253內部操作。當 無效,8253的DB處於高阻狀態,當 有效, 和A1、A0、 、 組合,對3個計數通道、控制字寄存器進行讀/寫操作。
3. 控制字寄存器 8253初始化編程時,CPU寫控制字到控制字寄存器,以選擇計數通道及相應的工作方式。
4. 數通道0~2。8253內部包括3個功能完全相同和操作完全獨立的計數通道,每個計數通道由16位減法計數器、16位計數初值寄存器和16位計數值鎖存器組成。初始化時,向計數通道裝入的計數初值,先送到計數初值寄存器中保存,然後送到減法計數器。計數器啟動後,減法計數器對CLK的下降沿進行減1計數,在未鎖定時把結果送入16位計數值鎖存器中。當計數值減到0時,輸出OUT信號,一次計數結束。計數初值寄存器的內容,在計數過程中保持不變。計數初值寄存器和計數值鎖存器佔用一個埠地址(即該計數通道口地址),CPU讀取計數通道的當前計數值來自計數值鎖存器。
各通道可工作在計數器方式,此時被計數的事件以脈沖方式從CLK輸入;
各通道可工作在定時器方式,此時確定頻率的時鍾脈沖從CLK輸入。
計數初值=定時時間÷CLK周期
各通道的啟動、禁止、允許計數與門控信號GATE有關,GATE的作用OUT的輸出波形隨各通道工作方式不同而不同。
8253即可以作為計數器又可以作為定時器使用。在本系統中主要是運用了其計數功能。在8253的3個計數器中,都有6種不同的工作方式,其中工作方式3可稱為方波發生器,其產生的方波正是在發聲系統中所需要的。所以在這里就應用了8253作計數器並工作在方式3下。
下圖為8253工作方式3的定時波形圖。
任一通道工作在方式3,只在計數值n為偶數,則可輸出重復周期為n,占空比為1:1的方波。如圖所示,進入工作方式3,OUT輸出低電平,裝入計數值n後,OUT立即跳變為高電平。如果當前GATE為高電平,則立即開始減1計數,OUT保持為高電平。當計數值減到n/2時,OUT跳變為低電平,一直保持到計數值為0,系統就會自動重新置入計數值n,實現循環計數。這時OUT端輸出的周期為n×CLK周期,占空比為1:1的方波序列。
如果在操作過程中,GATE變為無效,則暫停減1計數過程,直到GATE再次有效,重新從初值n開始減計數。這一點對本系統來說非常重要。這使得在控制發聲時可以方便隨時停止。
下面的是8253的6種工作方式下的輸出波形圖。在這里就不再一一闡述了。
四. 系統原理
經過分析對比上述的兩種方案可知,選取方案2是比較合理的。下面就方案2來分析一下整個系統的工作原理。前面已經提到,整個電路分成輸入和發音兩大部分。主要的器件有一個並行介面8255,和一個8253定時器。輸入部分的硬體原理圖比較簡單,如右圖所示的為輸入電路,其主要是由8個常開型開關和一個並行介面8255組成。由圖中可看到,8個開關一端接地,另一端接到8255的A口輸入,並且通過一個電阻接到+5V。因此,在開關不按下時,從8255A口輸入的是高電平,當開關按下時,輸入的則是低電平,這樣通過低電平觸發,既方便也對晶元起保護作用。如下表,當不同的開關按下時,從A口輸入就對應一個8位的數據。
開 關 K1 K2 K3 K4 K5 K6 K7 K8
輸入數據 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 7FH
通過軟體檢測輸入的數據,然後給8253送相應頻率的計數值。檢測的程序如下:
IN AL,60H ;從8255A口輸入一個數據
CMP AL,0FEH
JZ K1 ;K1—K8分別為不同程序斷的標號
CMP AL,0FDH
JZ K2
CMP AL,0FBH
JZ K3
CMP AL,0F7H
JZ K4
CMP AL,0EFH
JZ K5
CMP AL,0DFH
JZ K6
CMP AL,0BFH
JZ K7
CMP AL,7FH
JZ K8
對於發音部分。PC機上的大多數輸入/輸出(I/O)都是由主板上的8255(或8255A)可編程序外圍介面晶元(PPI)管理的。PPI包括3個8位寄存器,兩個用於輸入功能,一個用於輸出功能。輸入寄存器分配的I/O埠號為60H和62H,輸出寄存器分配的I/O埠號為61H。由PPI輸出寄存器中的0、1兩位來選擇揚聲器的驅動方式。如下圖。
連接到揚聲器上的是定時器2,從上圖可以看到,GATE2與埠61H的PB0相連,當PB0=1時,GATE2獲得高電平,使定時器2可以在模式3(方波)下工作。定時器2的OUT2與埠61H的PB1通過一個與門與揚聲器的驅動電路相連。當PB1=1時,允許OUT2的輸出信號到達揚聲器電路。因此,只有PB0和PB1同時為「1」時,才能驅動揚聲器地聲。通過以下指令實現:
IN AL,61H
OR AL,3
OUT 61H,AL
上面的指令用以打開揚聲器,如要關閉揚聲器時則為:
AND AL,0FCH
OUT 61H,AL
當從8255中採集到輸入的數據時,需要確定相應的頻率,所以在軟體編程時要建立一個數據表:
TABLE DW 493,440,392,349,329,293,261
把相應的頻率送到一個寄存器上,通過公式:
計數值=533H×896÷ f=1234DCH÷ f
算出計數值,再把算得的計數值送給8253,就可產生所要頻率的方波。在把計數值送8253前,必須先把8253進行初始化:
MOV AL,0B6H
OUT 43H,AL
使其選用通道2,工作在方式3下。
就整個電路而言,接好電路後,通過軟體編程不斷地採集從8255口中輸入的信號,而8個開關都接在8255的A口上,只要有開關按下,就會採集到一個數據,根據這個數據與事先編好的表對應,得到一個計數值,把這個計數值送給8253的通道2,8253的通道2工作的方式3下,這樣就可以產生滿足頻率要求的發聲方波。這個方波經驅動放大就可以使揚聲器發出相應的聲音。
所以8255在這里完成兩個任務,它不僅從A口中採集到數據,而且B口的PB1和PB0兩個位要控制發聲。8253的主要任務就是產生所要求發聲的不同頻率的方波。
五. 電路圖
下圖即為本設計中所採用的方案2的硬體連線圖。
在設計過程中,獨立編址時,用地址線的高位部分和控制信號(如RD、WR、M/IO)進行組合產生 I/O介面電路的片選信號(CS),用地址線的低位部分直接連到 I/O介面晶元實現埠的選擇。在此採用的是解碼器解碼,電路圖如下所示,經過74LS138解碼後, 輸出作為8253的片選信號(CS),即其埠地址為40H~43H。 輸出作為8255的片選信號(CS),即其埠地址為60H~63H。
六. 軟體思想,流程圖,源程序
軟體部分對整個系統來說起著重要的作用,在本電子琴系統中,軟體可以分為三部分,主程序部分,發音子程序部分和延時子程序部分。
主程序的流程圖如下:
發聲程序包括3個步驟:
(1)在8253中的42埠送一個控制字0B6H(10110110B),該控制字對定時器2進行初始化,使定時器2准備接收計數初值。
(2)在8253中的42H埠(Timer2)裝入一個16位的計數值(533H×895/頻率),以建立將要產生的聲音頻率。
(3)把輸出埠61H的PB0、PB1兩位置1,發出聲音。
以下是發聲子程序的流程圖:
我們知道LOOP指令執行2801次的時間為10ms,所以延時子程序則很簡單,只需要反復執行LOOP指令就可實現,並且所得到的延時時間為10ms的倍數。
下面即為整個程序代碼:
H. 求「音樂演奏器設計」的畢業論文,需要有實物圖
音樂演奏器設計
這方面的文章不太好寫
,你可以去找別人幫你寫一下。
我知道一家,他們的文章寫的不錯,完成文章,滿意再付款的.
(QQ)加為好友就行
:一
零
三
七
二
五
二
六
五
七
I. 網頁設計中背景圖片和背景音樂如何共存
背景音樂和背景圖片是二回事,它們沒有沖突,誰說不能共存?