|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教DS18B20的操作問題! |
| 作者:martial 欄目:單片機 |
小弟第一次接觸DS18B20溫度傳感器,對它的操作協(xié)議順序:初始化-》發(fā)rom命令-》發(fā)存儲器操作命令-》處理數(shù)據(jù)。我現(xiàn)在就只有一個傳感器,想實現(xiàn)把溫度讀取出來,操作順序是什么樣的?我預想了下面三種操作順序: 1、一次完成: 初始化DS18B20->跳過rom匹配->溫度轉(zhuǎn)換命令(RAM)->溫度讀取命令(RAM)->單片機上處理數(shù)據(jù) 2、兩次完成: 初始化DS18B20->跳過rom匹配->溫度轉(zhuǎn)換命令(RAM)->單片機上處理數(shù)據(jù) 初始化DS18B20->跳過rom匹配->溫度讀取命令(RAM)->單片機上處理數(shù)據(jù) 3、兩次完成: 初始化DS18B20->跳過rom匹配->溫度轉(zhuǎn)換命令(RAM)->單片機上處理數(shù)據(jù) 初始化DS18B20->溫度讀取命令(RAM)->單片機上處理數(shù)據(jù) 哪位大蝦幫我看看,哪種是正確的操作,如果都不正確,正確操作是什么樣??謝謝先 |
| 2樓: | >>參與討論 |
| 作者: martial 于 2006/3/11 10:35:00 發(fā)布:
大家都是怎么操作的呀?? |
|
| 3樓: | >>參與討論 |
| 作者: mxinfa 于 2006/3/11 11:13:00 發(fā)布:
試試嗎,又燒不壞,網(wǎng)上代碼多的是 |
|
| 4樓: | >>參與討論 |
| 作者: feifan570 于 2006/3/11 17:05:00 發(fā)布:
我是使用2,并且可以了 |
|
| 5樓: | >>參與討論 |
| 作者: martial 于 2006/3/13 9:54:00 發(fā)布:
我試過了,初始化時能檢測到DS18B20,但是讀不出數(shù)據(jù)來 下面是我獲取溫度的代碼,感覺沒錯呀,怎么r6,r7,A中就是沒有數(shù)據(jù),全部是0 GET_TEMP: CLR EA ;使用DS1820一定要禁止任何中斷產(chǎn)生 ACALL RSTDQ ;調(diào)用初使化子程序 JNB 21H.0, GET_TEMP MOV A, #0CCH ACALL WRDQ ;送入跳過ROM命令 MOV A, #44H ACALL WRDQ ;送入溫度轉(zhuǎn)換命令 ACALL RSTDQ ;溫度轉(zhuǎn)換完全,再次初使化 MOV A,#0CCH ACALL WRDQ ;送入跳過ROM命令 MOV A,#0BEH ACALL WRDQ ;送入讀溫度暫存器命令 ACALL RDDQ MOV R7,A ;讀出溫度值低字節(jié)存入R7 ACALL RDDQ MOV R6,A ;讀出溫度值高字節(jié)存入R6 AJMP GET_TEMP |
|
| 6樓: | >>參與討論 |
| 作者: tjjack 于 2006/3/13 10:18:00 發(fā)布:
這個東西的時鐘和時序必須要正確,否則肯定有問題 |
|
| 7樓: | >>參與討論 |
| 作者: martial 于 2006/3/13 12:31:00 發(fā)布:
謝謝樓上各位,我剛剛調(diào)通了,稀里糊涂的就通了 |
|
| 8樓: | >>參與討論 |
| 作者: martial 于 2006/3/13 15:45:00 發(fā)布:
還有一點疑問??? DS18B20的12位的溫度數(shù)據(jù)轉(zhuǎn)換時間要750ms,發(fā)了開始轉(zhuǎn)換命令后,就直接讀取溫度,由于是個循環(huán)系統(tǒng),也沒有延時,當我再一次發(fā)送轉(zhuǎn)換命令時,溫度應該還沒有轉(zhuǎn)換完成,這種情況下,18b20會不會中斷前一次的轉(zhuǎn)換,又重新開始?? |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |