### 18b20程序 C语言编程 #### 一、C51中变量的存储类型 在C51编程中,为了更好地控制程序中变量的存储位置和访问方式,C51提供了以下几种变量存储类型: - **code**:定义的变量存储在程序存储区域内,容量可达64KB,但这些变量只能被读取,不可修改。 - **data**:变量位于00H~7FH的片内RAM区域内,容量为128字节,可被任意读写。 - **idata**:变量位于00H~FFH的片内RAM区域,容量为256字节,同样支持读写操作。 - **bdata**:变量存储在20H~2FH的片内RAM区域,容量为16字节,支持读写操作。 - **xdata**:变量存储在64KB的外部RAM区域,支持读写。 - **pdata**:变量存储在外部RAM的256字节分页区域内,支持读写。 正确使用这些存储类型有助于提高程序的执行效率和代码的可维护性。 #### 二、DS18B20传感器概述 ##### 1. DS18B20的主要特点 - **适应电压范围宽**:支持3.0~5.5V的工作电压,在寄生电源模式下可直接通过数据线供电。 - **单线接口方式**:与微处理器连接只需一条I/O线,简化了硬件设计。 - **支持多点组网**:多个DS18B20传感器可通过唯一的一条三线连接,实现多点温度检测。 - **集成度高**:所有传感元件和转换电路均集成在一个小型封装内。 - **测温范围广**:温度范围覆盖-55℃~+125℃,在-10℃~+85℃范围内精度达到±0.5℃。 - **分辨率可编程**:分辨率可在9~12位之间设置,对应的温度分辨率为0.5℃、0.25℃、0.125℃和0.0625℃。 - **快速转换时间**:在不同的分辨率下,DS18B20可以在93.75ms至750ms之间完成温度转换。 - **数字信号输出**:测量结果以数字形式输出,并通过“一线总线”串行传输给微处理器。 - **强大的抗干扰能力**:具备CRC校验码,提高了数据传输的可靠性。 - **负压特性**:即使电源极性接反也不会导致损坏,但无法正常工作。 ##### 2. DS18B20的外形和内部结构 - **外形**:DS18B20采用标准TO-92封装,具有三个引脚。 - **引脚定义**: - DQ:数字信号输入/输出端。 - GND:电源地。 - VDD:外接供电电源输入端(在寄生电源模式下接地)。 - **内部结构**:DS18B20的内部主要由四个部分组成: - 64位光刻ROM,用于存储设备ID等信息。 - 温度传感器,负责温度测量。 - 非易失性温度报警触发器TH和TL,用于设定上下限报警温度。 - 配置寄存器,用于设定分辨率等参数。 ##### 3. DS18B20的工作原理 - **温度测量原理**:DS18B20内部包含两个振荡器,一个具有较低温度系数,另一个则具有较高温度系数。计数器1根据低温度系数振荡器的频率进行计数,而计数器2则根据高温度系数振荡器的频率计数。当计数器1计数到零时,温度寄存器的值增加1。这个过程持续进行,直到计数器2计数到零为止。 - **斜率累加器**:用于补偿和修正非线性误差,提高温度测量的准确性。 - **光刻ROM**:包含64位序列号,用于标识每个DS18B20的独特身份。 - **温度数据格式**:温度值以12位符号扩展的二进制补码形式存储,每LSB代表0.0625℃的变化。 DS18B20是一种非常实用的数字温度传感器,具有广泛的适用性和高度的集成性,非常适合应用于各种需要精确温度监测的场合。通过合理的编程和电路设计,可以充分利用其特性来实现高效可靠的温度检测系统。
- 粉丝: 1
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助