中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線: 4007-888-234

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

技術(shù)支持

使用8051單片機(jī)開發(fā)超聲波水位控制器

更新時(shí)間: 2021-10-27

在本文中,我們使用超聲波測(cè)距儀模塊和8051單片機(jī)制作一個(gè)簡(jiǎn)單的水位控制器。該水位控制器可監(jiān)測(cè)和控制深達(dá)2m的水箱,測(cè)量精度低至1cm。由于這里沒(méi)有使用機(jī)械浮球開關(guān)或電極,不會(huì)有任何機(jī)械磨損或腐蝕,這使得系統(tǒng)高度可靠。由于超聲波測(cè)距模塊包含大量電子元件,因此必須以任何方式適當(dāng)注意將其與阻尼隔離。

一、HC-SR04超聲波測(cè)距模塊

HC-SR04是這里使用的超聲波測(cè)距模塊。HC-SR04由超聲波發(fā)射器、接收器和必要的電子設(shè)備組成,使其成為一個(gè)獨(dú)立的系統(tǒng)。工作原理非常簡(jiǎn)單。它發(fā)送8個(gè)40KHz聲波脈沖,并拾取反射波。測(cè)量發(fā)送和接收之間的時(shí)間延遲,并根據(jù)等式D=TS/2計(jì)算距離。其中D是距離,T是時(shí)間延遲,S是聲速。HC-SR04的輸出將是一個(gè)寬度與距離成正比的脈沖。從數(shù)據(jù)表中,輸出信號(hào)的寬度將為58uS,距離為1cm。我們需要做的只是向模塊的觸發(fā)引腳發(fā)送一個(gè)10uS寬的觸發(fā)信號(hào),并等待模塊的回波引腳處的輸出脈沖。

HC-SR04-timing-diagram-and-pinout.jpg

超聲波模塊的觸發(fā)引腳連接到單片機(jī)的P3.0。模塊的回聲引腳連接到單片機(jī)的P3.1。LCD模塊的數(shù)據(jù)線通過(guò)單片機(jī)的Port0接口。LCD模塊的控制線RS、RW和E分別連接到單片機(jī)的P2.7、P2.6和P2.5引腳。泵使用單片機(jī)的端口2.0進(jìn)行控制。這里使用的泵是12V汽車擋風(fēng)玻璃清洗泵。電源驅(qū)動(dòng)的泵也將與此電路配合使用,但它們的額定電流必須與您使用的繼電器匹配。無(wú)論如何,在使用電源驅(qū)動(dòng)的情況下工作時(shí)要小心避免觸電風(fēng)險(xiǎn)設(shè)備。

ultrasonic-water-level-controller.jpg

在這里,超聲波測(cè)距模塊放置在面向水面的水箱頂部。水反射模塊發(fā)出的超聲波脈沖。模塊拍攝反射波并測(cè)量時(shí)滯。水面和傳感器之間的距離是根據(jù)收集到的數(shù)據(jù)計(jì)算出來(lái)的,模塊輸出一個(gè)寬度與距離成正比的脈沖。單片機(jī)讀取此輸出脈沖的寬度,并對(duì)其進(jìn)行必要的數(shù)學(xué)運(yùn)算以獲得距離。在這里我們可以看到水位是從上到下測(cè)量的,不像大多數(shù)傳感器從下到上測(cè)量水位。這樣做是為了使該設(shè)備適用于各種深度。由于傳感器放置在水箱的頂部,我們需要從水箱的總深度中減去傳感器到水面的距離,以獲得從底部到頂部的水位。由于不同的水箱具有不同的深度,個(gè)人用戶必須手動(dòng)測(cè)量水箱的深度并使用此數(shù)據(jù)更改程序。

這個(gè)問(wèn)題是通過(guò)測(cè)量從上到下的水平來(lái)解決的。在這里,當(dāng)液位低于頂部20cm時(shí),設(shè)備打開泵,當(dāng)液位升至距頂部5cm時(shí)關(guān)閉泵。LCD屏幕上顯示的水位實(shí)際上是從頂部開始的水面深度。

二、原理介紹

單片機(jī)的P3.0用于觸發(fā)HC-SR04超聲波模塊,單片機(jī)的P3.1用于接收回波信號(hào)。本項(xiàng)目使用了8051單片機(jī)的兩個(gè)定時(shí)器。Timer1在MODE2(8位自動(dòng)重載)下運(yùn)行,Timer0(16位)在MODE1下運(yùn)行。給超聲波模塊的觸發(fā)引腳一個(gè)1uS寬的觸發(fā)信號(hào),單片機(jī)在模塊的回波引腳等待回波信號(hào)。模塊的echopin與單片機(jī)的P3.1相連。使用JNB指令輪詢?cè)撘_的狀態(tài)。當(dāng)此引腳接收到有效回波信號(hào)時(shí),Timer1啟動(dòng)。計(jì)時(shí)器從200D計(jì)數(shù)到255D(55個(gè)計(jì)數(shù)),然后翻轉(zhuǎn)。每次翻轉(zhuǎn)后,再次檢查回聲引腳,如果存在任何回聲信號(hào),則重新啟動(dòng)定時(shí)器。

從HC-SR04的數(shù)據(jù)表中可以清楚地看出,58uS寬的回波脈沖表示1cm。這里我們實(shí)際上是在統(tǒng)計(jì)eco信號(hào)中58uS寬的block的數(shù)量,這個(gè)count直接表示距離的cm。由于單片機(jī)使用12MHz晶振計(jì)時(shí),因此55計(jì)數(shù)意味著55uS。在每個(gè)定時(shí)器周期內(nèi)執(zhí)行的其他指令花費(fèi)大約3uS,因此在每個(gè)定時(shí)器周期內(nèi)總共花費(fèi)58uS。定時(shí)器周期數(shù),即;累加器中的計(jì)數(shù)表示以厘米為單位的距離。

然后對(duì)累加器值進(jìn)行必要的操作,并顯示在LCD屏幕上。這里的程序設(shè)置為當(dāng)液位低于頂部20cm(低液位)時(shí)打開泵,當(dāng)液位上升時(shí)關(guān)閉泵從頂部到5厘米(高水平)。通過(guò)從累加器值中減去20D來(lái)識(shí)別開關(guān)ON條件。如果未設(shè)置進(jìn)位標(biāo)志,則表示水位距離頂部低于20cm,并且電機(jī)已接通。

如果未設(shè)置進(jìn)位標(biāo)志,則調(diào)用OFF子程序。在該子程序中,從累加器中存儲(chǔ)的值中減去5D,并使用JNC指令檢查進(jìn)位標(biāo)志的狀態(tài)。如果未設(shè)置進(jìn)位標(biāo)志,則表示液位距離頂部低于5cm,泵保持開啟。如果設(shè)置了進(jìn)位標(biāo)志,則表示液位距頂部5厘米以上,并且泵已關(guān)閉。

泵通過(guò)單片機(jī)的P2.0控制。使用JB指令檢查該引腳的狀態(tài)。如果此引腳為高電平,則表示泵已開啟,并且LCD上會(huì)顯示“電機(jī)開啟”狀態(tài)信息。如果P2.0引腳為低電平,則表示泵處于關(guān)閉狀態(tài),并且LCD屏幕上顯示狀態(tài)消息“電機(jī)關(guān)閉”。

三、代碼

RS EQU P2.7
RW EQU P2.6
E  EQU P2.5
ORG 00H
      MOV DPTR,#LUT
      CLR P3.0
      SETB P3.1
      MOV TMOD,#00100001B
 MAIN:ACALL DINT
      ACALL TEXT1
      MOV TL1,#200D
      MOV TH1,#200D
      MOV A,#00000000B
      SETB P3.0
      ACALL DELAY1
      CLR P3.0
      HERE: JNB P3.1,HERE
 BACK:SETB TR1
HERE1:JNB TF1,HERE1
      CLR TR1
      CLR TF1
      INC A
      JB P3.1,BACK
      MOV R7,A
      ACALL SPLIT
      ACALL LINE2
      ACALL LEVEL
      ACALL TEXT2
ACALL TEXT3
      ACALL CHECK
      JB P2.0,JUMP
      ACALL TEXT4
      SJMP EXIT2
 JUMP:ACALL TEXT5
EXIT2:ACALL DELAY2
      SJMP MAIN
CHECK:MOV A,R7
      SUBB A,#20D
      JNC ON
      ACALL OFF
      SJMP EXIT
   ON:SETB P2.0
 EXIT:CLR CY
      RET
   
OFF: MOV A,R7
     SUBB A,#5D
     JNC EXIT1
     CLR P2.0
EXIT1:CLR CY
      RET
DELAY1: MOV R6,#2D
LABEL1: DJNZ R6,LABEL1
        RET
DELAY2:MOV R0,#15D
BACK1: MOV TH0,#00000000B
       MOV TL0,#00000000B
       SETB TR0
HERE2: JNB TF0,HERE2
       CLR TR0
       CLR TF0
       DJNZ R0,BACK1
       RET
        
TEXT1: MOV A,#48H
    ACALL DISPLAY
    MOV A,#32H
    ACALL DISPLAY
    MOV A,#4FH
    ACALL DISPLAY
    MOV A,#20H
    ACALL DISPLAY
    MOV A,#4CH
    ACALL DISPLAY
    MOV A,#45H
    ACALL DISPLAY
    MOV A,#56H
    ACALL DISPLAY
    MOV A,#45H
    ACALL DISPLAY
    MOV A,#4CH
    ACALL DISPLAY
    MOV A,#20H
    ACALL DISPLAY
    MOV A,#43H
    ACALL DISPLAY
    MOV A,#54H
    ACALL DISPLAY
    MOV A,#52H
    ACALL DISPLAY
    MOV A,#4CH
    ACALL DISPLAY
    RET
        
 TEXT2:  MOV A,#63H
    ACALL DISPLAY
    MOV A,#6DH
    ACALL DISPLAY
    RET
 
 TEXT3:MOV A,#20H
       ACALL DISPLAY
       MOV A,#4DH
       ACALL DISPLAY
       MOV A,#6FH
       ACALL DISPLAY
       MOV A,#74H
       ACALL DISPLAY
       MOV A,#6FH
       ACALL DISPLAY
       MOV A,#72H
       ACALL DISPLAY
       MOV A,#20H
       ACALL DISPLAY
       RET
 TEXT5: MOV A,#4FH
        ACALL DISPLAY
        MOV A,#4EH
        ACALL DISPLAY
        RET
 
 TEXT4:MOV A,#4FH
       ACALL DISPLAY
       MOV A,#46H
       ACALL DISPLAY
       MOV A,#46H
       ACALL DISPLAY
       RET
        
SPLIT:MOV B,#10D
      DIV AB
      MOV R3,B
      MOV B,#10D
      DIV AB
      MOV R2,B
      MOV R1,A
      RET
LEVEL:MOV A,R1
      ACALL ASCII
      ACALL DISPLAY
      MOV A,R2
      ACALL ASCII
      ACALL DISPLAY
      MOV A,R3
      ACALL ASCII
      ACALL DISPLAY
      RET
 DINT:MOV A,#0CH
    ACALL CMD
    MOV A,#01H
    ACALL CMD
    MOV A,#06H
    ACALL CMD
    MOV A,#80H
    ACALL CMD
    MOV A,#3CH
    ACALL CMD
    RET
LINE2:MOV A,#0C0H
    ACALL CMD
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
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

以上就是英銳恩單片機(jī)開發(fā)工程師分享的“使用8051單片機(jī)開發(fā)超聲波水位控制器”。英銳恩專注單片機(jī)應(yīng)用方案設(shè)計(jì)與開發(fā),提供8位單片機(jī)、16位單片機(jī)、32位單片機(jī)。

404
返回首頁(yè) |  返回上一頁(yè)
武冈市| 肃北| 吴堡县| 广东省| 乌拉特前旗| 舒城县| 衡山县| 合水县| 福泉市| 石嘴山市| 芦溪县| 长泰县| 阆中市| 万山特区| 棋牌| 武清区| 徐汇区| 佳木斯市| 新乡市| 常州市| 永寿县| 东乡族自治县| 江永县| 泌阳县| 南陵县| 山东省| 志丹县| 巴青县| 武冈市| 法库县| 神农架林区| 仙桃市| 海宁市| 左云县| 眉山市| 巴南区| 平谷区| 元氏县| 德惠市| 淄博市| 建湖县|