提問(wèn)者:ZL6VwMU2013-12-15 00:00
/*********寫(xiě)一個(gè)字節(jié)子函數(shù)(寫(xiě)0 寫(xiě)1)***********************/ void writebyte(unsigned char dat) { unsigned char a,b; for(a=0;a<8;a++) { dat2=dat&0x01; dat=dat>>1; if(dat2)//寫(xiě)1 { DQ=0;b++;b++; DQ=1;delay(8); } else//寫(xiě)0 { DQ=0;de
首先,DS18B20輸出的一位(1 bit)信號(hào)是不能被單片機(jī)變?yōu)槎辔坏模晃痪褪且晃,單片機(jī)需要連續(xù)多次讀取DS18B20輸出的一位信號(hào),來(lái)合成它需要的信息。比如DS18B20的溫度輸出是16位數(shù)據(jù),那么單片機(jī)就要讀16次1 bit數(shù)據(jù)。讀取溫度偽代碼(temperature為保存溫度數(shù)值的整型變量): for ( i=1; i<=16; i++) { onebit=讀取1位數(shù)據(jù)的函數(shù)(); temperature=temperature|onebit; if(i!=16) temperature=temperature<<1; }然后0628單片機(jī)是如何讀取DS18B20輸出的某1bit信息的呢?在具體回答前先明確一點(diǎn),這一過(guò)程必須在單片機(jī)拉低數(shù)據(jù)線,發(fā)起讀數(shù)據(jù)過(guò)程之后的15微秒(us)內(nèi)完成284否則讀不到正確數(shù)據(jù)(注意:發(fā)起通信時(shí)總是由單片機(jī)將數(shù)據(jù)總線先拉低uycg沒(méi)有通信時(shí)數(shù)據(jù)總線保持高電平狀態(tài))4下面說(shuō)說(shuō)具體過(guò)程: 1、單片機(jī)將數(shù)據(jù)總線拉低; 2、延時(shí)2us;(這一時(shí)間必須大于1us,否則DS18B20無(wú)法識(shí)別拉低信號(hào);也不能過(guò)大,超過(guò)15us無(wú)法正確讀數(shù)6) 3、將單片機(jī)與DS18B20相連的IO口輸入輸出方向設(shè)為輸入;(這一步也有可能是單片機(jī)直接將數(shù)據(jù)線拉高,因芯片的不同而不同) 4、延時(shí)2us;(給DS18B20一定的時(shí)間輸出信號(hào)) 5、讀取數(shù)據(jù)總線上的電平值; 6、拉高數(shù)據(jù)總線,延時(shí)一段時(shí)間后進(jìn)入下1bit的讀取。 注意:這里能否正確讀取的關(guān)鍵是延時(shí)的量是否足夠精確,因此在用C語(yǔ)言寫(xiě)DS18B20程序之前,需要先根據(jù)單片機(jī)型號(hào)和晶振頻率找出一個(gè)自己對(duì)延時(shí)的精度有足夠把握的延時(shí)函數(shù),隨便在網(wǎng)上DOWN別人的程序很有可能因?yàn)檠訒r(shí)不對(duì)跑不起來(lái)。參考資料:DS18B20數(shù)據(jù)手冊(cè)
回答者:lock94r74302016-12-15 00:00
優(yōu)點(diǎn):外觀時(shí)尚,動(dòng)力澎湃。 缺點(diǎn):急剎車(chē)的時(shí)候車(chē)身前傾的比較厲害,稱(chēng)身的避震比較硬。 綜述:內(nèi)部空間還行,另外,做工和用料值得夸贊,電動(dòng)助力,方向盤(pán)的輕重合適,但是反饋稍差了一些。
提問(wèn)者:bluefucking2015-02-27
時(shí)序不對(duì) DS18B20 的時(shí)序要求很?chē)?yán)格,稍有不慎就會(huì)讀不出 void delay(uchar k) { while(--k); } void delay1(uint k) { uint i,j
提問(wèn)者:fdevb8832014-02-19
先鋒的 DS6119電熱油汀自動(dòng)控溫,過(guò)熱保護(hù)功能,三檔溫度自由調(diào)節(jié)1600w【一個(gè)小時(shí)1.6度工作一天費(fèi)電是肯定的】它達(dá)到溫度時(shí)會(huì)自動(dòng)斷電然后溫度下降再自動(dòng)開(kāi)啟【這個(gè)是對(duì)的】
提問(wèn)者:2013-11-10
先把U盤(pán)制作為啟動(dòng)盤(pán),選擇移動(dòng)存儲(chǔ)啟動(dòng),重新啟動(dòng)就可以了。
提問(wèn)者:ftbnb04432013-06-15
1.首先確認(rèn)連接正確: 2.打開(kāi)storage manager,右鍵管理站名,選擇自動(dòng)搜索 3.對(duì)話框下方會(huì)有自動(dòng)搜索進(jìn)度條,搜索結(jié)束會(huì)發(fā)現(xiàn)連接的DS3400 4.重命名ds3400: 5
提問(wèn)者:zyxb53102013-06-18
時(shí)序不對(duì) DS18B20 的時(shí)序要求很?chē)?yán)格,稍有不慎就會(huì)讀不出 void delay(uchar k) { while(--k); } void delay1(uint k) { uint i,j
提問(wèn)者:HOUXIOA56784072014-04-24