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

关于NUCLEO L496ZG的单色0.91'OLED屏显示例程分享

[复制链接]
jinglixixi 发布时间:2020-8-18 14:01
OLED屏是一种小巧的显示器件,特别是I2C接口的OLED 屏更能节省I/O口资源。本次使用的是一款0.91'的单色OLED屏,它比常规的OLED屏要长且窄,故更适于显示信息和参数,也更适于用在便携装置上。
1. OLED屏显示
1)OLED屏与NV32F100的连接关系如下:
SCL  ---  PA5
SDA  ---  PA6
2)为进行显示定义引脚输出高低电平的语句为:
#defineOLED_SCLK_Clr() GPIO_PinClear(GPIO_PTE1);
#defineOLED_SCLK_Set() GPIO_PinSet(GPIO_PTE1);

" Y& [9 T2 F2 b! g, |
#defineOLED_SDIN_Clr() GPIO_PinClear(GPIO_PTE0);
#defineOLED_SDIN_Set() GPIO_PinSet(GPIO_PTE0);

& u" X& t" w) M- t0 d
3)OLED屏初始化函数为:
  1. void OLED_Init(void)
    # u: |! a2 K0 m/ j# o
  2. {    6 R# r8 X( E/ E% K, U4 O
  3.        GPIO_InitTypeDef  GPIO_InitStruct;
    4 ~( @5 V  h: s# L( `/ T( B
  4.        __HAL_RCC_GPIOA_CLK_ENABLE();
    : m! f8 G9 |" ?! v! J# N0 b# I- m
  5.        GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;      
    ! E0 X( l8 R: y
  6.        GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;- U. U: {! ~, y5 o5 {8 v; ^
  7.        GPIO_InitStruct.Pull  = GPIO_PULLUP;
    9 S6 |- |/ A- y+ K  D) u
  8.        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    : w& k1 I) X9 @2 p9 u+ Q
  9.        HAL_GPIO_Init(GPIOA,   &GPIO_InitStruct);
    2 ~& v  o! {, N, p8 R- a, B
  10.        OLED_SCLK_Set();
    . b! l9 [, U- L) {, }
  11.        OLED_SDIN_Set();
    + F9 M( r0 {- H+ g% W2 w
  12.        Delay_1ms(800);- L, H. l( u/ m
  13.        OLED_WR_Byte(0xAE,OLED_CMD);//--display off
    5 v" _- |% q: X: S" S4 G( @2 L
  14.        OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
    3 g) e. Y; w9 [; u' {% {! ?
  15.        OLED_WR_Byte(0xB0,OLED_CMD);//--set page address
    ( x: n# r9 M2 u) w5 T% X( c' a; \
  16.        OLED_WR_Byte(0x81,OLED_CMD); // contract control
    6 w' T2 q5 X" U
  17.        OLED_WR_Byte(0xFF,OLED_CMD);//--128  ! h6 Z# |  D2 k2 {4 E
  18.        OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap- k4 g- r. O" j4 }0 u
  19.        OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse
    % K- F9 w. g8 o" I  k
  20.        OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)( _  x/ x% B. I+ W
  21.        OLED_WR_Byte(0x1F,OLED_CMD);//--1/32 duty
    6 H; A6 c% p# Z: c
  22.        OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
    & q( \$ S6 r. n- d3 Y
  23.        OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset+ [7 y+ F0 N2 `* n; b! w% x5 z
  24.        OLED_WR_Byte(0x00,OLED_CMD);//
    . q* w! r+ ]  r4 V% k
  25.        OLED_WR_Byte(0xD5,OLED_CMD);//set osc division0 r8 ^0 ?3 C' h0 _
  26.        OLED_WR_Byte(0xF0,OLED_CMD);//
    2 \' v, J% N$ g" q
  27.        OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
    5 W6 C: l& F' j4 l9 ~% O- J
  28.        OLED_WR_Byte(0x22,OLED_CMD);//  i' b5 Q3 C, V! s+ m
  29.        OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion
    ; K" Y% N) B5 _
  30.        OLED_WR_Byte(0x02,OLED_CMD);//9 N3 w$ ^/ L8 U- L# L3 {: b
  31.        OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh3 o- x9 C! R7 H6 \6 k" g: g
  32.        OLED_WR_Byte(0x49,OLED_CMD);//
    ; q# t" t9 S, n1 e# R
  33.        OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable4 U" G  @* S8 d" F* r4 C+ A: B
  34.        OLED_WR_Byte(0x14,OLED_CMD);//- ^4 y# ^' w# T! d, J6 v
  35.        OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel$ X' T: h% I4 t6 f6 L3 g+ K5 x
  36.        OLED_Clear();
    ( F/ K* N6 P4 d  l3 j
  37. }
复制代码

8 K: h8 _; _: i2 E! I; Y
4)汉字显示函数为:
  1. void OLED_ShowCHinese(unsigned char x,unsigned char y,unsigned char no)
    6 j( l& n3 V* ~8 F
  2. {                            $ R: U* i5 I' v
  3.        unsigned char t,adder=0;+ x# |2 k8 j8 }. w" g
  4.        OLED_Set_Pos(x,y);     1 Z. r" P' i5 @, ?
  5.        for(t=0;t<16;t++)
    " D5 N6 h& ?/ w. M
  6.        {; g( G6 u4 L# z1 `% J1 r
  7.                             OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);8 d" G* ^- I# Y! J
  8.                             adder+=1;: S; h  V3 @6 {3 M1 Y2 o' M1 i) S
  9.        }
    8 G# t( |% x/ J- H; c" \5 B' z( ]
  10.        OLED_Set_Pos(x,y+1); 8 n( C0 m5 h( ~) r: Q5 }
  11.        for(t=0;t<16;t++)3 k4 p5 z! N. ~. b& Y
  12.        {     
    % Z  H3 ?  J- i7 j3 k( `; ?
  13.                             OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);, M$ Q- B) ]6 f+ p1 M
  14.                             adder+=1;
    % H' Z& I% S- }! e
  15.     }                                 
    % o2 x& J$ M. g! A" o& P$ O
  16. }
复制代码
- S8 i' q& K: ~3 `
2. 字模提取
为了显示汉字,需要提前相应的字模,以PCtoLCD2002字模提取软件为例,在提取前需按图1所示来进行设置。                              
1.jpg
图1 格式设置
( S, u! Y) h( v" ]
1)录入需显示的内容,如图2所示。
2.jpg
图2 输入提取内容

, y; [' Q$ Q& s* l2 H5 U' @) T
2)编写显示函数,其内容为:
  1. void cd()
    / q7 q6 `! c) k" h
  2. {: `+ Q7 A& _4 ^8 f6 \. I/ w, c
  3.        OLED_ShowCHinese(18,0,0);  9 k7 H4 N' Q- V" O7 o
  4.        OLED_ShowCHinese(36,0,1);4 ~2 k) E3 O1 p$ |7 L6 M
  5.        OLED_ShowCHinese(54,0,2);
    7 [  S, M8 u  a1 L, o" P2 j
  6.        OLED_ShowCHinese(72,0,3);
    5 t! ^  }  x2 {5 U0 i6 `
  7.        OLED_ShowCHinese(90,0,4);  K+ q6 |/ p. }9 `7 x
  8.       
    ' q$ S, B2 w+ Y& `. `7 x* Z
  9.        OLED_ShowCHinese(18,2,5);  % k; r$ t/ q/ r1 F4 A3 Z
  10.        OLED_ShowCHinese(36,2,6);
    ! r: i3 Q, |& S
  11.        OLED_ShowCHinese(54,2,7); - w$ K2 M: K+ s8 m' w
  12.        OLED_ShowCHinese(72,2,8);4 E+ X; h0 g# X( d1 q
  13.        OLED_ShowCHinese(90,2,9);
    ' b6 C. N. }6 e8 o; k6 g2 a2 D" r
  14. }
复制代码

, s% C- N% U/ Q
3)编写主程序,其代码如下:
  1. int main(void)0 y, [  t% S/ X" [& Q, U! H# Y
  2. {
    4 V8 b5 B/ Y3 \9 x; z) ?/ P1 r$ ?
  3.   HAL_Init();/ b4 \6 G- ]! v, N9 R! O) I
  4.   /* Configure the system clock to 80 MHz */3 o% K  T( ^+ W" Q8 s
  5.   SystemClock_Config();
    9 V& r& m! J! u
  6.   OLED_Init();                    1 @$ H( l0 G; I# [- w+ t
  7.   OLED_Clear();& h0 X9 j# d; Y
  8.   cd();& |1 u9 j- [5 B. T+ T5 S
  9.   while (1);1 V! I( v) R% u4 |, ]0 l9 S
  10. }
复制代码
: }2 j, d7 `7 f& A& N) W
4)下载并运行后,其效果如图3所示。
3.jpg
图3 显示效果
& k" d: O' ^: |. f4 J+ @- ?
& k/ Y8 D7 J  t! d工程代码:
( }; d$ ^2 n4 m# B* c( L4 H

0.91_OLED.rar

下载

3.65 MB, 下载次数: 5

赞 收藏 1 评论0 发布时间:2020-8-18 14:01

举报

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