蓝桥杯单片机实训版学习周总结1-温度传感器DS18B20

#include<reg51.h>
#include<stdio.h>
#include<math.h>
//#include"onewire.c"
//#include"onewire.h"
#define OW_SKIP_ROM 0xcc
#define DS18B20_CONVERT 0x44
#define DS18B20_READ 0xbe
 
//IC引脚定义
sbit DQ = P1^4;
 
//函数声明
void Delay_OneWire(unsigned int t);
void Write_DS18B20(unsigned char dat);
bit Init_DS18B20(void);
unsigned char Read_DS18B20(void);
code unsigned char tab[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf,0xc6};//0~9 灭 横杠
unsigned char dspbuft[]={10,10,10,10,10,10,10,12};
//unsigned char dspcom=0;
//单总线延时函数
void Delay_OneWire(unsigned int t)
{
	char z;
  while(t--)
  for(z=0;z<6;z++);
}
 
//DS18B20芯片初始化
bit Init_DS18B20(void)
{
	bit initflag = 0;
	DQ = 1;
	Delay_OneWire(12);
	DQ = 0;
	Delay_OneWire(80); 
	DQ = 1;
	Delay_OneWire(10); 
	initflag = DQ;    
	Delay_OneWire(5);
  
	return initflag;
}
 
//通过单总线向DS18B20写一个字节
void Write_DS18B20(unsigned char dat)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		DQ = 0;
		DQ = dat&0x01;
		Delay_OneWire(5);
		DQ = 1;
		dat >>= 1;
	}
	Delay_OneWire(5);
}
 
//从DS18B20读取一个字节
unsigned char Read_DS18B20(void)
{
	unsigned char i;
	unsigned char dat;
  
	for(i=0;i<8;i++)
	{
		DQ = 0;
		dat >>= 1;
		DQ = 1;
		if(DQ)
		{
			dat |= 0x80;
		}	    
		Delay_OneWire(5);
	}
	return dat;
}
 
int read()
{	
	unsigned char low,high;
	int temp;
	Init_DS18B20();                 //初始化 
	Write_DS18B20(OW_SKIP_ROM);     //跳过ROM          0XCC 
	Write_DS18B20(DS18B20_CONVERT); //发送温度转换命令 0X44
	Delay_OneWire(200);             //适当延时 
	
	Init_DS18B20();                 //初始化
	Write_DS18B20(OW_SKIP_ROM);     //跳过ROM          0XCC
	Write_DS18B20(DS18B20_READ);    //发送读暂存器命令 0XBE 
	
	low=Read_DS18B20();             //分别读高位和低位 
	high=Read_DS18B20();
	
	temp=((high<<4)|(low>>4));      //temp取二进制 
	temp=temp*0.0625*10;            //二进制转化为十进制数 
	return temp;
}
 
void Delay5ms()		//@12.000MHz
{
	unsigned char a,b;
	for(a=19;a>0;a--)
		for(b=130;b>0;b--);
}
 

void NO_buzzrelay()
{
	P2&=0x1f;	
	P2|=0xa0;	
	P0&=0xaf;	
	P2&=0x1f;		
}
 
void main()
{
	NO_buzzrelay();
	while(1)
	{
		display(read());
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PS:注意底层驱动的更改。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片机技术应用是指在单片机的基础上,利用单片机的强大功能和广泛的应用领域,开展各种项目和验。 在单片机拓展项目中,我们选择了温度传感器ds18b20作为验的主要组成部分。ds18b20是一种数字温度传感器,可通过单片机与之进行通信,并将温度信息传输给单片机验指导书是对该验进行详细介绍和指导的文档。在指导书中,会包括验的目的、步骤、所需材料和仪器、验原理等内容。 在进行此验时,首先需要准备好所需的材料和仪器,包括单片机ds18b20温度传感器、电源、连接线等。然后按照指导书中给出的步骤进行验。 验的步骤主要包括:接线、编写程序、烧录程序、观察结果等。在接线过程中,需要连接ds18b20传感器到特定的引脚,然后通过程序读取传感器温度值。编写程序的过程中需要使用单片机的开发工具,按照指导书中给出的程序进行编写。编写完成后,需要将程序烧录到单片机中。烧录完成后,可以通过观察单片机的输出结果来验证验的正确性。 通过进行这个验,可以深入了解温度传感器的工作原理和单片机传感器的通信方式。可以进一步学习如何利用单片机进行温度监测和控制,为后续的项目应用打下基础。 总结来说,单片机技术应用是一门用性很强的技术,通过拓展项目,可以更好地理解和应用单片机技术。而验16中的温度传感器ds18b20验指导书,则是一个帮助我们完成验的指南,通过按照指导书的步骤进行验,可以获得预期的验结果,并提高对单片机技术的理解和应用能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值