第8周实验--单总线温度采集

一、主要原理

DS18B20是由DALLAS半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。通过使用51单片机的一个IO口模拟单总线时序与DS18B20通信,可以实现读取环境温度的功能。具体实现原理包括初始化单总线、发送指令给DS18B20、DS18B20响应并发送数据、单片机读取数据、计算温度值以及显示温度值等步骤。通过这种方式,可以方便地获取环境温度并进行相应的处理和显示。

二、Proteus和普中开发板实物上完成 DS18B20 的环境温度采集

电路图:
![[Pasted image 20240420190755.png]]

代码:

#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int 
#define out P0

sbit smg1=out^4;
sbit smg2=out^5;
sbit DQ=P3^7;

void delay5(uchar);
void init_ds18b20(void);
uchar readbyte(void);
void writebyte(uchar);
uchar retemp(void);
 
void main(void)
{
	uchar i,temp;
	delay5(1000);
	while(1)
	{
	 temp=retemp();	
	 for(i=0;i<10;i++)	
	 {
	 out=(temp/10)&0x0f;
	 smg1=0;
	 smg2=1;
	 delay5(1000);	
	 out=(temp%10)&0x0f;
	 smg1=1;
	 smg2=0;
	 delay5(1000);	
	 }
	}
 
}
 
 
void delay5(uchar n)
{
	 do
	 {
	 _nop_();
	 _nop_();
	 _nop_();
	 n--;
	 }
	 while(n);
}

void init_ds18b20(void)
{
	 uchar x=0; 
	 DQ =0;    
	 delay5(120); 
	 DQ =1;    
	 delay5(16);
	 delay5(80);
}

uchar readbyte(void)
{
	uchar i=0;
	uchar date=0;
	for (i=8;i>0;i--)
	 {
		  DQ =0;
		  delay5(1);
		  DQ =1;	
		  date>>=1;
		  if(DQ)
		  date|=0x80;
		  delay5(11);
	 }
 	return(date);
}

void writebyte(uchar dat)
{
 uchar i=0;
 for(i=8;i>0;i--)
	 {
	  DQ =0;
	  DQ =dat&0x01;
	  delay5(12);	  
	  DQ = 1;	   
	  dat>>=1;
	  delay5(5);
	  }
}

uchar retemp(void)
{
	uchar a,b,tt;
	uint t;
	init_ds18b20();
	writebyte(0xCC); 
	writebyte(0x44);
	init_ds18b20();
	writebyte(0xCC); 
	writebyte(0xBE); 
	a=readbyte();
	b=readbyte();
	t=b;
	t<<=8;
	t=t|a;
	tt=t*0.0625;
	return(tt);
}

结果:
![[Pasted image 20240420190829.png]]

实物:
![[实验照片.jpg]]

三、keil逻辑分析仪分析

将上述实验成功的代码在Keil中进行仿真运行,使用虚拟逻辑分析仪显示单片机与DS18B20的DQ数据线连接引脚的波形,分析其“初始化–>写—>读”总线时序,与原理进行对比分析
结果是符合技术要求,故意在代码中把时序弄错,无法正确地返回温度数据

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值