根据给定的信息,本文将对DS18B20温度传感器相关的C语言程序代码进行详细的解析与知识点总结。首先从标题“多个18B20 C语言程序代码”可以看出,文章涉及的是关于DS18B20温度传感器的C语言编程实现。在描述部分反复提到了“多个18B20 C语言程序代码”,暗示了文中将会包含多个与DS18B20相关的程序示例。 ### 一、DS18B20简介 DS18B20是一种数字温度传感器,由Dallas Semiconductor制造。它具有单线通信协议,这意味着可以通过一条数据线与微控制器进行通信,简化了硬件设计。DS18B20的工作电压范围较宽,可在2.7V至5.5V之间工作,温度测量范围为-55°C至+125°C,精度为±0.5°C(在-10°C至+85°C范围内)。 ### 二、DS18B20的C语言程序代码解析 #### 1. 基本定义与初始化 ```c #include<reg51.h> #define uchar unsigned char sbit TMDAT = P3^4; ``` - `#include<reg51.h>`:这是8051系列单片机的标准头文件,包含了所有特殊功能寄存器的定义。 - `#define uchar unsigned char`:定义了一个类型`uchar`,代表无符号字符型变量,用于存储8位数据。 - `sbit TMDAT = P3^4;`:定义了一个特殊位变量`TMDAT`,对应P3口的第4位,即P3.4端口,用于与DS18B20进行数据通信。 #### 2. 时延函数 ```c void dmsec(unsigned int count) { unsigned int i; while (count) { i = 115; while (i > 0) i--; count--; } } ``` 该函数实现了延时功能,通过循环计数实现,参数`count`表示需要延时的次数。 #### 3. 初始化与复位 ```c void tmreset(void) { unsigned int i; TMDAT = 0; i = 103; while (i > 0) i--; // 延时约900us TMDAT = 1; i = 4; while (i > 0) i--; } ``` 该函数实现了DS18B20的复位操作,确保设备处于可通信状态。 #### 4. 读取DS18B20状态 ```c void tmpre(void) { unsigned int i; while (TMDAT); while (~TMDAT); i = 4; while (i > 0) i--; } ``` 此函数用于检测DS18B20是否准备好进行数据交换。 #### 5. 读取一位数据 ```c bit tmrbit(void) { unsigned int i; bit dat; TMDAT = 0; i++; TMDAT = 1; i++; i++; dat = TMDAT; i = 8; while (i > 0) i--; return (dat); } ``` 该函数负责从DS18B20读取一位数据。 #### 6. 读取一个字节 ```c unsigned char tmrbyte(void) { unsigned char i, j, dat; dat = 0; for (i = 1; i <= 8; i++) { j = tmrbit(); dat = (j << 7) | (dat >> 1); } return (dat); } ``` 此函数负责从DS18B20读取一个完整的字节数据。 #### 7. 写入一个字节 ```c void tmwbyte(unsigned char dat) { unsigned int i; unsigned char j; bit testb; for (j = 1; j <= 8; j++) { testb = dat & 0x01; dat = dat >> 1; if (testb) { TMDAT = 0; i++; i++; TMDAT = 1; i = 8; while (i > 0) i--; } else { TMDAT = 0; i = 8; while (i > 0) i--; TMDAT = 1; i++; i++; } } } ``` 此函数负责向DS18B20写入一个字节的数据。 ### 三、小结 通过上述代码分析,我们可以了解到DS18B20温度传感器的基本操作方法,包括初始化、读取温度值等。这些基本函数是实现DS18B20温度传感器控制的关键,掌握了这些函数的应用,就能够较为容易地实现基于DS18B20的各种温度测量应用。
- 粉丝: 0
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助