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

正文內(nèi)容

單片機(jī)課程設(shè)計報告-基于at89c51單片機(jī)的數(shù)顯溫度傳感器設(shè)計-閱讀頁

2025-06-21 21:00本頁面
  

【正文】 r i。 DQ = 1。i0。 //低位先發(fā); DQ = 0。 _nop_()。 //必須寫1,否則讀出來的將是不預(yù)期的數(shù)據(jù); if(DQ) //在12us處讀取數(shù)據(jù); d |= 0x80。 } return d。 for(i=8。i) { DQ=0。0x01。 DQ=1。 }}/******************************************************//* 獲取溫度函數(shù) //*****************************************************/ void get_temperature(bit flag) { uchar a=0,b=0,c=0,d=0。 ds18b20_init()。 //向DS18B20發(fā)跳過讀ROM命令 ds18b20_write(0x44)。 display1(1)。 ds18b20_init()。 ds18b20_write(0xbe)。 //讀內(nèi)部RAM (LSB) b=ds18b20_read()。 //讀內(nèi)部RAM (TH) min=ds18b20_read()。0x80)==0x80) //若讀取的上限溫度的最高位(符號位)為‘1’表明是負(fù)溫度 {f_max=1。} //將上限溫度符號標(biāo)志位置‘1’表示負(fù)溫度,將上限溫度裝換成無符號數(shù)。0x80)==0x80) //若讀取的下限溫度的最高位(符號位)為‘1’表明是負(fù)溫度 {f_min=1。} //將下限溫度符號標(biāo)志位置‘1’表示負(fù)溫度,將下限溫度裝換成無符號數(shù)。 i=4。 //i為0,正溫度,設(shè)立正溫度標(biāo)記 temp=((a4)|(b4))。0x0f)。 //小數(shù)部分 } else { f=1。 b=~b。 //整數(shù)部分 a=(aamp。 //小數(shù)部分 temp_d=a。 if(f_min==1) //若下限溫度為負(fù),將上限溫度轉(zhuǎn)換成有符號數(shù) min=min+0x80。 ds18b20_write(0xcc)。 //向DS18B20發(fā)寫字節(jié)至?xí)捍嫫?和3(TH和TL)命令 ds18b20_write(max)。 //向暫存器TL(下限溫度暫存器)寫溫度 ds18b20_write(0xff)。 ds18b20_write(0xcc)。 //向DS18B20發(fā)將RAM中3字節(jié)的內(nèi)容寫入EEPROM } //DS18B20上電后會自動將EEPROM中的上下限溫度拷貝到TH、TL暫存器 /******************************************************//* 溫度超限報警函數(shù) //*****************************************************/ void alarm() { //若上限值是正值 if(f_max==0) { if(f_min==0) //若下限值是正值 { if(f==0) //若測量值是正值 { if(temp=min||temp=max) {w=1。} //當(dāng)測量值小于最小值或大于最大值時報警 if((tempmax)amp。(tempmin)) {w=0。TR1=1。TR1=1。} } if(f==1) //若測量值是負(fù)值 { if(temp=min)//當(dāng)測量值大于最小值時報警 {w=1。} if(tempmin)//當(dāng)測量值小于最小值時不報警 {w=0。TR1=1。amp。} //當(dāng)測量值小于最小值且大于最大值時不報警 } if(f==0){w=1。} //若測量值是正值時報警 } } }endif/*********************************************************************** 程序名。 //可位尋址變量定義,sbit wei2=P2^5。 //sbit wei4=P2^7。 //定義num為全局無符號字符型變量,賦初值為‘0’uchar code temperature1[]={ 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}。 //帶小數(shù)點的0~9.uchar code temperature3[]={ 0xff,0x7f,0xbf,0x89,0xc7}。 for(i=t。i) for(j=120。j)。 TH0=0x3c。 EA=1。 TR1=t。 //重新賦初值,定時50ms TL0=0xb0。 //每進(jìn)入一次定時器中斷num加1(每50ms加1一次) if(num5) {s=1。led=1。led=1。if(w==1){beer=0。}else{beer=1。}} if(num20) //進(jìn)入20次中斷,定時1s { num=0。 //定時1s時間到時自動關(guān)閉報警上下限顯示功能 v1=1。 else P0=temperature1[k/100]。 else P0=temperature3[2]。amp。 else P0=temperature1[k%100/10]。 else P0=temperature1[k%100/10]。 for(i=0。i++) //依次從左至右選通數(shù)碼管顯示,實現(xiàn)動態(tài)顯示 { switch(i) { case 0: //選通第一個數(shù)碼管 wei2=0。 //關(guān)第三個數(shù)碼管 wei4=0。 //開第一個數(shù)碼管 if(a==0){selsct_1(f,t)。 //若a=1則在第一個數(shù)碼管上顯示‘H’ } if(a==2) { P0=temperature3[4]。 case 1: //選通第二個數(shù)碼管 wei1=0。 wei4=0。 if(a==0){selsct_2(f,t)。//若s=0則顯示第二個數(shù)碼管,否則不顯示 else P0=temperature3[0]。//若s1=1則顯示第二個數(shù)碼管(s1標(biāo)志位用于上下限查看時的顯示) } if(a==2) //若a=2則在第二個數(shù)碼管上顯示下限報警溫度的百位或‘’ { if(s==0) selsct_1(f_min,min)。 if(s1==1) selsct_1(f_min,min)。 case 2: //選通第三個數(shù)碼管 wei1=0。 wei4=0。 if(a==0){P0=temperature2[t%10]。//若s=0則顯示第三個數(shù)碼管,否則不顯示 else P0=temperature3[0]。//若s1=1則顯示第三個數(shù)碼管 } if(a==2) //若a=2則在第三個數(shù)碼管上顯示下限報警溫度的十位或‘’ { if(s==0) selsct_2(f_min,min)。 if(s1==1) selsct_2(f_min,min)。 case 3: //選通第四個數(shù)碼管 wei1=0。 wei3=0。 if(a==0){P0=temperature1[t_d]。//若s=0則顯示第四個數(shù)碼管,否則不顯示 else P0=temperature3[0]。//若s1=1則顯示第四個數(shù)碼管 } if(a==2) //若a=2則在第四個數(shù)碼管上顯示下限報警溫度的個位 { if(s==0) P0=temperature1[min%10]。 if(s1==1) P0=temperature1[min%10]。 } display_delay(10)。 bit f=0。iz。j4。 wei3=0。 wei1=1。 P0=temperature3[2]。 wei3=0。 wei2=1。 P0=temperature3[2]。 wei2=0。 wei3=1。 P0=temperature3[2]。 wei2=0。 wei4=1。 P0=temperature3[2]。 //每個數(shù)碼管顯示200ms左右 } }}endif六、參考文獻(xiàn)參考文獻(xiàn)的格式如下:1單片微型計算機(jī)與接口技術(shù)2012年1月(第四版
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1