新闻中心

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);}

评论


技术专区

关闭