• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: 51  DS18B20  序列号  

资源简介

DS18B20温度传感器是一款三引脚的单总线传感器,分别为电源,地,信号线。每个DS18B20有一个唯一的序列号,才能实现单总线结构,我们在设计多点温度采集系统时候,首先需要获取每个DS18B20的序列号,本程序基于单片机获取18B20序列号,并用LCD显示,具体电路接法参见代码内的引脚定义

资源截图

代码片段和文件信息

/******************************************************************
基于51单片机读取DS18B20的序列号,用LCD1602显示

具体连接见引脚定义,按需修改
******************************************************************/

#include 
#define uchar unsigned char
#define uint unsigned int
/********************************************************************/
//LCD引脚定义
#define DATA P1
sbit RS = P2^0;    
sbit RW = P2^1; 
sbit E = P2^2;
//DS18B20引脚定义
sbit DQ = P2^7;
/********************************************************************/
void  delay(uint z);                          
void  DS18B20_Reset(void);           //初始化DS18B20
bit   DS18B20_Readbit(void);         //读一位数据
uchar DS18B20_ReadByte(void);        //读一字节数据
void  DS18B20_WriteByte(uchar dat);  //写一字节数据
void  LCD_WriteCom(uchar com);       //LCD指令写入
void  LCD_WriteData(uchar dat);      //LCD数据写入     
void  LCD_Init();                    //LCD初始化
void  Display18B20Rom(char Rom);     //显示DS18B20序列号
/**********************************************/
/*     主函数                                */
/**********************************************/
void main()
{        
uchar abcdefgh;
  LCD_Init();
RW = 0;
  DS18B20_Reset();
  delay(1);
  DS18B20_WriteByte(0x33);
  delay(1);
  a = DS18B20_ReadByte();
  b = DS18B20_ReadByte();
  c = DS18B20_ReadByte();
  d = DS18B20_ReadByte();
  e = DS18B20_ReadByte();
  f = DS18B20_ReadByte();
  g = DS18B20_ReadByte();
  h = DS18B20_ReadByte();
  LCD_WriteCom(0x80+0x40);
  Display18B20Rom(h);
  Display18B20Rom(g);
  Display18B20Rom(f);
  Display18B20Rom(e);
  Display18B20Rom(d);
  Display18B20Rom(c);
  Display18B20Rom(b);
  Display18B20Rom(a);
  while(1);
}
/*************************

评论

共有 条评论