找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2184|回复: 3
收起左侧

315M 433M无线温度收发 单片机汇编语言程序 LCD2004显示

[复制链接]
ID:261025 发表于 2021-2-20 20:58 | 显示全部楼层 |阅读模式
利用串口+315M 433M模块传输温度    15W204S发射     AT89C2051接收   
由于不会使用18B20的序列号  所以使用了三个端口检测温度  
发送的数据一共16位   前3位加密  (如果觉得不够可以占用后面的位继续加密)
第4位到第11位显示被测设备名称 设备名不够长就用空位代替   第12位设备序号   第13到16位是四位温度(含零下)
根据接收的设备序号循环显示设备号  显示一秒就隐去  下次收到在显示在隐去
未接入18b20时温度位显示四个横杠    收不到设备信号显示  No input  
一个设备发送三个温度数据时  只有接收端收不到信号5秒才会显示三行  No input  
如果改一下程序 发射的设备由一个变三个 每个只发送一路数据  (三个不能同时发射 否则接收端会收不到信号)
三个设备任何一个设备无法发送信号   接收端过5秒就会显示  No input

制作出来的实物图如下:
51hei截图20210220170827.jpg 51hei截图20210220210208.jpg 51hei截图20210220210239.jpg

单片机源程序如下:




  1. ;  延时、波特率由单片机小精灵V1.3生成  晶振 12M   12T模式
  2. ;  89C2051   12M           2400BPS   接收温度
  3.           RS  BIT P3.3;                                                                                          
  4.           RW  BIT P3.4;                                                                                             
  5.           E   BIT P3.5;         
  6.                   LED BIT P3.7;           收到信号闪一下

  7.                   RX1 EQU 02H;           用于无信号计时  改地址后有可能计时无效
  8.                   RX2 EQU 03H;
  9.                   RX3 EQU 08H;

  10.                   FLAG1   EQU   20H.1;         收到信号后置1  无信号置0
  11.                   FLAG2   EQU   20H.2;
  12.                   FLAG3   EQU   20H.3;

  13.             ORG 0000H
  14.         LJMP START
  15.         ORG 0023H
  16.         LJMP UART_ISR;串口中断
  17. ;--------------------------------------
  18. START:  MOV RX1,#0;
  19.                 MOV RX2,#0;
  20.             MOV RX3,#0;

  21.             CLR FLAG1
  22.                 CLR FLAG2
  23.                 CLR FLAG3

  24.                 MOV 40H,#" ";
  25.                 MOV 41H,#" ";
  26.                 MOV 42H,#" ";

  27.         MOV SP,#60H
  28.         LCALL InitUART
  29.         LCALL LCD1602;初始化
  30.             LCALL DIP_G;显示固定符号          TEMP
  31.                 LCALL DIP_N_1;显示无信号输入  No input
  32.                 LCALL DIP_N_2;
  33.                 LCALL DIP_N_3;

  34. ;设备检测           检测是否有设备断开  整体延时大约5秒
  35. LOOP:
  36.                 LCALL DELAY100MS;         100*50=5000MS=5S
  37. ;设备1        
  38.         JNB FLAG1,TM2;                收到信号向下执行
  39.                 MOV A,RX1;
  40.                 INC A;
  41.                 MOV RX1,A;
  42.                 CJNE A,#10,TMA;                延时1秒
  43.                 MOV 40H,#" ";
  44.                 LCALL DIP_SHU;            不显示接收设备号
  45. TMA:        CJNE A,#50,TM2;                延时5秒
  46.                 CLR FLAG1;                        
  47.                 MOV 40H,#" ";
  48.                 LCALL DIP_N_1;      显示无信号输入  No input
  49.                 LCALL DIP_SHU;            不显示接收设备号
  50. ;-----------------------------------------------------
  51. ;设备2
  52. TM2:         JNB FLAG2,TM3;
  53.         MOV A,RX2;
  54.         INC A;
  55.                 MOV RX2,A;
  56.                 CJNE A,#10,TMB;                延时1秒
  57.                 MOV 41H,#" ";
  58.                 LCALL DIP_SHU;            不显示接收设备号
  59. TMB:        CJNE A,#50,TM3;                延时5秒
  60.             CLR FLAG2;
  61.                 MOV 41H,#" ";
  62.                 LCALL DIP_N_2;            显示无信号输入  No input
  63.                 LCALL DIP_SHU;            不显示接收设备号
  64. ;-----------------------------------------------------
  65. ;设备3
  66. TM3:        JNB FLAG3,TMO;
  67.              MOV A,RX3;
  68.         INC A;
  69.                 MOV RX3,A;
  70.                 CJNE A,#10,TMC;                延时1秒
  71.                 MOV 42H,#" ";
  72.                 LCALL DIP_SHU;            不显示接收设备号
  73. TMC:        CJNE A,#50,TMO;                延时5秒
  74.                 CLR FLAG3;
  75.                 MOV 42H,#" ";
  76.                 LCALL DIP_N_3;            显示无信号输入  No input
  77.                 LCALL DIP_SHU;            不显示接收设备号
  78.          
  79. TMO:        LJMP LOOP;
  80. ;---------------------------------------
  81. InitUART:
  82.         MOV TMOD,#20H ;12M           2400BPS   波特率由单片机小精灵V1.3生成  晶振 12M   12T模式
  83.         MOV SCON,#50H
  84.         MOV TH1,#0F3H
  85.         MOV TL1,TH1
  86.         MOV PCON,#00H
  87.         SETB EA
  88.         SETB ES
  89.         SETB TR1
  90.                 RET;
  91. ;-----------------------------------------------
  92. DELAY100MS:   ;误差 0us                 延时由单片机小精灵V1.3生成  晶振 12M   12T模式
  93.         MOV R7,#13H
  94. DL5:        MOV R6,#14H
  95. DL4:    MOV R5,#82H
  96.         DJNZ R5,$
  97.         DJNZ R6,DL4
  98.         DJNZ R7,DL5
  99.         RET
  100. ;-----------------------------------------------
  101. $INCLUDE (DIP.ASM)
  102. $INCLUDE (WUXINHAO.ASM)
  103. $INCLUDE (UART.ASM)

  104.             END
复制代码

所有程序51hei提供下载:
315M 433M无线温度收发.rar (1.24 MB, 下载次数: 27)

评分

参与人数 1黑币 +90 收起 理由
admin + 90 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:336378 发表于 2021-2-23 15:52 | 显示全部楼层
大神,程序小点用绘编方便,  如大了的话就比较麻烦了的, 后面升级维护带来不方便。
回复

使用道具 举报

ID:261025 发表于 2021-2-23 17:22 | 显示全部楼层
cba_cba 发表于 2021-2-23 15:52
大神,程序小点用绘编方便,  如大了的话就比较麻烦了的, 后面升级维护带来不方便。

不会C语言 C语言确实需要的程序少 可我怎么改怎么错   
汇编我分类了  需要改哪就去哪里改  比程序全在一页里轻松多了   
$INCLUDE (DIP.ASM)
$INCLUDE (WUXINHAO.ASM)
$INCLUDE (UART.ASM)
回复

使用道具 举报

ID:336378 发表于 2021-2-25 08:27 | 显示全部楼层
汇编来说,总体用空间小,芯片资源可以小点,相对成本要底,大部分方案公司都是这样的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表