C51 COMPILER V9.52.0.0 DS18B20 04/19/2017 20:22:46 PAGE 1
C51 COMPILER V9.52.0.0, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE DS18B20.C BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 /*-----------------------------------------------
2 名称:18B20温度传感器
3 内容:18B20单线温度检测的应用样例程序
4 ------------------------------------------------*/
5 #include “delay.h”
6 #include “DS18B20.h”
7
8 unsigned int ds18b20_temp = 0;
9 unsigned int ds18b20_temp_set = 400;
10
11 /*------------------------------------------------
12 uS延时函数,含有输入参数 unsigned char t,无返回值
13 unsigned char 是定义无符号字符变量,其值的范围是
14 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
15 长度如下 T=tx2+5 uS
16 ------------------------------------------------*/
17 void DelayUs2x(unsigned char t)
18 {
19 1 while(--t);
20 1 }
21
22 /*------------------------------------------------
23 18b20初始化
24 ------------------------------------------------*/
25 bit Init_DS18B20(void)
26 {
27 1 bit dat=0;
28 1 DQ = 1; //DQ复位
29 1 DelayUs2x(5); //稍做延时
30 1 DQ = 0; //单片机将DQ拉低
31 1 DelayUs2x(200); //精确延时 大于 480us 小于960us
32 1 DelayUs2x(200);
33 1 DQ = 1; //拉高总线
34 1 DelayUs2x(50); //15~60us 后 接收60-240us的存在脉冲
35 1 dat=DQ; //如果x=0则初始化成功, x=1则初始化失败
36 1 DelayUs2x(25); //稍作延时返回
37 1 return dat;
38 1 }
39
40 /*------------------------------------------------
41 读取一个字节
42 ------------------------------------------------*/
43 unsigned char ReadOneChar(void)
44 {
45 1 unsigned char i=0;
46 1 unsigned char dat = 0;
47 1 for (i=8;i》0;i--)
48 1 {
49 2 DQ = 0; // 给脉冲信号
50 2 dat》》=1;
51 2 DQ = 1; // 给脉冲信号
52 2 if(DQ)
53 2 dat|=0x80;
54 2 DelayUs2x(25);
55 2 }
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !