|
利用串口+315M 433M模塊傳輸溫度 15W204S發(fā)射 AT89C2051接收
由于不會使用18B20的序列號 所以使用了三個端口檢測溫度
發(fā)送的數(shù)據(jù)一共16位 前3位加密 (如果覺得不夠可以占用后面的位繼續(xù)加密)
第4位到第11位顯示被測設(shè)備名稱 設(shè)備名不夠長就用空位代替 第12位設(shè)備序號 第13到16位是四位溫度(含零下)
根據(jù)接收的設(shè)備序號循環(huán)顯示設(shè)備號 顯示一秒就隱去 下次收到在顯示在隱去
未接入18b20時溫度位顯示四個橫杠 收不到設(shè)備信號顯示 No input
一個設(shè)備發(fā)送三個溫度數(shù)據(jù)時 只有接收端收不到信號5秒才會顯示三行 No input
如果改一下程序 發(fā)射的設(shè)備由一個變?nèi)齻 每個只發(fā)送一路數(shù)據(jù) (三個不能同時發(fā)射 否則接收端會收不到信號)
三個設(shè)備任何一個設(shè)備無法發(fā)送信號 接收端過5秒就會顯示 No input
制作出來的實物圖如下:
單片機源程序如下:
-
- ; 延時、波特率由單片機小精靈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;
- ;設(shè)備檢測 檢測是否有設(shè)備斷開 整體延時大約5秒
- LOOP:
- LCALL DELAY100MS; 100*50=5000MS=5S
- ;設(shè)備1
- JNB FLAG1,TM2; 收到信號向下執(zhí)行
- MOV A,RX1;
- INC A;
- MOV RX1,A;
- CJNE A,#10,TMA; 延時1秒
- MOV 40H,#" ";
- LCALL DIP_SHU; 不顯示接收設(shè)備號
- TMA: CJNE A,#50,TM2; 延時5秒
- CLR FLAG1;
- MOV 40H,#" ";
- LCALL DIP_N_1; 顯示無信號輸入 No input
- LCALL DIP_SHU; 不顯示接收設(shè)備號
- ;-----------------------------------------------------
- ;設(shè)備2
- TM2: JNB FLAG2,TM3;
- MOV A,RX2;
- INC A;
- MOV RX2,A;
- CJNE A,#10,TMB; 延時1秒
- MOV 41H,#" ";
- LCALL DIP_SHU; 不顯示接收設(shè)備號
- TMB: CJNE A,#50,TM3; 延時5秒
- CLR FLAG2;
- MOV 41H,#" ";
- LCALL DIP_N_2; 顯示無信號輸入 No input
- LCALL DIP_SHU; 不顯示接收設(shè)備號
- ;-----------------------------------------------------
- ;設(shè)備3
- TM3: JNB FLAG3,TMO;
- MOV A,RX3;
- INC A;
- MOV RX3,A;
- CJNE A,#10,TMC; 延時1秒
- MOV 42H,#" ";
- LCALL DIP_SHU; 不顯示接收設(shè)備號
- TMC: CJNE A,#50,TMO; 延時5秒
- CLR FLAG3;
- MOV 42H,#" ";
- LCALL DIP_N_3; 顯示無信號輸入 No input
- LCALL DIP_SHU; 不顯示接收設(shè)備號
-
- 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
復(fù)制代碼
所有程序51hei提供下載:
315M 433M無線溫度收發(fā).rar
(1.24 MB, 下載次數(shù): 27)
2021-2-20 20:51 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|