×
单片机 > 单片机程序设计 > 详情

单片机主机通过DS18B20测温,从机接收并且实时显示温度

发布时间:2024-05-13 发布时间:
|

0 实验任务
所设计的主从式多级通信系统有一个主机和两个从机,其中1#从机的地址设为01H,2#从机的地址设为02H。

主机的RXD和从机的TXD相连,TXD和从机的主机的RXD相连,主机的P1口接2个按钮开关,一个代表1#从机,另一个代表2#从机,主机根据开关的状态,发送要访问的从机的地址,地址相符的从机则点亮发光二极管以示和主机进行通信,然后主机向从机发送数据,从机将接收到的数据进行显示。当按下从机1#的按钮的时候,主机会将实时温度发送给从机,从机通过LCD 1602显示温度。P2.4引脚上的发光二极管指示和主机的通信状态。
主机和从机串口都设置为方式3,波特率为9600。主机发送地址时,TB8为1,主机发送数据时,TB8为0。从机在监听状态时SM2设置为1,接收到的地址若和本机地址相符,点亮P2.0引脚上的发光二极管以示和主机联络成功,并置SM2为0,准备接收数据,否则SM2仍维持为1不变,不接收数据。从机接收完数据后,将接收到的数据送显示,然后从机将SM2设置为1,返回到监听状态。主机根据按钮开关的状态,和相应的从机进行通信。

1 系统方案
1.1 系统分析
根据系统功能要求,可将系统组成结构分为四大部分。单片机控制中心、DS18B20测温模块、LCD 1602显示模块、中断触发模块。
其中,单片机控制中心是核心。DS18B20测温模块是数据输入的主要来源,可以实时测温;LCD 1602显示模块是将温度实时显示,用于显示测量地点的温度;报警模块是监视测量地点的温度有没有超出可接受范围,如果超出,报警模块会以声音方式报警。



单片机汇编语言源程序如下(主机):

  1. ;采用11.0592MHZ晶振

  2. ;++++++++++++执行DJNZ需要两个时间周期+++++++++++++

  3. ;T0定时器 方式1 16位计数

  4. ;1.init

  5. ;2.skip rom

  6. ;3.convert-t

  7. ;4.init

  8. ;5.skip-rom

  9. ;6.read

  10. ;7.receive-data

  11. ;8.cal

  12. ;9.display


  13. DAT BIT P3.7 ;定义P3.7口为DQ线

  14. WDLSB DATA 30H ;定义读出温度低字节,将温度低字节放在30H

  15. WDMSB DATA 31H ;定义读出温度高字节,将温度高字节放在31H


  16. ORG 0000H

  17. LJMP MAIN

  18. ORG 0003H

  19. LJMP INT_EXT0 ;外部中断0入口

  20. ORG 0013H

  21. LJMP INT_EXT1 ;外部中断1入口

  22. ORG 0100H

  23. MAIN:

  24. MOV SP,#60H ;设置堆栈指针


  25. SETB EX0 ;允许外部中断0产生中断

  26. SETB IT0 ;外部中断0为跳沿触发方式

  27. SETB EX1 ;允许外部中断1产生中断

  28. SETB IT1 ;外部中断1为跳沿触发方式

  29. SETB EA ;总中断打开

  30. MOV IP,#01H

  31. ;---DS18B20测温子程序---

  32. LCALL DS18B20_TP ;调用DS18B20测温子程序


  33. HERE:

  34. LJMP HERE

  35. ;----外部中断0子程序

  36. INT_EXT0: ;外部中断子程序

  37. CLR EA ;CPU关中断

  38. PUSH PSW ;现场保护

  39. PUSH ACC

  40. SETB EA ;总中断允许位

  41. MOV TMOD,#20H ;选择定时器T1,波特率是9600

  42. MOV TH1,#0FDH

  43. MOV TL1,#0FDH

  44. SETB TR1 ;运行定时器T1

  45. MOV SCON,#0D8H ;设置串口通信为方式3,SM2=0,RE=1,TB8=1

  46. MOV PCON,#00H ;*****SMOD=0

  47. MOV IE,#00H

  48. MT1:

  49. MOV SBUF,#01H ;发送1#从机地址,呼叫1#从机


  50. LT1:

  51. JBC TI,LT2 ;判TI?TI=1,跳转L2,并将TI=0;否则往下执行

  52. LJMP LT1

  53. LT2:


  54. JBC RI,ST1 ;等待从机应答,如果接收完成,RI=1,转S1,RI=0;

  55. ;如果RI=0,往下执行

  56. LJMP LT2

[1] [2] [3] [4] [5]
单片机DS18B20测温从机接收实时显示温度

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
TQ210天嵌开发板S5PV210 LED闪烁程序C语言代码记录