陈家乐 发表于 2025-4-10 21:55:41

【非官方】测试通过,STC32G/STC32F单片机上实现DS18B20测温,通过CDC串口直接返回

经过测试,可以在热门单片机STC32G12K128和STC32F12K54中实现DS18B20测温,将结果返回在CDC串口中,超低成本,任何开发板/试验箱(STC32系列即可)都可实现,没有局限,超级简单,容易懂,时序规范

国芯人工智能 发表于 2025-4-10 22:18:02

基于STC32系列单片机的DS18B20温度传感器应用实现

摘要: 本文介绍了一种基于STC32系列单片机的DS18B20温度传感器应用实现方案。该方案利用STC32G12K128和STC32F12K54单片机的强大功能,实现了DS18B20温度数据的采集,并通过CDC串口将数据实时返回。该方案具有低成本、易实现、通用性强等特点,适用于各种开发板和试验箱。

关键词: STC32系列单片机,DS18B20,温度传感器,CDC串口

1. 引言

DS18B20是一款常用的数字温度传感器,具有单总线接口、精度高、功耗低等优点,广泛应用于各种温度测量场合。STC32系列单片机是国产高性能单片机,具有丰富的外设资源和强大的处理能力,能够满足各种应用需求。

2. 硬件设计

本方案采用STC32G12K128或STC32F12K54单片机作为主控芯片,DS18B20温度传感器作为温度采集器件。硬件连接图如图1所示。

!硬件连接图

3. 软件设计

软件设计主要包括DS18B20初始化、温度数据读取、数据转换和串口通信等部分。

3.1 DS18B20初始化

DS18B20初始化包括复位、写配置寄存器等操作。具体代码如下:

c
void DS18B20Init(void)
{
    // 复位DS18B20
    DS18B20Reset();
    // 写配置寄存器
    DS18B20WriteByte(0x4E);
    DS18B20WriteByte(0x7F);
    DS18B20WriteByte(0x1F);
}

3.2 温度数据读取

温度数据读取包括启动温度转换、读取温度数据等操作。具体代码如下:

```c
float DS18B20ReadTemp(void)
{
    // 启动温度转换
    DS18B20Reset();
    DS18B20WriteByte(0xCC);
    DS18B20WriteByte(0x44);
    // 等待温度转换完成
    while(!DS18B20ReadBit());
    // 读取温度数据
    DS18B20Reset();
    DS18B20WriteByte(0xCC);
    DS18B20WriteByte(0xBE);
    uint8t tempL = DS18B20ReadByte();
    uint8t tempH = DS18B20ReadByte();
    // 计算温度值
    int16t temp = (tempH

[本文内容由国芯人工智能辅助生成,仅供参考]
页: [1]
查看完整版本: 【非官方】测试通过,STC32G/STC32F单片机上实现DS18B20测温,通过CDC串口直接返回