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

正文內(nèi)容

精品--基于89s51單片機的ds18b20數(shù)字溫度計設(shè)計(參考版)

2024-12-10 03:27本頁面
  

【正文】 35 參考文獻 ( 1)何立民 .《單片機高級教程》航空航天大學(xué)出版社, 2021 ( 2)李朝青 .《單片機原理與接口技術(shù)》航 空航天大學(xué)出版社, 1999 ( 3)張毅剛 .《 MCS51 單片機應(yīng)用設(shè)計》哈爾濱工業(yè)大學(xué)出版社, 1997 ( 4)王福瑞 .《單片機測控系統(tǒng)設(shè)計大全》航空航天大學(xué)出版社, 1998 ( 5)馬忠梅 .《單片機的 C 語言應(yīng)用程序設(shè)計(第 4 版)》航空航天大學(xué)出版社, 2021 (6) 張萍 . 基于數(shù)字溫度計 DS18B20 的溫度測量儀的開發(fā) 。 這次的課程設(shè)計中,我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。針對這一特性 ,基于線性插補的數(shù)學(xué)思想 ,利用 DSP技術(shù) ,對其進行誤差校正補償 .這種誤差校正的補償方法 ,不需增加硬件電路 ,計算方法簡單 ,軟件費用也很小 ,既提高了測量精度 ,又不需增加成本。 度, 往往很多場合需要更加精確的溫度,在所測溫度精度不變的基礎(chǔ)上必須對數(shù)據(jù)進行校正。由于 DS18B20 支持單總線協(xié)議,我們可以將多個 DS18B20 可以并聯(lián)到 3 根或 2 根線上, CPU 只需一根端口線就能與諸多 DS18B20 通信,占用較少的微處理器的端口就可以實現(xiàn)多點測溫監(jiān)控系統(tǒng)。 display (uchar *lp,uchar lc) 。//溫度值擴大 10 倍,精確到 1 位小數(shù) } /********************主程序 ***********************************/ 32 void main() { //初始化顯示 while(1) { read_temp()。 tflag=1。 if(tvalue0x0fff) tflag=0。 tvalue=8。 b=ds1820rd()。//*跳過讀序列號 */ ds1820wr(0xbe)。//*啟動溫度轉(zhuǎn)換 */ ds1820rst()。 ds1820wr(0xcc)。 } } /*讀取溫度值并轉(zhuǎn)換 */ void read_temp() { uchar a,b。 DQ=1。0x01。i) { DQ=0。 for (i=8。 } return(dat)。 //給脈沖信號 if(DQ) dat|=0x80。 //給脈沖信號 dat=1。i0。 uchar dat=0。 //拉高 delay_18B20(40)。 //DQ 拉低 delay_18B20(100)。 //DQ 復(fù)位 delay_18B20(4)。 } } /******************************ds1820 程序 ***************************************/ void delay_18B20(uint i)//延時 1 微秒 { while(i)。 //清 0 端口,準(zhǔn)備顯示下位 P2=1。 delay(5)。 //查表法得到要顯示數(shù)字的數(shù)碼段 delay(5)。ilc。 //端口 2 為輸出 30 P2=0xf7。//獲取小數(shù)第一位 } } void display(uchar *lp,uchar lc)//顯示 { uchar i。//獲取個位再 disdata[2]+=10。 tvalue=tvalue%100。amp。 disdata[1]=tvalue/100。 //顯示百位 if(disdata[0]==0) disdata[0]=21。//加入小數(shù)點 ,查表可得出有小數(shù)點的排在后 10 位,所以加 10 disdata[3]=tvalue%10。 disdata[2]=tvalue/10。//獲取十位 if(disdata[1]==0) disdata[1]=21。 tvalue=tvalue%1000。 tvalue。 } //LCD 顯示函數(shù) void weixuan() { if(tvalue0) //負數(shù)處理 { disdata[0]=20。j100。ik。//溫度正負標(biāo)志 發(fā)跳過 ROM 指令 初始化 DS18B20 開始 讀 DS18B20 得序列號 檢測 DS18B20 是否存在? 初始化 DS18B20 發(fā)送 DS18B20 編碼 度溫度數(shù)據(jù) 顯示 29 /*************************顯示程序 **************************/ void delay(uint k)//延時 1 毫秒(不夠精確的) {unsigned int i,j。//存放溫度值 uint tvalue。 //ds18b20 與單片機連接口 sbit DQ=P3^2。單片機對與 DS18B20主要完成對溫度的檢測和補償,通過 AT89S51 單片機對 DS18B20 芯片的控制和數(shù)據(jù)傳輸,查詢當(dāng)前的 DS18B20 溫度采集和轉(zhuǎn)換是否完成是關(guān)鍵,并且完成對轉(zhuǎn)換后的數(shù)據(jù)的讀取。如果每位的顯示時間取得的恰當(dāng),那么看到的就是 4 位一起亮的顯示效果,這樣就實現(xiàn)了動態(tài)顯示。然后再由段代碼數(shù)據(jù)輸出 0 的段代碼,即可在第一位上顯示 9 這個數(shù),這時可以將位選得第二位置為低,就選中了第二位顯示器。 } tvalue=tvalue*()。 27 else { tvalue=~tvalue+1。 tvalue=tvalue|a。 tvalue=b。//*讀取溫度 */ a=ds1820rd()。 ds1820wr(0xcc)。//*跳過讀序列號 */ ds1820wr(0x44)。 ds1820rst()。 wdata=1。 delay_18B20(10)。 DQ=wdataamp。i0。 } DS18B20 寫數(shù)據(jù) void ds1820wr(uchar wdata) { uchar i=0。 delay_18B20(10)。 DQ = 1。i) { DQ = 0。 for(i=8。 DS18B20 讀寫時序如圖 46 所示 25 圖 47 DS18B20 讀寫時序 圖 48讀 DS18B20流程圖 圖 49寫 DS18B20流程圖 DS18B20 讀數(shù)據(jù) uchar ds1820rd() { uchar i=0。 、 在讀時間隙的結(jié)尾, I/O 引腳將被外部上拉電阻拉到高電平。當(dāng)主機把數(shù)據(jù)從高電平拉到低 電平時,寫時間隙開始,數(shù)據(jù)線必須保持至少 1μ s;從 DS18B20 輸出的數(shù)據(jù) 24 在讀時間隙的下降沿出現(xiàn)后 15μ s 內(nèi)有效。所有讀時序至少需要 60us。主機要生成一個寫 0 時間隙,必須把數(shù)據(jù)線拉到低電平并保存 60μ s。如果線上事高電平,就是寫 1,如果是低電平,就是寫 0。所有寫時間隙必須最少持續(xù) 60μ s,包括兩個寫周期至少 1μ s 的恢復(fù)時間。 寫時間時序:當(dāng)主機把數(shù)據(jù)從邏輯高電平拉到邏輯低電平的時候,寫時間隙開始。產(chǎn)生寫 0 時序的方式:在主機拉低總線后,只需在整個時序期間保持低電平即可 (至少 60us)。在單總線器件檢測到上升沿后,延時 15~ 60us,接著通過拉低總線 60~ 240us,以產(chǎn)生應(yīng)答脈沖。接著,主機釋放總線,并進入接收模式。 然后就可以從剛才的二維數(shù)組匹配在線的溫度 傳感器,隨后發(fā)溫度讀取命令就可以獲得對應(yīng)的度值了。 系統(tǒng)工作時,把讀取了編碼的 DS18B20 掛在總線上。軟件實現(xiàn) DS18B20 的工作嚴(yán)格遵守單總線協(xié)議: 主機首先發(fā)出一個復(fù)位脈沖,信號線上的 DS18B20 器件被復(fù)位。在主機發(fā)出 ROM命令,以訪問某個指定的 DS18B20,接著就可以發(fā)出 DS18B20 支持的某個功能命令。 在主機檢測到應(yīng)答脈沖后,就可以發(fā)出 ROM 命令。 基于單總線上的所有傳輸過程都是以初始化開始的,初始化過程由主機發(fā)出的復(fù)位 23 脈沖和從機響應(yīng)的應(yīng)答脈沖組成。如果出現(xiàn)序列混亂,則單總線器件不會響應(yīng)主機。所有ROM 操作命令均為 8 位長。在時間片結(jié)束時, I/O 引腳經(jīng)過外部的上拉電阻拉回高電平,所有讀時間片的最短持續(xù)期為 60 微秒,包括兩個讀周期間至少 1μ s 的恢復(fù)時間。數(shù)據(jù)線在邏輯低電平必須保持至少 1 微秒;來自DS18B20 的輸出數(shù)據(jù)在時間下降沿之后的 15 微秒內(nèi)有效。所有時間片必須有 60 微秒的持續(xù)期,在各寫周期之間必須有最短為 1 微秒的恢復(fù)時間 . 讀時間片:從 DS18B20 讀數(shù)據(jù)時,使用讀時間片。它有寫時間片和讀時間片兩種: 寫時間片:當(dāng)主機把數(shù)據(jù)線從邏輯高電平拉至邏輯低電平時,產(chǎn)生寫時間片。然后以存在復(fù)位脈沖表示 DS18B20 已經(jīng)準(zhǔn)備好發(fā)送或接收,然后給出正確的 ROM 命令和存儲操作命令的數(shù)據(jù)??偩€經(jīng)過 。 } 主機發(fā)送( Tx) 復(fù)位脈沖(最短為 480μ s 的低電平信號)。 //精確延時大于 480us DQ = 1。 //延時 DQ = 0。 圖 46DS18B20 復(fù)位時序 22 DS18B20 復(fù)位程序 void ds1820rst() { DQ = 1。數(shù)碼管與單片機的接口電路如圖 44 中 所示。此時,要 求段驅(qū)動電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來確定相應(yīng)的限流電阻。當(dāng)某段驅(qū)動電路的輸出端為低電平時,則該端所連接的字段導(dǎo)通并點亮。 共陽極數(shù)碼管的 8 個發(fā)光二極管的陽極(二極管正端)連接在一起。數(shù)碼管的外形結(jié)構(gòu)如圖43 所示 。在外接電源方式下,可以充分發(fā)揮 DS18B20 寬電源電壓范圍的優(yōu)點,即使電源電壓 VCC 降到 3V 時,依然能夠保證 溫度量精度。 19 圖 43DS18B20 與單片機接口電路 外部電源供電方式是 DS18B20 最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。在這里采用前者方式供電。因此 , 在條件允許的場合 , 盡量采用外供電方式 。工作于寄生電源方式時 , VDD 和 GND 均接地 , 他在需要遠程溫度探測和空間受限的 場合特別有用 , 原理是當(dāng) 1 W ire 總線的信號線 DQ 為高電平時 , 竊取信號能量給DS18B20 供電 , 同時一部分能量給內(nèi)部電容充電 , 當(dāng) DQ為低電平時釋放能量為DS18B20 供電。單片機時鐘頻率為 12MHz,則復(fù)位脈沖寬度至少應(yīng)該為 2μ s,復(fù)位電路如圖 42 所示 圖 42 單片機復(fù)位電路 ( 2) DS18B20 測溫電路 DS18B20 最大的特點是單總線數(shù)據(jù)傳輸方式, DS18B20 的數(shù)據(jù) I/O 均由同一條線來完成。單片機的復(fù)位后是靠外部電路實現(xiàn)的, 在時鐘電路工作后,只要在單片機的 RST 引腳上出現(xiàn) 24 個時鐘振蕩脈沖( 2 個機器周期)以上的高電平,單片機便可實現(xiàn)初始化狀態(tài)復(fù)位。時鐘電路和單片機的連接如圖 41 所示。通常 OSC輸出時鐘頻率 f為 ~16MHz,典型值為12MHz或者 。即用來連接單片機內(nèi) OSC的定時反饋回路。但是,當(dāng)交變電場的頻率為某一特定值時,振幅驟然增大,產(chǎn)生共振,稱之為壓電振蕩。在石英晶體的兩個管腳加交變電場時,它將會產(chǎn)生一定頻率的機械變形,而這種械振動又會產(chǎn)生交變電場,上述物理現(xiàn)象稱為壓電效應(yīng)。小電容可以取 30PF左右。時鐘發(fā)生器
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1