系统功能:
OLED显示:
第一行显示液位(单位是CM)
第二行显示PWM值
第三行显示电压值
第四行显示电流值
主要功能模块原理图:
电源时钟烧录接口:
单片机和按键输入电路:
传感器采集电路:
资料获取地址
https://shop272529339.taobao.com
系统主要功能模块代码
初始化代码:
/* 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_TIM2_Init();
/* USER CODE BEGIN 2 */
//TIM2通道1启动上升沿捕获
__HAL_TIM_SET_CAPTUREPOLARITY(&htim2, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);
HAL_Delay(100);
InitOled();
InitOledDisp();
HAL_Delay(100);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);
/* USER CODE END 2 */
//系统信息更新
void OledUpdateDistance(void)
{
char textBuf[20];
float tempVal = 0;
if(getDistanceVal<0)
{
getDistanceVal = 0;
}
else if(getDistanceVal>30.0)
{
getDistanceVal = 30;
}
waterLevel = 30 - getDistanceVal;
//显示距离/水位
sprintf(textBuf,"Level:%4.1fcm", waterLevel);
OledShowString(0, 0, (uint8_t*)textBuf, OLED_FONT_8X16); //测试8*16字符
//显示PWM值
tempVal = waterLevel*33.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/200;
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三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。