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

关于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);
' F0 V3 l5 }! E$ t  R# j
#defineOLED_SDIN_Clr() GPIO_PinClear(GPIO_PTE0);
#defineOLED_SDIN_Set() GPIO_PinSet(GPIO_PTE0);

! V8 ~* P- {% f! N, n
3)OLED屏初始化函数为:
  1. void OLED_Init(void)
    6 c' E" i$ B7 H+ [
  2. {   
    ) j: X/ D" u7 ]; _$ [% I# R% G
  3.        GPIO_InitTypeDef  GPIO_InitStruct;
    0 v# _$ I9 b- E! C! t* I6 M( C
  4.        __HAL_RCC_GPIOA_CLK_ENABLE();
    % N' u6 ~+ [3 o. ?
  5.        GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;       ) ]  O4 L3 r$ e  h+ ?) r( m+ x
  6.        GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
    " O! o7 L$ E7 M! H0 r- e% R
  7.        GPIO_InitStruct.Pull  = GPIO_PULLUP;
    & _  q) k/ s' U' [7 Z
  8.        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    7 ]7 }  T8 F" v
  9.        HAL_GPIO_Init(GPIOA,   &GPIO_InitStruct);' a( C9 \$ t- Z# [
  10.        OLED_SCLK_Set();8 f; D7 e: M! C& P  b
  11.        OLED_SDIN_Set(); ; [0 B2 W8 m% E8 y) F
  12.        Delay_1ms(800);( @1 g- B3 x& @  G4 B3 ?1 M) b
  13.        OLED_WR_Byte(0xAE,OLED_CMD);//--display off4 j1 b7 u  ]4 K
  14.        OLED_WR_Byte(0x40,OLED_CMD);//--set start line address ' K- Z, T9 X2 @( H
  15.        OLED_WR_Byte(0xB0,OLED_CMD);//--set page address  Q0 W2 k- t* ~0 ]; d( M; J0 J( @8 T, P
  16.        OLED_WR_Byte(0x81,OLED_CMD); // contract control
    0 |' m0 F* L0 d+ f  w) @
  17.        OLED_WR_Byte(0xFF,OLED_CMD);//--128  
    + E, a+ r% v" d- m
  18.        OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap
    7 t* X# Z9 I6 k
  19.        OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverse" m1 L5 a2 ^4 l( H* H
  20.        OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
    + P+ Z" v3 p8 M' e7 y7 v
  21.        OLED_WR_Byte(0x1F,OLED_CMD);//--1/32 duty, u3 S/ m+ Q; j5 a% q6 j
  22.        OLED_WR_Byte(0xC8,OLED_CMD);//Com scan direction
    7 W/ g% [4 g8 R: k% U# x* M
  23.        OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset
    , u; ~  |9 S3 Y# x
  24.        OLED_WR_Byte(0x00,OLED_CMD);//
    ' N6 P6 n  @4 Q  T6 t2 a0 Q# v
  25.        OLED_WR_Byte(0xD5,OLED_CMD);//set osc division
    & q1 [! u0 y2 u9 R+ L6 K6 ]
  26.        OLED_WR_Byte(0xF0,OLED_CMD);//
    0 @6 N- [' J* B! L9 e- ?
  27.        OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge Period
    ) U) X1 h& P/ P+ G
  28.        OLED_WR_Byte(0x22,OLED_CMD);//
    5 ~' n& W- S( m$ D- A
  29.        OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartion/ g( B& s( O8 u! H" \; M* j
  30.        OLED_WR_Byte(0x02,OLED_CMD);//
    4 d, R3 W8 A& K; f  e2 h, S
  31.        OLED_WR_Byte(0xDB,OLED_CMD);//set Vcomh/ O* s6 m8 |. p/ Q
  32.        OLED_WR_Byte(0x49,OLED_CMD);//+ r* F1 ~; C3 L
  33.        OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enable* D2 ^7 p3 m6 }3 p# W0 p6 N
  34.        OLED_WR_Byte(0x14,OLED_CMD);//# ?* y+ A8 `7 Y& c) z: a# p; A# p
  35.        OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
    : S6 Z5 A6 X/ |* e8 E( x& \# T+ ^* [
  36.        OLED_Clear();
    4 Z( r* k: \' _* U
  37. }
复制代码
: J! W9 g$ @& I: L
4)汉字显示函数为:
  1. void OLED_ShowCHinese(unsigned char x,unsigned char y,unsigned char no)
    ) r' o) J; l! h9 s
  2. {                            1 A& r+ K* E+ x' r/ ~
  3.        unsigned char t,adder=0;# d' B+ K# [* g
  4.        OLED_Set_Pos(x,y);     9 G$ v# r: s( O
  5.        for(t=0;t<16;t++)
    0 s" X) ^+ j6 h$ f7 T
  6.        {; U3 h( _) r7 R$ \* s
  7.                             OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);* i3 p. b+ {6 C& G# k( a: k1 x5 ]
  8.                             adder+=1;1 `+ C9 T) |) x7 h  ^3 z
  9.        }
    / k/ \8 D+ F& J# w2 q' @- P( w0 R
  10.        OLED_Set_Pos(x,y+1);
      e1 u2 Z8 `. e$ ~) C( {
  11.        for(t=0;t<16;t++)+ H" A  o0 d" w0 U" ^4 |2 E
  12.        {     
    / m- Z: X4 G; Y+ ^: l5 P, J) k
  13.                             OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);- H! E: m  u1 H4 l  B- k
  14.                             adder+=1;1 P4 n% Z5 q! a; z
  15.     }                                  5 v; `7 b6 E9 Q3 ]% z
  16. }
复制代码
2 ?' f* b( B0 i
2. 字模提取
为了显示汉字,需要提前相应的字模,以PCtoLCD2002字模提取软件为例,在提取前需按图1所示来进行设置。                              
1.jpg
图1 格式设置
! Q, l3 i4 ~- @! ]9 E/ @  q; H; \' z
1)录入需显示的内容,如图2所示。
2.jpg
图2 输入提取内容
6 J0 U0 q) u3 t, K0 F; p
2)编写显示函数,其内容为:
  1. void cd()
    - x2 `% Z8 v7 ~
  2. {1 F; M% W+ t  z: ?* b
  3.        OLED_ShowCHinese(18,0,0);  0 w# r; q( u6 y& \
  4.        OLED_ShowCHinese(36,0,1);) o. {7 Q# |4 c
  5.        OLED_ShowCHinese(54,0,2);
    - K8 _" z4 S- p2 e( I' m, H" H5 g
  6.        OLED_ShowCHinese(72,0,3);
    % l" |6 ]: J0 K) |
  7.        OLED_ShowCHinese(90,0,4);. ~; O9 v8 k+ g$ c% |. G' t
  8.       
    $ q! V( o( x: f* k1 Y) I& k5 o
  9.        OLED_ShowCHinese(18,2,5);  " t+ x2 H/ m: H* @: e4 t$ x* x6 F' c
  10.        OLED_ShowCHinese(36,2,6);
    / ?% r/ U* `8 y' D$ B& H9 K
  11.        OLED_ShowCHinese(54,2,7);
    . y. U% _0 C( [
  12.        OLED_ShowCHinese(72,2,8);
    % M- Z( ]9 J5 F: z9 s
  13.        OLED_ShowCHinese(90,2,9);
    . z- Q) W2 L6 [- u6 ?( Y
  14. }
复制代码
* c: D* I( P! |
3)编写主程序,其代码如下:
  1. int main(void)
    ! @: E, K) R7 A
  2. {6 }1 \. j- t# f0 W6 j4 x8 j# B
  3.   HAL_Init();
    , E* }) @1 _. T
  4.   /* Configure the system clock to 80 MHz */
    + m7 |2 D, r0 h8 L: ]0 ?
  5.   SystemClock_Config();& h$ U6 R9 G5 z: A2 T. v
  6.   OLED_Init();                    6 F( {  ?1 J# n5 y
  7.   OLED_Clear();, h0 _+ g% R/ v4 j
  8.   cd();
    6 r2 R1 k( t. ?: @! r
  9.   while (1);; A6 Z4 U  f" F  t
  10. }
复制代码
* A  o( m8 q3 @  @
4)下载并运行后,其效果如图3所示。
3.jpg
图3 显示效果( Q0 a. v  o5 v2 o" `$ c# I! m! t3 M" m9 ~

6 ~4 L, }  O3 _2 C, p, ^工程代码:
. W2 K$ b& ~5 z0 k. g9 T

0.91_OLED.rar

下载

3.65 MB, 下载次数: 5

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

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版