freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于msp430單片機(jī)和ds18b20使用數(shù)碼管顯示的溫度測(cè)量_畢業(yè)設(shè)計(jì)論文(編輯修改稿)

2024-10-06 18:07 本頁面
 

【文章內(nèi)容簡介】 出并處理 DS18B20的測(cè)量溫度值,溫度測(cè)量沒 1s 進(jìn)行一次,其程序流程 如圖: Vcc Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 LP OE D0 D1 D2 D3 D4 D5 D6 D7 GND 74HC573 9 DS18B20的子程序 DS18B20的一線工作協(xié)議流程是: 初始化→ ROM 操作指令→存儲(chǔ)器操作指令→數(shù)據(jù)傳輸。 其工作時(shí)序包括: 初始化 到達(dá) 1s? 調(diào)用顯示子程序 初次上電? 讀出溫度值,溫度計(jì)算 處理顯示數(shù)據(jù)刷新 溫度轉(zhuǎn)換開始命令 是 否 否 是 10 ? 初始化時(shí)序 ? 寫時(shí)序 ? 讀時(shí)序 1 初始化時(shí)序 主機(jī)首先發(fā)出一個(gè) 480- 960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的 480微秒時(shí)間內(nèi)對(duì)總線進(jìn)行檢測(cè),如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。 做為從器件的 DS18B20在一上電后就一直在檢測(cè)總線上是否有480- 960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15- 60微秒后將總線電平拉低 60- 240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測(cè)到就一直在檢測(cè)等待。 11 圖 4 初始化時(shí)序時(shí)間圖 程序 C 代碼如下: //初始化 DS18B20 void DS18B20Init(void){ DQ_OUT。//設(shè)置為輸出方向 DQ_LOW。//拉低總線 Delayus(50)。 DQ_HIGH。//釋放總線 Delayus(6)。 12 DQ_IN。//設(shè)置為輸入方向 while(DQ_DATA)。//等待應(yīng)答信號(hào) while(~DQ_DATA)。//等待釋放總線 } 2 寫時(shí)序 接下來就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫 0和寫 1組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從 DS18B20讀取0或 1的過程。因此首先要搞清主機(jī)是如何進(jìn)行寫 0、寫 讀 0和讀 1的。寫周期最少為 60微秒,最長不超過 120微秒。寫周期一開始做為主機(jī)先把總線拉低 1微秒表示寫周期開始。隨后若主機(jī)想寫 0,則繼續(xù)拉低電平最少 60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫 1,在一開始拉低總 線電平 1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機(jī)的 DS18B20則在檢測(cè)到總線被拉底后等待 15微秒然后從 15us 到 45us 開始對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為 1,若采樣期內(nèi)總線為低電平則為 0。 13 圖 5 寫時(shí)序圖 程序 C 代碼如下: //寫一個(gè)字節(jié) void WriteByte(uchar WriteData){ uchar i。 uchar tmpData。 for(i=0。i8。i++){ tmpData=WriteDataamp。0x01。 WriteData=1。 DQ_OUT。 14 DQ_LOW。 if(tmpData){ DQ_HIGH。 } else{ DQ_LOW。 } Delayus(5)。 DQ_HIGH。 } } 3 讀時(shí)序 對(duì)于讀數(shù)據(jù)操作時(shí)序也分為讀 0時(shí)序和讀 1時(shí)序兩個(gè)過程。讀時(shí)隙是從主機(jī)把單總線拉低之后,在 1微秒之后就得釋放單總線為高電平,以讓 DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。 DS18B20在檢測(cè)到總線被拉低 1微秒后,便開始送出數(shù)據(jù),若是要送出 0就把總線拉為低電平直到讀周期結(jié)束。若要送出 1則釋放總線為高電平。主機(jī)在一開始拉低總線 1微秒后釋放總線,然后在包括前面的拉低總線電平 1微秒在內(nèi) 15 的 15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為 0。采樣期內(nèi)總線為高電平則確認(rèn)為 1。完成一個(gè)讀時(shí)序過程,至少需要 60us 才能完成。 圖 6 讀時(shí)序圖 程序 C 代碼如下: //讀一個(gè)字節(jié) uchar ReadByte(void){ uchar i。 uchar ReadData=0。 for(i=0。i8。i++){ 16 DQ_OUT。 DQ_LOW。 ReadData=1。 DQ_HIGH。 Delayus(1)。 DQ_IN。 if(DQ_DATA) ReadData|=0x80。 Delayus(6)。 } return ReadData。 } 溫度計(jì)算子程序 DS18B20中的溫度傳感器完成對(duì)溫度的測(cè)量,用 16位二進(jìn)制形式提供,形式表達(dá),其中 S 為符號(hào)位。 17 圖 7 DS18B20的 16位二進(jìn)制形式 例 如+ 125℃的數(shù)字輸出為 07D0H (正溫度 直接吧 16進(jìn)制數(shù)轉(zhuǎn)成 10進(jìn)制即得到溫度值 ) 55℃的數(shù)字輸出為 FC90H。 (負(fù)溫度 把得到的 16進(jìn)制數(shù) 取反后 加 1 再轉(zhuǎn)成 10進(jìn)制數(shù)) 程序 C 代碼如下: //溫度計(jì)算程序 void GetT(){ if((MSBamp。0xF0)0){ //判斷是否為負(fù)溫度 flag=1。 }else{ flag=0。 23 S LS Byte MS Byte 22 21 20 21 22 32 24 S S S S 26 52 24 bit7 bit6 bit15 bit4 bit3 bit2 bit1 bit0 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 18 } if(flag){ //如果為負(fù)溫度取反加 1 MSB=~MSB。 LSB=~LSB+1。 } t1=MSB4。 //得到溫度整數(shù)部分 t1|=(LSB4)。 //計(jì)算各位數(shù)碼管要顯示的數(shù)值 if(flag){ Bit[1]=16。 //如果為負(fù)溫度則顯示 }else{ Bit[1]=t1/100。 } Bit[2]=t1%100/10。 Bit[3]=t1%10。 } 19
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1