利用串口+315M 433M模塊傳輸溫度 15W204S發射 AT89C2051接收
由于不會使用18B20的序列號 所以使用了三個端口檢測溫度
發送的數據一共16位 前3位加密 (如果覺得不夠可以占用后面的位繼續加密)
第4位到第11位顯示被測設備名稱 設備名不夠長就用空位代替 第12位設備序號 第13到16位是四位溫度(含零下)
根據接收的設備序號循環顯示設備號 顯示一秒就隱去 下次收到在顯示在隱去
未接入18b20時溫度位顯示四個橫杠 收不到設備信號顯示 No input
一個設備發送三個溫度數據時 只有接收端收不到信號5秒才會顯示三行 No input
如果改一下程序 發射的設備由一個變三個 每個只發送一路數據 (三個不能同時發射 否則接收端會收不到信號)
三個設備任何一個設備無法發送信號 接收端過5秒就會顯示 No input
制作出來的實物圖如下:
51hei截圖20210220170827.jpg (71.11 KB, 下載次數: 51)
下載附件
2021-2-20 20:51 上傳
51hei截圖20210220210208.jpg (37.09 KB, 下載次數: 51)
下載附件
2021-2-20 21:02 上傳
51hei截圖20210220210239.jpg (41.33 KB, 下載次數: 55)
下載附件
2021-2-20 21:02 上傳
單片機源程序如下:
-
- ; 延時、波特率由單片機小精靈V1.3生成 晶振 12M 12T模式
- ; 89C2051 12M 2400BPS 接收溫度
- RS BIT P3.3;
- RW BIT P3.4;
- E BIT P3.5;
- LED BIT P3.7; 收到信號閃一下
- RX1 EQU 02H; 用于無信號計時 改地址后有可能計時無效
- RX2 EQU 03H;
- RX3 EQU 08H;
- FLAG1 EQU 20H.1; 收到信號后置1 無信號置0
- FLAG2 EQU 20H.2;
- FLAG3 EQU 20H.3;
- ORG 0000H
- LJMP START
- ORG 0023H
- LJMP UART_ISR;串口中斷
- ;--------------------------------------
- START: MOV RX1,#0;
- MOV RX2,#0;
- MOV RX3,#0;
- CLR FLAG1
- CLR FLAG2
- CLR FLAG3
- MOV 40H,#" ";
- MOV 41H,#" ";
- MOV 42H,#" ";
- MOV SP,#60H
- LCALL InitUART
- LCALL LCD1602;初始化
- LCALL DIP_G;顯示固定符號 TEMP
- LCALL DIP_N_1;顯示無信號輸入 No input
- LCALL DIP_N_2;
- LCALL DIP_N_3;
- ;設備檢測 檢測是否有設備斷開 整體延時大約5秒
- LOOP:
- LCALL DELAY100MS; 100*50=5000MS=5S
- ;設備1
- JNB FLAG1,TM2; 收到信號向下執行
- MOV A,RX1;
- INC A;
- MOV RX1,A;
- CJNE A,#10,TMA; 延時1秒
- MOV 40H,#" ";
- LCALL DIP_SHU; 不顯示接收設備號
- TMA: CJNE A,#50,TM2; 延時5秒
- CLR FLAG1;
- MOV 40H,#" ";
- LCALL DIP_N_1; 顯示無信號輸入 No input
- LCALL DIP_SHU; 不顯示接收設備號
- ;-----------------------------------------------------
- ;設備2
- TM2: JNB FLAG2,TM3;
- MOV A,RX2;
- INC A;
- MOV RX2,A;
- CJNE A,#10,TMB; 延時1秒
- MOV 41H,#" ";
- LCALL DIP_SHU; 不顯示接收設備號
- TMB: CJNE A,#50,TM3; 延時5秒
- CLR FLAG2;
- MOV 41H,#" ";
- LCALL DIP_N_2; 顯示無信號輸入 No input
- LCALL DIP_SHU; 不顯示接收設備號
- ;-----------------------------------------------------
- ;設備3
- TM3: JNB FLAG3,TMO;
- MOV A,RX3;
- INC A;
- MOV RX3,A;
- CJNE A,#10,TMC; 延時1秒
- MOV 42H,#" ";
- LCALL DIP_SHU; 不顯示接收設備號
- TMC: CJNE A,#50,TMO; 延時5秒
- CLR FLAG3;
- MOV 42H,#" ";
- LCALL DIP_N_3; 顯示無信號輸入 No input
- LCALL DIP_SHU; 不顯示接收設備號
-
- TMO: LJMP LOOP;
- ;---------------------------------------
- InitUART:
- MOV TMOD,#20H ;12M 2400BPS 波特率由單片機小精靈V1.3生成 晶振 12M 12T模式
- MOV SCON,#50H
- MOV TH1,#0F3H
- MOV TL1,TH1
- MOV PCON,#00H
- SETB EA
- SETB ES
- SETB TR1
- RET;
- ;-----------------------------------------------
- DELAY100MS: ;誤差 0us 延時由單片機小精靈V1.3生成 晶振 12M 12T模式
- MOV R7,#13H
- DL5: MOV R6,#14H
- DL4: MOV R5,#82H
- DJNZ R5,$
- DJNZ R6,DL4
- DJNZ R7,DL5
- RET
- ;-----------------------------------------------
- $INCLUDE (DIP.ASM)
- $INCLUDE (WUXINHAO.ASM)
- $INCLUDE (UART.ASM)
- END
復制代碼
所有程序51hei提供下載:
315M 433M無線溫度收發.rar
(1.24 MB, 下載次數: 27)
2021-2-20 20:51 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|