人狗畜禽COMPANY LIMITED|全是肉的高H文〈男男〉|全篇肉高H秘书被C办公室四爱|全黄H全肉共妻|全黄H全肉短篇禁乱NP慕浅浅|全黄H全肉短篇N男男

技術熱線: 4007-888-234

技術支持

如何使用8051單片機制作一個濕度計

更新時間: 2019-11-14

在本文中,英銳恩單片機開發(fā)工程師分享了一個基于8051單片機開發(fā)的濕度計,這個方案比較簡單,以供單片機初學者學習。

濕度傳感器也稱為濕度計,在本單片機方案中,其電路可以以5%的精度感測20%至95%的相對濕度(RH),濕度信息可以顯示在16×2 LCD顯示屏上。另外,在本單片機方案中,還提供了一個繼電器,也就是說當濕度超過某個跳變點時,該繼電器將被激活,執(zhí)行某些操作。

一、的DHT11濕度傳感器

DHT11-pinout.png

DHT11是一款低成本的濕度兼溫度傳感器,具有數(shù)字輸出。電容法用于感測濕度,而熱敏電阻用于測量溫度。傳感器可以以5%的分辨率感測20%至95%的相對濕度。溫度測量最高可達50°C,分辨率為2°C。與單片機的通信是通過單線進行的。下圖為基本的通信方案:

DHT11-communication.png

與DHT11傳感器的來回通信非常容易。DHT11的引腳2連接到單片機的端口引腳。連接方案如下圖所示,DHT11的數(shù)據(jù)引腳(引腳2)需要一個外部10K上拉電阻。

DHT11-connection-diagram.png

其通信協(xié)議原理如下,單片機首先將寬度為18mS的低電平信號發(fā)送到DHT11。收到此信號后,單片機拉起通信線,等待DHT11的響應。它最多需要2到40uS。然后DHT11拉低通訊線,并保持低電平80usS。然后DHT11拉高線路,并保持高電平80uS。然后DHT將線拉低50uS,下一個高脈沖將成為數(shù)據(jù)的第一位。數(shù)據(jù)以8位突發(fā)發(fā)送。脈沖串的每個高脈沖表示一個數(shù)據(jù)信號。數(shù)據(jù)位之間的50uS低信號只是間隔。數(shù)據(jù)位的邏輯通過測量其寬度來確定。26至28uS寬的脈沖表示“低”,而70uS寬的脈沖表示“高”。簡單來說窄于50uS的脈沖可被視為“低”,寬于50us的脈沖可被視為“高”。數(shù)據(jù)脈沖串的前8位代表相對濕度的整數(shù)值,后8位代表相對濕度的十進制值,后8位代表溫度數(shù)據(jù)的整數(shù)值,后8位代表十進制值對于DHT11,十進制值始終為零,我們僅在此方案中測量相對濕度。因此,我們只需要關注數(shù)據(jù)的前8位,這是相對濕度數(shù)據(jù)的組成部分。下圖顯示了濕度傳感器的電路圖。后8位代表相對濕度的十進制值,后8位代表溫度數(shù)據(jù)的整數(shù)值,后8位代表溫度數(shù)據(jù)的十進制值,對于DHT11,十進制值始終為零,我們正在測量僅在此方案中的相對濕度。因此,我們只需要關注數(shù)據(jù)的前8位,這是相對濕度數(shù)據(jù)的組成部分。下圖顯示了濕度傳感器的電路圖。后8位代表相對濕度的十進制值,后8位代表溫度數(shù)據(jù)的整數(shù)值,后8位代表溫度數(shù)據(jù)的十進制值,對于DHT11,十進制值始終為零,我們正在測量僅在此方案中的相對濕度。因此,我們只需要關注數(shù)據(jù)的前8位,這是相對濕度數(shù)據(jù)的組成部分。下圖顯示了濕度傳感器的電路圖。因此,我們只需要關注數(shù)據(jù)的前8位,這是相對濕度數(shù)據(jù)的組成部分。下圖顯示了濕度傳感器的電路圖。因此,我們只需要關注數(shù)據(jù)的前8位,這是相對濕度數(shù)據(jù)的組成部分。下圖為濕度傳感器的電路圖:

humidity-sensor.png

濕度傳感器DHT11連接到8051單片機的P3.1。R8拉起DHT11和8051之間的通信線。該繼電器由單片機的P2.0驅(qū)動。晶體管Q1切換繼電器。R0是上拉電阻,R7限制Q1的基極電流。D5只是一個續(xù)流二極管。LCD顯示器的數(shù)據(jù)線連接到單片機的端口0??刂凭€RS,R/E和E分別連接到單片機的P2.7,P2.6和P2.5引腳。R4設置顯示的對比度。R5限制流過背光LED的電流。C9是一個旁路電容器。C8、C10和X1與時鐘電路相關聯(lián)。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


以上就是英銳恩單片機開發(fā)工程師分享的使用8051單片機開發(fā)的濕度計。英銳恩專注單片機應用方案設計與開發(fā),提供8位單片機、16位單片機、32位單片機。

404
返回首頁 |  返回上一頁
平武县| 明水县| 油尖旺区| 罗平县| 蛟河市| 都江堰市| 新乐市| 芦溪县| 靖安县| 太白县| 斗六市| 伽师县| 米泉市| 香河县| 临江市| 北票市| 四子王旗| 樟树市| 铜山县| 临江市| 西安市| 楚雄市| 宾阳县| 卫辉市| 石狮市| 安多县| 武邑县| 会泽县| 灌南县| 怀仁县| 黔江区| 杭州市| 孟连| 始兴县| 根河市| 镇原县| 沧州市| 邛崃市| 定兴县| 邯郸市| 东乡族自治县|