版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)</b></p><p><b> 數(shù)字式溫度計(jì)設(shè)計(jì)</b></p><p> 摘要:隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機(jī)控制的數(shù)字溫度計(jì),本溫度計(jì)屬于多功能溫度計(jì),可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以
2、報(bào)警。 關(guān)鍵詞:?jiǎn)纹瑱C(jī),數(shù)字控制,溫度計(jì), DS18B20,AT89S52</p><p><b> 0 引言</b></p><p> 隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技
3、術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。</p><p> 本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)AT89S52,測(cè)溫傳感器使用DS18B20,用3位共陽(yáng)極LED數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求</p><p><b&
4、gt; 1、設(shè)計(jì)方案</b></p><p> 本設(shè)計(jì)方案的選擇主要是感溫元件的選擇,經(jīng)查閱資料,IC式感溫器在市場(chǎng)上應(yīng)用比較廣泛的有以下幾種:</p><p> (1)AD590:電流輸出型的測(cè)溫組件,溫度每升高1攝氏度K(凱式溫度),電流增1uA,溫度測(cè)量范圍在-55℃~150℃之間。其所采集到的數(shù)據(jù)需經(jīng)A/D轉(zhuǎn)換,才能得到實(shí)際的溫度值。.</p>&l
5、t;p> (2)DSl8B20:除了測(cè)量溫度外,它還可以把溫度值以數(shù)字的方式(9Bit)送出,溫度送出的精度為O.5℃,溫度測(cè)量范圍在-55℃~125℃之間,可以做恒溫控制。</p><p> (3)SMARTEC感溫組件:這是一只3個(gè)管腳感溫IC,溫度測(cè)量范圍在—45℃~130。C。誤差可以保持在0.7℃以內(nèi)。</p><p> 本設(shè)計(jì)選用DSl8820感溫IC,這是因其性能
6、參數(shù)符合設(shè)計(jì)要求,接口簡(jiǎn)單,內(nèi)部集成了A/D轉(zhuǎn)換,測(cè)溫更簡(jiǎn)便,精度也較高,反應(yīng)速度快,且經(jīng)過(guò)市場(chǎng)考察,該芯片易購(gòu)買(mǎi),使用方便。</p><p> 本電路主要由以下三大模塊組成。</p><p> 模塊一:DSl8B20芯片。</p><p> 實(shí)現(xiàn)功能:實(shí)現(xiàn)溫度的采集和模擬量與數(shù)字量的轉(zhuǎn)換,采集后的數(shù)據(jù)經(jīng)過(guò)芯片內(nèi)部模數(shù)轉(zhuǎn)換后通過(guò)一個(gè)單總線傳送到單片機(jī)的信號(hào)輸入
7、口。</p><p> 模塊二:AT89S52單片機(jī)。</p><p> 實(shí)現(xiàn)功能:通過(guò)程序開(kāi)發(fā)并輸入到單片機(jī),使其具備一定的數(shù)據(jù)處理能力,同時(shí)通過(guò)對(duì)DSl8B20芯片的讀和寫(xiě)把檢測(cè)到的數(shù)據(jù)轉(zhuǎn)換成編碼寫(xiě)到AT89S52單片機(jī)中,再通過(guò)單片機(jī)的輸出口輸出數(shù)據(jù)經(jīng)過(guò)控制由LCDl602動(dòng)態(tài)顯示出來(lái)。</p><p> 模塊三:LCDl602。</p>
8、<p> 實(shí)現(xiàn)功能:將單片機(jī)輸出的數(shù)據(jù)進(jìn)行動(dòng)態(tài)顯示。</p><p> 2、DSl8B20芯片</p><p> 美國(guó)DALLAS生產(chǎn)的DSl8B20,將各種數(shù)字轉(zhuǎn)換電路都集成在一起,省去了電路中的轉(zhuǎn)換、放大等單元,節(jié)約了大量的引線和控制通道切換的邏輯電路,DS18B20內(nèi)部主要由四部分組成:暫態(tài)存儲(chǔ)器、64位ROM、溫度傳感器及溫度報(bào)警觸發(fā)裝置;DSl8B20的測(cè)量溫度范
9、圍從一55℃~+125℃,所以在實(shí)際的應(yīng)用中具有極高的性價(jià)比。</p><p><b> 2.1性能特點(diǎn)</b></p><p> 1)在一10℃~+85℃范圍內(nèi),DSl8B20具有±O.5℃的精度。</p><p> 2)獨(dú)特的寄生電源供電方式和外接電源供電方式并存,且供電范圍為3.0V~5.5V。</p>&l
10、t;p> 3)具有可編程的9~12位溫度轉(zhuǎn)換精度。</p><p> 4)采用“一線總線”結(jié)構(gòu),且處理只要一只I/0端口就可以實(shí)現(xiàn)多點(diǎn)測(cè)溫,節(jié)省硬件資源。</p><p> 5)內(nèi)部設(shè)有程序設(shè)置寄存器,可用來(lái)設(shè)置各種參數(shù):分辨率、報(bào)警溫度等。</p><p> 2.2 DSl8B20的內(nèi)部存儲(chǔ)器</p><p> 由圖1可以看
11、到,Dsl8820的內(nèi)部存儲(chǔ)器是由8個(gè)單元組成,其中第0、1個(gè)存放測(cè)量溫度值,第2、3分別存放報(bào)警溫度的上下限值,第4單元為配置單元,5、6、7單元在DSl8820這里沒(méi)有被用到。對(duì)于第4個(gè)寄存器,用戶可以設(shè)置溫度轉(zhuǎn)換精度,系統(tǒng)默認(rèn)12bit轉(zhuǎn)換精度,相當(dāng)于十進(jìn)制的0.0625℃,其轉(zhuǎn)換時(shí)間大約為750磷。具體見(jiàn)表l。</p><p> 圖1 內(nèi)部存儲(chǔ)器結(jié)構(gòu)圖</p><p><b
12、> 表1 溫度精度配置</b></p><p> 由于DS18B20采用的“一線總線”結(jié)構(gòu),所以數(shù)據(jù)的傳輸與命令的通訊只要通過(guò)微處理器的一根雙向I/o口就可以實(shí)現(xiàn)。DSl8B20約定在每次通信前必須對(duì)其復(fù)位,具體的復(fù)位時(shí)序如圖2所示。</p><p><b> 圖2 復(fù)位時(shí)序圖</b></p><p> 圖2中所示,t
13、RSTL為主機(jī)發(fā)出的低電平信號(hào),本文中有AT89S52提供,tRSTL的最小時(shí)延為,然后釋放總線,檢查DSl8B20的返回信號(hào),看其是否已準(zhǔn)備接受其他操作,其中tPDHIGH時(shí)間最小為,最長(zhǎng)不能超過(guò),否則認(rèn)為DS18B20沒(méi)有準(zhǔn)備好,主機(jī)應(yīng)繼續(xù)復(fù)位,直到檢測(cè)到返回信號(hào)變?yōu)榈碗娖綖橹埂?lt;/p><p> 主機(jī)一旦檢測(cè)到DS18B20的存在,根據(jù)DS18B2的工作協(xié)議,就應(yīng)對(duì)ROM進(jìn)行操作,接著對(duì)存儲(chǔ)器操作,最后進(jìn)
14、行數(shù)據(jù)處理。在DS18B20中規(guī)定了5條對(duì)ROM的操作命令。見(jiàn)表2.</p><p> 主機(jī)在發(fā)送完ROM操作指令之后,就可以對(duì)DS18B20內(nèi)部的存儲(chǔ)器進(jìn)行操作,同樣DS18B20規(guī)定了6條操作指令。見(jiàn)表3。 DS18B20的讀、寫(xiě)時(shí)序圖見(jiàn)圖3。</p><p> 圖3 DS18B20的讀、寫(xiě)時(shí)序圖</p><p> 3、AT89S52單片機(jī)</p&g
15、t;<p><b> 3.1主要性能 </b></p><p> 與MCS-51單片機(jī)產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、 1000次擦寫(xiě)周期、 全靜態(tài)操作:0Hz~33Hz 、 三級(jí)加密程序存儲(chǔ)器 、 32個(gè)可編程I/O口線 、三個(gè)16位定時(shí)器/計(jì)數(shù)器 八個(gè)中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門(mén)狗定時(shí)器 、雙數(shù)據(jù)
16、指針 、掉電標(biāo)識(shí)符 。</p><p> 3.2功能特性描述 </p><p> AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完 全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編
17、程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提 供高靈活、超有效的解決方案。 AT89S52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、
18、串口、中斷繼續(xù)工 作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié), 單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash AT89S52 </p><p> P0 口:P0口是一個(gè)8位漏極開(kāi)路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫(xiě)“1”時(shí),引腳用作高阻抗輸入。 </p><p> 當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存
19、儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。 </p><p> 在flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn) 時(shí),需要外部上拉電阻。 </p><p> P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P1 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,
20、此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2 的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。 </p><p> 在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 </p><p><b> 引腳號(hào)第二功能 </b&
21、gt;</p><p> P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 </p><p> P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制) </p><p> P1.5 MOSI(在系統(tǒng)編程用) </p><p> P1.6 MISO(在系統(tǒng)編程用) </p><p>
22、 P1.7 SCK(在系統(tǒng)編程用) </p><p> P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè) </p><p> TTL 邏輯電平。對(duì)P2 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 </p><p> 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 &l
23、t;/p><p> 在訪問(wèn)外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR) 時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用 8位地址(如MOVX @RI)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。 </p><p> 在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。 </p><
24、;p> P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫(xiě)“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。 </p><p> P3口亦作為AT89S52特殊功能(第二功能)使用,如下表所示。 </p><p> 在fla
25、sh編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。 </p><p><b> 端口引腳 第二功能</b></p><p> P3.0 RXD(串行輸入口)</p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 INTO(外中斷0)</p><p> P3.3 INT1
26、(外中斷1)</p><p> P3.4 TO(定時(shí)/計(jì)數(shù)器0)</p><p> P3.5 T1(定時(shí)/計(jì)數(shù)器1)</p><p> P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)</p><p> P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)</p><p> 此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控
27、制信號(hào)。</p><p> RST——復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。</p><p> ALE/PROG——當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)
28、一個(gè)ALE脈沖。</p><p> 對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p> 如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無(wú)效。</p><p>
29、 PSEN——程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。</p><p> EA/VPP——外部訪問(wèn)允許,欲使CPU僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)
30、部會(huì)鎖存EA端狀態(tài)。</p><p> 如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。</p><p> FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。</p><p><b> 4、電路原理</b></p><p><b&g
31、t; 4.1電路原理</b></p><p> 本設(shè)計(jì)進(jìn)行溫度顯示控制主要的控制器件是AT89S51單片機(jī),而DSl8820芯片是單總線結(jié)構(gòu)的電子元件。單線總線是一種具有一個(gè)總線主機(jī)和一個(gè)或若干個(gè)從機(jī)(從屬器件)的系統(tǒng)。DSl8S20芯片在電路中起從機(jī)的作用。單線總線只有一根線,即線上的第一個(gè)器件能在適當(dāng)?shù)臅r(shí)間驅(qū)動(dòng)該總線。為了做到這一點(diǎn),第一個(gè)連接到單線總線上的器件必須具有漏極開(kāi)路或三態(tài)輸出。另外
32、。單線總線的空閑狀態(tài)是高電平。不管任何原因,如果執(zhí)行需要被掛起,那么,若要重新恢復(fù)執(zhí)行,總線必須保持在空閑狀態(tài)。如果不滿足這一點(diǎn)且總線保持在低電乎時(shí)閾大于480us,那么總線上所有器件均被復(fù)位。由此。DSl8820芯片的DQ接單片機(jī)lqO 1:1 P3.3,通過(guò)溫度傳感器采樣的數(shù)據(jù)送入單片機(jī),單片機(jī)依據(jù)預(yù)先寫(xiě)好的程序,通過(guò)靜態(tài)顯示,最后在LcDl602顯示出了溫度數(shù)值。電路原理如圖l所示。</p><p> 4
33、.2電路的焊接和調(diào)試</p><p> 由于本設(shè)計(jì)的電路比較簡(jiǎn)單。為了節(jié)省成本選擇了使用萬(wàn)用板。按電路圖把所有的元器件焊接好,并連接好電源線和地線,檢查無(wú)誤,用“easy Isp_2”下載線,使用Easy 51Prov2.0下載程序,把程序下載到52單片機(jī)實(shí)驗(yàn)板上,即可通電調(diào)試。另外,為了向溫度計(jì)提供一個(gè)穩(wěn)定的5v穩(wěn)壓工作電源,在板上另加了一個(gè)5V穩(wěn)壓電源。</p><p><b&
34、gt; 5、結(jié)束語(yǔ)</b></p><p> 基于單片機(jī)的數(shù)字式溫度計(jì)通過(guò)在各種環(huán)境溫度下的多次測(cè)量實(shí)驗(yàn),測(cè)試結(jié)果表明本文設(shè)計(jì)的數(shù)字溫度計(jì)能較好地顯示出實(shí)際環(huán)境溫度,且反應(yīng)迅速,使用方便,測(cè)量的溫度精確在0.8"E之內(nèi),完全滿足設(shè)計(jì)要求。該數(shù)顯溫度計(jì)已在各種冷藏庫(kù)、雞苗孵化房等場(chǎng)合使用,收到了良好的效果</p><p><b> 6、參考文獻(xiàn)</
35、b></p><p> [1]林伸茂.8051單片機(jī)徹底研究實(shí)習(xí)篇[M].北京:人民郵電出版社。2002.</p><p> [2]李群芳.張士軍,黃建.單片微型計(jì)算機(jī)與接口技術(shù)(第2版)[M].北京:電子工業(yè)版社,2005.</p><p> [3]馬家展。孫玉德,張穎.MCS-51單片機(jī)原理及接口技術(shù)[Ml哈爾濱:哈爾濱工業(yè)大學(xué)出版社。1998.&l
36、t;/p><p><b> 附件</b></p><p><b> 電路原理圖</b></p><p><b> PCD板</b></p><p><b> 程序:</b></p><p> /****************
37、*************************************************/ </p><p> /*名稱: 測(cè)溫+顯示程序 */
38、 </p><p> /*功能: 讀取當(dāng)前18B20溫度,由數(shù)碼管顯示出來(lái)。 */
39、 </p><p> /************
40、*****************************************************/</p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> sbit DQ =P3^7;//18B20數(shù)據(jù)線引腳</p><p&g
41、t;<b> //行掃描數(shù)組</b></p><p> uchar code scan[4] = {0x7f,0xbf,0xdf,0xef};//row0--row4</p><p> //數(shù)碼管顯示的段碼表</p><p> uchar code table[20] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x
42、82,0xf8,0x80,0x90, 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,};</p><p> uchar dispbuf[4]; //顯示緩沖區(qū) </p><p> uchar temper[2];//存放溫度的數(shù)組 </
43、p><p> /*****************************延時(shí)函數(shù)**************************/</p><p> void delay (unsigned int us) </p><p><b> {</b></p><p> while(us--);</p>
44、<p><b> }</b></p><p> void reset(void) //復(fù)位</p><p><b> {</b></p><p> uchar x=0;</p><p><b> DQ = 1;</b></p><
45、p> delay(8); //稍做延時(shí)</p><p><b> DQ = 0;</b></p><p> delay(80); //精確延時(shí) 大于 480us</p><p> DQ = 1; //拉高總線</p><p> delay(14);</p><p>&l
46、t;b> x=DQ;</b></p><p> delay(20);</p><p><b> }</b></p><p> /**********************從DS18B20讀一字節(jié)***************/</p><p> uchar readbyte(void) //
47、讀1字節(jié)</p><p><b> {</b></p><p> uchar i=0;</p><p> uchar dat=0;</p><p> for (i=8;i>0;i--)</p><p><b> {</b></p><p&g
48、t;<b> DQ = 0;</b></p><p><b> dat>>=1;</b></p><p><b> DQ = 1;</b></p><p><b> if(DQ)</b></p><p> dat|=0x80;<
49、/p><p><b> delay(4);</b></p><p><b> }</b></p><p> return(dat);</p><p><b> }</b></p><p> /***********************向DS18
50、B20寫(xiě)一字節(jié)***********************/</p><p> void writebyte(unsigned char dat) //寫(xiě)1字節(jié)</p><p><b> {</b></p><p> uchar i=0;</p><p> for (i=8; i>0; i--)</
51、p><p><b> {</b></p><p><b> DQ = 0;</b></p><p> DQ = dat&0x01;</p><p><b> delay(5);</b></p><p><b> DQ = 1;&l
52、t;/b></p><p><b> dat>>=1;</b></p><p><b> }</b></p><p><b> delay(4);</b></p><p><b> }</b></p><p&g
53、t; /***********************CPU讀取溫度值***************************/</p><p> void readtemp(void) //讀取溫度</p><p><b> {</b></p><p> uchar a=0,b=0;</p><p><b&
54、gt; reset();</b></p><p> writebyte(0xCC); // 跳過(guò)序列號(hào)</p><p> writebyte(0x44); // 啟動(dòng)溫度轉(zhuǎn)換</p><p><b> reset();</b></p><p> writebyte(0xCC);</p>
55、<p> writebyte(0xBE); //讀9個(gè)寄存器,前兩個(gè)為溫度</p><p> a=readbyte(); //低位</p><p> b=readbyte(); //高位</p><p> temper[0]=a&0x0f;</p><p> a=a>>4; /
56、/低位右移4位,舍棄小數(shù)部分</p><p> temper[1]=b<<4; //高位左移4位,舍棄符號(hào)位</p><p> temper[1]=temper[1]|a;</p><p><b> }</b></p><p> /***************************
57、***顯示+讀鍵*************************/</p><p> void vLedKey_Scan()</p><p> { unsigned char i,value; </p><p> for(i=0;i<=3;i++)</p><p><b> {</b></p&g
58、t;<p> value =table[dispbuf[i]]; //取一行顯示數(shù)據(jù) </p><p><b> if(i==0)</b></p><p> value &= 0x7f;</p><p> P0 = value;</p><p> P2 = scan[i];//取row0-
59、-row7行掃描數(shù)據(jù)</p><p> delay(100); //延時(shí)50us</p><p> P2 = 0xff;//關(guān)顯示</p><p><b> }</b></p><p><b> }</b></p><p> /*******************
60、************主函數(shù)***********************/</p><p><b> main()</b></p><p> { uchar i;</p><p> uchar temp;</p><p> float backbit; </p><p> for
61、(i=0;i<=3;i++)</p><p> dispbuf[i] = 17;</p><p><b> while(1){</b></p><p> vLedKey_Scan(); //顯示,讀鍵掃描 </p><p> readtemp();//讀18B20</p><p>
62、 backbit = temper[0];//換成浮點(diǎn)數(shù)</p><p> backbit = backbit * 6.25;//乘以0.0625*100</p><p> temp = backbit;//取低2位整數(shù)部分</p><p> dispbuf[3] = temp%10 ;</p><p> temp = temp/10
63、;</p><p> dispbuf[2] = temp%10 ;</p><p> temp = temper[1];//取整數(shù)部分</p><p> dispbuf[1] = temp%10;</p><p> dispbuf[1]+=10;//給數(shù)碼管顯示第二位后面加小數(shù)點(diǎn)</p><p> temp
64、 = temp/10;</p><p> dispbuf[0]= temp%10;</p><p><b> }</b></p><p><b> }</b></p><p> /********************************結(jié)束**********************
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 數(shù)字溫度計(jì)課程設(shè)計(jì)---基于51單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 基于單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)--基于單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-- 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)—數(shù)字溫度計(jì)
- 單片機(jī)數(shù)字溫度計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)-數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)—數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)——數(shù)字溫度計(jì)
- 單片機(jī)課程設(shè)計(jì)—數(shù)字溫度計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)設(shè)計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--數(shù)字溫度計(jì)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論