单片机课程实训报告内容摘要:

/**********ds18b20 初始化函数 **********************/ void Init_DS18B20(void) { unsigned char x=0。 DQ = 1。 //DQ 复位 delay_18B20(8)。 //稍做延时 DQ = 0。 //单片机将 DQ 拉低 delay_18B20(80)。 //精确延时 大于 480us DQ = 1。 //拉高总线 delay_18B20(14)。 x=DQ。 //稍做延时后 如果 x=0 则初始化成功 x=1 则初始化失败 delay_18B20(20)。 } /***********ds18b20 读一个字节 **************/ unsigned char ReadOneChar(void) { uchar i=0。 uchar dat = 0。 for (i=8。 i0。 i) { DQ = 0。 // 给脉冲信号 dat=1。 DQ = 1。 // 给脉冲信号 if(DQ) dat|=0x80。 delay_18B20(4)。 } return(dat)。 } /*************ds18b20 写一个字节 ****************/ void WriteOneChar(uchar dat) { unsigned char i=0。 for (i=8。 i0。 i) { DQ = 0。 DQ = datamp。 0x01。 delay_18B20(5)。 DQ = 1。 dat=1。 } } /**************读取 ds18b20 当前温度 ************/ void ReadTemp(void) { unsigned char a=0。 unsigned char b=0。 char j。 char k。 char t。 long tt。 Init_DS18B20()。 WriteOneChar(0xCC)。 // 跳过读序号列号的操作 WriteOneChar(0x44)。 // 启动温度转换 delay_18B20(100)。 // this message is wery important Init_DS18B20()。 WriteOneChar(0xCC)。 //跳过读序号列号的操作 WriteOneChar(0xBE)。 //读取温度寄存器等(共可读 9 个寄存器) 前两个就是温度 delay_18B20(100)。 a=ReadOneChar()。 //读取温度值低位 b=ReadOneChar()。 //读取温度值高位 temp_value=b4。 temp_value+=(aamp。 0xf0)4。 t=aamp。 0x0f。 tt=t*625。 xiaoshu=tt/1000。 } void temp_to_str() //温度数据转换成液晶字符显示 { TempBuffer[0]=temp_value/10+39。 039。 //十位。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。