基于stm32f103c8t6的環境檢測手表可以檢測大氣壓溫度濕度等
通過陀螺儀或者按鍵實現功能切換
功能強大 并且加入了小游戲移植了UI界
Altium Designer畫的智能手表原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (194.13 KB, 下載次數: 42)
下載附件
2022-5-16 04:56 上傳
51hei.png (49.77 KB, 下載次數: 38)
下載附件
2022-5-16 04:55 上傳
單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "draw_api.h"
- #include "test.h"
- #include "led.h"
- #include "lcd.h"
- #include "common.h"
- #include "i2c_soft.h"
- #include "ADC.h"
- #include "DS3231.h"
- #include "NVIC.h"
- #include "bme280.h"
- //extern unsigned char wifi_time_cnt;
- enum
- {
- LA =262,
- LB =294,
- LC =330,
- LD =349,
- LE =392,
- LF =440,
- LG =494,
-
- MA =523,
- MB =578,
- MC =659,
- MD =698,
- ME =784,
- MF =880,
- MG =988,
-
- HA =1064,
- HB =1175,
- HC =1318,
- HD =1397,
- HE =1568,
- HF =1760,
- HG =1976
- };
- void power_pin_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;// PB12 POWER控制端口
- GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; //推挽輸出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//速度
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- GPIO_SetBits(GPIOB,GPIO_Pin_12);
- }
- extern bool bme_flag;
- void bme_update(void)
- {
- if(bme_flag)
- {
- bme_flag=0;
- readTrim();
- bme280CompensateH();
- bme280CompensateP();
- bme280CompensateT();
- }
- }
- extern short pitch_a,roll_a,yaw_a;
- void c_setup()
- {
- char i=0,count=0;
- power_pin_init();
- //SystemInit();
- //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優先級分組2
- delay_init(); //延時函數初始?
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
- LCD_Init(); //初始化OLED接口
- Adc_Init(); //ADC初始化
- KEY_INT_INIT();
- millis_init();
- console_log(500,"init_OLED: OK");
- console_log(10,"--- welcome !---");
- console_log(10," _ _ _ ");
- console_log(10," | | | | |_| ");
- console_log(10," | |_| | _ ");
- console_log(10," | _ | | | ");
- console_log(10," | | | | | | ");
- console_log(10," |_| |_| |_| ");
- console_log(10," ");
- I2C_GPIO_Config();
- delay_ms(50);
- i = MPU_Init();
- delay_ms(50);
- i=mpu_dmp_init();
- while((++count)<5&&i)
- {
- console_log(1,"MPU_Error:%d",i);
- delay_ms(100);
- i=mpu_dmp_init();
- }
- console_log(500,"init_MPU: OK");
- milliseconds=0;
-
- memset(&oledBuffer, 0x00, FRAME_BUFFER_SIZE);
-
- DS3231_Init(); //DS3231初始化
- appconfig_init();
- //led_init(); //初始化LED
- buzzer_init();
- buttons_init();
- Bme280_Init();
- //global_init();
- alarm_init(); //無法儲存鬧鐘,每次重啟以后需要自定義
- //time_init();
- //Date_init();
- Set_DS3231_date();
- pwrmgr_init();
- console_log(500,"START !");
- // while(1)
- // {
- // if(MPU_Get_Gyroscope(&pitch_a,&roll_a,&yaw_a)==0)
- // console_log(20,"roll_a = %d",roll_a);
- // i=MPU_Roll_Detect();
- // console_log(20,"roll_detect = %d",i);
- // }
- // Set watchface
- display_set(watchface_normal);
- display_load();//啟動表盤
- }
- bool bme_enable = 1;
- void c_loop()
- {
- time_update();
- if(pwrmgr_userActive())
- {
- //battery_update();
- buttons_update();
- }
-
- //mpu_updata();
- buzzer_update();
- //led_update();
-
-
- #if COMPILE_STOPWATCH
- stopwatch_update();
- #endif
- // global_update();
-
- if(pwrmgr_userActive())
- {
- alarm_update();
- display_update();
- }
- if(bme_enable)
- bme_update();
- pwrmgr_update();
- //顯示完成后清除緩沖區
- memset(&oledBuffer, 0x00, FRAME_BUFFER_SIZE);
- }
- int main(void)
- {
-
- //printf("begin>>>\r\n");
-
- c_setup(); //初始化
- while(1)
- {
- c_loop(); //循環
- }
-
- }
- const uint32_t STAY[]={
- //5353
- ME<<16 | 250,
- MC<<16 | 250,
- ME<<16 | 250,
- MC<<16 | 250,
- //222321
- MB<<16 | 125,
- MB<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
- MB<<16 | 125,
- MA<<16 | 250,
- //7115
- LG<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 125,
- ME<<16 | 500,
- //177777111
- MA<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 250,
- //1715
- MA<<16 | 125,
- LG<<16 | 125,
- MA<<16 | 125,
- ME<<16 | 500,
- //177777111
- MA<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 250,
- //1715
- MA<<16 | 125,
- LG<<16 | 125,
- MA<<16 | 125,
- ME<<16 | 500,
- //177777111
- MA<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- LG<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 250,
- //1715
- MA<<16 | 125,
- LG<<16 | 125,
- MA<<16 | 125,
- ME<<16 | 500,
- //71275
- LG<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MG<<16 | 125,
- ME<<16 | 500,
-
-
-
- TONE_REPEAT
- }; //旋律
- const uint32_t TUNE[]={
-
-
- LF<<16 | 250,
- LC<<16 | 250,
- HF<<16 | 250,
- MC<<16 | 250,
-
- LD<<16 | 250,
- MA<<16 | 250,
- MD<<16 | 250,
- MA<<16 | 250,
-
- LE<<16 | 250,
- MB<<16 | 250,
- ME<<16 | 250,
- MB<<16 | 250,
-
- MA<<16 | 250,
- ME<<16 | 250,
- HA<<16 | 250,
- ME<<16 | 250,
-
- LF<<16 | 250,
- LC<<16 | 250,
- HF<<16 | 250,
- MC<<16 | 250,
-
- LD<<16 | 250,
- MA<<16 | 250,
- MD<<16 | 250,
- MA<<16 | 250,
-
- LE<<16 | 250,
- MB<<16 | 250,
- ME<<16 | 250,
- MB<<16 | 250,
- //1 5123
- MA<<16 | 500,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
- //2111
- MB<<16 | 250,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 500,
-
- TONE_PAUSE<<16 | 125,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
-
- //212233
- MB<<16 | 250,
- MA<<16 | 125,
- MB<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 250,
- MC<<16 | 125,
-
- //35123
- MC<<16 | 500,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
-
- //2111
- MB<<16 | 250,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 500,
-
-
- //05123
- TONE_PAUSE<<16 | 125,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
- //212253
- MB<<16 | 250,
- MA<<16 | 125,
- MB<<16 | 125,
- MB<<16 | 125,
- ME<<16 | 250,
- MC<<16 | 125,
-
- //334
- MC<<16 | 500,
- MC<<16 | 250,
- MD<<16 | 250,
-
- //55555
- ME<<16 | 250,
- ME<<16 | 125,
- ME<<16 | 125,
- ME<<16 | 250,
- ME<<16 | 250,
-
- //531134
- ME<<16 | 250,
- MC<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 125,
- MC<<16 | 250,
- MD<<16 | 125,
-
- //55555
- ME<<16 | 250,
- ME<<16 | 125,
- ME<<16 | 125,
- ME<<16 | 250,
- ME<<16 | 250,
- //531 112
- ME<<16 | 250,
- MC<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 250,
- MA<<16 | 125,
- MB<<16 | 125,
-
- //33333
- MC<<16 | 250,
- MC<<16 | 125,
- MC<<16 | 125,
- MC<<16 | 250,
- MC<<16 | 250,
- //366321
- MC<<16 | 250,
- LF<<16 | 250,
- MF<<16 | 125,
- MC<<16 | 125,
- MB<<16 | 125,
- LA<<16 | 250,
-
- //20
- MB<<16 | 500,
- TONE_PAUSE<<16 | 125,
-
- //05123
- TONE_PAUSE<<16 | 125,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
- //2111
- MB<<16 | 250,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 500,
- //05123
- TONE_PAUSE<<16 | 125,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
-
- //212233
- MB<<16 | 250,
- MA<<16 | 125,
- MB<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 250,
- MC<<16 | 125,
-
- //35123
- MC<<16 | 500,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
- //2111
- MB<<16 | 250,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 500,
- //05123
- TONE_PAUSE<<16 | 125,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
- //212253
- MB<<16 | 250,
- MA<<16 | 125,
- MB<<16 | 125,
- MB<<16 | 125,
- ME<<16 | 250,
- MC<<16 | 125,
-
-
-
- //334
- MC<<16 | 500,
- MC<<16 | 250,
- MD<<16 | 250,
-
- //55555
- ME<<16 | 250,
- ME<<16 | 125,
- ME<<16 | 125,
- ME<<16 | 250,
- ME<<16 | 250,
-
- //531134
- ME<<16 | 250,
- MC<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 125,
- MC<<16 | 250,
- MD<<16 | 125,
-
- //55555
- ME<<16 | 250,
- ME<<16 | 125,
- ME<<16 | 125,
- ME<<16 | 250,
- ME<<16 | 250,
- //531 112
- ME<<16 | 250,
- MC<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 250,
- MA<<16 | 125,
- MB<<16 | 125,
-
- //33333
- MC<<16 | 250,
- MC<<16 | 125,
- MC<<16 | 125,
- MC<<16 | 250,
- MC<<16 | 250,
- //363216
- MC<<16 | 500,
- MF<<16 | 125,
- MC<<16 | 125,
- MB<<16 | 125,
- MA<<16 | 125,
- LF<<16 | 125,
-
- //10
- MA<<16 | 500,
- TONE_PAUSE<<16 | 250,
- //0
- //TONE_PAUSE<<16 | 3000,
-
- //55555
- ME<<16 | 250,
- ME<<16 | 125,
- ME<<16 | 125,
- ME<<16 | 250,
- ME<<16 | 250,
-
- //531134
- ME<<16 | 250,
- MC<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 125,
- MC<<16 | 250,
- MD<<16 | 125,
-
- //55555
- ME<<16 | 250,
- ME<<16 | 125,
- ME<<16 | 125,
- ME<<16 | 250,
- ME<<16 | 250,
- //531 112
- ME<<16 | 250,
- MC<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 250,
- MA<<16 | 125,
- MB<<16 | 125,
-
-
-
- //33333
- MC<<16 | 250,
- MC<<16 | 125,
- MC<<16 | 125,
- MC<<16 | 250,
- MC<<16 | 250,
- //366321
- MC<<16 | 250,
- LF<<16 | 250,
- MF<<16 | 125,
- MC<<16 | 125,
- MB<<16 | 125,
- LA<<16 | 250,
-
- //20
- MB<<16 | 500,
- TONE_PAUSE<<16 | 125,
-
- //05123
- TONE_PAUSE<<16 | 125,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
- //2111
- MB<<16 | 250,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 500,
- //05123
- TONE_PAUSE<<16 | 125,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
-
- //212233
- MB<<16 | 250,
- MA<<16 | 125,
- MB<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 250,
- MC<<16 | 125,
-
- //35123
- MC<<16 | 500,
- LE<<16 | 125,
- MA<<16 | 125,
- MB<<16 | 125,
- MC<<16 | 125,
-
- //2111
- MB<<16 | 250,
- MA<<16 | 125,
- MA<<16 | 125,
- MA<<16 | 500,
-
- TONE_PAUSE<<16 | 2000,
-
- TONE_REPEAT
- }; //旋律
復制代碼
51hei.png (5.71 KB, 下載次數: 42)
下載附件
2022-5-16 04:59 上傳
所有資料51hei附件下載:(僅供參考)
程序原理圖PCB.7z
(3.27 MB, 下載次數: 50)
2022-5-16 04:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|