找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1981|回复: 0
收起左侧

STM32单片机智能手表程序原理图PCB文件

[复制链接]
ID:907317 发表于 2022-5-15 20:33 | 显示全部楼层 |阅读模式
基于stm32f103c8t6的环境检测手表可以检测大气压温度湿度等
通过陀螺仪或者按键实现功能切换

功能强大  并且加入了小游戏移植了UI界

Altium Designer画的智能手表原理图和PCB图如下:(51hei附件中可下载工程文件)
0.png 51hei.png

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "draw_api.h"
  6. #include "test.h"
  7. #include "led.h"
  8. #include "lcd.h"
  9. #include "common.h"
  10. #include "i2c_soft.h"
  11. #include "ADC.h"
  12. #include "DS3231.h"
  13. #include "NVIC.h"
  14. #include "bme280.h"

  15. //extern unsigned char wifi_time_cnt;

  16. enum
  17. {
  18.         LA =262,
  19.         LB =294,
  20.         LC =330,
  21.         LD =349,
  22.         LE =392,
  23.         LF =440,
  24.         LG =494,
  25.        
  26.         MA =523,
  27.         MB =578,
  28.         MC =659,
  29.         MD =698,
  30.         ME =784,
  31.         MF =880,
  32.         MG =988,
  33.        
  34.         HA =1064,
  35.         HB =1175,
  36.         HC =1318,
  37.         HD =1397,
  38.         HE =1568,
  39.         HF =1760,
  40.         HG =1976
  41. };


  42. void power_pin_init(void)
  43. {
  44.         GPIO_InitTypeDef  GPIO_InitStructure;
  45.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);         
  46.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;//         PB12 POWER控制端口
  47.         GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;                  //推挽输出
  48.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//速度
  49.         GPIO_Init(GPIOB, &GPIO_InitStructure);
  50.         GPIO_SetBits(GPIOB,GPIO_Pin_12);         
  51. }
  52. extern bool bme_flag;
  53. void bme_update(void)
  54. {
  55.         if(bme_flag)
  56.                 {
  57.                         bme_flag=0;
  58.                         readTrim();
  59.                         bme280CompensateH();
  60.                         bme280CompensateP();
  61.                         bme280CompensateT();
  62.                 }
  63. }

  64. extern short pitch_a,roll_a,yaw_a;
  65. void c_setup()
  66. {
  67.         char i=0,count=0;
  68.         power_pin_init();
  69.         //SystemInit();       
  70.           //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2          
  71.         delay_init();                     //延时函数初始?
  72.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
  73.         LCD_Init();               //初始化OLED接口
  74.         Adc_Init();                                  //ADC初始化
  75.         KEY_INT_INIT();
  76.         millis_init();
  77.         console_log(500,"init_OLED: OK");
  78.         console_log(10,"--- welcome !---");
  79.         console_log(10,"  _   _    _    ");
  80.         console_log(10," | | | |  |_|   ");
  81.         console_log(10," | |_| |   _    ");
  82.         console_log(10," |  _  |  | |   ");
  83.         console_log(10," | | | |  | |   ");
  84.         console_log(10," |_| |_|  |_|   ");
  85.         console_log(10,"                ");
  86.         I2C_GPIO_Config();
  87.         delay_ms(50);
  88.         i = MPU_Init();
  89.         delay_ms(50);
  90.         i=mpu_dmp_init();
  91.         while((++count)<5&&i)
  92.         {
  93.                 console_log(1,"MPU_Error:%d",i);
  94.                 delay_ms(100);
  95.                 i=mpu_dmp_init();
  96.         }
  97.         console_log(500,"init_MPU: OK");
  98.         milliseconds=0;
  99.        
  100.         memset(&oledBuffer, 0x00, FRAME_BUFFER_SIZE);
  101.        
  102.         DS3231_Init();             //DS3231初始化
  103.         appconfig_init();
  104.         //led_init();              //初始化LED
  105.         buzzer_init();       
  106.         buttons_init();
  107.         Bme280_Init();
  108.         //global_init();
  109.         alarm_init();              //无法储存闹钟,每次重启以后需要自定义
  110.         //time_init();
  111.         //Date_init();
  112.         Set_DS3231_date();
  113.         pwrmgr_init();
  114.         console_log(500,"START !");
  115. //        while(1)
  116. //        {
  117. //                if(MPU_Get_Gyroscope(&pitch_a,&roll_a,&yaw_a)==0)
  118. //                console_log(20,"roll_a = %d",roll_a);
  119. //                i=MPU_Roll_Detect();
  120. //                console_log(20,"roll_detect = %d",i);
  121. //        }
  122.         // Set watchface
  123.         display_set(watchface_normal);
  124.         display_load();//启动表盘       
  125. }

  126. bool bme_enable = 1;

  127. void c_loop()
  128. {
  129.     time_update();
  130.         if(pwrmgr_userActive())
  131.         {
  132.                 //battery_update();
  133.                 buttons_update();
  134.         }
  135.   
  136.         //mpu_updata();

  137.           buzzer_update();
  138.     //led_update();
  139.        
  140.        
  141. #if COMPILE_STOPWATCH
  142.         stopwatch_update();
  143. #endif
  144. //  global_update();
  145.        
  146.         if(pwrmgr_userActive())
  147.         {
  148.                 alarm_update();
  149.                 display_update();
  150.         }
  151.         if(bme_enable)
  152.                 bme_update();
  153.         pwrmgr_update();
  154. //显示完成后清除缓冲区
  155.         memset(&oledBuffer, 0x00, FRAME_BUFFER_SIZE);
  156. }


  157. int main(void)
  158. {
  159.        
  160.         //printf("begin>>>\r\n");
  161.        
  162.         c_setup();            //初始化
  163.         while(1)
  164.         {

  165.                 c_loop(); //循环
  166.         }
  167.        
  168. }



  169. const uint32_t STAY[]={

  170.         //5353
  171.         ME<<16 | 250,
  172.         MC<<16 | 250,
  173.         ME<<16 | 250,
  174.         MC<<16 | 250,
  175.         //222321
  176.         MB<<16 | 125,
  177.         MB<<16 | 125,
  178.         MB<<16 | 125,
  179.         MC<<16 | 125,
  180.         MB<<16 | 125,
  181.         MA<<16 | 250,
  182.         //7115
  183.         LG<<16 | 125,
  184.         MA<<16 | 125,
  185.         MA<<16 | 125,
  186.         ME<<16 | 500,
  187.         //177777111
  188.         MA<<16 | 125,
  189.         LG<<16 | 125,
  190.         LG<<16 | 125,
  191.         LG<<16 | 125,
  192.         LG<<16 | 125,
  193.         LG<<16 | 125,
  194.         MA<<16 | 125,
  195.         MA<<16 | 125,
  196.         MA<<16 | 250,
  197.         //1715
  198.         MA<<16 | 125,
  199.         LG<<16 | 125,
  200.         MA<<16 | 125,
  201.         ME<<16 | 500,
  202.         //177777111
  203.         MA<<16 | 125,
  204.         LG<<16 | 125,
  205.         LG<<16 | 125,
  206.         LG<<16 | 125,
  207.         LG<<16 | 125,
  208.         LG<<16 | 125,
  209.         MA<<16 | 125,
  210.         MA<<16 | 125,
  211.         MA<<16 | 250,
  212.         //1715
  213.         MA<<16 | 125,
  214.         LG<<16 | 125,
  215.         MA<<16 | 125,
  216.         ME<<16 | 500,
  217.         //177777111
  218.         MA<<16 | 125,
  219.         LG<<16 | 125,
  220.         LG<<16 | 125,
  221.         LG<<16 | 125,
  222.         LG<<16 | 125,
  223.         LG<<16 | 125,
  224.         MA<<16 | 125,
  225.         MA<<16 | 125,
  226.         MA<<16 | 250,
  227.         //1715
  228.         MA<<16 | 125,
  229.         LG<<16 | 125,
  230.         MA<<16 | 125,
  231.         ME<<16 | 500,
  232.         //71275
  233.         LG<<16 | 125,
  234.         MA<<16 | 125,
  235.         MB<<16 | 125,
  236.         MG<<16 | 125,
  237.         ME<<16 | 500,
  238.        
  239.        
  240.        
  241.         TONE_REPEAT

  242. };  //旋律


  243. const uint32_t TUNE[]={
  244.        
  245.        
  246.         LF<<16 | 250,
  247.         LC<<16 | 250,
  248.         HF<<16 | 250,
  249.         MC<<16 | 250,
  250.        
  251.         LD<<16 | 250,
  252.         MA<<16 | 250,
  253.         MD<<16 | 250,
  254.         MA<<16 | 250,
  255.        
  256.         LE<<16 | 250,
  257.         MB<<16 | 250,
  258.         ME<<16 | 250,
  259.         MB<<16 | 250,
  260.        
  261.         MA<<16 | 250,
  262.         ME<<16 | 250,
  263.         HA<<16 | 250,
  264.         ME<<16 | 250,
  265.        
  266.         LF<<16 | 250,
  267.         LC<<16 | 250,
  268.         HF<<16 | 250,
  269.         MC<<16 | 250,
  270.        
  271.         LD<<16 | 250,
  272.         MA<<16 | 250,
  273.         MD<<16 | 250,
  274.         MA<<16 | 250,
  275.        
  276.         LE<<16 | 250,
  277.         MB<<16 | 250,
  278.         ME<<16 | 250,
  279.         MB<<16 | 250,
  280.         //1 5123
  281.         MA<<16 | 500,
  282.         LE<<16 | 125,
  283.         MA<<16 | 125,
  284.         MB<<16 | 125,
  285.         MC<<16 | 125,
  286.         //2111
  287.         MB<<16 | 250,
  288.         MA<<16 | 125,
  289.         MA<<16 | 125,
  290.         MA<<16 | 500,
  291.        
  292.         TONE_PAUSE<<16 | 125,
  293.         LE<<16 | 125,
  294.         MA<<16 | 125,
  295.         MB<<16 | 125,
  296.         MC<<16 | 125,
  297.        
  298.         //212233
  299.         MB<<16 | 250,
  300.         MA<<16 | 125,
  301.         MB<<16 | 125,
  302.         MB<<16 | 125,
  303.         MC<<16 | 250,
  304.         MC<<16 | 125,
  305.        
  306.         //35123
  307.         MC<<16 | 500,
  308.         LE<<16 | 125,
  309.         MA<<16 | 125,
  310.         MB<<16 | 125,
  311.         MC<<16 | 125,
  312.        
  313.         //2111
  314.         MB<<16 | 250,
  315.         MA<<16 | 125,
  316.         MA<<16 | 125,
  317.         MA<<16 | 500,
  318.        
  319.        
  320.         //05123
  321.         TONE_PAUSE<<16 | 125,
  322.         LE<<16 | 125,
  323.         MA<<16 | 125,
  324.         MB<<16 | 125,
  325.         MC<<16 | 125,
  326.         //212253
  327.         MB<<16 | 250,
  328.         MA<<16 | 125,
  329.         MB<<16 | 125,
  330.         MB<<16 | 125,
  331.         ME<<16 | 250,
  332.         MC<<16 | 125,
  333.        
  334.         //334
  335.         MC<<16 | 500,
  336.         MC<<16 | 250,
  337.         MD<<16 | 250,
  338.        
  339.         //55555
  340.         ME<<16 | 250,
  341.         ME<<16 | 125,
  342.         ME<<16 | 125,
  343.         ME<<16 | 250,
  344.         ME<<16 | 250,
  345.        
  346.         //531134
  347.         ME<<16 | 250,
  348.         MC<<16 | 125,
  349.         MA<<16 | 125,
  350.         MA<<16 | 125,
  351.         MC<<16 | 250,
  352.         MD<<16 | 125,
  353.        
  354.         //55555
  355.         ME<<16 | 250,
  356.         ME<<16 | 125,
  357.         ME<<16 | 125,
  358.         ME<<16 | 250,
  359.         ME<<16 | 250,
  360.         //531 112
  361.         ME<<16 | 250,
  362.         MC<<16 | 125,
  363.         MA<<16 | 125,
  364.         MA<<16 | 250,
  365.         MA<<16 | 125,
  366.         MB<<16 | 125,
  367.        
  368.         //33333
  369.         MC<<16 | 250,
  370.         MC<<16 | 125,
  371.         MC<<16 | 125,
  372.         MC<<16 | 250,
  373.         MC<<16 | 250,
  374.         //366321
  375.         MC<<16 | 250,
  376.         LF<<16 | 250,
  377.         MF<<16 | 125,
  378.         MC<<16 | 125,
  379.         MB<<16 | 125,
  380.         LA<<16 | 250,
  381.        
  382.         //20
  383.         MB<<16 | 500,
  384.         TONE_PAUSE<<16 | 125,
  385.        
  386.         //05123
  387.         TONE_PAUSE<<16 | 125,
  388.         LE<<16 | 125,
  389.         MA<<16 | 125,
  390.         MB<<16 | 125,
  391.         MC<<16 | 125,
  392.         //2111
  393.         MB<<16 | 250,
  394.         MA<<16 | 125,
  395.         MA<<16 | 125,
  396.         MA<<16 | 500,
  397.         //05123
  398.         TONE_PAUSE<<16 | 125,
  399.         LE<<16 | 125,
  400.         MA<<16 | 125,
  401.         MB<<16 | 125,
  402.         MC<<16 | 125,
  403.        
  404.         //212233
  405.         MB<<16 | 250,
  406.         MA<<16 | 125,
  407.         MB<<16 | 125,
  408.         MB<<16 | 125,
  409.         MC<<16 | 250,
  410.         MC<<16 | 125,
  411.        
  412.         //35123
  413.         MC<<16 | 500,
  414.         LE<<16 | 125,
  415.         MA<<16 | 125,
  416.         MB<<16 | 125,
  417.         MC<<16 | 125,
  418.         //2111
  419.         MB<<16 | 250,
  420.         MA<<16 | 125,
  421.         MA<<16 | 125,
  422.         MA<<16 | 500,
  423.         //05123
  424.         TONE_PAUSE<<16 | 125,
  425.         LE<<16 | 125,
  426.         MA<<16 | 125,
  427.         MB<<16 | 125,
  428.         MC<<16 | 125,
  429.         //212253
  430.         MB<<16 | 250,
  431.         MA<<16 | 125,
  432.         MB<<16 | 125,
  433.         MB<<16 | 125,
  434.         ME<<16 | 250,
  435.         MC<<16 | 125,
  436.        
  437.        
  438.        
  439.         //334
  440.         MC<<16 | 500,
  441.         MC<<16 | 250,
  442.         MD<<16 | 250,
  443.        
  444.         //55555
  445.         ME<<16 | 250,
  446.         ME<<16 | 125,
  447.         ME<<16 | 125,
  448.         ME<<16 | 250,
  449.         ME<<16 | 250,
  450.        
  451.         //531134
  452.         ME<<16 | 250,
  453.         MC<<16 | 125,
  454.         MA<<16 | 125,
  455.         MA<<16 | 125,
  456.         MC<<16 | 250,
  457.         MD<<16 | 125,
  458.        
  459.         //55555
  460.         ME<<16 | 250,
  461.         ME<<16 | 125,
  462.         ME<<16 | 125,
  463.         ME<<16 | 250,
  464.         ME<<16 | 250,
  465.         //531 112
  466.         ME<<16 | 250,
  467.         MC<<16 | 125,
  468.         MA<<16 | 125,
  469.         MA<<16 | 250,
  470.         MA<<16 | 125,
  471.         MB<<16 | 125,
  472.        
  473.         //33333
  474.         MC<<16 | 250,
  475.         MC<<16 | 125,
  476.         MC<<16 | 125,
  477.         MC<<16 | 250,
  478.         MC<<16 | 250,
  479.         //363216
  480.         MC<<16 | 500,
  481.         MF<<16 | 125,
  482.         MC<<16 | 125,
  483.         MB<<16 | 125,
  484.         MA<<16 | 125,
  485.         LF<<16 | 125,
  486.        
  487.         //10
  488.         MA<<16 | 500,
  489.         TONE_PAUSE<<16 | 250,
  490.         //0
  491.         //TONE_PAUSE<<16 | 3000,
  492.        
  493.         //55555
  494.         ME<<16 | 250,
  495.         ME<<16 | 125,
  496.         ME<<16 | 125,
  497.         ME<<16 | 250,
  498.         ME<<16 | 250,
  499.        
  500.         //531134
  501.         ME<<16 | 250,
  502.         MC<<16 | 125,
  503.         MA<<16 | 125,
  504.         MA<<16 | 125,
  505.         MC<<16 | 250,
  506.         MD<<16 | 125,
  507.        
  508.         //55555
  509.         ME<<16 | 250,
  510.         ME<<16 | 125,
  511.         ME<<16 | 125,
  512.         ME<<16 | 250,
  513.         ME<<16 | 250,
  514.         //531 112
  515.         ME<<16 | 250,
  516.         MC<<16 | 125,
  517.         MA<<16 | 125,
  518.         MA<<16 | 250,
  519.         MA<<16 | 125,
  520.         MB<<16 | 125,
  521.        
  522.        
  523.        
  524.         //33333
  525.         MC<<16 | 250,
  526.         MC<<16 | 125,
  527.         MC<<16 | 125,
  528.         MC<<16 | 250,
  529.         MC<<16 | 250,
  530.         //366321
  531.         MC<<16 | 250,
  532.         LF<<16 | 250,
  533.         MF<<16 | 125,
  534.         MC<<16 | 125,
  535.         MB<<16 | 125,
  536.         LA<<16 | 250,
  537.        
  538.         //20
  539.         MB<<16 | 500,
  540.         TONE_PAUSE<<16 | 125,
  541.        
  542.         //05123
  543.         TONE_PAUSE<<16 | 125,
  544.         LE<<16 | 125,
  545.         MA<<16 | 125,
  546.         MB<<16 | 125,
  547.         MC<<16 | 125,
  548.         //2111
  549.         MB<<16 | 250,
  550.         MA<<16 | 125,
  551.         MA<<16 | 125,
  552.         MA<<16 | 500,
  553.         //05123
  554.         TONE_PAUSE<<16 | 125,
  555.         LE<<16 | 125,
  556.         MA<<16 | 125,
  557.         MB<<16 | 125,
  558.         MC<<16 | 125,
  559.        
  560.         //212233
  561.         MB<<16 | 250,
  562.         MA<<16 | 125,
  563.         MB<<16 | 125,
  564.         MB<<16 | 125,
  565.         MC<<16 | 250,
  566.         MC<<16 | 125,
  567.        
  568.         //35123
  569.         MC<<16 | 500,
  570.         LE<<16 | 125,
  571.         MA<<16 | 125,
  572.         MB<<16 | 125,
  573.         MC<<16 | 125,
  574.        
  575.         //2111
  576.         MB<<16 | 250,
  577.         MA<<16 | 125,
  578.         MA<<16 | 125,
  579.         MA<<16 | 500,
  580.        
  581.         TONE_PAUSE<<16 | 2000,
  582.        
  583.         TONE_REPEAT

  584. };  //旋律
复制代码
51hei.png
所有资料51hei附件下载:(仅供参考)
程序原理图PCB.7z (3.27 MB, 下载次数: 49)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表