51单片机ds18b20温度传感器数码管一闪一闪的(51单片机ds18b20数码管显示)

介绍

  DS18B20是一种封装完备的数字温度传感器,它采用了1-wire总线传输协议,只需要一根数据线即可完成通讯和控制,同时也可以通过多个DS18B20进行并联的方式进行测温。单片机51作为一种常见的嵌入式处理器常常和DS18B20一起被使用,在数字温度传感器的应用中,主控通过串行总线(半双工)方式与DS18B20通信,并将测量到的温度通过数码管进行显示。

程序实现

  DS18B20需要一个程序来驱动,对于单片机51来说,程序大致如下:

  ①初始化DS18B20

  在初始化中需要主控拉低总线一段时间,之后释放总线,DS18B20进行复位,进入待命状态。主控往总线上写入一份ROM代码,提供给DS18B20进行响应。

  ②读取DS18B20

  主控跟据时序图往总线上写入命令代码,触发DS18B20进行温度测量。2112.82ms后,DS18B20需要将温度信息给主控,这时主控通过总线进行读取并进行一定的运算,得到实际温度。

  ③数码管显示

  得到温度信息后,主控将其转化成LED数码管上的数码,并通过数码管进行显示。

51单片机ds18b20温度传感器数码管一闪一闪的(51单片机ds18b20数码管显示)

  如下代码是基于Keil C51编译器的DS18B20数字温度传感器驱动函数。

```c
#include
#define uchar unsigned char
#define uint unsigned int
#define DataPin P1_0 //数据线
#define DataPort P1 //数据端口

uchar ReadTemperature() //读温度函数
{
uchar temp, Resolution, TH, TL;
Start(); //起始信号
Tools(0xCC); //跳过ROM指令
Tools(0x44); //启动温度指令
Delay_us(15); //Tconv时间,等待转换完成
Start(); //起始信号
Tools(0xCC); //跳过ROM指令
Tools(0xBE); //读取温度指令
TL = Tool(); //读LSB字节
TH = Tool(); //读MSB字节
Stop(); //结束信号
temp = TH; //高位送入temp
temp <<= 8; //移位
temp |= TL; //低位送入
Resolution = temp & 0xF0; //取高4位的分辨率
temp <>= 4; //回到原来的位置
return temp; //返回温度
}

void main()
{
uchar temp, shi, ge, sign; //shige存储把温度除以10的积,shi存十位,ge存个位,sign存符号
sign = 0; //符号置0
while (1)
{
temp = ReadTemperature(); //读取温度
if (temp & 0x8000) //判断是否为负数
{
sign = 1; //负数标志为1
temp = ~temp + 1; //得到补码
}
shi = temp / 10; //取十位
ge = temp % 10; //得到个位
ShowMax7219(0x01, shi); //发送十位数码
ShowMax7219(0x02, ge); //发送个位数码

}
}
```

  ShowMax7219是额外编写的数码管驱动函数,用于向LED数码管进行编码处理以及数据发送。其中函数参数x代表数码管编号,y代表要显示的内容。

应用

  数字温度传感器DS18B20通常应用于智能家居、机器人、气象站等实时温度测量场合,其中最为广泛的应用莫过于智能家居领域。通过适当的硬件搭建和程序编写,DS18B20能够快速、准确地测量并显示出空调、暖气和电热毯等电器设备的当前温度,为用户提供智能化的温度控制方案。

  除此之外,DS18B20的应用还可能涉及到环保、病研究等多个领域,有着广泛的前景和应用价值。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/mcurz7y4.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年4月26日 上午8:50
下一篇 2023年4月26日 上午8:50

猜你喜欢