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

    EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機做的溫濕度測量儀

    51單片機做的溫濕度測量儀

    作者: 時間:2016-11-29 來源:網絡 收藏
    //從傳感器讀數據 uchar read_byte(bit ack) { uchar i,val=0; DATA=1; for(i=0x80;i>0;i=i/2) { SCK=1; if(DATA) val=val|i; SCK=0; } DATA=!ack; SCK=1; _nop_();_nop_();_nop_(); SCK=0; DATA=1; return val; } //void connectionreset() { uchar i; DATA=1; SCK=0; for(i=0;i<9;i++) { SCK=1; SCK=0; } transstart(); } uint measure1() //測量溫度函數{ uchar value_1,value_2;uint tempvalue;transstart();error+=write_byte(MEASURE_TEMP);if(error!=0){connectionreset();}else { while(DATA==1){_nop_();}if(DATA==0){ value_1=read_byte(ACK);value_2=read_byte(noACK);tempvalue=value_2+value_1*256; //轉換成 16 位的 int 型}else error=1; } return tempvalue; }uint measure2() //測量濕度函數{ uchar value_1,value_2; uint tempvalue; transstart(); error+=write_byte(MEASURE_HUMI); if(error!=0) connectionreset(); else { while(DATA==1) _nop_(); if(DATA==0) { value_1=read_byte(ACK);value_2=read_byte(noACK); tempvalue=value_2+value_1*256; } else error=1; } return tempvalue; } void lcdwrdata(uchar dat){dat = ((dat&0x01)<<7)|((dat&0x02)<<5)|((dat&0x04)<<3)|((dat&0x08)<<1)|((dat&0x10)>>1)|((dat&0x20)>>3)|((dat&0x40)>>5)|((dat&0x80)>>7);rs=1;//寫數據時RS拉高en=1;P0=dat;delayms(6);en=0;delayms(6);}

    評論


    技術專區

    關閉
    主站蜘蛛池模板: 从江县| 衡阳市| 博乐市| 武宁县| 方山县| 玉林市| 尉氏县| 绥阳县| 桐柏县| 古丈县| 蓬溪县| 民和| 奉新县| 南平市| 潜江市| 丹阳市| 布尔津县| 阿坝县| 马鞍山市| 双柏县| 册亨县| 尼玛县| 邓州市| 常山县| 巨野县| 阿拉善右旗| 宁河县| 会宁县| 车险| 乌兰县| 弥勒县| 广东省| 吉安市| 渭南市| 沐川县| 海丰县| 牟定县| 新河县| 灵寿县| 临沧市| 新乡市|