void write(uchar dat); //18b20写时序 unsigned char read(void); //18b20读时序
void readtemperature(void); //18b20读二进制16位温度 void yanshi(unsigned int us);
/****************hs1101调用函数*************************/ void readfrequency(void); bit minrange=0; bit maxrange=0; bit T0Over=0;
unsigned char w,x,y;
/******************主函数******************/ void main() {
// 读频率函数// //温度下限标志位// //湿度上限标志位// //定时器结束标记
init(); while(1) {
readtemperature(); write_com(0x80);
write_shuju(table1[dat[0]]); write_com(0x81);
write_shuju(table1[dat[1]]); write_com(0x82);
write_shuju(table1[dat[2]]);
27
}
}
write_com(0x83);
write_shuju(table1[dat[3]]); write_com(0x84);
write_shuju(table1[dat[4]]); write_com(0x85);
write_shuju(table1[dat[5]]); write_com(0x86);
write_shuju(table1[dat[6]]); write_com(0x87);
write_shuju(table1[dat[7]]); write_com(0x88);
write_shuju(table1[dat[8]]); readfrequency();
/*****************1602延时程序*****************/ void delay(uchar z) {
uint a,b; for(a=0;a for(b=0;b<110;b++); 28 } /*******************1602初始化**************/ void init() { } /***************1602写指令*********************/ void write_com(uchar com) { } /**************1602写数据**********************/ void write_shuju(uchar shuju) { 29 en=0; write_com(0x38); write_com(0x0c); write_com(0x01); write_com(0x80); //设置为8位并行,显示2行,5*7点阵显示 //设置显示开 无光标 光标不闪烁 //清屏指令 rs=0; rw=0; P1=com; delay(5); en=1; en=0; } rs=1; rw=0; P1=shuju; delay(5); en=1; en=0; /*************18b20微秒延时********************/ void yanshi(unsigned int us) { } /************************18b20初始化********/ unsigned char reset(void) { int s; for(s=0;s unsigned char presence; DQ=0; yanshi(60); //大概480微秒 DQ=1; yanshi(8); presence=DQ; yanshi(14); return(presence); 30 //延时大概50微妙 } /*************18b20写时序*************************/ void write(unsigned char dat) { } /***************18b20读时序*********************/ unsigned char read(void) { unsigned char i; for(i=8;i>0;i--) { } DQ=0; DQ=dat&0x01; yanshi(16); DQ=1; dat>>=1; unsigned char i,dat=0; for(i=8;i>0;i--) { DQ=0; dat>>=1; DQ=1; if(DQ) dat|=0x80; 31
相关推荐: