|

超再生無(wú)線模塊就是上圖的產(chǎn)品,在淘寶上很便宜,1塊多就可以買(mǎi)一對(duì)。我買(mǎi)了2對(duì),本以為很容易就可以搞定,
編程序?qū)ξ襾?lái)說(shuō)并不是難事,誰(shuí)知道搞了好幾天都沒(méi)搞定。
1.首先我是用面包板測(cè)試,在發(fā)送模塊的數(shù)據(jù)輸入端和vcc之間接一個(gè)按鍵模擬輸入,接收模塊的數(shù)據(jù)輸出端接萬(wàn)用表正極,
每次按下按鍵,按鍵接通,萬(wàn)用表會(huì)跳動(dòng)一下不超過(guò)2V,接著斷開(kāi)按鍵,萬(wàn)用表會(huì)跳到3.5V左右的位置,再慢慢回到零。
這說(shuō)明發(fā)送模塊和接收模塊是能夠通訊的。
2.接下來(lái)我換上單片機(jī),接收模塊和單片機(jī)相連,接收模塊的VCC和GND都直接連到單片機(jī)開(kāi)發(fā)板上的VCC和GND接口,萬(wàn)用表的正極還是接發(fā)送模塊的數(shù)據(jù)輸出口,負(fù)極接開(kāi)發(fā)板的GND,發(fā)送模塊還是用面包板,結(jié)果無(wú)論怎么按鍵,萬(wàn)用表指針總是在2V左右擺動(dòng)。我以為是單片機(jī)開(kāi)發(fā)板的電源問(wèn)題,
把接收模塊的VCC和GND和一個(gè)單獨(dú)的5V電源連接,5V電源的GND和單片機(jī)的GND相連(是不是要這樣共地?),發(fā)送模塊按鍵后,可以測(cè)得萬(wàn)用表指針會(huì)跳到3.5V左右再回零。接下來(lái)我把接收模塊的數(shù)據(jù)輸出端連接到單片機(jī)的一個(gè)輸入端口,寫(xiě)了一段代碼測(cè)試端口電平是否變化,結(jié)果不管發(fā)送模塊怎么發(fā)送,單片機(jī)輸入端口都無(wú)法測(cè)得有電平變化(除剛開(kāi)始復(fù)位后運(yùn)行代碼輸入端口會(huì)有變化)。
因?yàn)楸救艘郧笆亲鲕浖模瑒倢W(xué)習(xí)單片機(jī)幾個(gè)月,對(duì)模電數(shù)電知識(shí)懂得不多,不知道上面的接線法是否正確,正確的方法應(yīng)該怎樣做才能接收到信號(hào)?請(qǐng)各位不吝指教,多謝了!
代碼是用ATMEGA128匯編寫(xiě)的,很簡(jiǎn)單:
.EQU SRG_R_DDR=DDRE
.EQU SRG_R_DDR_DA=DDE2
.EQU SRG_R_PORT = PORTE
.EQU SRG_R_PORT_DA = PORTE2
.EQU SRG_R_PIN = PINE
.EQU SRG_R_PIN_DA = PINE2
.CSEG
.ORG $0000
JMP __RESET__
__RESET__:
;設(shè)置堆棧
LDI R16, LOW(RAMEND)
OUT SPL, R16
LDI R16, HIGH(RAMEND)
OUT SPH, R16
;初始化數(shù)據(jù)輸入端口
CALL SRG_INIT
__RESET__01:
;測(cè)試數(shù)據(jù)輸入端口電平變化
CALL SRG_TESTLEVEL
JMP __RESET__01
SRG_INIT:
;設(shè)置接收端口為輸入 缺省高阻
CBI SRG_R_DDR, SRG_R_DDR_DA
CBI SRG_R_PORT, SRG_R_PORT_DA;高阻
;SBI SRG_R_PORT, SRG_R_PORT_DA;上拉高電平
RET
;測(cè)試數(shù)據(jù)輸入口電平變化
SRG_TESTLEVEL:
SBIS SRG_R_PIN, SRG_R_PIN_DA;如果高電平跳出循環(huán)
RJMP SRG_SRG_TESTLEVEL
RET
|
|