OLED显示:
第一行显示温度值
第二行显示PWM值
第三行显示电压值
第四行显示电流值

主要功能模块原理图:
电源时钟烧录接口:

单片机和按键输入电路:

温度采集及显示:

主从机部分代码:
初始化代码:
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
InitVar();
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_TIM3_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */
HAL_Delay(100);
InitOled();
InitOledDisp();
HAL_Delay(100);
if(InitDS18B20()==0)
{
// printf("%s", "DS18B20初始化成功");
//DS18B20在上电第一次读取时显示温度为85℃,这是正常的。
//85℃是DS18B20在上电复位后在温度寄存器内的对应数字量,
//这里DS18B20初始化成功后读一次值,避免出现85℃
DS18B20GetTemp_SkipRom();
}
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
/* USER CODE END 2 */
//系统控制
void OledUpdateTemp(void)
{
char textBuf[20];
float tempVal = 0;
uint16_t tempAD;
tempAD = ReadADCChannel(ADC_CHANNEL_0);
ds18b20Temp = DS18B20GetTemp_SkipRom();
//显示距离/水位
sprintf(textBuf,"Temp:%4.1f", ds18b20Temp);
OledShowString(0, 0, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符
//显示PWM值
if(simulatorFlag==true)
{
tempVal = tempAD/3.3;
}
else
{
tempVal = ds18b20Temp*10.0;
}
if(tempVal<0)
{
tempVal = 0;
}
else if(tempVal>1000)
{
tempVal = 1000;
}
pwmPulse1 = (uint16_t)tempVal;
pwmPulse2 = pwmPulse1;
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmPulse1);
__HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_2, pwmPulse2);
sprintf(textBuf,"Pulse:%4d", pwmPulse1);
OledShowString(0, 2, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符
//显示电压值
voltageVal = (float)pwmPulse1/100;
sprintf(textBuf,"Voltage:%5.2f", voltageVal);
OledShowString(0, 4, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符
//显示电流值
currentVal = (float)pwmPulse1/50;
sprintf(textBuf,"Current:%5.2f", currentVal);
OledShowString(0, 6, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符
}
此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。


5446

被折叠的 条评论
为什么被折叠?



