|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
求助!!!18B20使用!!!!!!江湖救急!!!!!斑竹幫忙!。。。! |
作者:cuiyizheng 欄目:單片機(jī) |
先謝謝各位大哥了!! 我現(xiàn)在做畢業(yè)設(shè)計(jì),其中一部分用到18B20做溫度采集,自己找了一個(gè)程序,單片機(jī)晶振11.0592,用的是89C51.現(xiàn)在做仿真,就是測(cè)不出溫度!!!用的匯編. 采上來(lái)的數(shù)據(jù)全部是FF!! 用的直接接電源的方法,沒(méi)有上拉電阻.加了也不行.我做的是兩路采集.各位大哥幫幫忙看看!!! 程序在這里: DQ_0 EQU P1.0 DQ_1 EQU P1.1 DQ_2 EQU P1.2 DQ_3 EQU P1.3 ADDR EQU 40H LENGTH EQU 41H DAT_BGN EQU 42H FLAG_RX EQU 7FH _LOCAL EQU 07H ;CH0 DATA HI_0 EQU 51H LO_0 EQU 50H ;CH1 DATA HI_1 EQU 53H LO_1 EQU 52H ORG 0000H AJMP MAIN ORG 0023H ORG 0100H MAIN: SUB_PRO: LCALL SUB_FUNCTION_0 LCALL SUB_FUNCTION_1 ;//////////////////////////////////CH0 SUB_FUNCTION_0: ;本子函數(shù)將溫度轉(zhuǎn)化后存入40H,41H PUSH 07H PUSH 03H ACALL DS18B20_RST_CH_0 ;復(fù)位 MOV R7,#0CCH ;直接開(kāi)始函數(shù)指令 ACALL _DS18B20_W8_CH_0 MOV R7,#44H ;命令傳感器開(kāi)始轉(zhuǎn)化溫度 ACALL _DS18B20_W8_CH_0 MOV R3,#02H WAIT5US_0: DJNZ R3,WAIT5US_0 ;延遲幾個(gè)微秒 SETB DQ_0 ;將DQ_0上拉935毫秒,為傳感器轉(zhuǎn)化溫度供電 ACALL DELAY315MS ACALL DELAY315MS ACALL DELAY315MS CLR DQ_0 ACALL DS18B20_RST_CH_0 ;復(fù)位 MOV R7,#0CCH ;直接開(kāi)始函數(shù)指令 ACALL _DS18B20_W8_CH_0 MOV R7,#0BEH ;開(kāi)始讀中間存儲(chǔ)器 ACALL _DS18B20_W8_CH_0 ACALL DS18B20_R8_CH_0 MOV 50H,R7 ;開(kāi)始讀溫度值低字節(jié)至40H ACALL DS18B20_R8_CH_0 MOV 51H,R7 ;開(kāi)始讀溫度值高字節(jié)至41H POP 03H POP 07H RET ;;DS18B20 SERVICE PROGRAM OF CHANNEL 1 DS18B20_RST_CH_0: ;復(fù)位函數(shù) PUSH 02H PUSH 06H L11O_0: CLR DQ_0 ;將DQ_0清零480US以上 MOV R2,#200 L111_0: NOP DJNZ R2,L111_0 SETB DQ_0 MOV R2,#30 L114_0: DJNZ R2,L114_0 CLR C ORL C,DQ_0 ;讀DQ_0入C JC L113_0 ;DQ_0為1時(shí)初始化結(jié)束 MOV R6,#80 L115_0: ORL C,DQ_0 ;DQ_0不為1時(shí),繼續(xù)讀DQ_0判斷 JC L113_0 DJNZ R6,L115_0 SJMP L11O_0 L113_0: MOV R2,#250 L112_0: DJNZ R2,L112_0 POP 02H POP 06H RET _DS18B20_W8_CH_0: ;本函數(shù)將R7中的數(shù)從DQ_0寫出 PUSH 03H PUSH 04H MOV A,R7 MOV R3,#8 WR111_0: SETB DQ_0 MOV R4,#8 RRC A ;R7的低位依次放入C中 CLR DQ_0 ;將DQ_0清零15uS以內(nèi) WR112_0: DJNZ R4,WR112_0 MOV DQ_0,C ;將C的值置入DQ_0上發(fā)出 MOV R4,#20 WR113_0: DJNZ R4,WR113_0 DJNZ R3,WR111_0 ;循環(huán)8次R7的8位依次發(fā)出 SETB |
2樓: | >>參與討論 |
作者: cuiyizheng 于 2005/5/21 10:55:00 發(fā)布:
謝謝啦! 幫幫忙啊!!! |
3樓: | >>參與討論 |
作者: cuiyizheng 于 2005/5/21 11:47:00 發(fā)布:
我覺(jué)得也可能是程序中的延遲有問(wèn)題!! |
4樓: | >>參與討論 |
作者: cuiyizheng 于 2005/5/21 14:16:00 發(fā)布:
有沒(méi)有人知道啊!!???? |
5樓: | >>參與討論 |
作者: ODQQDO 于 2005/5/21 19:48:00 發(fā)布:
我也覺(jué)得也可能是程序中的延遲有問(wèn)題!! ACALL DELAY315MS ACALL DELAY315MS ACALL DELAY315MS 可能太久了,好像12位精度都只要750MS。 |
6樓: | >>參與討論 |
作者: cuiyizheng 于 2005/5/21 20:50:00 發(fā)布:
有一次我用6M的內(nèi)部時(shí)鐘竟然做出來(lái)了! 有一次我用6M的內(nèi)部時(shí)鐘竟然做出來(lái)了! 效果還不錯(cuò),結(jié)果半天以后就不行了! 調(diào)試了3天了,結(jié)果還是FF!!! |
7樓: | >>參與討論 |
作者: cuiyizheng 于 2005/5/22 9:07:00 發(fā)布:
!! 我精確的算了一遍延時(shí),改了下. 但是結(jié)果還是全一!! |
8樓: | >>參與討論 |
作者: cuiyizheng 于 2005/5/22 20:15:00 發(fā)布:
斑竹在嗎!!! |
9樓: | >>參與討論 |
作者: puppyh 于 2005/5/23 9:14:00 發(fā)布:
復(fù)位以后要延時(shí)60毫秒,你好像沒(méi)有做 |
10樓: | >>參與討論 |
作者: cuiyizheng 于 2005/5/23 16:15:00 發(fā)布:
關(guān)于復(fù)位?? 還有一個(gè)問(wèn)題,我在復(fù)位時(shí)拉高電平后等待的是傳感器發(fā)過(guò)來(lái)的高電平還是低電平作為復(fù)位成功判斷. SETB DQ_0 MOV R2,#30 L114_0: DJNZ R2,L114_0 CLR C ORL C,DQ_0 ;讀DQ_0入C JC L113_0 ;DQ_0為1時(shí)初始化結(jié)束 有的書上說(shuō)是收到低電平初始化結(jié)束啊! 請(qǐng)指教! |
11樓: | >>參與討論 |
作者: puppyh 于 2005/5/23 16:35:00 發(fā)布:
應(yīng)該是低電平 在復(fù)位時(shí),拉高電平后等待傳感器反饋低電平作為復(fù)位成功判斷。 |
|
|
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào) |