已開源,代碼詳細見附錄
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png (130.36 KB, 下載次數: 48)
下載附件
2021-10-18 03:45 上傳
51hei.png (55.01 KB, 下載次數: 45)
下載附件
2021-10-18 03:46 上傳
單片機源程序如下:
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- // float pitch,roll,yaw; //歐拉角
-
- unsigned char switch_value; //獲取到的按鍵值
- // unsigned long STEPS = 0;
- /* USER CODE END 1 */
- /* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- /* USER CODE BEGIN Init */
-
- /* 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_DMA_Init();
- MX_ADC1_Init();
- MX_I2C1_Init();
- MX_SPI1_Init();
- MX_TIM2_Init();
- MX_TIM4_Init();
- MX_USART1_UART_Init();
- MX_RTC_Init();
- MX_I2C2_Init();
- /* USER CODE BEGIN 2 */
-
- /*調節蜂鳴器*/
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); //開啟定時器PWM通道 定時器2 通道3
- __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, 0); //設置PWM的占空比,這里初始化占空比為0
- printf("初始化蜂鳴器\r\n");
-
-
- /*調節屏幕背光*/
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); //開啟定時器PWM通道 定時器2 通道3
- __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 70); //設置PWM的占空比,調節背光
- printf("調節背光\r\n");
-
-
-
- printf("初始化寄存器\r\n");
- // HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); //打開串口接收中斷
- /*主顯示界面*/
- MENU_init();
-
- printf("初始化界面\r\n");
-
-
-
- MPU_Init(); //初始化MPU6050
- while(mpu_dmp_init())//初始化DMP
- {
- printf("error\r\n");
- HAL_Delay(10);
- }
-
- printf("初始化陀螺儀\r\n");
-
- HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); //更新LED燈的狀態,開機后熄滅
-
- Screen_off_time = sTime.Seconds + 10; //設置自動熄滅屏幕的時間是20秒
-
- if( Screen_off_time > 59 ) //如果設計的屏幕熄滅實踐超過了一分鐘就倒退回去
- {
- Screen_off_time = Screen_off_time -60; //得到正確的時間
- }
-
- usart_print_flag = 0;
-
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- //傳感器檢測
- Get_Sensor_data();
- /*主界面顯示部分*/
- MENU_main();
-
- /*根據按鍵方向按鍵按下來進入應用界面*/
- MENU_APP(switch_value);
-
- /*處理后臺運行的程序*/
- Background_detection(switch_value);
- /*檢測按鍵以及處理自動熄屏和喚醒屏幕*/
- switch_value = Get_Key_value(1);
- if( switch_value == 2)
- {
- /*熄滅屏幕*/
- __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 0); //設置PWM的占空比,調節背光
-
- set_Screen_off_flag = 0; //代表已經熄滅了屏幕 熄滅屏幕的狀態下不對按鍵等操作進行反應
- }
-
- // /*陀螺儀獲取角度部分*/
- // if( mpu_dmp_get_data( &pitch, &roll, &yaw ) == 0 )
- // {
- // if(usart_print_flag)
- // {
- // printf("%.2f %.2f %.2f \r\n",pitch,roll,yaw);
- // }
- // }
- // if(usart_print_flag)
- // {
- // printf("溫度:%.1f 濕度:%.1f 電量百分比:%d 按鍵值:%d 日期:%d:%d:%d 時間:%d:%d:%d \r\n",
- // temperature,humidity, Battery_voltage ,
- // switch_value,
- // sDate.Year, sDate.Month, sDate.Date,
- // sTime.Hours, sTime.Minutes, sTime.Seconds);
- // }
- }
- /* USER CODE END 3 */
- }
復制代碼
所有資料51hei附件下載:
THwatch.7z
(15.86 MB, 下載次數: 182)
2021-10-18 03:51 上傳
點擊文件名下載附件
|