版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1 / 44師學(xué)院師學(xué)院 簡易萬年歷的設(shè)計(jì)系 別:物理與電子信息工程系 專 業(yè):電子信息科學(xué)與技術(shù)2013 年 6 月 目錄目錄1. 設(shè)計(jì)任務(wù) 51.1 設(shè)計(jì)任務(wù) 51.2 設(shè)計(jì)要求 62.設(shè)計(jì)方案 62 / 442.1 設(shè)計(jì)思路 62.2 方案比較與論證 62.2.1 數(shù)碼管顯示模塊 62.2.2 溫度傳感器的選擇 62.2.3 時(shí)鐘計(jì)時(shí)的選擇 72.3 系統(tǒng)結(jié)構(gòu)框圖 73.各功能模塊設(shè)計(jì) 83.1 顯示模塊原理 83.2 參數(shù)計(jì)算 93.3 獨(dú)立式按鍵模塊 93.4 時(shí)鐘模塊 103.4.1 DS1302 特性介紹 103.4.2 DS1302 引腳介紹 103.4.3 DS1302 有關(guān)
2、日歷、時(shí)間的寄存器 103.4.4 DS1302 控制字介紹 113.4.5 DS1302 單字節(jié)讀寫時(shí)序介紹 113.4.6 DS1302 操作指令介紹 123.4.7 DS1302 與單片機(jī)接口電路 133.5 溫測模塊 133.5.1 單總線介紹 133.5.2 DS18B20 特性介紹 133.5.3 DS18B20 管腳介紹 143.5.4 DS18B20 部結(jié)構(gòu) 143.5.5 DS18B20 溫度轉(zhuǎn)化示例 143.5.6 DS18B20 時(shí)序介紹 153.5.7 DS18B20 操作步驟 163.5.8 DS18B20 與單片機(jī)的接口電路 173.6 總系統(tǒng)原理圖 174.軟件設(shè)
3、計(jì) 184.1 I/O 口分配 184.2 按鍵掃描 185.流程圖 195.1 主程序流程圖 195.2 WORK0 模塊流程圖 195.3 WORK1 模塊流程圖 205.4 WORK2 模塊流程圖 205.5 獲取溫度子程序流程圖 215.6 按鍵掃描 225.7 中斷服務(wù)子程序 223 / 445.8 顯示方式 1225.9 初始化 DS1302 子程序流圖 235.10 溫顯模塊子程序流圖 245.11 讀取時(shí)間模塊子程序流圖 246.程序代碼 256.1 主程序部分 256.2 包含文件部分 336.3 包含文件部分 357.調(diào)試要點(diǎn) 437.1 硬件調(diào)試 437.2 軟件調(diào)試 4
4、37.3 結(jié)果分析與設(shè)計(jì)工作總結(jié) 438.參考文獻(xiàn)與附件 438.1 參考文獻(xiàn) 438.2 元器件清單 448.3 PCB 版圖 448.4 實(shí)物圖 正面 458.5 實(shí)物圖 背面 45摘要摘要:單片機(jī)就是微控制器,是面向應(yīng)用對象設(shè)計(jì)、突出控制功能的芯片。單片機(jī)接上晶振、復(fù)位電路和相應(yīng)的接口電路,裝載軟件后就可以構(gòu)成單片機(jī)應(yīng)用系統(tǒng)。將它嵌入到形形色色的應(yīng)用系統(tǒng)中,就構(gòu)成了眾多產(chǎn)品、設(shè)備的智能化核心。本設(shè)計(jì)就是應(yīng)用單片機(jī)強(qiáng)大的控制功能制作而成的電子萬年歷,該電子萬年歷包括兩大功能:可顯示年、月、日、時(shí)、分;實(shí)時(shí)監(jiān)測環(huán)境溫度(具有超低溫的報(bào)警功能,且報(bào)警的上下限值可由用戶自定義設(shè)置),。關(guān)鍵字關(guān)鍵
5、字:單片機(jī),DS18B20,DS1302,共陽數(shù)碼管.4 / 441.1. 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù)1.11.1 設(shè)計(jì)任務(wù)設(shè)計(jì)任務(wù) 利用單片機(jī)、時(shí)鐘芯片 DS1302、溫度傳感器 DS18B20、數(shù)碼管等 實(shí)現(xiàn)日期、時(shí)間、溫度的顯示,即一個(gè)簡單的萬年歷。1.21.2 設(shè)計(jì)要求設(shè)計(jì)要求1. 通過 DS1302 計(jì)時(shí),時(shí)間可調(diào)并在數(shù)碼管上顯示出來。2. 通過 DS18B20 檢測當(dāng)前環(huán)境溫度,精讀為 0.5。3. 具有超溫報(bào)警功能2.設(shè)計(jì)方案2.12.1 設(shè)計(jì)思路設(shè)計(jì)思路本設(shè)計(jì)由 DS18B20 作為溫度檢測的核心,檢測一次當(dāng)前溫度所耗費(fèi)的時(shí)間大約在 100ms750ms 之間,隨著檢測精度的增加,耗費(fèi)時(shí)
6、間在方位逐漸增加,所以利用軟件延時(shí)的方法來實(shí)現(xiàn)溫檢,并且具有超溫和低溫的報(bào)警功能,其溫度報(bào)警的上下限值可根據(jù)用戶喜好進(jìn)行更改;時(shí)鐘部分使用專用計(jì)時(shí)芯片 DS1302,可精確顯示年、月、日、時(shí)、分、秒;2.22.2 方案比較與論證方案比較與論證2.2.12.2.1數(shù)碼管顯示模塊數(shù)碼管顯示模塊方案一:單片機(jī)輸出數(shù)據(jù)經(jīng)譯碼芯片 CD4511 進(jìn)行譯碼后直接驅(qū)動數(shù)碼管,數(shù)碼管公共端接 9012 三極管擴(kuò)流,并通過單片機(jī) I/O 口控制三極管的選通,實(shí)現(xiàn)動態(tài)顯示。方案二:有單片機(jī)的 I/O 口直接驅(qū)動數(shù)碼管的段碼,數(shù)碼管的公共端接 9012 三極管,通過灌電流的方式點(diǎn)亮數(shù)碼管,也需通過單片機(jī) I/O 口
7、控制三極管的選通,實(shí)現(xiàn)動態(tài)顯示。由于所需 I/O 口由 AT98S52 可直接提供,無須因?yàn)?I/O 口不夠而用 CD4511 來節(jié)省I/O 口,方案二又較方案一更容易實(shí)惠,所以,我選擇方案二。2.2.22.2.2溫度傳感器的選擇溫度傳感器的選擇 方案一:采用熱敏電阻作為檢測溫度的核心元件,由于熱敏電阻會隨溫度變化而變化,進(jìn)而其阻值發(fā)生變化,再經(jīng) 555 振蕩器變化的脈沖5 / 44數(shù)傳遞給單片機(jī)進(jìn)行處理。 方案二:采用數(shù)字式的集成溫度傳感器 DS18B20 作為溫度檢測的核心元件,由其檢測并直接輸出數(shù)字溫度信號給單片機(jī)進(jìn)行處理。 對于方案一,采用熱敏電阻作為溫度檢測元件,有價(jià)格便宜,元件易購
8、的優(yōu)點(diǎn),但熱敏電阻對溫度的細(xì)微變化不太敏感,并且由于熱敏電阻的 R-T 關(guān)系的非線性,其自身電阻對溫度的變化存在較大誤差,而且在人體所處環(huán)境溫度變化過程中難以檢測到小的溫度變化。但作為本次設(shè)計(jì)雖已能滿足基本要求,但為了更深入的學(xué)習(xí),所以放棄該方案。 對于方案二,由于數(shù)字式集成溫度傳感器 DS18B20 的高度集成化,大大降低了外接放大轉(zhuǎn)化等電路的誤差因數(shù),溫度誤差變得很小,并且由于其檢測溫度的原理與熱敏電阻檢測的原理有著本質(zhì)的不同,使得其溫度分辨力極高。溫度值在器件部轉(zhuǎn)化成數(shù)字量直接輸出,簡化了系統(tǒng)程序設(shè)計(jì),又由于該溫度傳感器采用先進(jìn)的單總線技術(shù),與單片機(jī)的接口變得非常簡潔,抗干擾能力強(qiáng),雖然
9、芯片原理復(fù)雜,但是可以對時(shí)序的理解更深入一步,所以選擇此方案。2.2.32.2.3時(shí)鐘計(jì)時(shí)的選擇時(shí)鐘計(jì)時(shí)的選擇 方案一:AT89S52 單片機(jī)部帶有定時(shí)/計(jì)數(shù)功能,此定時(shí)功能是通過對外部晶振的脈沖進(jìn)行計(jì)數(shù),從而達(dá)到計(jì)時(shí)功能,只要使用 11.0592 的晶振就能實(shí)現(xiàn)零誤差的計(jì)時(shí),因此可以利用此功能實(shí)現(xiàn)計(jì)時(shí),但因?yàn)橹挥袉我坏挠?jì)時(shí)功能要實(shí)現(xiàn)“萬年歷”的功能需要較復(fù)雜的程序,而且如果單片機(jī)掉電無法繼續(xù)進(jìn)行計(jì)時(shí),所以使用不便。方案二:DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加 31 字節(jié)靜態(tài) RAM,采用 SPI 三線接口與 CPU 進(jìn)行通信,并可采用突發(fā)方式一
10、次傳送多個(gè)字節(jié)的時(shí)鐘信號和 RAM 數(shù)據(jù)。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與 31 天時(shí)可以自動調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá) 2.55.5V。采用雙電源供電(主電源和備用電源) ,可設(shè)置備用電源充電方式,提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。利用單片機(jī)強(qiáng)大的控制功能就可實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)的功能,而且消耗的系統(tǒng)資源少,程序簡單。綜合上述兩種方案,宜采用方案二實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)功能。2.32.3 系統(tǒng)結(jié)構(gòu)框圖系統(tǒng)結(jié)構(gòu)框圖 AT89S52 單片機(jī)在模式鍵、設(shè)置鍵的控制下,由 P0 口輸出數(shù)據(jù),通 過 P2.0 、P2.1、P2.2、P2.3 進(jìn)行選通,用數(shù)碼管顯示信息。 系統(tǒng)框圖
11、:AT89S52鍵盤18B20DS1302晶振數(shù)碼管蜂鳴器LED電源6 / 44圖 2-3 系統(tǒng)總框圖3.3.各功能模塊設(shè)計(jì)各功能模塊設(shè)計(jì)3.13.1 顯示模塊顯示模塊原理原理 由單片機(jī)(AT89S52)的引腳 P0 口輸出溫度、時(shí)間等數(shù)據(jù)信息,通過片選信號 P2.0 、P2.1、P2.2、P2.3 就可在相應(yīng)的數(shù)碼管進(jìn)行顯示。當(dāng)位選信號 P2.0 為低電平時(shí),P1 口送出數(shù)據(jù)也為低電平就點(diǎn)亮數(shù)碼管,電流灌進(jìn)單片機(jī)。多位 LED 顯示,為了簡化電路,降低成本,將所有位的段選線并聯(lián)在一起,由一個(gè) 8 位 I/O 口控制。而共陽極公共端分別接一個(gè) 9012,由相應(yīng)的 I/O 口線控制 9012,實(shí)
12、現(xiàn)各位數(shù)碼管的分時(shí)選通。段選碼,位選碼每送入一次后延時(shí) 5MS,因人的視覺暫留時(shí)間為0.1S(100MS) ,所以每位顯示的時(shí)間不能超過 20MS,并保持延時(shí)一段時(shí)間,以造成視覺暫留效果,給人看上去每個(gè)數(shù)碼管總在亮。電路如(圖3-1)所示。 由于采用的是共陽極數(shù)碼管,所以要讓段碼點(diǎn)亮需把 I/O 口置 0,例如:段碼 a 到 h 對應(yīng)的 I/O 口是 P0.0 到 P0.7,則要讓數(shù)碼管顯示 0到 9 對應(yīng)的 16 進(jìn)值如圖 3-2 所示Q 090 12Q 190 12Q 290 12Q 390 12abR 047 0R 147 0R 247 0R 347 0R 447 0R 547 0R 6
13、47 0R 747 0V CCV CCV CCV CCR 84K 7R 94K 7R 104K 7R 114K 7P 00P 01P 02P 03P 04P 05P 06P 07cdefghabcdefghabcdefghabcdefghC S0C S1C S2C S3位位位位位位abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u1SM 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u2SM 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u3SM 4 11 00 6abf
14、cgdedpa7b6c4d2e1f9g10dp5com3com8sh u4SM 4 11 00 6abcdefgh圖 3-1 顯示電路hgfedcba16 進(jìn)制0110000000XC0H7 / 44圖 3-2 碼表3.23.2 參數(shù)計(jì)算參數(shù)計(jì)算 由于 I/O 口高電平約等于 5V,使用灌電流的方式驅(qū)動數(shù)碼管,故選用 PNP 型三極管 9012;數(shù)碼管能正常工作的段電流為 3mA-10 mA,壓降為 1.7V,三極管發(fā)射極和集電極的壓降為 0.3V,因此限流電阻的壓 降為 3.0V, 所以選用限流電阻的阻值 R=470 歐.3.33.3 獨(dú)立式按鍵模塊獨(dú)立式按鍵模塊 獨(dú)立式按鍵是直接用 I/O
15、 口線構(gòu)成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根 I/O 口線,每個(gè)按鍵的工作不會影響其它 I/O 口線的狀態(tài)。獨(dú)立式按鍵的典型應(yīng)用如(圖 3-3)所示。 獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根 I/O 口線,因此,在按鍵較多時(shí),I/O 口線浪費(fèi)較大,但本設(shè)計(jì)只用到四個(gè)按鍵,顧采用獨(dú)立式按鍵電路。圖 3-3 獨(dú)立式按鍵電路3.43.4 時(shí)鐘模塊時(shí)鐘模塊DS1302 通過三根口線實(shí)現(xiàn)與單片機(jī)的通信,因 DS1302 功耗很小,即使電源掉電后通過 3V 的紐扣電池仍能維持 DS1302 精確走時(shí)。1111110010XF9H2101001000XA4H310110000
16、0XB0H4100110010X99H5100100100X92H6100000100X82H7111110000XF8H8100000000X80H9100100000X90Hc110001100XC6H-101111110XBFHL110001110XC7HH100010010X89H500105mAVR8 / 443.4.13.4.1DS1302DS1302 特性介紹特性介紹 DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗的實(shí)時(shí)時(shí)鐘芯片,附加 31 字節(jié)靜態(tài) RAM,采用 SPI 三線接口與 CPU 進(jìn)行通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號和 RAM 數(shù)據(jù)。
17、實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小與 31 天時(shí)可以自動調(diào)整,且具有閏年補(bǔ)償功能。工作電壓寬達(dá) 2.55.5V。采用雙電源供電(主電源和備用電源) ,可設(shè)置備用電源充電方式,提供了對后備電源進(jìn)行涓細(xì)電流充電的能力。3.4.23.4.2DS1302DS1302 引腳介紹引腳介紹 各引腳的功能為:1 1、Vcc2:5V 電源。當(dāng) Vcc2Vcc1+0.2V 時(shí),由 Vcc2 向 DS1302 供電, 當(dāng) Vcc2 Vcc1 時(shí),由 Vcc1 向 DS1302 供電。2 2 和和 3 3、X1、X2 是外接晶振腳 (32.768KHZ 的晶振)4 4、地(GND)5 5、CE/RS
18、T:復(fù)位腳 6 6、I/O:數(shù)據(jù)輸入輸出口;7 7、SCLK:串行時(shí)鐘,輸入; 8 8、Vcc1:備用電池端;3.4.33.4.3DS1302DS1302 有關(guān)日歷、時(shí)間的寄存器有關(guān)日歷、時(shí)間的寄存器寄存器的說明如下:1、秒寄存器(81h、80h)的位 7 定義為時(shí)鐘暫停標(biāo)志(CH) 。當(dāng)初始上電時(shí)該位置為 1,時(shí)鐘振蕩器停止,DS1302 處于低功耗狀態(tài);只有將秒寄存器的該位置改寫為 0 時(shí),時(shí)鐘才能開始運(yùn)行。2、小時(shí)寄存器(85h、84h)的位 7 用于定義 DS1302 是運(yùn)行于 12 小時(shí)模式還是 24 小時(shí)模式。當(dāng)為高時(shí),選擇 12 小時(shí)模式。在 12 小時(shí)模式時(shí),位 5 是 ,當(dāng)為
19、 1 時(shí),表示 PM。在 24 小時(shí)模式時(shí),位 5 是第二個(gè) 10小時(shí)位3、控制寄存器(8Fh、8Eh)的位 7 是寫保護(hù)位(WP) ,其它 7 位均置為0。在對任何的時(shí)鐘和 RAM 的寫操作之前,WP 位必須為 0。當(dāng) WP9 / 44位為 1 時(shí),寫保護(hù)位防止對任一寄存器的寫操作。也就是說在電路上電的初始態(tài) WP 是 1,這時(shí)是不能改寫上面任何一個(gè)時(shí)間寄存器的,只有首先將 WP 改寫為 0,才能進(jìn)行其它寄存器的寫操作。 3.4.43.4.4DS1302DS1302 控制字介紹控制字介紹位位 7 7:必須是邏輯 1,如果它為 0,則不能把數(shù)據(jù)寫入到 DS1302 中。位位 6 6:如果為 0
20、,則表示存取日歷時(shí)鐘數(shù)據(jù),為 1 表示存取 RAM 數(shù)據(jù);位位 5 5 至位至位 1 1(A4A4A0A0):):指示操作單元的地址;位位 0 0(最低有效位):(最低有效位):為 0,表示要進(jìn)行寫操作,為 1 表示進(jìn)行讀操作。讀數(shù)據(jù):讀數(shù)據(jù): 讀數(shù)據(jù)時(shí)在緊跟 8 位的控制字指令后的下一個(gè) SCLK 脈沖的下降沿,讀出 DS1302 的數(shù)據(jù),讀出的數(shù)據(jù)是從最低位到最高位。寫數(shù)據(jù):寫數(shù)據(jù):控制字總是從最低位開始輸出。在控制字指令輸入后的下一個(gè)SCLK 時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入 DS1302,數(shù)據(jù)輸入也是從最低位(0 位)開始。位 0(最低有效位):為 1 表示進(jìn)行讀操作。 如為0,表示要進(jìn)行寫
21、操作,控制字后 SCLK 下降沿 讀數(shù)據(jù) SCLK 上升沿寫數(shù)據(jù)。3.4.53.4.5DS1302DS1302 單字節(jié)讀寫時(shí)序介紹單字節(jié)讀寫時(shí)序介紹10 / 44 DS1302 的數(shù)據(jù)讀寫是通過 I/O 串行進(jìn)行的。當(dāng)進(jìn)行一次讀寫操作時(shí)最少得讀寫兩個(gè)字節(jié),第一個(gè)字節(jié)是控制字節(jié),就是一個(gè)命令,告訴DS1302 是讀還是寫操作,是對 RAM 還是對 CLOK 寄存器操作,以與操作的址。第二個(gè)字節(jié)就是要讀或?qū)懙臄?shù)據(jù)了。 單字節(jié)寫:在進(jìn)行操作之前先得將 CE(也可說是 RST)置高電平,然后單片機(jī)將控制字的位 0 放到 I/O 上,當(dāng) I/O 的數(shù)據(jù)穩(wěn)定后,將 SCLK置高電平,DS1302 檢測到
22、SCLK 的上升沿后就將 I/O 上的數(shù)據(jù)讀取,然后單片機(jī)將 SCLK 置為低電平,再將控制字的位 1 放到 I/O 上,如此反復(fù),將一個(gè)字節(jié)控制字的 8 個(gè)位傳給 DS1302。接下來就是傳一個(gè)字節(jié)的數(shù)據(jù)給 DS1302,當(dāng)傳完數(shù)據(jù)后,單片機(jī)將 CE 置為低電平,操作結(jié)束。 單字節(jié)讀操作的一開始寫控制字的過程和上面的單字節(jié)寫操作是一樣,但是單字節(jié)讀操作在寫控制字的最后一個(gè)位,SCLK 還在高電平時(shí),DS1302 就將數(shù)據(jù)放到 I/O 上,單片機(jī)將 SCLK 置為低電平后數(shù)據(jù)鎖存, 單機(jī)機(jī)就可以讀取 I/O 上的數(shù)據(jù)。如此反復(fù),將一個(gè)字節(jié)的數(shù)據(jù)讀入單片機(jī)。 讀與寫操作的不同就在于,寫操作是在
23、SCLK 低電平時(shí)單片機(jī)將數(shù)據(jù)放到 IO 上,當(dāng) SCLK 上升沿時(shí),DS1302 讀取。而讀操作是在 SCLK 高電平時(shí) DS1302 放數(shù)據(jù)到 IO 上,將 SCLK 置為低電平后,單片機(jī)就可從 IO上讀取數(shù)據(jù)。3.4.63.4.6DS1302DS1302 操作指令介紹操作指令介紹操作說明:操作說明:1 首先要通過 8EH 將寫保護(hù)去掉,將日期,時(shí)間的初值寫時(shí)各個(gè)寄器。 2 然后就可以對 80H、82H、84H、86H、88H、8AH、8CH 進(jìn)行初值的寫入。同時(shí)也通過秒寄存器將位 7 的 CH 值改成 0,這樣 DS1302 就開始走時(shí)了。3 將寫保護(hù)寄存器再寫為 80H,防止誤改寫寄存
24、器的值。 4 不斷讀取 80H8CH 的值,將它們格式化后顯示到數(shù)碼管上11 / 443.4.73.4.7DS1302DS1302 與單片機(jī)接口電路與單片機(jī)接口電路V cc21X 12X 23G ND4R ST5I/O6SC L K7V cc8U 1D S1 30 2V CCV CCX T232 76 8H ZR 145KR 155KP 32P 33P 34+1-2JP13V位位位位3.53.5 溫測模塊溫測模塊 DS18B20 通過單總線實(shí)現(xiàn)與單片機(jī)的通信,每個(gè) DS18B20 都有一個(gè)唯一的序列號,可以方便的實(shí)現(xiàn)組網(wǎng)檢測。3.5.13.5.1單總線介紹單總線介紹 1.單總線即只有一根數(shù)據(jù)線
25、,系統(tǒng)中的數(shù)據(jù)交換,控制都由這根線完成。 2.單總線通常要求外接一個(gè)約為 4.7K10K 的上拉電阻,這樣,當(dāng)總線 閑置時(shí)其狀態(tài)為高電平。3.5.23.5.2DS18B20DS18B20 特性介紹特性介紹 DS18B20 單線數(shù)字溫度傳感器,即“一線器件” ,其具有獨(dú)特的優(yōu)點(diǎn): 1. 采用單總線的接口方式 與微處理器連接時(shí) 僅需要一條口線即可實(shí)現(xiàn) 微處理器與 DS18B20 的雙向通訊。 單總線具有經(jīng)濟(jì)性好,抗干擾能 力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場溫度測量,使用方便等優(yōu)點(diǎn),使用戶可輕 松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。 2. 測量溫度圍寬,測量精度高 DS18B20 的測量圍為 -
26、55 + 125 ; 在 -10+ 85C 圍,精度為 0.5C 。 3. 在使用中不需要任何外圍元件。 4. 支持多點(diǎn)組網(wǎng)功能 多個(gè) DS18B20 可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多 點(diǎn)測溫。 5. 供電方式靈活 DS18B20 可以通過部寄生電路從數(shù)據(jù)線上獲取電 源。因此,當(dāng)數(shù)據(jù)線上的時(shí)序滿足一定的要求時(shí),可以不接外部電源, 從而使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。 6. 測量參數(shù)可配置 DS18B20 的測量分辨率可通過程序設(shè)定 912 位。12 / 44 7. 負(fù)壓特性電源極性接反時(shí),溫度計(jì)不會因發(fā)熱而燒毀,但不能正常作。 8. 掉電保護(hù)功能 DS18B20 部含有 EEPROM ,在系統(tǒng)掉
27、電以后,它 仍可保存分辨率與報(bào)警溫度的設(shè)定值。 9. DS18B20 具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方 式,更寬的電壓適用圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測溫系統(tǒng),因此也 就被設(shè)計(jì)者們所青睞。3.5.33.5.3DS18B20DS18B20 管腳介紹管腳介紹DS18B20 的管腳排列1 . GND 為電源 地;2. DQ 為數(shù)字信號輸入輸出端;3. VDD 為外接供電電源輸入端,在寄生 電源接線方式時(shí)接地; 3.5.43.5.4 DS18B20DS18B20 部結(jié)構(gòu)部結(jié)構(gòu) DS18B20 部結(jié)構(gòu)主要由四部分組成: 64 位光刻 ROM 、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器 TH
28、和 TL 、配置寄存器。 光刻 ROM 中的 64 位序列號是出廠前被光刻好的,它可以看作是該 DS18B20 的地址序列碼。 64 位光刻 ROM 的排列是:開始 8 位(地址: 28H )是產(chǎn)品類型標(biāo)號,接著的 48 位是該 DS18B20 自身的序列號,并且每個(gè) DS18B20 的序列號都不一樣,因此它可以看作是該 DS18B20 的地址序列碼;最后 8 位則是前面 56 位的循環(huán)冗余校驗(yàn)碼( CRC=X8+X5+X4+1 ) 。由于每一個(gè) DS18B20 的 ROM 數(shù)據(jù)都各不一樣,因此微控制器就可以通過單總線對多個(gè) DS18B20 進(jìn)行尋址,從而實(shí)現(xiàn)一根總線上掛接多個(gè) DS18B20
29、 的目的。DS18B20 中的溫度傳感器完成對溫度的測量,用 16 位二進(jìn)制形式提供,形式表達(dá),其中 S 為符號位。3.5.53.5.5 DS18B20DS18B20 溫度轉(zhuǎn)化示例溫度轉(zhuǎn)化示例13 / 443.5.63.5.6 DS18B20DS18B20 時(shí)序介紹時(shí)序介紹DS18B20 的一線工作協(xié)議流程是:初始化ROM 操作指令存儲器操作指令數(shù)據(jù)傳輸。其工作時(shí)序包括:1. 初始化時(shí)序2. 寫時(shí)序3. 讀時(shí)序初始化時(shí)序:初始化時(shí)序: 主機(jī)首先發(fā)出一個(gè) 480960 微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的 480 微秒時(shí)間對總線進(jìn)行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答
30、。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。做為從器件的 DS18B20 在一上電后就一直在檢測總線上是否有480960 微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待 1560微秒后將總線電平拉低 60240 微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測到就一直在檢測等待。寫操作:寫操作:14 / 44 寫操作就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18B20 寫 0 和寫 1 組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從 DS18B20 讀取0 或 1 的過程。寫周期最少為 60 微秒,最長不超過 120 微秒。寫周期一開始做為主機(jī)先把總線拉低 1 微秒表示寫周期開始
31、。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少 60 微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫 1,在一開始拉低總線電平 1 微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機(jī)的 DS18B20 則在檢測到總線被拉底后等待 15 微秒然后從 15us 到 45us 開始對總線采樣,在采樣期總線為高電平則為 1,若采樣期總線為低電平則為 0。讀操作:讀操作: 對于讀數(shù)據(jù)操作時(shí)序也分為讀 0 時(shí)序和讀 1 時(shí)序兩個(gè)過程。讀時(shí)序是從主機(jī)把單總線拉低之后,在 1 微秒之后就得釋放單總線為高電平,以讓 DS18B20 把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20 在檢測到總線被拉低 1微秒后,便開始送出
32、數(shù)據(jù),若是要送出 0 就把總線拉為低電平直到讀周期結(jié)束。若要送出 1 則釋放總線為高電平。主機(jī)在一開始拉低總線 1 微秒后釋放總線,然后在包括前面的拉低總線電平 1 微秒在的 15 微秒時(shí)間完成對總線進(jìn)行采樣檢測,采樣期總線為低電平則確認(rèn)為 0。采樣期總線為高電平則確認(rèn)為 1。完成一個(gè)讀時(shí)序過程,至少需要 60us 才能完成。3.5.73.5.7 DS18B20DS18B20 操作步驟操作步驟1. 每次讀寫前對 DS18B20 進(jìn)行復(fù)位初始化。復(fù)位要求主 CPU 將數(shù)據(jù)線下拉 500us ,然后釋放, DS18B20 收到信號后等待 16us60us 左右,然后發(fā)出 60us240us 的存在
33、低脈沖,主 CPU 收到此信號后表示復(fù)位成功。2. 發(fā)送一條 ROM 指令15 / 443. 發(fā)送存儲器指令3.5.83.5.8 DS18B20DS18B20 與單片機(jī)的接口電路與單片機(jī)的接口電路3.63.6 總系統(tǒng)原理圖總系統(tǒng)原理圖 單片機(jī)(AT89S52)9 腳為復(fù)位輸入端。上電復(fù)位,只要 RST 引腳上有大于二個(gè)機(jī)器周期以上的高電平,單片機(jī)(AT89C2051)即復(fù)位。按鍵從單片機(jī)(AT89S52)的 P2.4、P2.5、P2.6、P2.7 口接入,當(dāng)按鍵被按下時(shí),相應(yīng)的輸入口就會輸入低電平 0。單片機(jī)(AT89S52)的 XTAL1 腳、XTAL2 腳接一個(gè)由 12M 晶振和 10pf
34、組成的振蕩電路。為單片機(jī)提供相應(yīng)的時(shí)序。16 / 44X T112 MC 810 pfC 910 pfE 110 ufS1SW -PBR 1810 kR 1733 0V DD3I/O2G ND1U 3D S1 8B 20R 204K 7C 10.1U FR ESR ESV CCV CCV CCC S0C S3C S1C S2Q 490 12V CCR 193.3KP30V CC12+L S1R 165.1KD 1L EDQ 090 12Q 190 12Q 290 12Q 390 12123456789 10IS P1M O S IR ESSC KM ISOV CC位位位位位位位位位位位位位位位
35、位位位位P 24P 25P 26P 27P 10P 11P 12P 13P 14P 15P 16P 17K 0K 1K 2K 3P 24P 25P 26P 27位位位位V CCV CCP 10P 11P 12P 13P 14P 15P 16P 17R 132KR 1210 0V CCP 30P 31P 36P 37V cc21X 12X 23G ND4R ST5I/O6SC L K7V cc8U 1D S1 30 2V CCV CCX T232 76 8H ZR 145KR 155KP 35P 36P 37P 32P 33P 34+1-2JP13V位位位位位位位位位位位位位位USB位位P 00
36、P 01P 02P 03P 04P 05P 06P 071234JP2帽帽D 2L EDD 3L EDabR 047 0R 147 0R 247 0R 347 0R 447 0R 547 0R 647 0R 747 0V CCV CCV CCV CCR 84K 7R 94K 7R 104K 7R 114K 7P 00P 01P 02P 03P 04P 05P 06P 07cdefghabcdefghabcdefghabcdefghC S0C S1C S2C S3位位位位位位CPU位位位位位abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u1SM 4 11 00 6a
37、bfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u2SM 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u3SM 4 11 00 6abfcgdedpa7b6c4d2e1f9g10dp5com3com8sh u4SM 4 11 00 6abcdefghM O S IM ISOSC KV CC1G ND2POW E RR 214.7KG ND1V CC2V O3R S4R W5E6D B07D B18D B29D B310D B411D B512D B613D B714B G V C C15B G G N D16LCD 1
38、602L CDL CD 16 02P 32P 33P 34P 35E A/V PP31X 119X 218R ES ET9R D/P3 717W R/P3 616P32/IN T012P33/IN T113P34/T014P35/T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSE N29A LE /PRD G30P31/TX D11P30/RX D10V CC40G ND20IC 6A T8 9C 524.4
39、.軟件設(shè)計(jì)軟件設(shè)計(jì)主程序主要起到一個(gè)導(dǎo)向和決策功能,控制程序的走向。本系統(tǒng)在主程序中運(yùn)用模塊化結(jié)構(gòu),所有控制量集中處理,提高了處理效率,并在RAM 建立各控制量的映射,方便各功能模塊的編程與修改。運(yùn)用散轉(zhuǎn)結(jié)構(gòu),可實(shí)現(xiàn)無擾動重入。本設(shè)計(jì)主要有以下幾個(gè)模塊:溫顯模塊、時(shí)鐘顯示模塊、時(shí)鐘修改模塊。操作說明:上電復(fù)位后進(jìn)入溫顯模塊,按 K1 鍵可進(jìn)入溫度報(bào)警值上下限的設(shè)置;按 K0 可進(jìn)行模塊間的轉(zhuǎn)換,按一次 K0 進(jìn)入時(shí)鐘模塊,按K0 兩次進(jìn)入時(shí)鐘修改模塊。4.14.1 I/OI/O 口分配口分配1、P2.0、P2.1、P2.2、P2.3 作為個(gè)位、十位、百位、千位數(shù)碼管片選。2、P2.4、P2.5
40、、P2.6、P2.7 作為按鍵接口。3、P0.0 到 P0.7 作為段碼 a 到 g 的輸出口。17 / 444.24.2 按鍵掃描按鍵掃描本設(shè)計(jì)采用定時(shí)器中斷延時(shí)去抖的方法來進(jìn)行按鍵的有效掃描判斷5.5.流程圖流程圖5.15.1 主程序流程圖主程序流程圖5.25.2 work0work0 模塊流程圖模塊流程圖mode=0mode=1獲取溫度根據(jù)鍵狀態(tài)進(jìn)行功能散轉(zhuǎn)Work0,溫顯和溫報(bào)模塊,同時(shí)置位延時(shí)方式標(biāo)志位Work1,時(shí)間顯示,同時(shí)清零延時(shí)方式標(biāo)志位Work2,調(diào)時(shí)模塊,在調(diào)整完畢后進(jìn)入Work1按鍵掃描顯示方式 1清定時(shí)標(biāo)志位 重裝定時(shí)初值按鍵掃描顯示方式 2初始化 DS1302讀取時(shí)
41、間開始初始化延時(shí)方式標(biāo)志位=1?NYN5ms 到?Ymode=2入口根據(jù)鍵狀態(tài)值進(jìn)行功能散轉(zhuǎn)溫顯模式修改高溫報(bào)警值修改低溫報(bào)警值返回cnt1=0cnt1=1cnt1=218 / 445.35.3 work1work1 模塊流程圖模塊流程圖5.45.4 work2work2 模塊流程圖模塊流程圖msta=0msta=1月份顯示模塊msta=2時(shí)間顯示模塊星期顯示模塊入口年份顯示模塊返回根據(jù)鍵狀態(tài)值進(jìn)行功能散轉(zhuǎn)msta=3設(shè)置時(shí)間預(yù)處理,即將當(dāng)前時(shí)間值送給修改緩沖單元入口根據(jù)鍵狀態(tài)值進(jìn)行功能散轉(zhuǎn)msta1=2msta1=3msta1=0msta1=1返回修改小時(shí),高兩位數(shù)碼管位閃,按 K2 與 K
42、3 鍵修改修改分鐘,低兩位數(shù)碼管位閃,按 K2 與 K3 鍵修改修改月份,高兩位數(shù)碼管位閃,按 K2 與 K3 鍵修改修改日,低兩位數(shù)碼管位閃,按 K2 與 K3 鍵修改修改年份,高兩位顯示 20低兩位數(shù)碼管位閃,按 K2與 K3 鍵修改修改星期,低兩位數(shù)碼管位閃,按 K2 與 K3 鍵修改修改完畢,將修改信息寫入到 DS1302 芯片中msta1=4msta1=5msta1=6msta1=719 / 445.55.5 獲取溫度子程序流程圖獲取溫度子程序流程圖入口初始化 DS18B20跳過 ROM溫度轉(zhuǎn)換初始化 DS18B20跳過 ROM讀取溫度讀低 8 位讀高 8 位將取出的數(shù)據(jù)轉(zhuǎn)換成溫度值
43、,分為整數(shù)部分和小數(shù)部分將整數(shù)部分送顯緩存將小數(shù)部分按 0.5 精度處理將溫度值轉(zhuǎn)換為BCDma3,yongyu 溫度報(bào)警時(shí)溫度比較實(shí)用返回20 / 445.65.6 按鍵掃描按鍵掃描5.75.7 中斷服務(wù)子程序中斷服務(wù)子程序5.85.8 顯示方式顯示方式 1 1入口讀鍵,保存鍵值有鍵?開定時(shí)中斷延時(shí)去抖提取鍵前沿關(guān)定時(shí)中斷返回NY入口重裝中斷定時(shí)初值保存變化的鍵狀態(tài)返回顯示個(gè)位,dsw=1關(guān)數(shù)碼管i3?根據(jù)狀態(tài)字進(jìn)行散轉(zhuǎn)入口i=0返回顯示十位,dsw=2顯示百位,dsw=3顯示千位,dsw=0dsw=0dsw=1dsw=2dsw=321 / 445.95.9 初始化初始化 DS1302DS1
44、302 子程序流圖子程序流圖YN入口允許初始化標(biāo)志位=1?寫保護(hù)關(guān)寫入年份寫入月份寫入日寫入小時(shí)寫入分鐘寫保護(hù)開允許初始化標(biāo)志位清零返回NY22 / 445.105.10 溫顯模塊子程序流圖溫顯模塊子程序流圖5.115.11 讀取時(shí)間模塊子程序流圖讀取時(shí)間模塊子程序流圖入口將溫度值送顯緩溫度值比較,超過上下限值,則報(bào)警返回讀取分鐘,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)入口變量定義返回讀取小時(shí),將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)讀取日,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)讀取月份,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)讀取星期,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)讀取年份,將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù)23 / 446.6.程序代碼程序代碼6.16.1 主程序部分主程序部
45、分#include /52 單片機(jī)頭文件#include /52 單片機(jī)頭文件#include#include /52 單片機(jī)頭文件#define SM_PORT P0 /輸出口定義#define uint unsigned int#define uchar unsigned charuchar code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99, /0,1,2,3.數(shù)碼管 /斷碼表,16 關(guān),17H,18,19L0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1, 0 x86,0 x8e,0 xff,0 x
46、89,0 xbf,0 xc7; uchar LBJ_buf0,LBJ_buf1,HBJ_buf0,HBJ_buf1;uchar H2_weishan,L2_weishan;uchar r0,DELAY_mode;uchar msta,BJ_L,BJ_H,cnt1,cnt;void RDKEY() P2=0 xff; /掃描第 0 行(ROW0),即 k0-k3 鍵 r0=P2; r0=r0; r0&=0 xf0; /將讀取到的 k0-k3 鍵值保存于 KEY0 的低四位 if(r0!=KEY0) /判斷是否有鍵按下 24 / 44 TR0=1; EKEY0=KEY0; /時(shí)間未到,沿用
47、原來保留的鍵值 else /未有鍵按下 TR0=0; EKEY0=0 x00; EKEY0=r0&(KEY0r0); /提取鍵前沿 KEY0=r0; void disp () uchar i; for(i=0;i3;i+) P2=0 xff; switch(dsw) case 0:CS0=0; SM_PORT=tablebuf0; /顯示個(gè)位 dsw=1; break; case 1:CS1=0; SM_PORT=tablebuf1; /顯示十位 dsw=2; break; case 2:if(!fh_300) CS2=0; else CS2=1; SM_PORT=tablebuf2;
48、 /顯示百位 if(point_flag) point=0; else point=1; dsw=3; break; case 3: if(!fh_300) CS3=0; else CS3=1; SM_PORT=tablebuf3; /顯示千位 dsw=0; break; default:break; 25 / 44void disp1 () SM_PORT=0 xff; P2=0 xff; switch(dsw) case 0: if(!fl_300) CS0=0; else CS0=1; SM_PORT=tablebuf0; /顯示個(gè)位 dsw=1; break; case 1: if(!
49、fl_300) CS1=0; else CS1=1; SM_PORT=tablebuf1; /顯示十位 dsw=2; break; case 2: if(!fh_300) CS2=0; else CS2=1; SM_PORT=tablebuf2; /顯示百位 if(point_flag) point=0; else point=1; dsw=3; break; case 3: if(!fh_300) CS3=0; else CS3=1; SM_PORT=tablebuf3; /顯示千位 dsw=0; break; default:break; void Init() TMOD=0 x11;/設(shè)
50、置定時(shí)器的工作方式 TH0=(65536-20000)/256; /為定時(shí)器 0 裝載初值,用中斷方式進(jìn)行 /按鍵的去抖 TL0=(65536-20000)%256; TH1=(65536-5000)/256;/為定時(shí)器 1 裝載初值 TL1=(65536-5000)%256;26 / 44 EA=1; /開總中斷 ET0=1; /開定時(shí)器 0 中斷 TR1=1; /開定時(shí)器 0 LBJ_buf1=2; /為低溫報(bào)警值賦初值 22 度,在主程 /序中可修改 LBJ_buf0=2; HBJ_buf1=3; /為高溫報(bào)警值賦初值 35 度,在主程 /序中可修改 HBJ_buf0=5; FMQ=1;
51、 /關(guān)閉蜂鳴器和 LED DELAY_mode=1; /工作模式賦初值 1(其中/mode=1 表示,程序使用軟件延時(shí),此時(shí)使用 DS18B20 進(jìn)行溫度測量, /作為溫度計(jì)使用;mode=0 時(shí),使用/定時(shí)器延時(shí),程序每隔 5ms 執(zhí)行一次,此時(shí)作為時(shí)鐘 TZtime_flag1=0; Second_buf=0 x00; Minute_buf=0 x00; Hour_buf=0 x12; Day_buf=0 x16; Week_buf=0 x01; Month_buf=0 x06; Year_buf=0 x13;void wenxian() DELAY_mode=1; BJ_L=LBJ_bu
52、f1; BJ_L=4; BJ_L&=0 xf0; BJ_L+=LBJ_buf0&0 x0f; BJ_H=HBJ_buf1; BJ_H=BJ_H|temp16h=BJ_L)27 / 44 t+; if(cnt=50) FMQ=FMQ;cnt=0; else FMQ=1;void XG_LBJ() /修改低溫報(bào)警值 DELAY_mode=1; point_flag=0; buf3=19; buf2=18; buf1=LBJ_buf1; buf0=LBJ_buf0; fl_300=0; H2_weishan+; if(H2_weishan=60) H2_weishan=0; fh_3
53、00=fh_300; if(EK2) if(LBJ_buf0) -LBJ_buf0; else if(LBJ_buf1) -LBJ_buf1;LBJ_buf0=9; if(EK3) if(LBJ_buf0!=9) +LBJ_buf0; else if(LBJ_buf1!=9) +LBJ_buf1;LBJ_buf0=0; void XG_HBJ() /修改高溫報(bào)警值 DELAY_mode=1; point_flag=0; buf3=17; buf2=18; buf1=HBJ_buf1; buf0=HBJ_buf0; fl_300=0;28 / 44 H2_weishan+; if(H2_weis
54、han=60) H2_weishan=0; fh_300=fh_300; if(EK2) if(HBJ_buf0) -HBJ_buf0; else if(HBJ_buf1) -HBJ_buf1;HBJ_buf0=9; if(EK3) if(HBJ_buf0!=9) +HBJ_buf0; else if(HBJ_buf1!=9) +HBJ_buf1;HBJ_buf0=0; void work0() if(EK1) t1+; if(cnt1=3)cnt1=0; switch(cnt1) case 0:fh_300=0; wenxian(); /溫度顯示子程序,具有超溫和低溫報(bào)警功能 break;
55、case 1:XG_LBJ(); /修改低溫報(bào)警值 break; case 2:XG_HBJ(); /修改高溫報(bào)警值 break; default:break; void work1() if(EK1) msta+; if(msta=4) msta=0; 29 / 44 fh_300=0; fl_300=0; switch(msta) case 0: time_show(); break; case 1: month_show(); break; case 2: year_show(); break; case 3: week_show(); break; default:break; voi
56、d work2() if(EK1) msta1+; if(msta1=8) msta1=0; f300+; switch(msta1) case 0: set_begin(); break; case 1: Hour_set(); break; case 2: Minute_set(); break; case 3: Month_set(); break; case 4: Day_set(); break; case 5: Year_set(); break; case 6: Week_set(); break; case 7: set_over(); break; default:break
57、; 30 / 44void main() Init(); /程序的初始化 while(1) if(DELAY_mode) get_temperature(); RDKEY(); disp(); /獲得溫度 else while(!TF1); TF1=0; TH1=(65536-5000)/256; TL1=(65536-5000)%256; RDKEY(); disp1(); Initial_DS1302(); DS1302_GetTime(); if(EK0) mode+; if(mode=3) mode=0; switch(mode) case 0:work0();break; case
58、1:msta1=0; DELAY_mode=0;point_flag=0; work1(); break; case 2:work2(); DELAY_mode=0; break; default:break; 31 / 44void exter0() interrupt 1 / 定時(shí)器 0 中斷 TH0=(65536-20000)/256; /送初值 TL0=(65536-20000)%256; KEY0=r0; /時(shí)間到,保存鍵值于 KEY0,和 KEY16.26.2 包含文件包含文件部分部分#ifndef _DS18B20_H_#define _DS18B20_H_#define uin
59、t unsigned int /宏定義#define uchar unsigned char /宏定義sbit DS18B20_DQ=P31;uchar a1,a2,a3;uchar Temp_L,Temp_H; /用于讀取 18B20 中溫度 /的高 8 位和低八位數(shù)值uchar tempint,tempdf,temp16h; /溫度整數(shù)部分和小數(shù)部分void delay_us(uchar i) /延時(shí)時(shí)間為 2*i 微秒; while(-i);void Init_DS18B20() DS18B20_DQ=1; /先將數(shù)據(jù)線置高電平 1 delay_us(1); /稍微延時(shí) DS18B20_
60、DQ=0; /先將數(shù)據(jù)線置低電平 0 delay_us(250); /延時(shí) 500us,該時(shí)間圍可以在480960us /之間 DS18B20_DQ=1; /數(shù)據(jù)線拉到高電平 1 delay_us(30); /延時(shí)等待,如果初始化成功則在1560us /由 18B20 產(chǎn)生一個(gè)低電平 0 if(DS18B20_DQ=0) /如果 18B20 存在 delay_us(240); /再延時(shí) 480us 32 / 44void WRITE_DS18B20_DATA(uchar value) uchar i; for(i=0;i=1; /數(shù)據(jù)右移位 DS18B20_DQ=1; uchar READ_DS18B20_DATA()uchar i;uchar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)用機(jī)械智能化改造升級合同4篇
- 2025年連帶責(zé)任保證合同(工程擔(dān)保)
- 2025年擔(dān)保合同附件反擔(dān)保協(xié)議
- 二零二五年度城市綠化蟲害治理專業(yè)合同4篇
- 2025年化工工業(yè)健康保險(xiǎn)服務(wù)合同
- 2025年度個(gè)人對個(gè)人創(chuàng)業(yè)借款合同范本7篇
- 2025年度新型鋼管材料承包施工合同
- 2025年度個(gè)人耐用消費(fèi)品抵押貸款合同2篇
- 2025年體育館使用合同終止協(xié)議
- 2025年度醫(yī)療建筑裝修設(shè)計(jì)及施工管理服務(wù)合同
- 勞務(wù)派遣勞務(wù)外包服務(wù)方案(技術(shù)方案)
- GB/T 43391-2023市場、民意和社會調(diào)查調(diào)查報(bào)告編制指南
- 拔罐技術(shù)操作考核評分標(biāo)準(zhǔn)
- 戒賭法律協(xié)議書范本
- 競選市級三好學(xué)生PPT
- 2024屆甘肅省蘭州市五十一中生物高一上期末檢測模擬試題含解析
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)上圖入庫(技術(shù)培訓(xùn))
- 火災(zāi)隱患整改登記表
- 天津華寧KTC101說明書
- 【智慧校園】-智慧校園系統(tǒng)方案
- 外研版高中新教材英語單詞表(必修一)
評論
0/150
提交評論