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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于51單片機(jī)的遠(yuǎn)程溫度顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(編輯修改稿)

2025-01-08 19:40 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 。 delay(110)。 speaker=1。 delay(110)。 i。 } } 代碼中的 i 用來(lái)控制每個(gè)聲音的長(zhǎng)短,延時(shí) delay 用來(lái)控制頻率。 對(duì)于報(bào)警,本系統(tǒng)使用調(diào)用發(fā)聲的方式,具體代碼如下。 void alarm(void) { 12 unsigned int i=5。 while(i) { speak()。 delayms(50)。 i。 } } i為控制每次發(fā)出幾聲鳴叫,這里的 delayms用于控制每聲鳴叫所間隔的時(shí)間,如需要報(bào)警,則調(diào)用該函數(shù)。 溫度采集部分 DS18B20 溫度傳感器 溫度采集部分的核心器件是 DS18B20溫度傳感器,通過編程, DS18B20可以實(shí)現(xiàn) 9~12位的溫度讀數(shù)。信息經(jīng)過單線借口送入 DS18B20或從 DS18B20送出,因此從微處理器到 DS18B20僅需要一根信號(hào)線和一根底線。讀、寫和執(zhí)行溫度變換所需要的電源可以由數(shù)據(jù)線本身提供,而不需要外部電源。 每片 DS18B20在出廠時(shí)都設(shè)有唯一的產(chǎn)品序列號(hào),此序列號(hào)存放在它的內(nèi)部 ROM中,微處理器通過簡(jiǎn)單的協(xié)議就能識(shí)別這些序列號(hào),因此多個(gè) DS18B20可以掛接于 同一條總線上,這允許在許多不同的地方放置溫度傳感器,特別適合于構(gòu)成多點(diǎn)溫度測(cè)控系統(tǒng)。 概括來(lái)講, DS18B20具有以下特點(diǎn)如下所示。 ,與單片機(jī)通信只需要一個(gè)引腳。 ,使分布式溫度檢測(cè)的應(yīng)用更加簡(jiǎn)潔 。 。 ,電壓范圍為 3~ 。 。 55~ +125℃,在 10~ +85℃范圍內(nèi)的誤差大小為177。 ℃。 9 位到 12位的數(shù)字溫度計(jì)分辨率,能夠?qū)崿F(xiàn)配置 9~ 12 位的讀數(shù)。 12 位的溫度數(shù)值轉(zhuǎn)變成數(shù)字所需要的時(shí)間小于 750ms。 ,用戶能夠自己設(shè)定告警溫度的限值。 。 芯片入如下圖 37所示 。 引腳說(shuō)明: 13 GND( 1腳):底線。 DQ( 2腳):數(shù)據(jù)輸入輸出腳。漏極開路,常態(tài)下高電平。 VDD(3腳 ):可選電源腳,電源電壓范圍 3~,當(dāng)工作于寄生電源時(shí),此引腳必須接地。 圖 37 DS18B20引腳圖 DS18B20 的主要功能部件是其數(shù)字溫度傳感器,如上述,它的分辨率可配置為 9,10, 11以及 12 位,出廠默認(rèn)設(shè)置時(shí) 9 位分辨率,溫度值分辨率與他們相對(duì)應(yīng)的依次為℃、 ℃, ℃以及 ℃。溫度值信息的地位、低位字節(jié)還包括符號(hào)位S(正溫度或者負(fù)溫度)與二進(jìn)制小數(shù)位部分,其具體表現(xiàn)形式如下: 高位 低位 低位字節(jié): 高位 低位 高位字節(jié): 這就是 9位分辨率地情況,如果配置為低的分辨率,則其中無(wú)意義為 0。 實(shí)際溫度和數(shù)字輸出對(duì)應(yīng)關(guān)系如表 32。 表 32 溫度值分辨率配置表 2179。 2178。 2185。 2186。 21 22 23 24 S S S S S 26 25 24 溫度 數(shù)字輸出(二進(jìn)制) 數(shù)字輸出(十六進(jìn)制) +125℃ 0000 0111 1101 0000 07D0H +85℃ 0000 0101 0101 0000 0550H +℃ 0000 0001 1001 0001 0191H +℃ 0000 0000 1010 0010 00A2H +℃ 0000 0000 0000 1000 0008H 0℃ 0000 0000 0000 0000 0000H ℃ 1111 1111 1111 1000 FFF8H ℃ 1111 1111 0101 1110 FF5EH ℃ 1111 1110 0110 1111 FF6FH 55℃ 1111 1100 1001 0000 FC90H 14 電路原理圖 為了使 DS18B20能完成準(zhǔn)確的溫度變換,當(dāng)溫度發(fā)生變化時(shí), DQ線上必須提供足夠的功率。因?yàn)?DS18B20工作電流高達(dá) ,為了增強(qiáng)驅(qū)動(dòng)能力,我增加了上拉電阻 。主機(jī)的 I\O口使用,用于向 DS18B20寫命令以及讀數(shù)據(jù)。這里我不選用寄生電源的方式,因而我使 VDD接 VCC, GND引腳接地。電路如圖 38所示 。 圖 38 DS18B20原理圖 軟件設(shè)計(jì) DS18B20是 1wire單線期間,它是在單根數(shù)據(jù)線上達(dá)到雙向傳輸?shù)哪康?,這就須要某些特定的協(xié)議對(duì)數(shù)據(jù)的讀寫提出嚴(yán)格的時(shí)序要求,而 51單片機(jī)無(wú)法采用單線傳輸,因此,必須使用軟件方式來(lái)實(shí)現(xiàn)協(xié)議時(shí)序的單線模擬。 DS18B20單線模擬協(xié)議與命令:各位數(shù)據(jù)傳輸?shù)恼_性和完整性是通過 DS18B20采用嚴(yán)格的通信協(xié)議來(lái)保證的。主機(jī)操作模擬單線期間 DS18B20必需遵守如下的順序。 初始化 DS18B20初始化。主機(jī)將單線拉低至 480us以上,以此引起復(fù)位脈沖,接著便釋放該線,進(jìn)入接受模式。當(dāng)主機(jī)釋放系統(tǒng)總線時(shí),便會(huì)引起上升沿。當(dāng)單線器件 DS18B20監(jiān)測(cè)到上升沿后,延時(shí) 15~60us,通過降低總線 60~240us來(lái)產(chǎn)生回應(yīng)脈沖。當(dāng)主機(jī)收到子機(jī)的回應(yīng)脈沖后,表示有單線期間在線。 具體代碼如下: void Init_DS18B20(void) //初始化 DS18b20 { DQ=0。 delay(100)。 //拉低約 900us DQ=1。 //產(chǎn)生上升沿 delay(3)。 while(DQ)。 //檢測(cè)回應(yīng)脈沖 while(~DQ)。 delay(3)。 } 15 ROM的操作命令 如果總線主機(jī)監(jiān)測(cè)到回應(yīng)脈沖時(shí),便會(huì)產(chǎn)生 ROM的操作命令,共有 5種 ROM的操作命令,如表 33。 RAM的操作命令 當(dāng) ROM的操作命令成功執(zhí)行之后,才能夠使用 RAM的操作命令,主機(jī)能夠提供 6種 RAM的操作命令,如表 34。 數(shù)據(jù)處理 數(shù)據(jù)的完整性是通過 DS18B20要求有著嚴(yán)格的時(shí)序來(lái)保證的。處于單線 DQ時(shí),便會(huì)引起復(fù)位脈沖和回應(yīng)脈沖以及寫“ 0”、寫“ 1”、讀“ 0”、讀“ 1” 四種不同信號(hào)類型。其中除了回應(yīng)脈沖之外,均由主機(jī)產(chǎn)生。復(fù)位和回應(yīng)脈沖在前文中已經(jīng)介紹,這里不再贅述,通過使用讀、寫時(shí)隙來(lái)實(shí)現(xiàn)數(shù)據(jù)位的讀和寫。 表 33 ROM的操作命令 命令類型 命令字節(jié) 功能說(shuō)明 Read ROM 33H 這個(gè)命令讀取 ROM存儲(chǔ)中的 64位,而且僅能用于數(shù)據(jù)總線上單一 DS18B20器件得情況,過多連接就會(huì)容易引起數(shù)據(jù)沖突 Match ROM 55H 這個(gè)命令與 64位 ROM的序列號(hào),尋址多連接總線上一一對(duì)應(yīng) DS18B20,僅僅當(dāng)序列號(hào)完全匹配得 DS18B20才能夠相對(duì)應(yīng)后面的存儲(chǔ) 操作命令,剩下不匹配的就會(huì)等待下一個(gè)復(fù)位脈沖,此命令如可用于但掛接或者多掛接 Skip ROM CCH 這個(gè)命令用于連接系統(tǒng)總線時(shí),可以無(wú)需使用 64位 ROM序列號(hào)就能夠?qū)崿F(xiàn)內(nèi)存操作命令的運(yùn)行,一旦總線上連接許多 DS18B20,并且執(zhí)行完此命令后緊接著執(zhí)行讀命令,就會(huì)容易引起數(shù)據(jù)沖突 Search ROM F0H 通過主機(jī)調(diào)用這個(gè)命令以此來(lái)實(shí)現(xiàn)排除過程,能夠分辨出總線上每一個(gè)器件的 ROM存儲(chǔ)序列號(hào) Alarm Search ECH 此命令流程和 Search ROM命令相同,但是 DS18B20只有在 最近的一次溫度測(cè)量時(shí)滿足了告警觸發(fā)條件,才會(huì)響應(yīng)此命令 DS18B20寫時(shí)隙。當(dāng)主機(jī)將數(shù)據(jù)線從高電平拉至低電平時(shí),產(chǎn)生寫時(shí)隙。所有寫時(shí)隙必須在 60us以上。各個(gè)寫時(shí)隙之間必須保證最短 1us的恢復(fù)時(shí)間。 DS18B20在 DQ變低后的 15~60us對(duì) DQ進(jìn)行采樣。 具體代碼如下: void WriteOneChar(unsigned char dat) //寫一個(gè)字節(jié) { unsigned char i=0。 for(i=8。i0。i) 16 { DQ=0。 //拉低總線 DQ=datamp。0x01。 delay(5)。 //整個(gè)寫時(shí)隙不低于 60us DQ=1。 dat=1。 } } 表 34 RAM的操作命令 命令類型 命令字節(jié) 功能說(shuō)明 Write Scratchpad (寫暫存器 ) 4EH 此命令寫暫存器中的地址 2地址 4的 3個(gè)字節(jié)( TH、TL和配置寄存器)在發(fā)起復(fù)位脈沖之前, 3個(gè)字節(jié)都必須要寫 Read Scratchpad (寫暫存器 ) BEH 此命令讀取暫存器內(nèi)容,從字節(jié) 0一直讀取到字節(jié)8(第 9個(gè)字節(jié))。主機(jī)可以隨時(shí)發(fā)起復(fù)位脈沖已停止此操作 Copy Scratchpad (復(fù)制暫存器 ) 48H 這個(gè)命令把暫存器中的內(nèi)容復(fù)制到 E2RAM,借此把溫度告警的觸發(fā)字節(jié)存到非易失性內(nèi)存中。一旦在這個(gè)命令后,主機(jī)發(fā)生讀時(shí)隙,那么只要期間再次進(jìn)行復(fù)制便會(huì)輸出 0,當(dāng)復(fù)制完成之后,再輸出 1 Convert T (溫度轉(zhuǎn)換 ) 44H 這個(gè)命令開始執(zhí)行溫度轉(zhuǎn)變操作,如果執(zhí)行完此命令后,主機(jī)仍然發(fā)生讀時(shí)隙,那么只要期間再次進(jìn)行轉(zhuǎn)換溫度就能夠輸出 0,轉(zhuǎn)換完成后,再輸出 1 Recall E2 (重調(diào) E2存儲(chǔ)器 ) B8H 將存儲(chǔ)在 E2RAM中的告警溫度警告觸發(fā)值和配置寄存器值重新拷貝到暫存器中。此重掉操作在DS18B20家電時(shí)自動(dòng)產(chǎn)生 Read Power Supply (讀取供電方式) B4H 主機(jī)發(fā)起此命令后的每個(gè)讀數(shù)據(jù)實(shí)習(xí)內(nèi), DS18B20會(huì)發(fā)信號(hào)通知它的供電方式: 0為寄生電源, 1為外部電源。 DS18B20讀時(shí)隙。當(dāng)主機(jī)從 DS18B20讀數(shù)據(jù)時(shí),把數(shù)據(jù)線從高電平拉至低電平,保持至少 1us,產(chǎn)生讀時(shí)隙。 DS18B20在輸出下降沿產(chǎn)生 15us后,數(shù)據(jù)有效,在讀時(shí)隙結(jié)束時(shí), DQ將通過外部上拉電阻拉回至高電平,所有讀時(shí)隙必須保持最短 60ms,各讀時(shí)隙間鼻息保持最短 1us的恢復(fù)時(shí)間。 具體代碼如下: unsigned char ReadOneChar(void) //讀一個(gè)字節(jié) { unsigned char i=0。 17 unsigned char dat=0。 for(i=8。i0。i) { DQ=0。 //給脈沖信號(hào) 保持低至少 1us dat=1。 DQ=1。 //給脈沖信號(hào) if(DQ) dat|=0x80。 delay(5)。 //讀時(shí)隙不低于 60us } return(dat)。 } 讀取溫度 讀取后溫度值存在 readdata[0]和 readdata[1]中,通過串口可把兩個(gè)字節(jié)發(fā)送出去 具體代碼如下: void ReadTemperature(void) //讀取溫度 { Init_DS18B20()。 delayms(1)。 WriteOneChar(0xCC)。 //跳過讀序列號(hào)的操作 WriteOneChar(0x44)。 //啟動(dòng)溫度轉(zhuǎn)換 Init_DS18B20()。 delayms(1)。 WriteOneChar(0xCC)。 //跳過讀序列號(hào)的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器等(共可讀 9 個(gè) 寄存器),前兩個(gè)就是溫度 rea
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1