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

正文內(nèi)容

單片機(jī)課程設(shè)計(jì)報(bào)告-基于stc89c52的溫度測控系統(tǒng)設(shè)計(jì)-在線瀏覽

2024-12-25 15:58本頁面
  

【正文】 4 DS18B20 溫度測量電路的方框圖 由圖 5 可知 DS18B20 用一個(gè)高溫度系數(shù)的振蕩器確立一個(gè)門周期,內(nèi)部計(jì)數(shù)器在這個(gè)門周期內(nèi)對(duì)一個(gè)低溫度系數(shù)的振蕩器的脈沖進(jìn)行計(jì)數(shù)來得到溫度值。 6 如果計(jì)數(shù)器在門周期結(jié)束前到達(dá) 0,則溫度寄存器(同樣被預(yù)置到 55℃ )的值增加,表明所測的溫度大 于 55℃ 。然后計(jì)數(shù)器又開始計(jì)數(shù)直到 0,如果門周期仍未結(jié)束,將重復(fù)這一過程。這是通過改變計(jì)數(shù)器對(duì)溫度每增加一度所需計(jì)數(shù)的值來實(shí)現(xiàn)的。 DS18B20 內(nèi)部對(duì)此計(jì)算的結(jié)果可提供 ℃ 的分辨力。表 1 給出了 溫度值和輸出數(shù)據(jù)的關(guān)系。正溫度時(shí),讀到的 16 位數(shù)據(jù)乘以 就可以得到實(shí)際溫度。另一種轉(zhuǎn)換方法就是分離出低四位,中間七位和高五位。高四位就是判斷符號(hào)的。其中前兩個(gè)字節(jié)是測得的溫度數(shù)據(jù),第一個(gè)字節(jié)的內(nèi)容是溫度的低八位,第二個(gè)字節(jié)是溫度的高 八位,第三和第四字節(jié)是溫度上限 TH與溫度下限 TL 的易失性拷貝,第五字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,第 6, 7, 8 這三個(gè)字節(jié)用于內(nèi)部計(jì)算,第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié) CRC,可用來保證通信的正取性。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后。 ROM操作命令 : Read ROM [33H] 這個(gè)命令允許總線控制器讀到 DS18B20 的 8 位系列編碼、唯一的序列號(hào)和 8 7 位 CRC 碼。如果總線上不止一個(gè)從機(jī)時(shí),當(dāng)所有從機(jī)試圖同時(shí)傳送信號(hào)時(shí)就會(huì)發(fā)生數(shù)據(jù)沖突。只有和 64 為 ROM序列完全匹配的 DS18B20 才能響應(yīng)隨后的儲(chǔ)存操作命令。如果總線上不止一個(gè)從機(jī),在 Skip ROM 命令之后跟著發(fā)一條讀命令,由于多個(gè)從機(jī)同時(shí)傳送信號(hào),總線上就會(huì)發(fā)生數(shù)據(jù)沖突。搜索 ROM命令允許總線控制器用排除法識(shí)別總線上的所有從機(jī)的 64位編碼。然而,只有在最近一次測溫后遇到符合報(bào)警條件的情況, DS18B20 才會(huì)響應(yīng)這條命令。 圖 6 18B20 電路圖 DS18B20 有兩種供電接法,圖 6 采用的是接入外部電源。這樣在轉(zhuǎn)換期間可以允許在單線總線上進(jìn) 8 行其他數(shù)據(jù)的往來。注意當(dāng)加上外部電源時(shí), GND 引腳不能懸空。只顯示兩位整數(shù)和一位小數(shù),負(fù)溫度就不顯示了。 圖 7 數(shù)碼管顯示電路 溫度上下限調(diào)整模塊 圖 8 為溫度上下限調(diào)整模塊。按一次 K1 后,會(huì)在數(shù)碼管顯示 DS18B20 內(nèi)儲(chǔ)存的溫度上限。按 下第 3 次后恢復(fù)到溫度的顯示。操作方法和 K1 一樣。蜂鳴器響 就報(bào)警。 圖 9 圖 10 系統(tǒng) 總體原理圖 10 三、 系統(tǒng)算法與程序流程圖 系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序,按鍵掃描處理子程序等。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程如下: 圖 11 主程序流程圖 讀出溫度子程序 讀出溫度子程序的主要功能是讀出 RAM 中的 9 字節(jié),在讀出時(shí)需進(jìn)行 CRC 校驗(yàn),校驗(yàn) 有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。溫度轉(zhuǎn)換命令子程 序流程 如: 圖 13 溫度轉(zhuǎn)換命令子程序 計(jì)算溫度子程序 計(jì)算溫度子程序?qū)?RAM 中讀取值進(jìn)行 BCD 碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖。程序流程圖如下: 12 圖 15 顯示數(shù)據(jù)刷新子程序 按鍵掃描處理子程序 按鍵采用掃描查詢方式,設(shè)置標(biāo)志位,當(dāng)標(biāo)志位為 1 時(shí),顯示設(shè)置溫度,否則顯示當(dāng)前溫度。 sbit k2=P2^1。 sbit k4=P2^3。 sbit rd=P2^4。 sbit beep=P3^2。 uchar table[]={0x7f,0xbf,0xdf,0xef,0xff}。 //前兩位數(shù)碼管碼表 uchar table2[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc7,0x80,0x82,0x7f,0xf0}。 uchar value,num,num1,num2。 uchar temp55,temp33,tempxiaoH,tempxiaoL。 void delay(uint z) //延時(shí)子程序 { uint x,y。x0。y0。 } void delay_18B20(unsigned int i) //DS18B20 延時(shí)子程序,延時(shí) 1us { while(i)。 DQ = 1。 //稍做延時(shí) ,穩(wěn)定數(shù)據(jù) DQ = 0。 //精確延時(shí) 大于 480us DQ = 1。 //(1560)us x=DQ。 } void Write_18b20byte(uchar dat)//向 18B20 寫一個(gè)節(jié), dat 為入口函數(shù) { uchar i。 i0。 DQ = datamp。 delay_18B20(5)。 //拉高 DQ dat=1。 uchar dat。i0。 // 給脈沖信號(hào),拉低總線 dat=1。 // 給脈沖信號(hào),釋放總線后才可以采樣 if(DQ) 15 dat|=0x80。 } return(dat)。 Init_DS18B20()。 // 跳過讀序號(hào)列號(hào)的操作 Write_18b20byte(0x44)。 // 轉(zhuǎn)換需要時(shí)間,延時(shí) Init_DS18B20()。 //跳過讀序號(hào)列號(hào)的操作 Write_18b20byte(0xBE)。 a=Read_18b20byte()。 //讀取溫度值高位 temp=b*16+a/16。 } void beepon(void) { beep=0。 } void display(uchar one,uchar two,uchar three) { P1=table[0]。//顯示 10 位 delay(3)。//選中第二個(gè)數(shù)碼管 P0=table1[two]amp。 delay(3)。 P0=table2[three]。 P1=table[3]。0x7f。 } void keywendu() { uchar temp2,temp22。 //整數(shù)位 temp22=temp1。 if(k1==0) //功能鍵 { delay(20)。//按鍵消抖程序 flag=1。 P0=0xff。//個(gè)位不顯示 P1=table[2]。 delay(10)。 17 if(k1==0) //K1 功能鍵 { delay(20)。 num1++。//num1=0 修改小數(shù)位 //num1=1 修改個(gè)位 } } swit
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1