利用串口+315M 433M模块传输温度 15W204S发射 AT89C2051接收
由于不会使用18B20的序列号 所以使用了三个端口检测温度
发送的数据一共16位 前3位加密 (如果觉得不够可以占用后面的位继续加密)
第4位到第11位显示被测设备名称 设备名不够长就用空位代替 第12位设备序号 第13到16位是四位温度(含零下)
根据接收的设备序号循环显示设备号 显示一秒就隐去 下次收到在显示在隐去
未接入18b20时温度位显示四个横杠 收不到设备信号显示 No input
一个设备发送三个温度数据时 只有接收端收不到信号5秒才会显示三行 No input
如果改一下程序 发射的设备由一个变三个 每个只发送一路数据 (三个不能同时发射 否则接收端会收不到信号)
三个设备任何一个设备无法发送信号 接收端过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;
- ;设备检测 检测是否有设备断开 整体延时大约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提供下载: