小涛DZGZS 发表于 2022-8-19 23:31

【N32G430开发板试用】+ DS18B20温度显示

本帖最后由 小涛DZGZS 于 2022-8-19 23:33 编辑

@安小芯
由于最近有点忙一直没时间测试板子,这几天挤了挤时间测试了一下G430,本来想用硬件IIC测试无奈硬件似乎有点繁琐一时间没看懂例程,索性软件模拟吧。
硬件电路介绍
三位数码管电路:

找了一块N年前画的数码管显示小板子,SDA连接到PB11,SCL连接到PB10。
DS18B20电路:

温度传感器飞线一个。

实物图:
功能演示:


main.c
#include "main.h"
#include "TM1650.h"
#include "bsp_delay.h"
#include "bsp_ds18b20.h"

float temperature;
uint8_t a;
/**
*\*\name   main.
*\*\fun    main function.
*\*\paramnone.
*\*\return none.
**/
int main(void)
{
    TM1650_Init();          //初始化数码管
    TM1650_WriteComm(5,1);//设置亮度5级,开显示
   
    DS18B20_Init();         //初始化温度传感器
    while(1)
    {
      temperature = DS18B20_GetTemp_SkipRom() * 10; //温度值放大10倍
      TM1650_Display((uint8_t)temperature);   //取整数部分显示
      SysTick_Delay_Ms(1000);
    }
}


数码管驱动.h部分(下面有工程文件包)
#ifndef __TM1650_H__
#define __TM1650_H__

#include "n32g430.h"

#define      SDA_GPIO_CLK                              RCC_AHB_PERIPH_GPIOB
#define      SDA_GPIO_PORT                              GPIOB
#define      SDA_GPIO_PIN                                 GPIO_PIN_11

#define      SCL_GPIO_CLK                              RCC_AHB_PERIPH_GPIOB
#define      SCL_GPIO_PORT                              GPIOB
#define      SCL_GPIO_PIN                                 GPIO_PIN_10

#define SCL_H GPIO_Pins_Set(SCL_GPIO_PORT, SCL_GPIO_PIN)
#define SDA_H GPIO_Pins_Set(SDA_GPIO_PORT, SDA_GPIO_PIN)

#define SCL_L GPIO_Pins_Reset(SCL_GPIO_PORT, SCL_GPIO_PIN)
#define SDA_L GPIO_Pins_Reset(SDA_GPIO_PORT, SDA_GPIO_PIN)

#define SDA_DI GPIO_Input_Pin_Data_Get(SDA_GPIO_PORT, SDA_GPIO_PIN)


void TM1650_Init(void);
// void TM1650_OUT();
// void TM1650_IN();
// void TM1650_START();
// void TM1650_ACK();
// void TM1650_STOP();
// void TM1650_WriteOne(uint8_t Data);
// uint8_t TM1650_ReadOne();
// void TM1650_WriteComm(uint8_t Light, uint8_t Show);
// void TM1650_WriteData(uint8_t address,uint8_t data);
void TM1650_Display(uint8_t data);

#endif

温度传感器驱动.h部分(下面有工程文件包)
#ifndef __DS18B20_H
#define __DS18B20_H

#include "n32g430.h"

/************************** DS18B20 连接引脚定义********************************/
#define      DS18B20_DQ_GPIO_CLK                              RCC_AHB_PERIPH_GPIOB
#define      DS18B20_DQ_GPIO_PORT                              GPIOB
#define      DS18B20_DQ_GPIO_PIN                                 GPIO_PIN_13



/************************** DS18B20 函数宏定义********************************/
#define      DS18B20_DQ_0                                                GPIO_Pins_Reset ( DS18B20_DQ_GPIO_PORT, DS18B20_DQ_GPIO_PIN )
#define      DS18B20_DQ_1                                                GPIO_Pins_Set ( DS18B20_DQ_GPIO_PORT, DS18B20_DQ_GPIO_PIN )

#define      DS18B20_DQ_IN()                                        GPIO_Input_Pin_Data_Get ( DS18B20_DQ_GPIO_PORT, DS18B20_DQ_GPIO_PIN )

/************************** DS18B20 函数声明 ********************************/
void DS18B20_Init(void);
void DS18B20_ReadId(uint8_t *ds18b20_id);
float DS18B20_GetTemp_SkipRom(void);
float DS18B20_GetTemp_MatchRom(uint8_t *ds18b20_id);

void DS18B20_Rst(void);
uint8_t DS18B20_ReadByte(void);
void DS18B20_WriteByte(uint8_t dat);

#endif

代码开源 工程文件





sanfuzi 发表于 2022-11-5 11:25

DS18B20怎么做精准的延时?

linfelix 发表于 2022-11-5 11:42

能不能通过定时器配置延时函数呢?

mollylawrence 发表于 2022-11-5 11:59

DS18B20可以识别多个传感器的吗?

sheflynn 发表于 2023-4-15 19:55

单片机如何与多个DS18B20连接

eefas 发表于 2023-4-15 22:26

DS18B20温度传感器与单片机间的通信线可以多长

everyrobin 发表于 2023-4-16 22:12

DS18B20温度传感器如何与单片机相连接

tifmill 发表于 2023-4-16 22:32

ds18b20为什么要加10k上拉电阻

robincotton 发表于 2023-4-16 22:38

DS18B20的耐电压是多少伏

wwppd 发表于 2023-4-16 22:56

DS18B20芯片功耗是多少

fengm 发表于 2023-4-18 10:32

若采用多点测温,单片机如何识别ds18b20?

wangdezhi 发表于 2023-4-18 10:43

ds18b20 如何读取数据?
页: [1]
查看完整版本: 【N32G430开发板试用】+ DS18B20温度显示