系統功能:
系統可以設置充電時長,啟動充電后按設置的充電時長充電,充電時間到后自動
停止充電,中途檢測到溫度過高也會結束充電并開啟風扇和蜂鳴器報警。
系統上電后,OLED顯示“歡迎使用智能充電系統請稍后”,兩秒鐘后進入正常
頁面顯示。
第一行顯示設定的充電時長(以分鐘計)
第二行顯示剩余的充電時長(以秒計)
第三行顯示設置的溫度閾值
第四行顯示獲取到的當前溫度值
短按按鍵B4后啟動充電
短按按鍵B5后增加充電時長
短按按鍵B6后減小充電時長
短按按鍵B7后增加溫度設定閾值
短按按鍵B3后減小溫度設定閾值
主要功能模塊原理圖:
電源時鐘燒錄接口:
單片機和按鍵輸入電路:
傳感器采集電路:
資料獲取地址
系統主要功能模塊代碼
/* 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();/* USER CODE BEGIN 2 *///在HAL庫初始化串口1后調用HAL_Delay(100);SetUart1RxToInput();HAL_Delay(50);//uart1打開接收中斷HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);InitOled();InitOledDisp();if(InitDS18B20()==0){// printf("%s", "DS18B20初始化成功");//DS18B20在上電第一次讀取時顯示溫度為85℃,這是正常的。//85℃是DS18B20在上電復位后在溫度寄存器內的對應數字量,//這里DS18B20初始化成功后讀一次值,避免出現85℃DS18B20GetTemp_SkipRom();}/* USER CODE END 2 */
系統控制功能:
?
//系統信息更新void SystemControl(void){static uint8_t updateCnt = 0;updateCnt++; if(updateCnt>=SYSTEM_UPDATE_INTER){ds18b20Temp = DS18B20GetTemp_SkipRom();getTemp = (uint8_t)ds18b20Temp;if(getTemp>setTemp){chargingOn = false; //停止充電CHARGE_OFF(); //關閉繼電器FAN_ON(); //打開風扇BUZZER_ON(); //打開蜂鳴器報警 }else //溫度恢復正常后關閉風扇和蜂鳴器{FAN_OFF();BUZZER_OFF();}}ChargingControl();}
系統顯示:
//處理OLED顯示內容void SystemDisplay(void){char textBuf[20];//顯示設置的充電時長(分鐘)sprintf(textBuf,"SetTime:%2dmin", setTimeMin);OledShowString(0, 0, (uint8_t*)textBuf, OLED_FONT_8X16); //測試8*16字符//顯示剩余的充電時間(秒)sprintf(textBuf,"Remain:%4dsec", remainTime);OledShowString(0, 2, (uint8_t*)textBuf, OLED_FONT_8X16); //測試8*16字符//顯示設置的超溫溫度閾值sprintf(textBuf,"SetTemp:%2d", setTemp);OledShowString(0, 4, (uint8_t*)textBuf, OLED_FONT_8X16); //測試8*16字符//顯示獲取到的溫度值sprintf(textBuf,"GetTemp:%2d", getTemp); OledShowString(0, 6, (uint8_t*)textBuf, OLED_FONT_8X16); //測試8*16字符}
此設計提供的資料包含原理圖PCB(包含PDF,AD,立創EDA三個版本),源代碼,系統框圖,主程序流程圖,物料清單(包含使用到的器件手冊),功能操作說明等。