你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32小项目-0.96寸OLED时钟程序,万年历,大字体

[复制链接]
STMCU小助手 发布时间:2022-6-21 17:58
   用的是stm32自带的RTC时钟。硬件连接很简单,当然程序也是比较简单的,只写了温度(DS18B20),stm32自带RTC和OLED显示,大家可自行删改功能。6 b! y9 V& O9 v% ^* F5 x/ q
    硬件连接:3 o. q7 @" y0 x6 t3 v" i
    SDA --》PB13
8 n  U- Z$ e# K7 i5 d4 M0 |    SCL --》PB126 ~7 s0 H* `, M' A& v8 \' B5 d
    DS18B20----》PA15( w! W+ m! Y% E) s4 x
    OLED和DS18B20直接5V供电就成,效果如下:
微信图片_20220621175830.png
    单片机源程序如下:
  1. #include "sys.h"( B$ J1 j- D" d+ C% Y2 k
  2. #include "usart.h"
    ! m4 C" J+ Z: c/ o0 z
  3. #include "delay.h"
    4 ]' `, [' m6 {9 v$ {% C
  4. #include "led.h"0 @" r4 m" r% s5 t: F9 ^, h, U4 Y3 P  Q
  5. #include "key.h"
    7 K. {, T, R3 v# T
  6. #include "oled.h"
    5 W0 y! q) M/ Z# V2 n1 o6 }
  7. #include "beep.h"7 u1 V4 b8 v" i# [$ t
  8. #include "rtc.h"
    - f0 W/ `5 ]2 K6 v
  9. #include "ds18b20.h"9 d( F5 ?6 N4 J, }7 P# I1 U* r

  10. * n5 O. i) u2 d) W1 [0 U
  11. u8 year_buf[4];
    0 V) ~# b$ u5 u2 S5 G
  12. u8 month_buf[2];
    , z* v1 {/ N: J9 H/ t. [
  13. u8 day_buf[2];9 l. N7 d, m/ Y0 M% @5 \4 U& X
  14. u8 temp_buf[4];
    9 S( q  [) P# ^' L8 A3 g* `, `2 q4 e
  15. ( M2 J+ K  u. `) q, F
  16. int main(void)
    , o% K0 z/ a) u, ^* ~
  17. {               
    2 Y2 Q: L) ~* B" a/ _" E3 ]
  18.         u16 temp;
    ! ?, Y# }% n- d! [
  19.         delay_init();             //延时初始化, R* X8 f% O; a  r
  20.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级! R5 H- B* b" y: v. `6 j% [, V" V# r( g
  21.        Gpio_IIC_Init();
    $ K/ J6 H* J3 X; a0 M; m0 t
  22.         RTC_Init();         //RTC初始化$ @( m. Z* n! T5 b) s. J
  23.         DS18B20_Init();/ E0 Z" O- H- ^$ c
  24.         OLED_Init();* p2 v/ w; J: t
  25.         delay_ms(200);
    % d$ T, [6 I+ P8 ~
  26.         OLED_CLS();
    4 y5 Y" k& J1 L" Y$ M, F: H
  27.         OLED_P16x16Ch(40,0,36);//第一行第三列显示年
    6 r0 w9 ?4 I  X- w* \
  28.         OLED_P16x16Ch(72,0,37);        //显示月$ t+ d1 w$ B, y1 x9 D
  29.         OLED_P16x16Ch(106,0,38);        //显示日
    6 D  g/ k. h8 M2 ~. p# j8 _4 R5 |
  30.         OLED_P16x16Ch(0,6,39);//星
    3 F* U0 c7 D( w8 H4 d. O6 m8 h- t
  31.         OLED_P16x16Ch(16,6,41);//期
    & c: B4 j# _) `7 Q  r6 \; K1 U
  32.         OLED_P16x16Ch(32,2,34);
    2 m( i7 C  X  _6 \/ w: n9 ^
  33.         OLED_P16x16Ch(32,4,35);//:
    3 L) K% i/ S2 T: _5 c% A7 h
  34.         OLED_P16x16Ch(80,2,34);9 ?7 M+ ?( Z/ K$ {& t* X
  35.         OLED_P16x16Ch(80,4,35);//:
    9 \" W8 n- k- {7 x- e  c; w
  36. while(1)# N( Q+ l- L: C! V! ~/ z1 v- g
  37.         {
    . P) \4 l, D* j0 \8 c
  38. sprintf((char *)year_buf,"%04d",calendar.w_year);
    / n+ V+ i7 r* o. W9 ]! M" l" C
  39.                 OLED_P8x16Str(8,0,year_buf);1 l% j. K' f' M& q  x
  40. sprintf((char *)month_buf,"%02d",calendar.w_month);
    1 l/ z. W$ o  z. W+ w8 S- Q5 U
  41.                 OLED_P8x16Str(58,0,month_buf);
    ' E) J! F8 d) r3 ~( ^) E) x; e
  42. sprintf((char *)day_buf,"%02d",calendar.w_date);
    7 c3 M5 P. L! Q! A& D# x
  43.                 OLED_P8x16Str(90,0,day_buf);
    , X4 I1 t& D# U# b4 v

  44. # d/ w" h$ H3 E! O4 W
  45.                 OLED_P16x16Ch(0,2,calendar.hour/10*2);
    ! a) @- f3 ^+ I0 E- w
  46.                 OLED_P16x16Ch(0,4,calendar.hour/10*2+1); //4 I7 y' H* g- e) ~* l: x
  47.                 OLED_P16x16Ch(16,2,calendar.hour%10*2);+ U2 i  n$ X: i/ I
  48.                 OLED_P16x16Ch(16,4,calendar.hour%10*2+1);//
    9 `' a1 X) ?2 ~% p; G7 M2 T
  49. ! A% Z3 B# s; }$ K# n0 H' u
  50.                 OLED_P16x16Ch(48,2,calendar.min/10*2);
    7 L& |' U1 i' o# {# U1 Z. E
  51.                 OLED_P16x16Ch(48,4,calendar.min/10*2+1);//) ]1 Y1 {' O& a* a) M; @
  52.                 OLED_P16x16Ch(64,2,calendar.min%10*2);
    ; g; w. P7 Q. }) G2 Q0 p" o" Y% J
  53.                 OLED_P16x16Ch(64,4,calendar.min%10*2+1);//3 H; f; I2 J- u! h2 M

  54. ; q8 }8 v$ Z0 b9 Y
  55.                 OLED_P16x16Ch(95,2,calendar.sec/10*2);
    0 F6 Y: ~  d! H+ n- R) R4 f, ]- ~
  56.                 OLED_P16x16Ch(95,4,calendar.sec/10*2+1);//
    4 l7 c+ c- f: z& k# _9 {
  57.                 OLED_P16x16Ch(111,2,calendar.sec%10*2);
    7 y3 N' R' _& E* r% D2 h/ y2 t! H& w
  58.                 OLED_P16x16Ch(111,4,calendar.sec%10*2+1);//+ a& F4 B( `* Q1 ~! o

  59. 7 W" i- L: e' r) V  R* `
  60.                 OLED_P16x16Ch(32,6,calendar.week+20);//* X6 r1 K6 J- ]9 V! H& ~1 n
  61. 2 |4 N& ^2 W" J7 p* e& d. n
  62.                 temp = DS18B20_Get_Temp();
    7 U; u( \; ~. i( @
  63.                 OLED_P16x16str(64,6,11);
    7 I  D5 d8 a5 v9 e
  64.                 OLED_P16x16str(80,6,12);
    # {4 _( g$ z: `2 V* s" X
  65.                 OLED_P16x16str(96,6,temp%1000/100);3 l: ], h3 B' p: @' U5 p& ?6 ]
  66.                 OLED_P16x16str(112,6,temp%100/10);
    5 I2 l5 r4 o) B& l
  67. % U4 h: `4 `4 V; L0 n
  68.         }3 p* Q, K9 ]& o) B3 b2 y! k
  69. }
复制代码

+ C+ _' x1 E7 G' ~5 Z. f$ a! d
赞 收藏 评论0 发布时间:2022-6-21 17:58

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版