int tmpget()//获取DS18B20温度{
int temp; float tt;
dsreset();//复位与应答 tmpwritebyte(0xcc);//允许不通过匹配温度计编码直接操作(总线上只有一个DS18B20) tmpwritebyte(0xbe);//从暂存器中读取数据,第一字节为温度低8位,第二字节为温度高8位 tmp_L8=tmpreadbyte();//读取温度低8位 tmp_H8=tmpreadbyte();//读取温度高8位 temp=tmp_H8; temp=temp<<8; temp=temp | tmp_L8;//将高低8位都放入temp中 tt=temp*0.0625;//根据分辨率算出温度 temp=tt*100; return temp;//将高低8位温度处理后 返回从左往右第三位位为个位 }
void display(int temperature)//LCD温度显示函数{ uchar table_temp[4]; LCD_WRITE_COM(0x80);//从初始位开始显示 if(temperature<0) { LCD_WRITE_DATA('-');//负温度显示负 temperature*=-1;//将负温度转为正温度便于显示 } else LCD_WRITE_DATA('+');//负温度显示正 table_temp[0]=temperature/10000%10;//温度百位 table_temp[1]=temperature/1000%10;//温度十位 table_temp[2]=temperature/100%10;//温度个位 table_temp[3]=temperature/10%10;//温度小数点后第一位 if(table_temp[0]==0) { LCD_WRITE_DATA(' '); if(table_temp[1]==0) LCD_WRITE_DATA(' '); else LCD_WRITE_DATA(table_temp[1]+'0'); } else { LCD_WRITE_DATA(table_temp[0]+'0'); LCD_WRITE_DATA(table_temp[1]+'0'); }
LCD_WRITE_DATA(table_temp[2]+'0'); LCD_WRITE_DATA('.'); LCD_WRITE_DATA(table_temp[3]+'0'); LCD_WRITE_DATA(0xdf); LCD_WRITE_DATA('C');}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>