• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)做的溫濕度測(cè)量?jī)x

    51單片機(jī)做的溫濕度測(cè)量?jī)x

    作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò) 收藏
    void lcdwrcom(uchar cdat)//寫(xiě)指令數(shù)據(jù)到LCD { cdat = ((cdat&0x01)<<7)|((cdat&0x02)<<5)|((cdat&0x04)<<3)|((cdat&0x08)<<1)|((cdat&0x10)>>1)|((cdat&0x20)>>3)|((cdat&0x40)>>5)|((cdat&0x80)>>7);rs=0;//寫(xiě)指令時(shí)RS拉低en=1;P0=cdat;//delayms(6);//不加此延時(shí)將導(dǎo)致不能寫(xiě)入指令,但能寫(xiě)入顯示數(shù)據(jù)en=0;delayms(6);}void lcd_init(){lcdwrcom(0x38); //0x38設(shè)置顯示模式為:16X2顯示,5X7點(diǎn)陣,8位數(shù)據(jù)接口lcdwrcom(0x0c); //打開(kāi)顯示光標(biāo)閃爍lcdwrcom(0x06); //lcdwrcom(0x01); //}void display(float temp,float humi) //1602顯示函數(shù)(溫度,濕度){uint a,b,c,d,e,f,g,h;a=(temp/1000);b=((temp-a*1000)/100);c=((temp-a*1000-b*100)/10);d=(temp-a*1000-b*100-c*10);e=(humi/1000);f=((humi-e*1000)/100);g=((humi-e*1000-f*100)/10);h=(humi-e*1000-f*100-g*10);lcdwrcom(0x80+0x07);lcdwrdata(0+a);lcdwrcom(0x80+0x08);lcdwrdata(0+b);lcdwrcom(0x80+0x09);lcdwrdata(.) ;lcdwrcom(0x80+0x0A);lcdwrdata(0+c);lcdwrcom(0x80+0x0B);lcdwrdata(0+d);lcdwrcom(0x80+0x47);lcdwrdata(0+e);lcdwrcom(0x80+0x48);lcdwrdata(0+f);lcdwrcom(0x80+0x49);lcdwrdata(.) ;lcdwrcom(0x80+0x4A);lcdwrdata(0+g);lcdwrcom(0x80+0x4B);lcdwrdata(0+h);}float calc_temp(uint tempvalue) //計(jì)算溫度值子函數(shù) { const float d1=-39.9;const float d2=+0.01;float temp_final;tempvalue=tempvalue&0x3fff; //取出低 14 位temp_final=d1+d2*((float)tempvalue);return temp_final; //返回溫度值}//計(jì)算濕度值子函數(shù) float calc_humi(float humivalue) { const float c1=-4.0,c2=0.0405,c3=-0.0000028,t1=0.01,t2=0.00008; float rh=humivalue; float rhlin; float rhtrue; rhlin=c1+c2*rh+c3*rh*rh; rhtrue=(27.87-25)*(t1+t2*rh)+rhlin; if(rhtrue>100) rhtrue=100; if(rhtrue<0.1) rhtrue=0.1; humivalue=rhtrue; return humivalue;}void main() { uint i; //定義計(jì)數(shù)器uint value1; //定義傳感器傳出來(lái)的數(shù)值(16位)uint value2; //定義傳感器傳出來(lái)的數(shù)值(16位)float dis_tempvalue; //定義溫度變量float dis_humivalue; //定義濕度變量//以下是初始化液晶操作rw=0;delayms(200);en=0;lcd_init();//以下是液晶固定顯示lcdwrcom(0x80+0x00); //第1行00位置for(i=0;i<7;i++){lcdwrdata(table_temp[i]);}lcdwrcom(0x80+0x0C); //第1行0C位置for(i=0;i<4;i++){lcdwrdata(table_c[i]);}lcdwrcom(0x80+0x40); //第2行40位置for(i=0;i<7;i++){lcdwrdata(table_humi[i]);}lcdwrcom(0x80+0x4C); //第2行4C位置for(i=0;i<4;i++){lcdwrdata(table_p[i]);}//while(1) { connectionreset(); error=0; value1=measure1(); value2=measure2(); if(error==0) { led1=0; delayms(200); led1=1; delayms(200);dis_tempvalue=calc_temp(value1); //計(jì)算溫度值dis_humivalue=calc_humi(value2); //計(jì)算濕度值display(dis_tempvalue*100,dis_humivalue*100); //LCD1602顯示溫濕度} else { continue; } } }
    上一頁(yè) 1 2 3 下一頁(yè)

    評(píng)論


    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 绿春县| 定兴县| 平泉县| 哈密市| 泾源县| 仙居县| 尼勒克县| 高雄县| 伊川县| 娄烦县| 海丰县| 巩义市| 神木县| 喀喇沁旗| 玛多县| 镶黄旗| 曲沃县| 吉木乃县| 津南区| 泰来县| 平安县| 云龙县| 平山县| 罗源县| 北海市| 龙泉市| 吉安县| 金堂县| 延川县| 衡阳县| 太保市| 合阳县| 绥江县| 星子县| 巴青县| 资溪县| 河池市| 民和| 海兴县| 临安市| 永靖县|