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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3428|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

18b20顯示亂碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:89258 發(fā)表于 2015-9-2 12:33 | 只看該作者
哪里出問(wèn)題了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲码欧美码一区二区三区 | 亚州激情| 久久久www成人免费精品张筱雨 | 一区二区三区在线免费看 | 国产精品日产欧美久久久久 | 人操人免费视频 | 国产成人在线播放 | 久久久久久黄 | 91在线资源| 国产激情视频在线观看 | 亚洲第一视频网 | 精品亚洲视频在线 | 亚洲成人av在线播放 | 精品久久久一区二区 | 欧美视频在线观看 | 蜜臀av日日欢夜夜爽一区 | 久草网址 | 国产乱码精品一区二区三区中文 | 欧美日韩视频一区二区 | 亚洲午夜视频在线观看 | 在线中文字幕亚洲 | 国产成人精品免费视频大全最热 | 欧美国产日韩在线观看 | 国产免费色| 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 中文字幕亚洲精品在线观看 | 日本一区二区三区四区 | 久久丁香 | 日韩在线视频播放 | 天堂资源最新在线 | 欧洲av一区| 国产精品a一区二区三区网址 | 国产精品三级久久久久久电影 | 精彩视频一区二区三区 | 国产精品国产成人国产三级 | 久久综合九色综合欧美狠狠 | 国产在线观看一区二区 | 欧美在线观看免费观看视频 | 欧美成人一区二区 | 九九热精品视频 | 国产91在线 | 亚洲 |