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

正文內(nèi)容

基于51單片機(jī)及ds18b20溫度傳感器的數(shù)字溫度計(jì)設(shè)計(jì)-預(yù)覽頁(yè)

 

【正文】 00μs,然后釋放,當(dāng)DS18B20收到信號(hào)后等待16~60μs左右,后發(fā)出60~240μs的存在低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。表31 DS18B20的指令表指 令指令代碼功 能讀ROM0x33讀DS1820溫度傳感器ROM中的編碼(即64位地址)符合 ROM0x55發(fā)出此命令之后,接著發(fā)出 64 位 ROM 編碼,訪(fǎng)問(wèn)單總線(xiàn)上與該編碼相對(duì)應(yīng)的 DS1820 使之作出響應(yīng),為下一步對(duì)該 DS1820 的讀寫(xiě)作準(zhǔn)備。適用于單片工作。讀暫存器0xBE讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫(xiě)暫存器0x4E發(fā)出向內(nèi)部RAM的4字節(jié)寫(xiě)上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。寄生供電時(shí)DS1820發(fā)送“ 0 ”,外接電源供電 DS1820發(fā)送“ 1 ”。圖32 DS18B20初始化時(shí)序 DS18B20傳感器的讀寫(xiě)時(shí)序 DS18B20傳感器的讀寫(xiě)操作是在傳感器初始化后進(jìn)行的。所有的時(shí)序必須有最短60μs的持續(xù)期,在各個(gè)寫(xiě)周期之間必須有最短1μs的恢復(fù)期。對(duì)于主機(jī)產(chǎn)生寫(xiě)“1”時(shí)序時(shí),數(shù)據(jù)線(xiàn)必須先被拉至低電平,且至少保持低電平60μs。讀時(shí)序結(jié)束后數(shù)據(jù)線(xiàn)由上拉電阻拉至高電平。程序流程圖如圖34所示。圖41 數(shù)字溫度計(jì)實(shí)物正面圖在做實(shí)物時(shí)出現(xiàn)了不少問(wèn)題。此次的設(shè)計(jì)使我從中學(xué)到了一些很重要的東西,那就是如何從理論到實(shí)踐的轉(zhuǎn)化,怎樣將我們所學(xué)到的知識(shí)運(yùn)用到實(shí)踐中去。在本次設(shè)計(jì)的過(guò)程中,我們遇到不少的問(wèn)題,剛開(kāi)始焊好的板子下不進(jìn)去程序,經(jīng)過(guò)一再仔細(xì)的檢查,才發(fā)現(xiàn)是在下載口處出了問(wèn)題,由于焊盤(pán)口比較小,排針插不進(jìn)去,最后使了很大力氣才插進(jìn)去,插進(jìn)去后才發(fā)現(xiàn)壞了,結(jié)果在去排針的時(shí)候把焊盤(pán)給去下來(lái)了,最后只能在旁邊將下載口引了出來(lái)。通過(guò)此次的綜合設(shè)計(jì),我們初步掌握了單片機(jī)系統(tǒng)設(shè)計(jì)的基本原理。 基于DS18B20的測(cè)溫系統(tǒng)* 功 能: 實(shí)時(shí)測(cè)量溫度,超過(guò)上下限報(bào)警,報(bào)警溫度可手動(dòng)調(diào)整。 * 編程者:zicreate* 編程時(shí)間:2009/10/2 *********************************************************************/include //include //(調(diào)用其中的_nop_()空操作函數(shù)延時(shí))define uint unsigned int //變量類(lèi)型宏定義,用uint表示無(wú)符號(hào)整形(16位)define uchar unsigned char //變量類(lèi)型宏定義,用uchar表示無(wú)符號(hào)字符型(8位)uchar max=0x00,min=0x00。 //聲明display1()函數(shù)include //include //include ///***********************主函數(shù)************************/void main(){ beer=1。 //首次啟動(dòng)DS18B20獲取溫度(DS18B20上點(diǎn)后自動(dòng)將EEPROM中的上下限溫度復(fù)制到TH和TL寄存器) while(1) //主循環(huán) { keyscan()。//顯示函數(shù) alarm()。 *********************************************************************/ifndef __ds18b20_h__ //定義頭文件define __ds18b20_h__define uint unsigned int //變量類(lèi)型宏定義,用uint表示無(wú)符號(hào)整形(16位)define uchar unsigned char //變量類(lèi)型宏定義,用uchar表示無(wú)符號(hào)字符型(8位)sbit DQ= P2^3。 //測(cè)量溫度的整數(shù)部分uchar temp_d=0。 //下限溫度的標(biāo)志位‘0’表示“正溫度”、‘1’表示“負(fù)溫度”)bit w=0。i0。}/**************************ds18b20初始化函數(shù)*************************/void ds18b20_init() // DS18B20初始化{ DQ=1。 //控制器拉高總線(xiàn), while(DQ)。 //定義一個(gè)局部變量i(局部變量只在本函數(shù)中有效) uchar d = 0。i) //一位一位的讀,循環(huán)8次 { d = 1。_nop_()。 } return d。i) //一位一位的寫(xiě) { DQ=0。 DQ=damp。 d = 1。 //DS18B20初始化 ds18b20_write(0xcc)。 //用開(kāi)機(jī)動(dòng)畫(huà)耗時(shí) } else ds18b20_delayms(1)。 //寫(xiě)讀內(nèi)部RAM中9字節(jié)的內(nèi)容命令 a=ds18b20_read()。 //讀內(nèi)部RAM (Tl) } if((maxamp。 if((minamp。 i=b。 //整數(shù)部分 a=(aamp。 //i為1,表示讀取的溫度是負(fù)溫度,設(shè)立負(fù)溫度標(biāo)記 a=~a+1。0x0f)。 ds18b20_init()。 //向暫存器TH(上限溫度暫存器)寫(xiě)溫度 ds18b20_write(min)。 //向DS18B20發(fā)跳過(guò)讀ROM命令 ds18b20_write(0x48)。amp。} //若測(cè)量值是負(fù)值時(shí)報(bào)警 } if(f_min==1) //若下限值是負(fù)值 { if(f==0) //若測(cè)量值是正值 { if((temp+temp_d*)=max)//當(dāng)測(cè)量值大于最大值時(shí)報(bào)警 {w=1。TR1=1。} //當(dāng)測(cè)量值小于最大值或大于最小值時(shí)報(bào)警 if((temp+temp_d*)minamp。TR1=1。 //sbit key3=P2^0。 //定義全局變量a用于不同模式下數(shù)碼管顯示的選擇bit k4=0。 //消按鍵音功能調(diào)整位,為‘0’時(shí)開(kāi)按鍵音,為‘1’時(shí)關(guān)按鍵音/***************************讀鍵盤(pán)延時(shí)子函數(shù)**************************/void keyscan_delay(uint z) //延時(shí)1ms左右{ uint i,j。j0。 //延時(shí)10ms if(key2==0) //再次判斷K2是否按下(實(shí)現(xiàn)按按鍵時(shí)消抖) { beer=1。} } if(f!=0) //若溫度為負(fù) { count++。 keyscan_delay(10)。 count。 keyscan_delay(10)。 if(key1==0) //K1按按鍵時(shí)消抖 { beer=1。 //在上下溫度調(diào)節(jié)功能模式下選擇KK3的溫度加減功能 i++。 //在正常模式下選擇K4的消按鍵音功能 v=0。 //a=0選擇顯示測(cè)得的溫度 case 1:a=1。 //a=2選擇顯示下限溫度 default:break。amp。amp。 if(k4==1) //k4=1時(shí)K4按鍵選擇正負(fù)溫度設(shè)定功能 { if(key4==0) { if(v2==0)beer=0。else f_max=~f_max。 keyscan_delay(10)。 a=1。 keyscan_delay(10)。 a=2。 keyscan_delay(10)。} //a=0顯示實(shí)測(cè)溫度,v1清零,關(guān)定時(shí)器1 if(k4==0) //k4=0時(shí)K4按鍵選擇消按鍵音的功能 { if(key4==0) { if(v2==0)beer=0。 //為‘0’時(shí)開(kāi)按鍵音,為‘1’時(shí)關(guān)按鍵音 } while(key4==0)。 //可位尋址變量定義,sbit wei2=P2^5。 //定義num為全局無(wú)符號(hào)字符型變量,賦初值為‘0’uchar code temperature1[]={ 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}。 for(i=t。j)。 EA=1。 //重新賦初值,定時(shí)50ms TL0=0xb0。led=1。if(w==1){beer=0。}} if(num20) //進(jìn)入20次中斷,定時(shí)1s { num=0。 else P0=temperature1[k/100]。amp。 else P0=temperature1[k%100/10]。i++) //依次從左至右選通數(shù)碼管顯示,實(shí)現(xiàn)動(dòng)態(tài)顯示 { switch(i) { case 0: //選通第一個(gè)數(shù)碼管 if(a==0){selsct_1(f,t)。 //關(guān)第二個(gè)數(shù)碼管 wei3=0。 case 1: //選通第二個(gè)數(shù)碼管 if(a==0){selsct_2(f,t)。//若s1=1則顯示第二個(gè)數(shù)碼管(s1標(biāo)志位用于上下限查看時(shí)的顯示) } if(a==2) //若a=2則在第二個(gè)數(shù)碼管上顯示下限報(bào)警溫度的百位或‘’ { if(s==0) selsct_1(f_min,min)。 wei3=0。 case 2: //選通第三個(gè)數(shù)碼管 if(a==0){P0=temperature2[t%10]。//若s1=1則顯示第三個(gè)數(shù)碼管 } if(a==2) //若a=2則在第三個(gè)數(shù)碼管上顯示下限報(bào)警溫度的十位或‘’ { if(s==0) selsct_2(f_min,min)。 wei2=0。 case 3: //選通第四個(gè)數(shù)碼管 if(a==0){P0=temperature1[t_d]。//若s1=1則顯示第四個(gè)數(shù)碼管 } if(a==2) //若a=2則在第四個(gè)數(shù)碼管上顯示下限報(bào)警溫度的個(gè)位 { if(s==0) P0=temperature1[min%10]。 wei2=0。 } display_delay(3)。iz。//第一個(gè)數(shù)碼管顯示 wei2=0。 break。 wei4=0。//第三個(gè)數(shù)碼管顯示 wei1=0。 break。 wei3=0。 //每個(gè)數(shù)碼管顯示200ms左右 } }}endif附2 系統(tǒng)原理圖
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1