新聞中心

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

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 资源县| 阿坝县| 台北县| 六安市| 南木林县| 北宁市| 甘肃省| 邯郸县| 丹棱县| 镇沅| 铜山县| 原阳县| 小金县| 板桥市| 定西市| 福海县| 大埔区| 交城县| 汽车| 塔河县| 丹东市| 北川| 铜川市| 成安县| 万山特区| 兰考县| 宁武县| 富宁县| 洪泽县| 横山县| 天台县| 贡觉县| 中阳县| 普格县| 阿巴嘎旗| 姜堰市| 蒲城县| 临江市| 邹城市| 宣化县| 太仆寺旗|