找回密码
 注册

QQ登录

只需一步,快速开始

搜索

stm32 0.96寸OLED时钟程序,万年历,大字体

[复制链接]
路漫漫 发表于 2020-5-24 01:10:46 | 显示全部楼层 |阅读模式
stm32自带的RTC时钟。硬件连接很简单,当然程序也是比较简单的,只写了温度(DS18B20),stm32自带RTC和OLED显示,大家可自行删改功能。
硬件连接:
      SDA --》PB13
      SCL --》PB12
DS18B20----》PA15
OLED和DS18B20直接5V供电就成,代码和工具都在最后,需要的小伙伴自行下载吧。
程序代码.7z (227.01 KB, 售价: 1 E币)
取模教程.zip (1.25 MB, 售价: 1 E币)

效果如下:
1.png

部分代码:
  1. #include "sys.h"
  2. #include "usart.h"               
  3. #include "delay.h"        
  4. #include "led.h"
  5. #include "key.h"
  6. #include "oled.h"
  7. #include "beep.h"
  8. #include "rtc.h"
  9. #include "ds18b20.h"

  10. u8 year_buf[4];
  11. u8 month_buf[2];
  12. u8 day_buf[2];
  13. u8 temp_buf[4];

  14. int main(void)
  15. {               
  16.         u16 temp;
  17.         delay_init();             //延时初始化
  18.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  19.     Gpio_IIC_Init();
  20.         RTC_Init();                                  //RTC初始化
  21.         DS18B20_Init();
  22.         OLED_Init();
  23.         delay_ms(200);
  24.         OLED_CLS();
  25.         OLED_P16x16Ch(40,0,36);//第一行第三列显示年
  26.         OLED_P16x16Ch(72,0,37);        //显示月
  27.         OLED_P16x16Ch(106,0,38);        //显示日
  28.         OLED_P16x16Ch(0,6,39);//星
  29.         OLED_P16x16Ch(16,6,41);//期
  30.         OLED_P16x16Ch(32,2,34);
  31.         OLED_P16x16Ch(32,4,35);//:
  32.         OLED_P16x16Ch(80,2,34);
  33.         OLED_P16x16Ch(80,4,35);//:
  34.         while(1)
  35.         {
  36.                 sprintf((char *)year_buf,"%04d",calendar.w_year);
  37.                 OLED_P8x16Str(8,0,year_buf);
  38.                 sprintf((char *)month_buf,"%02d",calendar.w_month);
  39.                 OLED_P8x16Str(58,0,month_buf);
  40.                 sprintf((char *)day_buf,"%02d",calendar.w_date);
  41.                 OLED_P8x16Str(90,0,day_buf);
  42.                
  43.                 OLED_P16x16Ch(0,2,calendar.hour/10*2);
  44.                 OLED_P16x16Ch(0,4,calendar.hour/10*2+1); //
  45.                 OLED_P16x16Ch(16,2,calendar.hour%10*2);
  46.                 OLED_P16x16Ch(16,4,calendar.hour%10*2+1);//
  47.                
  48.                 OLED_P16x16Ch(48,2,calendar.min/10*2);
  49.                 OLED_P16x16Ch(48,4,calendar.min/10*2+1);//
  50.                 OLED_P16x16Ch(64,2,calendar.min%10*2);
  51.                 OLED_P16x16Ch(64,4,calendar.min%10*2+1);//
  52.                
  53.                 OLED_P16x16Ch(95,2,calendar.sec/10*2);
  54.                 OLED_P16x16Ch(95,4,calendar.sec/10*2+1);//
  55.                 OLED_P16x16Ch(111,2,calendar.sec%10*2);
  56.                 OLED_P16x16Ch(111,4,calendar.sec%10*2+1);//

  57.                 OLED_P16x16Ch(32,6,calendar.week+20);//
  58.                
  59.                 temp = DS18B20_Get_Temp();
  60.                 OLED_P16x16str(64,6,11);
  61.                 OLED_P16x16str(80,6,12);
  62.                 OLED_P16x16str(96,6,temp%1000/100);
  63.                 OLED_P16x16str(112,6,temp%100/10);

  64.         }
  65. }
复制代码


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

本版积分规则

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

GMT+8, 2024-11-21 18:36

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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