单片机DS18B20温度传感器C语言程序含CRC校验.doc
【单片机DS18B20温度传感器C语言程序含CRC校验】 DS18B20是一款常用的数字温度传感器,它具有单线通信能力,可以与微控制器(如AT89S52)通过单总线接口进行数据交换。在本程序中,DS18B20被连接到单片机的P2.2引脚,同时使用七段数码管显示温度读数。程序使用C语言编写,并包含了CRC(循环冗余校验)以确保数据的准确性。 程序中定义了一些关键变量和常量: 1. `uchar` 和 `uint` 是定义无符号字符型和无符号整型的别名。 2. `sbit ds=P2^2;` 定义了DS18B20连接的P2.2口为ds。 3. `uchar code table[]` 和 `uchar code table1[]` 分别是不带小数点和带小数点的七段数码管编码表。 4. `uchar flag` 用于存储状态标志。 5. `uint temp` 用于存储温度值,必须声明为int型以容纳可能的负温度值。 程序还包括以下几个主要功能函数: 1. `TempDelay(uchar us)` 是一个微秒级的延时函数,用于控制时序。 2. `delay(uint count)` 是一个毫秒级的延时函数,基于定时器1实现。 3. `init_()` 用于初始化串口,设置波特率为9600,工作在方式1。 4. `display(uint temp)` 显示温度值到七段数码管,通过解码表转换数值到七段码。 5. 未在示例中给出的初始化时序、读时序和写时序是DS18B20通信的关键部分,这些时序用于确保正确地与传感器交互。 DS18B20的通信时序非常特定,主要包括: - **初始化时序**:复位脉冲,由主机产生,随后从机发送一个存在脉冲表示已准备好。 - **读时序**:主机启动写时序,然后进行读操作,数据从从机流向主机,低位在先。 - **写时序**:主机控制总线,发送数据到从机,同样低位在先。 CRC校验用于检测数据在传输过程中的错误,它通过对数据进行特定算法运算生成一个校验码,接收端同样计算校验码并与发送端的进行比较,如果一致则数据传输无误。 总结来说,这个程序实现了一个DS18B20温度传感器的读取和显示功能,通过单总线通信,配合CRC校验确保数据的可靠性。同时,程序还使用了七段数码管来直观展示温度读数。这种类型的系统广泛应用于环境监测、智能家居等领域。
剩余13页未读,继续阅读
- 粉丝: 3820
- 资源: 59万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0