蓝桥杯-51单片机-DS18B20外设使用,2024年最新2024网易物联网嵌入式开发高级面试题总结

95 阅读3分钟

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。 img img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

DS18B20引脚图如上,DS18B20使用OneWire总线控制,仅需要操作引脚DQ即可使用。翻阅原理图可知比赛中需要在OneWire.h文件中定义引脚DQ 

sbit DQ = P1^4;

DS18B20如何使用

翻阅芯片手册可知

DS18B20在使用时应遵循以上步骤:1.初始化 2.ROM命令 3.功能命令

由芯片手册可知,ROM命令如下:

功能命令如下:

我们仅使用DS18B20进行温度读取操作,由于蓝桥杯比赛板上仅有一个DS18B20,可以跳过第二步ROM操作。具体代码如下:

float Temperature_Read()
{
	unsigned char low,high;
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0x44);
	init_ds18b20();
	Write_DS18B20(0xcc);
	Write_DS18B20(0xbe);
	low = Read_DS18B20();
	high = Read_DS18B20();
	return ((high << 8) | low) / 16.0;
}

其中0xcc为跳过ROM命令,0x44为转换温度,0xbe为读取寄存器。

将温度读取出来后,可以在主程序中定义float型变量float temperature来通过数码管等外设显示温度,具体代码如下:

float temperature;	//DS18B20温度专用变量

/* 信息处理函数 */
void Seg_Proc()
{
	if(Seg_Slow_Down) return;
	Seg_Slow_Down = 1;
	
	/* 信息读取区域 */
		/* DS1302时钟 */
//	RTC_Read(ucRTC);
		/* DS18B20温度 */
	temperature = Temperature_Read();
	
	/* 数据处理区域 */


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/33979b1405b84473b31041bee8d88c96~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771921064&x-signature=UWF8uppJTcG9plIRESevtQGV5%2F4%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/7a6a9d59a78c480a9d30ee642080471a~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzM5MTQ5MjgwNjA=:q75.awebp?rk3s=f64ab15b&x-expires=1771921064&x-signature=8W%2FYUQm7POgVN7VfE4LpNs6ROSE%3D)

**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**