㈠ 單片機按鍵發聲電路求大神來幫我分析一下電路。
我不知道什麼叫最小系統
這是一個8051單片機的經典電路
晶振就是那樣的固定接法,電容是為了讓晶振更容易起振,也會影響到單片機的工作頻率,這個電容叫作負載電容
R1和C3是復位電路,8051要的是高電平復位,所以就那樣接
沒有說為什麼要那樣接,電路就是那樣,沒法解釋的,就像你問電源的正極它為什麼叫正極一樣,它就那樣,單片機的內部電路結構就那樣接的
其它的K1呀,LS1呀,都是隨便接的,只要是接在I/O埠的就行,LS1的接法並不好,沒有驅動電路,8051的輸出電流不大的,它只能輸出電平信號而已
如果,你對我上面說的某個名詞不理解,那你就得去看一下模電和數電基礎,學好了再來看單片機。不然你會很累的
㈡ 用單片機唱一首歌的匯編語言流程圖
實現原理就是一根IO接一個喇叭,然後從該IO送出各音符相應頻率的脈沖,喇叭就會出對應的聲音。
喇叭接的是P2.3
;----------------------------------
;Copyright fairychild
;轉載請註明出處
DL EQU 0F111H
RLL EQU 0F2B3H
ML EQU 0F426H
FL EQU 0F4D0H
SL EQU 0F609H
LL EQU 0F71FH
XL EQU 0F817H
D EQU 0F889H
R EQU 0F959H
M EQU 0FA13H
F EQU 0FA68H
S EQU 0FB04H
L EQU 0FB90H
X EQU 0FC0BH
DH EQU 0FC44H
RH EQU 0FCADH
MH EQU 0FD0AH
FH EQU 0FD34H
SH EQU 0FD82H
LH EQU 0FDC8H
XH EQU 0FE06H
ORG 0000H
JMP START
;-----------------------------
ORG 001BH
CPL P2.3
CALL SOUND
RETI
;-----------------------------
START: MOV SP,#70H
SETB EA
SETB ET1
MOV TMOD,#11H
MOV R1,#0
MOV R2,#0
LAB: MOV A,R1
MOV DPTR,#FREQ
MOVC A,@A+DPTR
CJNE A,#0,LA1
JMP START
LA1: MOV R3,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
CJNE A,#0,LA2
JMP START
LA2: MOV R4,A
INC R1
CALL SOUND
MOV A,R2
MOV DPTR,#TIME
MOVC A,@A+DPTR
MOV R5,A
INC R2
CALL DELAY
JMP LAB
;---------------------------------
SOUND: MOV TH1,R3
MOV TL1,R4
SETB TR1
RET
;---------------------------------
DELAY: MOV R6,#0FFH
LAB1: MOV R7,#0FFH
LAB2: DJNZ R7,LAB2
DJNZ R6,LAB1
DJNZ R5,DELAY
CLR TR1
RET
;---------------------------------
FREQ: DW D,SL,R,D,LL,SL
DW D,SL,M,R,D,S
DW SL,D,M,L,S,M,D
DW M,M,S,D,LL,SL,R
DW D,SL,R,D,LL,SL
DW D,SL,M,R,D,S
DW SL,D,M,L,S,D,M
DW R,M,S,LL,SL,R,D,0
TIME: DB 4,4,4,4,4,8
DB 4,4,4,2,2,8
DB 4,4,4,4,4,4,8
DB 4,2,2,4,2,2,8
DB 4,4,4,4,4,8
DB 4,4,4,2,2,8
DB 4,4,4,4,4,4,8
DB 4,2,2,2,2,4,8
;----------------------------------------
㈢ 簡述單片機反轉法識別矩陣按鍵過程
行反轉法的基本概念是:行列線的交叉位置布置按鍵。所有行和列加上拉電阻。
所有行作輸出先送低電平,然後讀入列值。 如果有任意鍵按下,那麼一定對應列值有0出現,也就知道了按下的鍵所在列。
反過來驅動這一列為0,其他列為1。把行作輸入。就可以判斷按下的鍵所在行。矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,列線通過電阻接正電源,並將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。<1>確定矩陣式鍵盤上何鍵被按下介紹一種「行掃描法」。行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。1、判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置低電平,然後檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位於低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。2、判斷閉合鍵所在的位置 在確認有鍵按下後,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。
㈣ 單片機2個埠控制4個按鍵怎樣實現
單片機IO口如果識別更多的按鍵,簡單的方法就是通過控制按鍵按下,識別電流的流向。這說可能不是很理解,下面就來介紹下,如下圖按鍵識別電路:
歡迎評論交流,也歡迎大家關注我:單片機嵌入式愛好者。會有源源不斷的干貨分享,能真正快速幫大家解決實際工作中遇到的問題哦!
㈤ 用單片機做電子琴,復音(合音)怎麼實現
解析MIDI電子琴的設計用單片機是如何實現的
摘要:用單片機控制通用MIDI音源模塊製作製作出的電子琴,結構簡單,可靠性高,並且價格低廉,具有實用的價值。這種電子琴能夠支持單音和復音彈奏,如果與高品質的音源晶元連接,音質更可與高檔電子琴相媲美。我們在實驗過程中,也曾採用手機中通用的音樂晶元構成音源模塊,效果不錯,價格更低廉,如韓國產的QS6400 等,這些晶元的驅動要復雜一些,需要對晶元進行初始化設置,詳細內容可參看國防工業出版社出版的《MIDI原理與開發應用》一書中的相關章節。
關鍵字:電子琴,單片機,音源板,MD2064
1、電子琴的硬體設計方案
本電子琴包含48個按鍵鍵盤,即具有4個8度的音域,單片機AT89C51通過對所彈按鍵的識別,產生相應的MIDI消息。它支持單音彈奏和最多16個復音彈奏。電子琴結構示意圖和電路原理圖分別如圖1和圖2所示。AT89C51作為主控晶元,它使得鍵盤矩陣模塊、通道和音色選擇以及串口發送等各功能模塊協調工作。48按鍵行列式鍵盤矩陣構成MIDI電子琴的鍵盤掃描輸入端,由於89C51的P0口內部沒有上拉電阻,故這里採用電阻R14——R21將列線拉至高電平,與六條行線組合完成48個琴鍵的掃描識別,在圖1中,單片機與鍵盤矩陣間的雙箭頭線表示單片機在掃描鍵盤矩陣時,P0口和P2口分別作為輸入/輸出口使用。人機介面電路則利用了單片機P1口的大部分口線,並通過或門向INT0發出中斷請求,該部分電路主要完成MIDI電子琴的通道設置和音色選擇等人機交互功能。鍵盤的彈奏信息以及通道、音色信息經CPU處理後,由串口將標準的MIDI數據發送給MIDI音源及放大器,推動揚聲器發聲。
圖1:MIDI電子琴結構示意圖
圖2:MIDI電子琴電路圖
音源模塊採用MD2064 套板,如圖3所示。它是一種模塊化的MIDI音源產品,由得理電子公司開發,具有標准MIDI介面,該板能接受標准GM MIDI命令進行音樂播放,自帶3D, REVERB, CHORUS等效果處理。由於該套板的MIDI 介面採用了光耦合器,電流驅動,故設計了由Q1、Q2等器件組成的驅動電路,使單片機串口數據得以正常傳輸。在模塊的耳機輸出端取得信號後,經小功率放大即可推動揚聲器發聲。
2、電子琴的軟體設計特點
該電子琴軟體採用模塊化設計方法,程序也較簡單。軟體中各功能模塊都由相應的子程序完成,主要包含通道選擇模塊,音色選擇模塊,48按鍵鍵盤掃描模塊,串口發送模塊等,其中為了及時完成用戶命令,音色選擇模塊採用了中斷服務子程序,可以在演奏中快速響應使用者的請求。
主程序在完成串口初始化、相關變數的初始化以及設置通道後,即進入鍵盤掃描、發送音符消息流程,為了使按鍵識別准確可靠,還設置了兩個緩沖區BUFF1和BUFF2保存鍵盤掃描值。主程序流程圖如圖3。
圖3:MIDI電子琴程序的流程圖
以下是部分功能模塊的程序設計介紹。
2.1 音色選擇模塊的設計
該模塊的功能是使MIDI電子琴能按要求快速改變音色,所以採用了中斷服務子程序。當某個音色選擇按鍵壓下時,通過或門向單片機的INT0發出中斷請求,CPU響應後進入該中斷服務子程序。MIDI技術規范規定,標准MIDI含有128種音色,它們的編號范圍是0~127,為了能夠快速找到所需音色,硬體中設置3個按鍵,其中2個用於音色編號的單步增加和減小,每次增加或減小1個音色編號,另外一個鍵用於音色快進,當快進鍵有效時,每次增加8個音色編號,選擇增加8個音色的原因是:標准MIDI的128種音色是按每8個音色一組編排的,共包含16個樂器組。電子琴開機時默認的音色編號是0,即大鋼琴音色。
單片機的P1.2口線連接著音色增加按鍵,P1.3則連接音色減小按鍵,P1.4連接音色快進鍵。低電平時按鍵有效,這三個按鍵通過與門連接外部中斷INT0,以便實時響應音色設置。該外部中斷0的中斷服務子程序流程圖見圖4,(圖中省去了按鍵延時去抖動部分):
圖4:音色改變子程序流程圖
在該子程序中,變數TAMBER中存放當前音色,其值可在0~127間循環,當TAMBER是最大值127時,加1後又變為0;而當TAMBER為0時,減1則變為127;在邊界范圍加8取模後,剛好為其對應的音色值。
2.2 串口發送模塊
串口發送模塊主要用於發送產生的MIDI消息,串口採用的模式1,發送的波特率是31.25KBPS。串口通過驅動電路連接MIDI音源,發送MIDI消息。通道號存放在變數CHANNEL中,通過與90H相與,所得值就是當前所設置的通道號。
2.3 鍵盤掃描模塊
本電子琴提供了48個MIDI按鍵,即4個8度音的音域范圍,當按下單個鍵時,產生一條MIDI消息,當按下多個鍵值時產生對應鍵值的多條MIDI音符開消息,當某個鍵值被釋放時,發送對應的音符關消息。這些MIDI消息通過串口發送給MIDI音源,產生MIDI音樂。音樂的時值由按鍵的時間長度控制,當按鍵被釋放,實時產生MIDI消息,關閉被釋放的鍵值音。
由P0口和P2口的P2.0~P2.5構成行列式鍵盤,也可繼續擴展鍵盤,例如改為常用的49鍵或64鍵。因為支持復音按鍵,鍵盤掃描程序必須掃描到行列式鍵盤的每個鍵值,掃描所得的鍵值存放在緩沖區BUFF1或BUFF2中。鍵盤掃描程序獲得的鍵盤編號范圍是0~47,還需將這個鍵盤編號值轉換為MIDI設備能夠識別的鋼琴鍵盤編號,這個功能由一個子程序來完成,限於篇幅本文不再詳述。鍵盤掃描子程序流程如圖5。
圖5:鍵盤掃描子程序
㈥ 單片機流程圖是根據實物畫的嗎.先畫流程圖再去做實物可以嗎
實物流程圖只是一個概念,和草稿原理相通,就是用紙表達,有這個模塊,然後如何走向,大概繪制出有什麼器件,然後按照草稿,把圖畫出來
㈦ 單片機程序流程圖如何寫文字說明
單片機程序流程圖用文字敘述如下:
上電,復位初始化,進入系統待機,如果沒有感測器信號產生的中斷就一直等待感器信號觸發中斷,如果有感測器信號發出中斷則進入觸發警報服務程序,等待停止警報按鈕按下,解除警報,等待按下復位按鈕對系統初始化再次進入系統,等待中斷觸發狀態。
編程大概有80%精力放在流程圖,剩下的就是用語言描述而已。所以編程最難的不是把代碼寫出來,而是把流程圖畫出來。有了流程圖,編程就簡單很多了。