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

正文內(nèi)容

基于單片機(jī)的多點(diǎn)溫度測量系統(tǒng)設(shè)計(jì)-在線瀏覽

2024-08-07 19:56本頁面
  

【正文】 器容量增加和Flash存儲器化方向發(fā)展。此外,專用化也是單片機(jī)的一個發(fā)展方向,針對單一用途的專用單片機(jī)將會越來越多。超小的體積,超低的硬件開消,抗干擾能力強(qiáng),精度高,附加功能強(qiáng),使得DS18B20更受歡迎。了解其工作原理和應(yīng)用可以拓寬您對單片機(jī)開發(fā)的思路。l * 先進(jìn)的單總線數(shù)據(jù)通信。l * 12位分辨率時的最大工作周期為750毫秒。l * 檢測溫度范圍為–55176。C (–67176。F)l * 內(nèi)置EEPROM,限溫報警功能。* 多樣封裝形式,適應(yīng)不同硬件系統(tǒng)?GND 電壓地 ?DQ 單數(shù)據(jù)總線 ?VDD 電源電壓 ?NC 空引腳?DQ一線制總線(輸入/輸出)  DS18B20的溫度檢測與數(shù)字?jǐn)?shù)據(jù)輸出全集成于一個芯片之上,從而抗干擾力更強(qiáng)。在講解其工作流程之前我們有必要了解18B20的內(nèi)部存儲器資源。數(shù)據(jù)在出產(chǎn)時設(shè)置不由用戶更改。RAM 數(shù)據(jù)暫存器,用于內(nèi)部計(jì)算和數(shù)據(jù)存取,數(shù)據(jù)在掉電后丟失,DS18B20共9個字節(jié)RAM,每個字節(jié)為8位。在上電復(fù)位時其值將被刷新。第8個字節(jié)為計(jì)數(shù)寄存器,是為了讓用戶得到更高的溫度分辨率而設(shè)計(jì)的,同樣也是內(nèi)部溫度轉(zhuǎn)換、計(jì)算的暫存單元。EEPROM 非易失性記憶體,用于存放長期需要保存的數(shù)據(jù),上下限溫度報警值和校驗(yàn)數(shù)據(jù),DS18B20共3位EEPROM,并在RAM都存在鏡像,以方便用戶操作。[3]:首先我們必須對DS18B20芯片進(jìn)行復(fù)位,復(fù)位就是由控制器(單片機(jī))給DS18B20單總線至少480uS的低電平信號。:在復(fù)位電平結(jié)束之后,控制器應(yīng)該將數(shù)據(jù)單總線拉高,以便于在15~60uS后接收存在脈沖,存在脈沖為一個60~240uS的低電平信號。如果復(fù)位低電平的時間不足或是單總線的電路斷路都不會接到存在脈沖,在設(shè)計(jì)時要注意意外情況的處理。ROM指令為8位長度,功能是對片內(nèi)的64位光刻ROM進(jìn)行操作。誠然,單總線上可以同時掛接多個器件,并通過每個器件上所獨(dú)有的ID號來區(qū)別,一般只掛接單個18B20芯片時可以跳過ROM指令(注意:此處指的跳過ROM指令并非不發(fā)送ROM指令,而是用特有的一條“跳過指令”)。操作指令同樣為8位,共6條,存儲器操作指令分別是寫RAM數(shù)據(jù)、讀RAM數(shù)據(jù)、將RAM數(shù)據(jù)復(fù)制到EEPROM、溫度轉(zhuǎn)換、將EEPROM中的報警值復(fù)制到RAM、工作方式切換。:一個存儲器操作指令結(jié)束后則將進(jìn)行指令執(zhí)行或數(shù)據(jù)的讀寫,這個操作要視存儲器操作指令而定。如執(zhí)行數(shù)據(jù)讀寫指令則需要嚴(yán)格遵循18B20的讀寫時序來操作。緊接著執(zhí)行第二個周期為:復(fù)位、跳過ROM指令[CCH]、執(zhí)行讀RAM的存儲器操作指令[BEH]、讀數(shù)據(jù)(最多為9個字節(jié),中途可停止,只讀簡單溫度值則讀前2個字節(jié)即可)。如要采用寄生工作方式,只要將VDD電源引腳與單總線并聯(lián)即可。 DS18B20芯片ROM指令表[4]Read ROM(讀ROM)[33H] (方括號中的為16進(jìn)制的命令字)這個命令允許總線控制器讀到DS18B20的64位ROM。Match ROM(指定匹配芯片)[55H]這個指令后面緊跟著由控制器發(fā)出了64位序列號,當(dāng)總線上有多只DS18B20時,只有與控制發(fā)出的序列號相同的芯片才可以做出反應(yīng),其它芯片將等待下一次復(fù)位。Skip ROM(跳躍ROM指令)[CCH]這條指令使芯片不對ROM編碼做出反應(yīng),在單芯片的情況之下,為了節(jié)省時間則可以選用此指令。Search ROM(搜索芯片)[F0H]在芯片初始化后,搜索指令允許總線上掛接多芯片時用排除法識別所有器件的64位ROM。只要芯片不掉電,報警狀態(tài)將被保持,直到再一次測得溫度什達(dá)不到報警條件為止。寫入過程中可以用復(fù)位信號中止寫入。芯片允許在讀過程中用復(fù)位信號中止讀取,即可以不讀后面不需要的字節(jié)以減少讀取時間。此后由于芯片忙于EEPROM儲存處理,當(dāng)控制器發(fā)一個讀時間隙時,總線上輸出“0”,當(dāng)儲存工作完成時,總線將輸出“1”。Convert T(溫度轉(zhuǎn)換)[44H]收到此指令后芯片將進(jìn)行一次溫度轉(zhuǎn)換,將轉(zhuǎn)換的溫度值放入RAM的第2地址。在寄生工作方式時必須在發(fā)出此指令后立刻超用強(qiáng)上拉并至少保持500MS,來維持芯片工作。由于芯片忙于復(fù)制處理,當(dāng)控制器發(fā)一個讀時間隙時,總線上輸出“0”,當(dāng)儲存工作完成時,總線將輸出“1”。這樣RAM中的兩個報警字節(jié)位將始終為EEPROM中數(shù)據(jù)的鏡像。 DS18B20復(fù)位及應(yīng)答關(guān)系及讀寫隙每一次通信之前必須進(jìn)行復(fù)位,復(fù)位的時間、等待時間、回應(yīng)時間應(yīng)嚴(yán)格按時序編程。寫時間隙:寫時間隙分為寫“0”和寫“1”,時序如圖7。每一位的發(fā)送都應(yīng)該有一個至少15uS的低電平起始位,隨后的數(shù)據(jù)“0”或“1”應(yīng)該在45uS內(nèi)完成。讀時間隙:讀時間隙時控制時的采樣時間應(yīng)該更加的精確才行,讀時間隙時也是必須先由主機(jī)產(chǎn)生至少1uS的低電平,表示讀時間的起始。每一位的讀取之前都由控制器加一個起始信號。在通信時是以8位“0”或“1”為一個字節(jié),字節(jié)的讀或?qū)懯菑母呶婚_始的。所以,要想節(jié)省掉64位序列號匹配的時間開銷,就必需設(shè)計(jì)成一個一線制總線上僅有一個DS18B20器件的系統(tǒng)。 DS18B20的一線制總線在時序上的嚴(yán)格要求,也從另一方面意味著在一定的彈性范圍內(nèi),不同DS18B20器件的時序細(xì)節(jié)上的一致性應(yīng)該是非常好,所以可以將系統(tǒng)設(shè)計(jì)成利用MCU的并行端口同時對多個DS18B20進(jìn)行統(tǒng)一的操作,不過這時候并行端口上的每一個端口連接著一個DS18B20器件而已。 本文所述的解決方案正是以端口的消耗為代價,換取對多點(diǎn)DS18B20溫度查詢的速度,并在程序結(jié)構(gòu)的設(shè)計(jì)上采用一些巧妙的處理方法,使得系統(tǒng)對DS18B20的操作上花更少的時間。從理論上分析,本設(shè)計(jì)方案的采用,查詢多個DS18B20器件操作所消耗的時間與查詢一個DS18B20器件操作所消耗的時間是等量的。 從上圖可見,每個端口連接有一個DS18B20器件,也即一條一線制總線上僅有一個DS18B20器件,符合了前面所述的解決方法。 一個端口對應(yīng)一個DS18B20器件,也就表示每組端口的某一個位的讀回數(shù)據(jù)狀態(tài)也就是該端口所對應(yīng)的器件的輸出狀態(tài),所以,這樣的系統(tǒng)里面是不需要進(jìn)行每個器件的序列號搜索、匹配的操作的。DS18B20數(shù)碼管顯示AT89C51圖42 系統(tǒng)框圖系統(tǒng)框圖[15]簡介: 系統(tǒng)的核心是AT89C51單片機(jī),系統(tǒng)通過控制選擇某一個DS18B20,并把其檢測到的溫度數(shù)據(jù)送到單片機(jī)進(jìn)行處理,在把處理后的溫度送到數(shù)碼管顯示,并顯示是那個點(diǎn)的溫度,系統(tǒng)也可以多點(diǎn)溫度循環(huán)掃描顯示。 軟件設(shè)計(jì)從最底層的與DS18B20時序相關(guān)的驅(qū)動,到與一線制總線器件處理過程控制/協(xié)議的接口函數(shù),再上升到應(yīng)用API接口函數(shù)的關(guān)系如下圖51所示:圖51 接口函數(shù)關(guān)系圖在對連在一組8位端口上的8個DS18B20操作時,是同時對該組端口進(jìn)行操作,也即同時對8個DS18B20器件進(jìn)行同步的操作。底層時序驅(qū)動[8]程序與DS18B20的一線制總線的協(xié)議保持一致,根據(jù)一線制總線時序的特點(diǎn),設(shè)計(jì)了四個基本的函數(shù):總線寫1時序控制函數(shù):void DS18B20_Write_1(void){Delay_1us(10)。//延時10us左右//8個DQ線全部輸出高電平P1 = 0x00。Delay_1us(40)。P1 = 0xff。//端口恢復(fù)高電平}總線讀取一個數(shù)據(jù)位時序控制函數(shù):unsigned char DS18B20_ReadDQ(void){//8個DQ 線全部設(shè)置為低電平Delay_1us(1)。DQ_S = P1。P1 = 0xff。//恢復(fù)端口電平//延時//返回讀取的值} 在讀取一個總線狀態(tài)數(shù)據(jù)位的函數(shù)中,將會返回一個byte的數(shù)據(jù),該數(shù)據(jù)的8個位正好與連接在P2端口上的8個I/O口對應(yīng),如下圖52所示:unsigned char Error_Counter=0。P1 = 0x00。//8個DQ 線全部設(shè)置為低電平//保持總線低電平500usDelay_1us(100)。//如檢測到DS18B20總線響應(yīng)了回復(fù)信號,則讀取當(dāng)前8條//總線的狀態(tài)for(Error_Counter=0。Error_Counter++)(~B20_Error))==(~B20_Error)) break。//如檢測到總線的回復(fù)信號結(jié)束,則退出循環(huán)Delay_1us(1)。}//恢復(fù)端口電平//延時 200us} 在復(fù)位時序控制的函數(shù)中,使用了B20_Error全局變量,它將會傳遞給上一層的數(shù)據(jù)處理函數(shù)作為判斷當(dāng)前8個I/O口所接的DS18B20是否正常工作,或者是否在各自的總線上。而在本文的范例程序當(dāng)中,僅僅為了提取DS18B20器件的轉(zhuǎn)換完后的溫度值,所以在讀取DS18B20的數(shù)據(jù)時,僅讀取存放在數(shù)據(jù)地址前兩個字節(jié)的溫度數(shù)據(jù),而不讀取其它字節(jié)的數(shù)據(jù),包括CRC校驗(yàn)值也沒有進(jìn)行讀取。unsigned char i。for(i=0。i++)0x01)elseCom = Com1。讀數(shù)據(jù)操作函數(shù):unsigned char Read_buf_8ch[16]。//buffer of Read DS18B20void DS18B20_Read2Byte(void){i16。{Read_buf_8ch[i] = DS18B20_ReadDQ()。}} 在本范例[10]中,只讀取位到DS18B20內(nèi)部數(shù)據(jù)區(qū)域的前兩節(jié)字的溫度值數(shù)據(jù),所以數(shù)據(jù)讀取函數(shù)設(shè)計(jì)成讀取兩個字節(jié)的函數(shù),即需要連續(xù)讀取16個位(對應(yīng)于每一個DS18B20器件來說是連續(xù)的16個位)??芍?,完成一次數(shù)據(jù)讀取的操作后,可以同時讀回8個DS18B20器件的數(shù)據(jù),在數(shù)據(jù)處理時,只需針對上圖的數(shù)據(jù)結(jié)構(gòu)對Read_buf_8ch數(shù)組的數(shù)據(jù)進(jìn)行處理即可得到每個DS18B20器件的測溫值。啟動溫度轉(zhuǎn)換控制函數(shù)[11]:void DS18B20_Conver(void){//Skip ROM//啟動測溫}讀取溫度值函數(shù)[14]:void DS18B20_
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1