在本文中,英锐恩单片机开发工程师分享了一个基于8051单片机开发的湿度计,这个方案比较简单,以供单片机初学者学习。
湿度传感器也称为湿度计,在本单片机方案中,其电路可以以5%的精度感测20%至95%的相对湿度(RH),湿度信息可以显示在16×2 LCD显示屏上。另外,在本单片机方案中,还提供了一个继电器,也就是说当湿度超过某个跳变点时,该继电器将被激活,执行某些操作。
一、的DHT11湿度传感器
DHT11是一款低成本的湿度兼温度传感器,具有数字输出。电容法用于感测湿度,而热敏电阻用于测量温度。传感器可以以5%的分辨率感测20%至95%的相对湿度。温度测量最高可达50°C,分辨率为2°C。与单片机的通信是通过单线进行的。下图为基本的通信方案:
与DHT11传感器的来回通信非常容易。DHT11的引脚2连接到单片机的端口引脚。连接方案如下图所示,DHT11的数据引脚(引脚2)需要一个外部10K上拉电阻。
其通信协议原理如下,单片机首先将宽度为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位,这是相对湿度数据的组成部分。下图为湿度传感器的电路图:
湿度传感器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
以上就是英锐恩单片机开发工程师分享的使用8051单片机开发的湿度计。英锐恩专注单片机应用方案设计与开发,提供8位单片机、16位单片机、32位单片机。