
超再生無線模塊就是上圖的產品,在淘寶上很便宜,1塊多就可以買一對。我買了2對,本以為很容易就可以搞定,
編程序對我來說并不是難事,誰知道搞了好幾天都沒搞定。
1.首先我是用面包板測試,在發送模塊的數據輸入端和vcc之間接一個按鍵模擬輸入,接收模塊的數據輸出端接萬用表正極,
每次按下按鍵,按鍵接通,萬用表會跳動一下不超過2V,接著斷開按鍵,萬用表會跳到3.5V左右的位置,再慢慢回到零。
這說明發送模塊和接收模塊是能夠通訊的。
2.接下來我換上單片機,接收模塊和單片機相連,接收模塊的VCC和GND都直接連到單片機開發板上的VCC和GND接口,萬用表的正極還是接發送模塊的數據輸出口,負極接開發板的GND,發送模塊還是用面包板,結果無論怎么按鍵,萬用表指針總是在2V左右擺動。我以為是單片機開發板的電源問題,
把接收模塊的VCC和GND和一個單獨的5V電源連接,5V電源的GND和單片機的GND相連(是不是要這樣共地?),發送模塊按鍵后,可以測得萬用表指針會跳到3.5V左右再回零。接下來我把接收模塊的數據輸出端連接到單片機的一個輸入端口,寫了一段代碼測試端口電平是否變化,結果不管發送模塊怎么發送,單片機輸入端口都無法測得有電平變化(除剛開始復位后運行代碼輸入端口會有變化)。
因為本人以前是做軟件的,剛學習單片機幾個月,對模電數電知識懂得不多,不知道上面的接線法是否正確,正確的方法應該怎樣做才能接收到信號?請各位不吝指教,多謝了!
代碼是用ATMEGA128匯編寫的,很簡單:
.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__:
;設置堆棧
LDI R16, LOW(RAMEND)
OUT SPL, R16
LDI R16, HIGH(RAMEND)
OUT SPH, R16
;初始化數據輸入端口
CALL SRG_INIT
__RESET__01:
;測試數據輸入端口電平變化
CALL SRG_TESTLEVEL
JMP __RESET__01
SRG_INIT:
;設置接收端口為輸入 缺省高阻
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
;測試數據輸入口電平變化
SRG_TESTLEVEL:
SBIS SRG_R_PIN, SRG_R_PIN_DA;如果高電平跳出循環
RJMP SRG_SRG_TESTLEVEL
RET
|