基于8051单片机开发的湿度计设计

基于8051单片机开发的湿度计设计,第1张

  在本文中,单片机开发工程师分享了一个基于8051单片机开发的湿度计,这个方案比较简单,以供单片机初学者学习。

  湿度传感器也称为湿度计,在本单片机方案中,其电路可以以5%的精度感测20%至95%的相对湿度(RH),湿度信息可以显示在16×2 LCD显示屏上。另外,在本单片机方案中,还提供了一个继电器,也就是说当湿度超过某个跳变点时,该继电器将被激活,执行某些 *** 作。

  一、DHT11湿度传感器

  DHT11是一款低成本的湿度兼温度传感器,具有数字输出。电容法用于感测湿度,而热敏电阻用于测量温度。传感器可以以5%的分辨率感测20%至95%的相对湿度。温度测量最高可达50°C,分辨率为2°C。与单片机的通信是通过单线进行的。下图为基本的通信方案:

  基于8051单片机开发的湿度计设计,基于8051单片机开发的湿度计设计,第2张

  与DHT11传感器的来回通信非常容易。DHT11的引脚2连接到单片机的端口引脚。连接方案如下图所示,DHT11的数据引脚(引脚2)需要一个外部10K上拉电阻。

  基于8051单片机开发的湿度计设计,基于8051单片机开发的湿度计设计,第3张

  其通信协议原理如下,单片机首先将宽度为18mS的低电平信号发送到DHT11。收到此信号后,单片机拉起通信线,等待DHT11的响应。它最多需要2到40uS。然后DHT11拉低通讯线,并保持低电平80usS。然后DHT11拉高线路,并保持高电平80uS。然后DHT将线拉低50uS,下一个高脉冲将成为数据的第一位。数据以8位突发发送。脉冲串的每个高脉冲表示一个数据信号。数据位之间的50uS低信号只是间隔。数据位的逻辑通过测量其宽度来确定。26至28uS宽的脉冲表示“低”,而70uS宽的脉冲表示“高”。简单来说窄于50uS的脉冲可被视为“低”,宽于50us的脉冲可被视为“高”。数据脉冲串的前8位代表相对湿度的整数值,后8位代表相对湿度的十进制值,后8位代表温度数据的整数值,后8位代表十进制值对于DHT11,十进制值始终为零,我们仅在此方案中测量相对湿度。因此,我们只需要关注数据的前8位,这是相对湿度数据的组成部分。下图显示了湿度传感器的电路图。后8位代表相对湿度的十进制值,后8位代表温度数据的整数值,后8位代表温度数据的十进制值,对于DHT11,十进制值始终为零,我们正在测量仅在此方案中的相对湿度。因此,我们只需要关注数据的前8位,这是相对湿度数据的组成部分。下图显示了湿度传感器的电路图。后8位代表相对湿度的十进制值,后8位代表温度数据的整数值,后8位代表温度数据的十进制值,对于DHT11,十进制值始终为零,我们正在测量仅在此方案中的相对湿度。因此,我们只需要关注数据的前8位,这是相对湿度数据的组成部分。下图显示了湿度传感器的电路图。因此,我们只需要关注数据的前8位,这是相对湿度数据的组成部分。下图显示了湿度传感器的电路图。因此,我们只需要关注数据的前8位,这是相对湿度数据的组成部分。下图为湿度传感器的电路图:

  基于8051单片机开发的湿度计设计,基于8051单片机开发的湿度计设计,第4张

  湿度传感器DHT11连接到8051单片机的P3.1。R8拉起DHT11和8051之间的通信线。该继电器由单片机的P2.0驱动。晶体管Q1切换继电器。R0是上拉电阻,R7限制Q1的基极电流。D5只是一个续流二极管。LCD显示器的数据线连接到单片机的端口0。控制线RS,R/E和E分别连接到单片机的P2.7,P2.6和P2.5引脚。R4设置显示的对比度。R5限制流过背光LED的电流。C9是一个旁路电容器。C8、C10和X1与时钟电路相关联。C11、R6和S2构成复位电路。

  二、源代码

  RS EQU P2.7

  RW EQU P2.6

  E EQU P2.5

  ORG 000H

  MOV DPTR,#LUT

  SETB P3.5

  CLR P2.0

  MOV TMOD,#00100001B

  MOV TL1,#00D

  ACALL DINT

  ACALL TEXT1

  MAIN: MOV R1,#8D

  SETB P3.5

  CLR P3.5

  ACALL DELAY1

  SETB P3.5

  HERE:JB P3.5,HERE

  HERE1:JNB P3.5,HERE1

  HERE2:JB P3.5,HERE2

  LOOP:JNB P3.5,LOOP

  RL A

  MOV R0,A

  SETB TR1

  HERE4:JB P3.5,HERE4

  CLR TR1

  MOV A,TL1

  SUBB A,#50D

  MOV A,R0

  JB PSW.7, NEXT

  SETB ACC.0

  SJMP ESC

  NEXT:CLR ACC.0

  ESC: MOV TL1,#00D

  CLR PSW.7

  DJNZ R1,LOOP

  ACALL DINT

  ACALL TEXT1

  ACALL LINE2

  ACALL TEXT2

  ACALL HMDTY

  ACALL CHECK

  ACALL DELAY2

  LJMP MAIN

  DELAY1: MOV TH0,#0B9H

  MOV TL0,#0B0H

  SETB TR0

  HERE5: JNB TF0,HERE5

  CLR TR0

  CLR TF0

  RET

  DELAY2:MOV R1,#112D

  BACK:ACALL DELAY1

  DJNZ R1,BACK

  RET

  CHECK:MOV A,R0

  MOV B,#65D

  SUBB A,B

  JB PSW.7,NEXT1

  ACALL TEXT3

  SETB P2.0

  SJMP ESC1

  NEXT1:ACALL TEXT4

  CLR P2.0

  ESC1:CLR PSW.7

  RET

  CMD: MOV P0,A

  CLR RS

  CLR RW

  SETB E

  CLR E

  ACALL DELAY

  RET

  DISPLAY:MOV P0,A

  SETB RS

  CLR RW

  SETB E

  CLR E

  ACALL DELAY

  RET

  HMDTY:MOV A,R0

  MOV B,#10D

  DIV AB

  MOV R2,B

  MOV B,#10D

  DIV AB

  ACALL ASCII

  ACALL DISPLAY

  MOV A,B

  ACALL ASCII

  ACALL DISPLAY

  MOV A,R2

  ACALL ASCII

  ACALL DISPLAY

  MOV A,#“%”

  ACALL DISPLAY

  RET

  TEXT1: MOV A,#“H”

  ACALL DISPLAY

  MOV A,#“y”

  ACALL DISPLAY

  MOV A,#“g”

  ACALL DISPLAY

  MOV A,#“r”

  ACALL DISPLAY

  MOV A,#“o”

  ACALL DISPLAY

  MOV A,#“m”

  ACALL DISPLAY

  MOV A,#“e”

  ACALL DISPLAY

  MOV A,#“t”

  ACALL DISPLAY

  MOV A,#“e”

  ACALL DISPLAY

  MOV A,#“r”

  ACALL DISPLAY

  RET

  TEXT2: MOV A,#“R”

  ACALL DISPLAY

  MOV A,#“H”

  ACALL DISPLAY

  MOV A,#“ ”

  ACALL DISPLAY

  MOV A,#“=”

  ACALL DISPLAY

  MOV A,#“ ”

  ACALL DISPLAY

  RET

  TEXT3: MOV A,#“ ”

  ACALL DISPLAY

  MOV A,#“ ”

  ACALL DISPLAY

  MOV A,#“O”

  ACALL DISPLAY

  MOV A,#“N”

  ACALL DISPLAY

  RET

  TEXT4:MOV A,#“ ”

  ACALL DISPLAY

  MOV A,#“O”

  ACALL DISPLAY

  MOV A,#“F”

  ACALL DISPLAY

  MOV A,#“F”

  ACALL DISPLAY

  RET

  DINT:MOV A,#0CH

  ACALL CMD

  MOV A,#01H

  ACALL CMD

  MOV A,#06H

  ACALL CMD

  MOV A,#83H

  ACALL CMD

  MOV A,#3CH

  ACALL CMD

  RET

  LINE2:MOV A,#0C0H

  ACALL CMD

  RET

  DELAY: CLR E

  CLR RS

  SETB RW

  MOV P0,#0FFH

  SETB E

  MOV A,P0

  JB ACC.7,DELAY

  CLR E

  CLR RW

  RET

  ASCII: MOVC A,@A+DPTR

  RET

  LUT: DB 48D

  DB 49D

  DB 50D

  DB 51D

  DB 52D

  DB 53D

  DB 54D

  DB 55D

  DB 56D

  DB 57D

  END

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2505030.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存