找回密码
 注册

QQ登录

只需一步,快速开始

搜索

stm32f103战舰v3 OLED显示时间源程序

[复制链接]
路漫漫 发表于 2020-6-5 10:41:25 | 显示全部楼层 |阅读模式
(适用正点原子的开发板)主要是在OLED 屏幕上实时时间,如果时间不准时,可以先使用实验15 RTC实验  然后烧写进开发板,在XCOM串口调试助手发送命令如:RTC_Set(2020,06,04,23,25,30)  即可完成RTC校准!!!!
完整源码: STM32f103战舰v3OLED显示时间.7z (200.05 KB, 售价: 1 E币)
231723huucuzg2milcg09i.jpg
部分源码:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "oled.h"
  6. #include "rtc.h"  
  7.         
  8. int main(void)
  9. {        u8 t=0;
  10.         delay_init();                     //延时函数初始化         
  11.         RTC_Init();                                  //RTC初始化
  12.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  13.          LED_Init();                             //LED端口初始化
  14.         OLED_Init();                        //初始化OLED      
  15.   OLED_ShowString(0,0,"ALIENTEK",24);  

  16.         OLED_Refresh_Gram();                //更新显示到OLED

  17.         while(1)
  18.         {               
  19.                  OLED_Refresh_Gram();
  20.                 delay_ms(500);
  21.                 LED0=!LED0;
  22.                 if(t!=calendar.sec)
  23.                 {
  24.                         t=calendar.sec;
  25.                         OLED_ShowNum(0,24,calendar.w_year,4,12);  
  26.                           OLED_ShowString(24,24, "-",12);
  27.                         if(calendar.w_month<10)
  28.                          {        
  29.                                  OLED_ShowNum(30,24,0,1,12);
  30.                            OLED_ShowNum(36,24,calendar.w_month,1,12);
  31.                          }else OLED_ShowNum(36,24,calendar.w_month,2,12);  
  32.                           OLED_ShowString(42,24, "-",12);
  33.                          if(calendar.w_date<10)
  34.                          {
  35.                                  OLED_ShowNum(48,24,0,1,12);
  36.                            OLED_ShowNum(54,24,calendar.w_date,1,12);  
  37.                          }else OLED_ShowNum(48,24,calendar.w_date,2,12);  
  38.                         switch(calendar.week)
  39.                         {
  40.                                 case 0:
  41.                                                  OLED_ShowString(64,24,"Sunday",12);  
  42.                                         break;
  43.                                 case 1:
  44.                                                 OLED_ShowString(64,24,"Monday",12);
  45.                                         break;
  46.                                 case 2:
  47.                                                 OLED_ShowString(64,24,"Tuesday",12);
  48.                                         break;
  49.                                 case 3:
  50.                                          OLED_ShowString(64,24,"Wednesday",12);
  51.                                         break;
  52.                                 case 4:
  53.                                         OLED_ShowString(64,24,"Thursday",12);
  54.                                         break;
  55.                                 case 5:
  56.                                         OLED_ShowString(64,24,"Friday",12);
  57.                                         break;
  58.                                 case 6:
  59.                                         OLED_ShowString(64,24,"Saturday",12);
  60.                                         break;  
  61.                         }
  62.                         if(calendar.hour<10)
  63.                         {
  64.                          OLED_ShowNum(0,36,0,1,16);
  65.                          OLED_ShowNum(8,36,calendar.hour,1,16);
  66.                         }else
  67.                         OLED_ShowNum(0,36,calendar.hour,2,16);
  68.                         
  69.                         OLED_ShowString(16,36,":",16);
  70.                         
  71.                         if(calendar.min<10)
  72.                         {
  73.                          OLED_ShowNum(24,36,0,1,16);
  74.                          OLED_ShowNum(32,36,calendar.min,1,16);
  75.                         }else                        
  76.                   OLED_ShowNum(24,36,calendar.min,2,16);  
  77.                         
  78.             OLED_ShowString(40,36,":",16);
  79.                         
  80.                         if(calendar.sec<10)
  81.                         {
  82.                          OLED_ShowNum(48,36,0,1,16);
  83.                          OLED_ShowNum(56,36,calendar.sec,1,16);
  84.                         }else OLED_ShowNum(48,36,calendar.sec,2,16);  
  85.                         LED0=!LED0;
  86.                 }        
  87.                 delay_ms(10);                                                                  
  88.         };  
  89.                
  90. }
复制代码



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

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-4-25 13:15

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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