|
我也正在學(xué)習(xí)超聲波的模塊,買了兩款共四個(gè)模塊做實(shí)驗(yàn),一款HC-SR04a 能夠接3.3V用,與這款原理一樣,看電路圖,STC11應(yīng)該是負(fù)責(zé)振蕩發(fā)出40k的訊號(hào),送給max232發(fā)射,max232不是普通的IC, 而是能夠自主升壓輸出高壓去推動(dòng)超聲波喇叭(因?yàn)樾枰咻敵霾拍軠y(cè)得遠(yuǎn)),另外STC11通過(guò)PNP管直接控制MAX232的電源決定超聲波是否輸出,TL074是一枚運(yùn)算放大器,負(fù)責(zé)把回聲放大到TTL電平一輸入到單片機(jī),單片機(jī)內(nèi)部的程序應(yīng)該相當(dāng)復(fù)雜,不是我們所知,我用開(kāi)發(fā)板實(shí)驗(yàn)后能工作,但不理想。
我要測(cè)的距離只是2cm到5mm之間,就是用手掌在距離2cm到5cm之間移動(dòng),希望能測(cè)出至少1mm的變化,也就是有30個(gè)數(shù)值的變化,目的是要用來(lái)控住電子琴的聲量,另外還想用兩個(gè)模塊距離5mm(手掌的寬度)一起使用,測(cè)定手掌的傾斜度(兩個(gè)模塊測(cè)出的數(shù)字差),控制電子琴的滑音,豐富演奏的表情。
根據(jù)資料,聲波340米每秒,34cm每毫秒,340mm每毫秒,0.34mm每微秒,大概3毫秒有1mm, 聲波來(lái)回每1mm有6微妙的時(shí)間差,這樣的時(shí)間單片機(jī)應(yīng)該能分辨出來(lái),我看市面上并沒(méi)有采用超聲波來(lái)控制電子琴音量的產(chǎn)品,肯定是有一些困難,所以我打算自己畫一個(gè)超聲波的底板來(lái)試驗(yàn),正在找電路資料模仿,所以就看得懂這個(gè)電路了。
這是簡(jiǎn)單的實(shí)驗(yàn)程序,結(jié)果輸出通過(guò)、uart2輸出到電腦:
ULTRA:
SETB P1.7
LCALL DELAY4 ;SHORT DELAY
CLR P1.7
WAITECHOH:
MOV A, P1
ANL A, #01000000B
JZ WAITECHOH
MOV 30H,#0
WAITECHOL:
MOV A, P1
ANL A, #01000000B
JNZ WAITECHOL
MOV 32H, 30H
CPL P0.1
;------
SETB P3.7
LCALL DELAY4 ;SHORT DELAY
CLR P3.7
WAITECHOH2:
MOV A, P3
ANL A, #01000000B
JZ WAITECHOH2
MOV 31H,#0
WAITECHOL2:
MOV A, P3
ANL A, #01000000B
JNZ WAITECHOL2
MOV 33H, 31H
CPL P0.1
CLR C
MOV A, 32H
SUBB A, 33H
LCALL SENTONEBYTE2
MOV A, 32H
;LCALL SENTONEBYTE2
MOV A, 33H
;LCALL SENTONEBYTE2
LCALL DELAY3 ;LONG DELAY
JMP ULTRA
TIMER_1: ;USE FOR MICRO CLOCK 1MS 184, 30 ,100US=248 250
PUSH ACC
INC 30H
INC 31H
TIMER_1EXIT:
MOV TH1, #255
MOV TL1, #200
POP ACC
RETI
SENTONEBYTE2: ;A SENT OUT
PUSH ACC
;MOV IE2, #00H ;DISABLE THE SECONDARY UART INTERRUPT, ES2=0
MOV S2BUF, A ;LOAD A TO BUFFER
MOV A, S2CON ;1111,1101, CLEAR SECONDARY UART TRANSIMIT INTERRUPT FLAG
ANL A, #0FDH
MOV S2CON, A
UART2WAIT:
MOV A, S2CON
ANL A, #02H ;0000,0010
CJNE A,#02H, UART2WAIT
MOV A, S2CON
ANL A, #0FDH ;1111,1101, CLEAR SECONDARY UART TRANSIMIT INTERRUPT FLAG
MOV S2CON, A
;MOV IE2, #01H ;ENABLE THE SECONDARY UART INTERRUPT, ES2=1
NOP
NOP
POP ACC
RET
|
|