久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2884|回復: 5
收起左側

MPL3115A2測出數據不準確問題

[復制鏈接]
ID:72088 發表于 2020-11-18 09:43 | 顯示全部樓層 |閱讀模式
這是又買一個MPL3115A2傳感器模塊測量。結果都是這樣,海拔測出120米,我這實際海拔73米左右,后邊78 是16進制顯示
溫度還是很準確的,手摸反應靈敏
氣壓測出高的離譜,
不是說這模塊測出數據是補償過的嗎?

1副本.jpg
回復

使用道具 舉報

ID:401564 發表于 2020-11-19 08:35 | 顯示全部樓層
這個是IIC通訊協議的,只要有一個數據能讀寫,那么IIC的讀寫就是對的
現在的問題就是你數據處理的問題了,你整了好幾天,都是靠猜,難道不是應該把代碼上傳上來看一下嗎?
不要去懷疑去元件本身的精度,就算是會有元件本身的問題,但這確實少之又少,更何況你手頭上已經有兩個了,換一下就知道結果了
其實就是數據處理的問題而已
回復

使用道具 舉報

ID:72088 發表于 2020-11-19 19:23 | 顯示全部樓層
Y_G_G 發表于 2020-11-19 08:35
這個是IIC通訊協議的,只要有一個數據能讀寫,那么IIC的讀寫就是對的
現在的問題就是你數據處理的問題了,你 ...

匯編程序,大家沒耐心看到最好的
回復

使用道具 舉報

ID:72088 發表于 2020-11-19 19:31 | 顯示全部樓層
        sda  BIT        p1.0   ;SDA數據信號
        scl  BIT        p1.1   ;SCL時鐘信號
           address        equ        31h    ;地址數

        CTRL_REG1 EQU 27H        ;壓力傳感器控制寄存器(測高測壓和復位)
        DIZHI_X        EQU        5AH        ;列地址
        DIZHI_Y        EQU        5BH        ;頁地址(B0-B7)
        SSDDADA EQU 5CH        ;一字節暫存地址

        ORG  00H
        ORG  60H

MAIN:
           CLR A
        MOV P0M1,A       ;00--->準雙向口,  01--->推挽輸出
        MOV P0M0,A          ;10--->高阻輸入,  11--->開漏輸出
        MOV P1M1,A    ;
        MOV P1M0,A
        MOV P2M1,A    ;設置準雙向口
        MOV P2M0,A
        MOV P3M1,A    ;設置準雙向口
        MOV P3M0,A          ;
        MOV P5M1,A    ;設置準雙向口
        MOV P5M0,A         
        MOV SP, #70H;修改堆棧指針
        MOV A,#0
        MOV 20H,A
        MOV 21H,A
        MOV 22H,A
        MOV R7,#0

        MOV IE,#10000000B        ;不允許總中斷,不允許定時器0
        MOV TMOD,#00000001B        ;定時器0=模式1,定時模式
        MOV AUXR,#00000010B        ;定時器0/2都工作12分頻模式

        MOV        SP,#60H
        LCALL RESET                ;初始化OLED0.91
        LCALL QPCX                ;清屏程序
;===================主程序===============================================
ST:
           LCALL reset_M3PR        ;復位M3PR程序
        mov 20h,#10111001b        ;海拔檢測
        LCALL shezhi_M3PR
        LCALL DELAY1S               
        lcall read_M3PR                 ;讀溫度和海拔程序
        LCALL ZHUAN                  ;數據轉換
        lcall DISP_A                ;第一排顯示程序

           LCALL reset_M3PR        ;復位M3PR程序

        mov 20h,#00111001b        ;氣壓檢測
        LCALL shezhi_M3PR
        LCALL DELAY1S
        lcall read_M3PR                 ;讀溫度和氣壓程序
        LCALL ZHUAN_0                  ;數據轉換
        lcall DISP_B                ;第二排顯示程序
        JMP ST


;=====================復位M3PR程序===================================
reset_M3PR:
        lcall start
        mov        a,#11000000B        ;M3PR識別ID
        lcall send
        lcall ack
        jc         write
       
        mov        a,#26h        ;復位地址
        lcall send
        lcall ack
        mov        a,#04H        ;04H寫入26H就完成復位
        lcall send
        lcall ack
        lcall stop
        ret

;=================設置BMPM3PR功能=================================
shezhi_M3PR:

        mov        r6,        #11000000b        ;id        =C0H
        mov r0,#20h                ;r0作為間接尋址
        mov address,#26h        ;開始地址
        mov        r5,        #1
        lcall write
        ret

write:
        lcall start
        mov        a,        r6
        lcall send
        lcall ack
        jc         write
       
        mov        a,        address
        lcall send
        lcall ack
        mov        a,        @r0                ;
        lcall send
        lcall ack
        lcall stop
        inc r0
        inc address
        djnz        r5,        write ;減1后不為0轉移,存儲6位
        ret
       
;=================身份識別BMPM3PR================================
shibie:
        mov r0,#1Ah                        ;r0作為間接尋址
        mov address,#0Ch        ;指向身份寄存器
        mov 1Ah,#0        ;清零
        mov r5,        #1        ;讀出1字節數據          
        mov r2,        #11000000b;寫BMPM3PR識別地址C0H,最后一位是讀寫位       
        mov r4,        #11000001b;讀BMPM3PR識別地址C1H
        Lcall read                ;調用讀I2C程序
        ret
;=================BMPM3PR讀程序==============================
read_M3PR:

        mov r0,#21h                        ;欲讀數據存放地址指針
        mov address,#01H        ;指向數據地址
        mov r5,        #5          
ss:        mov r2,        #11000000b;寫BMPM3PR識別地址       
        mov r4,        #11000001b;讀BMPM3PR
        Lcall read                ;調用讀程序
        inc address
        inc        r0
        djnz r5,ss
        ret
;----------------------------------
read:
        lcall start                ;啟動總線
        mov         a,        r2        ;發送芯片識別碼
        lcall send
        lcall ack                ; 芯片應答
        jc         read                ;
               
        mov         a,        address
        lcall send
        lcall ack
read_a:
        lcall start
        mov         a,r4
        lcall send
        lcall ack
        jc         read_a
rece:
        lcall receive
        mov         @r0,a        ;讀到數據存儲到@R0指定地址
        lcall ack
        lcall stop
        ret

回復

使用道具 舉報

ID:401564 發表于 2020-11-20 14:26 | 顯示全部樓層
新鄉家電維修 發表于 2020-11-19 19:31
sda  BIT        p1.0   ;SDA數據信號
        scl  BIT        p1.1   ;SCL時鐘信號
           address        equ        31h    ;地址數

沒有完整的代碼,看不明白,最主要的數據轉換部分沒有
以下是我改了你的代碼,你參照一下
;=================BMPM3PR讀程序==============================
read_M3PR:
        mov         r0,#21h         ;
        mov         address,#01H    ;
        mov         r5,#5         
ss:     mov         r2,#11000000b        ;      
        mov         r4,#11000001b        ;
        Lcall         read            ;
        inc         address
        inc     r0
        djnz         r5,ss
ret
/*                讀取數據這一塊,最好是直接用 OUT_P_MSB  DATA                030H
                                                                        OUT_P_CSB  DATA                031H
                                                                        OUT_P_LSB  DATA                032H
                專門用來存放海拔三個數據,用R0指向容易混亂*/
;==========================================================
read:        lcall         start        ;
        mov     a,r2        ;
        lcall         send
        lcall         ack         ;
        jc      read        ;沒有完整代碼,看不明白這什么意思?               
        mov     a,address
        lcall         send
        lcall         ack
read_a:        lcall         start
        mov     a,r4
        lcall         send
        lcall         ack
        jc      read_a
rece:        lcall         receive
        mov     @r0,a        
        lcall         ack                 ;讀取一個地址的數據之后,這里應該是要發送一個不應答信號,而不是應答,這條指令不要了
/*                CLR                SCL
                延時
                SETB        SDA
                延時
                SETB        SCL
                延時
                CLR                SCSL
                延時
                CLR                SDA
這要發送一個不應答信號*/
        lcall         stop
ret
;===========================================================
回復

使用道具 舉報

ID:72088 發表于 2020-11-21 16:39 | 顯示全部樓層
Y_G_G 發表于 2020-11-20 14:26
沒有完整的代碼,看不明白,最主要的數據轉換部分沒有
以下是我改了你的代碼,你參照一下
;============== ...

我試試
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线观看精品 | www.国产| 99tv| 日日日色 | 欧美成人精品在线观看 | 国产精品久久久久久久久久 | 国产精品久久久久一区二区三区 | 国产美女黄色片 | 日本三级全黄三级三级三级口周 | 国产成人精品a视频 | 一区在线播放 | 亚洲一区视频 | 成人h电影在线观看 | 成人一区二区电影 | 日韩三级免费观看 | 国产97视频在线观看 | 国精日本亚洲欧州国产中文久久 | 亚洲精品一区二区在线观看 | 精品福利一区二区三区 | 欧洲色综合| 免费天天干 | 91精品国产一区二区在线观看 | 久久草在线视频 | 在线欧美小视频 | 亚洲精品在线免费看 | 黄色国产视频 | 午夜在线免费观看视频 | 伊人网站 | 蜜桃视频成人 | 美女拍拍拍网站 | 欧美精品成人一区二区三区四区 | 亚洲欧美中文字幕在线观看 | 成人午夜免费视频 | 日韩网站在线 | 亚洲欧洲中文日韩 | 国产精品不卡视频 | 天天天天操 | 精品婷婷 | 国产精品久久久久久久久久 | 99久热在线精品视频观看 | 久久精品中文 |