新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 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);}

評論


技術專區(qū)

關閉