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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2926|回復: 3
收起左側

51單片機1602液晶模塊DS18B20溫度顯示,帶序列號4位分辨率 匯編程序

[復制鏈接]
ID:126173 發表于 2020-6-12 09:42 | 顯示全部樓層 |閱讀模式
;1602液晶模塊高精度4位小數顯示,溫度分辨率0.0625℃      
;液晶模塊第一行顯示的是DS18B20的64位激光序列號        
;液晶模塊第二行顯示的是實際溫度               



        ORG        0000H
        AJMP        START
               
        ORG        0033H
START:        
        DQ        BIT        P3.3    ;此接DS18B20信號腳
        RS         BIT         P2.0
        RW         BIT         P2.1
        E          BIT         P2.2
        LED8P        BIT        P2.6
        BLA        BIT        P2.7
        LCD         EQU         P0
        
        DS18B20                BIT        01H
        TEMPERRB        BIT        02H
        TEMPSBIT        BIT        03H
        TEMPFH        EQU        30H        ;溫度符號位
        TEMPBW        EQU        31H        ;溫度"百"位
        TEMPSW        EQU        32H        ;溫度"十"位
        TEMPGW        EQU        33H        ;溫度"個"位
        TEMPXS1        EQU        34H        ;溫度小數位第"1"位
        TEMPXS2        EQU        35H        ;溫度小數位第"2"位
        TEMPXS3        EQU        36H        ;溫度小數位第"3"位
        TEMPXS4        EQU        37H        ;溫度小數位第"4"位        
        TEMPXSD        EQU        38H
        TEMPZS        EQU        39H
        TEMPXS        EQU        3AH
        TEMPL        EQU        3BH
        TEMPH        EQU        3CH
        ID1        EQU        3DH
        ID2        EQU        3EH
        ID3        EQU        3FH
        ID4        EQU        40H
        ID5        EQU        41H
        ID6        EQU        42H
        ID7        EQU        43H
        ID8        EQU        44H
        DLCD1        EQU        46H
        DLCD2        EQU        47H
        DLCD3        EQU        48H
        DLCD4        EQU        49H
        DLCD5        EQU        4AH
        DLCD6        EQU        4BH
        DLCD7        EQU        4CH
        DLCD8        EQU        4DH
        DLCD9        EQU        4EH
        DLCD10        EQU        4FH
        DLCD11        EQU        50H
        DLCD12        EQU        51H
        DLCD13        EQU        52H
        DLCD14        EQU        53H
        DLCD15        EQU        54H
        DLCD16        EQU        55H
               
;---------------------------------------------------------

MAIN:        ACALL        GETTEMP
        JB         DS18B20,MAIN1
        AJMP        MAIN
MAIN1:        
         
        CLR        BLA                ;開啟液晶背光
;        SETB        BLA                ;關閉液晶背光
        LCALL        GETROM
        LCALL        DISPLCD
        AJMP        MAIN
                                                
DISPLCD:                        ;向1602液晶模塊寫入顯示信息
        MOV        P2,#0FFH
        MOV         LCD,#01H        ;寫指令01H,清屏
        LCALL         ENABLE
        MOV         LCD,#38H        ;寫指令38H,設定LCD為16*2顯示,5*7點陣,8位數據接口
        LCALL         ENABLE
        MOV         LCD,#0FH        ;寫指令0FH,顯示ON,光標ON,閃爍ON
        LCALL         ENABLE
        MOV         LCD,#06H        ;寫指令06H,光標輸入方式增量移位
        LCALL         ENABLE
        
        MOV        A,ID1
        SWAP        A
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD1,A
        MOV        A,ID1
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD2,A
        MOV        A,ID2
        SWAP        A
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD3,A
        MOV        A,ID2
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD4,A
        MOV        A,ID3
        SWAP        A
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD5,A
        MOV        A,ID3
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD6,A
        MOV        A,ID4
        SWAP        A
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD7,A
        MOV        A,ID4
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD8,A
        MOV        A,ID5
        SWAP        A
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD9,A
        MOV        A,ID5
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD10,A
        MOV        A,ID6
        SWAP        A
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD11,A
        MOV        A,ID6
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD12,A
        MOV        A,ID7
        SWAP        A
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD13,A
        MOV        A,ID7
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD14,A
               
        MOV        A,ID8
        SWAP        A
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD15,A
        MOV        A,ID8
        ANL        A,#0FH
        MOV        DPTR,#TABHEX
        MOVC        A,@A+DPTR
        MOV        DLCD16,A

;------- 液晶模塊顯示程序---------
        MOV         LCD,#80H        ;第一行顯示第1個字符的位置            
        ACALL         ENABLE
        MOV         R0,#DLCD1
        CALL         WRITE1
        MOV         LCD,#0C0h        ;第二行位置                           
        CALL         ENABLE
        MOV        DLCD1,#20H
        MOV        DLCD2,#54H
        MOV        DLCD3,#45H
        MOV        DLCD4,#4DH
        MOV        DLCD5,#50H
        MOV        DLCD6,#3AH
               
        MOV        A,TEMPSW
        ORL        A,#00110000B
        MOV        DLCD7,A
        MOV        A,TEMPGW
        ORL        A,#00110000B
        MOV        DLCD8,A
        MOV        DLCD9,#2EH
        MOV        A,TEMPXS1
        ORL        A,#00110000B
        MOV        DLCD10,A
        MOV        A,TEMPXS2
        ORL        A,#00110000B
        MOV        DLCD11,A
        MOV        A,TEMPXS3
        ORL        A,#00110000B
        MOV        DLCD12,A
        MOV        A,TEMPXS4
        ORL        A,#00110000B
        MOV        DLCD13,A
        MOV        DLCD14,#0DFH
        MOV        DLCD15,#43H
        MOV        DLCD16,#20H
        MOV         R0,#DLCD1
        CALL         WRITE1
        RET

ENABLE:                                ;寫命令時序
        CLR         RS
        CLR         RW
        CLR         E
;        ACALL        YS806U
        MOV        R7,#188
        DJNZ        R7,$
        SETB         E
        RET

WRITE1:                                        ;寫字符串                                                   
        MOV         R1,#16
A1:        MOV         A,@R0
        CALL         WRITE2
        INC         R0
        DJNZ         R1,A1
        RET

WRITE2:              ;寫單個字符                                                                             
        MOV         LCD,A
        SETB         RS
        CLR         RW                          
        CLR         E
        CALL         DELAY1
        SETB         E
        RET

DELAY1:
        MOV         R7,#1
D11:        MOV         R6,#18
D12:        DJNZ         R6,D12
        DJNZ         R7,D11
        RET

;|------------------------------------------------|
;| 讀出DS18B20序列號應用程序
;|------------------------------------------------|
GETROM:        CLR         EA
        LCALL         INIT18B20
        JB         DS18B20,GETROM1
        SETB        EA
        RET
GETROM1:MOV         A,#33H
        LCALL         WRITE18B20        ;送入讀DS18B20的ROM命令
        MOV         R4,#8                 ;從DS18B20中讀出8字節ROM數據
        MOV         R1,#ID1
        LCALL         READ18B20
        SETB         EA
        RET

GETTEMP:CLR        EA
        LCALL         INIT18B20        ;先復位DS18B20
        JB         DS18B20,TSS2
        SETB        EA
        RET
TSS2:        MOV         A,#0CCH         ; 跳過ROM匹配
        LCALL         WRITE18B20
        MOV         A,#44H                 ; 發出溫度轉換命令
        LCALL         WRITE18B20
        LCALL        YS800M                ;延時0.8S,延時>750MS
        LCALL         INIT18B20
        MOV         A,#0CCH         ;跳過ROM匹配
        LCALL         WRITE18B20
        MOV         A,#0BEH         ;發出讀溫度命令
        LCALL         WRITE18B20
        MOV         R4,#2                 ;從DS18B20中讀出2字節溫度數據
        MOV         R1,#TEMPL
        LCALL         READ18B20        ;讀溫度
        SETB        EA


DOTEMP:        MOV        TEMPXSD,#2EH
TESTS1:        MOV        A,TEMPH
        ANL        A,#11111000B
        CJNE        A,#0F8H,TESTS0
        MOV        TEMPFH,#0FFH
        SETB        TEMPSBIT
        CLR        TEMPERRB
        LJMP        DOTEMP1
TESTS0:        CJNE        A,#00H,TEMPERR
        MOV        TEMPFH,#00H
        CLR        TEMPSBIT
        CLR        TEMPERRB
        LJMP        DOTEMP1
TEMPERR:
        SETB        TEMPERRB
        LJMP        TEMPRET
DOTEMP1:
        JNB        TEMPSBIT,DOTEMP2
        MOV        A,TEMPH
        CPL        A
        MOV        TEMPH,A
        MOV        A,TEMPL
        CPL        A
        CLR        C
        ADD        A,#1
        MOV        TEMPL,A
        MOV        A,TEMPH
        ADDC        A,#00H
        ANL        A,#00000111B
        MOV        TEMPH,A
DOTEMP2:
        MOV        A,TEMPH
        SWAP        A
        MOV        TEMPH,A
        MOV        A,TEMPL
        ANL        A,#00001111B
        MOV        TEMPXS,A
        MOV        A,TEMPL
        ANL        A,#11110000B
        SWAP        A
        MOV        R1,TEMPH
        ORL        A,R1
        MOV        TEMPZS,A
HBCD:
        MOV        A,TEMPZS
        MOV         B,#100
        DIV         AB
        MOV         TEMPBW,A
        MOV         A,#10
        XCH         A,B
        DIV         AB
        MOV         TEMPSW,A
        MOV        A,B
        MOV         TEMPGW,A
FLXS:        MOV        R2,#4
        MOV        A,TEMPXS
        ANL        A,#00001111B
        MOV        B,#4
        MUL        AB
        MOV        R1,A
        MOV        R0,#TEMPXS1
FLXS1:        MOV        DPTR,#DISPXS
        MOV        A,R1
        MOVC        A,@A+DPTR
        MOV        @R0,A
        INC        R0
        INC        R1
        DJNZ        R2,FLXS1
                        
TEMPRET:
        SETB        EA
        RET

;-----------------------------------------------------
INIT18B20:
        SETB        DQ
        NOP
        CLR        DQ
        MOV        R0,#107                ;主機發出延時537微秒的復位低脈沖[2]
        MOV         R1,#3
TSR1:        DJNZ         R0,TSR1
        MOV         R0,#107
        DJNZ         R1,TSR1
        SETB         DQ
        NOP
        NOP
        NOP
        MOV         R0,#25H
TSR2:        JNB         DQ,TSR3
        DJNZ         R0,TSR2
        AJMP         TSR4
TSR3:        SETB         DS18B20
        AJMP         TSR5
TSR4:        CLR         DS18B20
        AJMP         TSR7
TSR5:        MOV         R0,#107
TSR6:        DJNZ         R0,TSR6
TSR7:        SETB         DQ
        JNB        DQ,$
        RET


READ18B20:
        MOV         R2,#8
RE01:        CLR         C
        SETB         DQ
        NOP
        NOP
        CLR         DQ
        NOP
        NOP
        NOP
        SETB         DQ
        MOV         R3,#09
RE10:        DJNZ         R3,RE10
        MOV         C,DQ
        MOV         R3,#23
RE20:        DJNZ         R3,RE20
        RRC         A
        DJNZ         R2,RE01
        MOV         @R1,A
        INC         R1
        DJNZ         R4,READ18B20
        RET

;寫DS18B20的子程序
WRITE18B20:
        MOV         R2,#8
        CLR         C
WR18:        CLR         DQ
        MOV         R3,#6
        DJNZ         R3,$
        RRC         A
        MOV         DQ,C
        MOV         R3,#23
        DJNZ         R3,$
        SETB         DQ
        NOP
        DJNZ         R2,WR18
        SETB         DQ
        RET

DISPXS:
        DB        00H,00H,00H,00H,00H,06H,02H,05H,01H,02H,05H,00H,01H,08H,07H,05H
        DB        02H,05H,00H,00H,03H,01H,02H,05H,03H,07H,05H,00H,04H,03H,07H,05H
        DB        05H,00H,00H,00H,05H,06H,02H,05H,06H,02H,05H,00H,06H,08H,07H,05H
        DB        07H,05H,00H,00H,08H,01H,02H,05H,08H,07H,05H,00H,09H,03H,07H,05H
TABHEX:        DB        30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H
               


;********  延時程序  ********
YS806U:        MOV        R4,#19                 ;延時806微秒
Y1:         MOV        R5,#18                ;[1]
        DJNZ        R5,$                ;[2]
        DJNZ        R4,Y1                 ;[2]
        RET                        ;[1]

YS4722U:MOV        R4,#10                 ;延時4722微秒
Y3:        MOV        R5,#216                ;[1]
        DJNZ        R5,$                ;[2]
        DJNZ        R4,Y3                 ;[2]
        RET                        ;[1]
        
;********** 10ms延時程序 ***********
YS10MS:        MOV        R7,#128
DL1:        MOV        R6,#0FFH
DL0:        DJNZ        R6,DL0
        DJNZ        R7,DL1
        RET

YS118M:        MOV          R1,#25                ;延時118MS
Y5:        ACALL  YS4722U
        DJNZ   R1,Y5
        RET

YS500M:        MOV        R3,#40                ;延時1000MS
Y5_1:        MOV        R4,#10                 ;[1]延時5MS
Y5_2:        MOV        R5,#228                ;[1]
        DJNZ        R5,$                ;[2]
        DJNZ        R4,Y5_2                ;[2]
        DJNZ        R3,Y5_1                ;[2]
        RET                        ;[1]

YS800M:        MOV        R3,#45
YYSS1:        
;        LCALL        DISP
        DJNZ        R3,YYSS1
        RET

YS1000M:MOV        R3,#200                ;延時1000MS
Y4_1:        MOV        R4,#10                 ;[1]延時5MS
Y4_2:        MOV        R5,#228                ;[1]
        DJNZ        R5,$                ;[2]
        DJNZ        R4,Y4_2                ;[2]
        DJNZ        R3,Y4_1                ;[2]
        RET                        ;[1]


;******* 按鍵音效延時(50ms)子程序 *******
SOUND:        MOV        R7,#228
SDL1:        CPL        p3.7
        MOV        R6,#0FFH
SDL0:        DJNZ        R6,SDL0
        DJNZ        R7,SDL1
        RET

        END

回復

使用道具 舉報

ID:328014 發表于 2020-6-12 15:19 | 顯示全部樓層
有原理圖嗎?
回復

使用道具 舉報

ID:99987 發表于 2020-6-12 16:14 | 顯示全部樓層
不錯很牛!
回復

使用道具 舉報

ID:126173 發表于 2020-6-13 17:39 | 顯示全部樓層
51單片機驅動 DS18B20 就不需要原理圖了吧,單片機最小系統,然后我是用P3.3接的DS18B20數據腳,你也可以跟據你的需要去接。很簡單的。
我這里到是有自己用示波器 測的 DS18B20在11.0592MHZ晶振的51單片機系統里的時序波形圖,不過整個CSV文件有160M多,不方便上傳,而且你看的話也會覺得枯燥無趣的。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日干夜夜操 | 韩日在线视频 | 国产亚洲欧美在线 | 亚洲一区二区三区四区五区午夜 | 免费一级欧美在线观看视频 | 亚洲一区高清 | 欧美激情五月 | 99国产精品视频免费观看一公开 | 色性av| 九九视频在线观看 | 免费看a | 国产色片| 国产精品嫩草影院精东 | 日韩精品久久久久 | 免费观看日韩av | 久久影音先锋 | 一区不卡在线观看 | 99热碰 | 久久精品成人热国产成 | av中文字幕在线观看 | 特级生活片 | 在线观看黄色 | 天天操天天操 | 日本精品视频在线观看 | 国产区在线观看 | 欧美一区二区二区 | 亚洲精品18 | 国产成人综合在线 | 免费国产一区二区 | 波多野结衣一区二区三区 | 日日夜夜影院 | 狠狠夜夜| 国产一区二区三区欧美 | 亚洲一区欧美 | 国产成人综合亚洲欧美94在线 | 亚洲一区二区三区免费在线观看 | 国产小视频在线观看 | 亚洲激情专区 | 精品国产一区二区三区成人影院 | 欧美精品成人一区二区三区四区 | 波多野结衣一二三区 |