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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3581|回復: 1
收起左側

18b20顯示亂碼

[復制鏈接]
ID:89258 發表于 2015-9-2 12:33 | 顯示全部樓層 |閱讀模式

小弟最近才學習

小弟最近才學習

ORG   0000H
A_BIT   EQU  20H       ;存放個位數變量
B_BIT   EQU   21H       ;存放十位數變量
FLAG    EQU   38H       ;DS18B20是否存在標志
DQ      EQU  P2.0      
MAIN:    ACALL   RE_TEMP        ;對傳感器設置及讀取   
ACALL   TURN       ;轉化溫度子程序         
         ACALL  DISPLAY         ;顯示子程序
         JMP  MAIN            ;循環                    
RE_TEMP:             ;對DS18B20初始化及讀取   
SETB    DQ            
ACALL   RESET_1820   ;  調用復位子程序   
JB    FLAG,ST         ;判斷DS1820是否存在?   
RET                                            
ST:                         ; DS18B20存在
         MOV    A,#0CCH         ;跳過ROM匹配
ACALL  WRITE_1820      ;寫入數據   
MOV   A,#44H          ;發出溫度轉換命令   
ACALL  WRITE_1820      ;寫入數據   
ACALL   RESET_1820  ;   準備讀溫度前先復位   
MOV   A,#0CCH         ;跳過ROM匹配   
ACALL  WRITE_1820      ;寫入數據   
MOV   A,#0BEH         ;發出讀溫度命令   
ACALL  WRITE_1820      ;寫入數據
ACALL  READ_1820       ;讀出溫度數據            
RET                                          
RESET_1820:      SETB   DQ            ;復位(有具體的時序要求)      
NOP
         CLR    DQ        ;――――――――――――;主機發出延時537微秒的復位低脈沖   
MOV   R1,#3
DLY:    MOV   R0,#107   
DJNZ  R0,$
DJNZ  R1,DLY ;―――――――――――― ;然后拉高數據線   SETB   DQ           
NOP   
NOP   
NOP ;――――――――――――     
MOV   R0,#25H         
T2:  JNB    DQ,T3      ;  等待DS18B20回應   
DJNZ   R0,T2   
JMP   T4           ;――――――――――――
T3:  SETB   FLAG        ;置標志位,表示DS1820存在   
JMP   T5 ;――――――――――――
T4:   CLR    FLAG       ;清標志位,表示DS1820不存在        
JMP   T7 ;――――――――――――
T5:  MOV   R0,#117
T6:  DJNZ  R0,T6           ;時序要求延時一段時間
;――――――――――――
T7:  SETB    DQ         
          RET                                            ;――――――――――――  
WRITE_1820:      MOV   R2,#8           ;寫入DS18B20(有具體的時序要求)   一共8位數據   
CLR   C
WR1: CLR   DQ             ;總線低位,開始寫入     
MOV   R3,#7
         DJNZ  R3,$            ;保持16微秒以上   
RRC   A    ;把字節DATA分成8個BIT環移給C   
MOV   DQ,  C         ;寫入一個BIT   
MOV   R3,#23
         DJNZ  R3,$            ;等待   SETB  DQ            ;重新釋放總線   NOP
         DJNZ  R2,WR1          ;寫入下一個BIT
SETB   DQ           
         RET                                             
READ_1820:       MOV   R4,#2      ;將溫度高位和低位DS18B20中讀出  讀出兩個字節的據   
MOV   R1,#29H      ;低位存入29H,高位存入28h
RE0: MOV  R2,#8           ;數據一共有8位
RE1:    CLR  C   
SETB  DQ            
NOP
         NOP                                 
         CLR    DQ           ;讀前總線保持為低                  
NOP  
  NOP   
NOP
        SETB   DQ           ;開始讀總線釋放                     
        MOV    R3,#9
RE2:  DJNZ   R3,RE2         ;延時18微妙   
MOV  C,DQ          ;從總線讀到一個BIT
MOV  R3,#23
RE3: DJNZ  R3,RE3    ;      等待100秒   
RRC   A             ;  把讀得的位價值環移給A  
         DJNZ  R2,RE1         ;讀下一個BIT  
         MOV   @R1,A   
DEC   R1   
DJNZ  R4,RE0
         RET                                          
TURN:  MOV   A,29H      
         MOV   C,40H ;將28中的最低位移入C     
RRC   A     
MOV   C,41H   
RRC   A   
MOV   C,42H   
RRC   A   
MOV   C,43H
RRC   A  
        MOV   29H,A
         RET                                            
DISPLAY:        MOV   A,29H           ;將29H中的十六進制數成10進制
        MOV   B,#10           ;10進制/10=10進制   DIV   AB
        MOV   B_BIT, A        ;十位在A  
  MOV   A_BIT, B        ;個位在B
        MOV   DPTR,#TABLE     ;指定查表啟始地址   
MOV   R0,#4
DP1:   MOV  R1, #250        ;顯示1000次
LOOP:   MOV  A,A_BIT         ;取個位數
       MOVC  A,@A+DPTR       ;查個位數的7段代碼   
ACALL SEND            ;送出個位的7段代碼   
CLR   P0.6            ;開個位顯示
ACALL  DELAY           ;   
SETB   P0.6
         MOV  A,B_BIT         ;取十位數   
MOVC   A,@A+DPTR       ;查十位數的7段代碼   
ACALL SEND            ;送出個十位的7段代碼   
CLR   P0.7            ;開十位顯示   
ACALL  DELAY         ;顯示1MS   SETB   P0.7
         DJNZ   R1,LOOP         ;250次沒完循環   
DJNZ   R0,DP1         ; 4個250次沒完循環   
RET                                          
DELAY:        MOV   R7, #80     ;1ms延時
DJNZ  R7,$  
        RET
DELAY10ms:   MOV  R5,#50
DLY1: MOV  R6,#100
DLY2: MOV  R7,#100
DJNZ R7,$   
DJNZ R6,DLY2  
        DJNZ R5,DLY1   
RET
SEND:   MOV     R2,#8
LOOPS:  CLR     P0.0   
RLC     A
         MOV     P0.1,C  
SETB    P0.0   
DJNZ    R2,LOOPS
RET                                          
TABLE:        DB   0C0H,0F9H,0A4H,0B0H,99H     ;數碼管共陽極0~9代碼   
DB   92H,82H,0F8H,80H,90H                        
END


回復

使用道具 舉報

ID:89258 發表于 2015-9-2 12:33 | 顯示全部樓層
哪里出問題了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 青青草视频在线观看 | 精品久久久久久久 | 综合av网| 国产视频一区二区在线播放 | 国产第四页 | 黄色小说视频 | 亚洲黄色天堂 | 国产精品视频免费看 | 精品在线免费视频 | 亚洲私人影院 | 欧美人xxxx| 久久久久九九九九 | 日韩精品视频网站 | 成人在线观看免费爱爱 | 一区二区不卡 | 国产午夜一区二区三区 | 美国黄色一级大片 | 国模一区二区 | 中文字幕+乱码+中文乱码91 | 亚洲成人a v | 欧美性猛交乱大交 | 日韩激情久久 | 夜夜操夜夜 | 久久国产亚洲 | 在线色综合 | 欧美黄色一级大片 | 伊人av综合 | 免费看黄色大片 | 日本免费不卡视频 | 国产精品美女 | 亚洲国产精品久久 | 夜夜操天天操 | 国产在线观看不卡 | 日韩精品影视 | 国产成人一区二区三区 | 成人免费视屏 | 亚洲视频网 | 国产福利91精品一区二区三区 | 中文字幕在线一区二区三区 | 亚洲一区二区三区在线播放 | 羞羞网站入口 |