本帖最后由 小涛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.
*\*\param none.
*\*\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
代码开源 工程文件
数码管温度显示源码.zip
(477.98 KB)
|