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

STM32F103RC驱动12864-ST7565  

[复制链接]
TLLED 发布时间:2018-10-27 18:34
本帖最后由 TLLED 于 2018-10-27 18:33 编辑
1 b% r, O0 f% V8 J( t" d4 f% r# l1 h; z/ \! ?. i
    折腾一下午,把LCD 12864驱动成, LCD模块没有资料,程序分享个大家。                                                                                                      
, [! e6 v% }( G: h' E& p    一、硬件部分:3 q# k* g5 s' A/ _* v, R8 W
    手工搭建硬件电路# c( D) [) c9 C0 y5 K% j8 \# Q5 w+ R1 N
    1、显示模块焊接:  o! i+ E. D& x4 N

, s1 N8 p0 R. _$ ]5 Z# B    1.jpg   o3 Q  A- Z" l- [  Q% \  U
6 T+ t& O8 D4 ?$ \: n; c7 r% C5 I0 I
    2、 焊接完成* S6 d3 @( k& E
    2.jpg - f6 c! F8 K* q1 J( ~1 C* _
    3.jpg 7 J4 s5 ~( n4 B: H/ i% J. e- j
    3、显示效果:+ U' H! [. z. G9 D
    4.jpg   ! W% R3 n. k/ K- u- R3 ]7 f" x
    4、整体连接图7 C" q0 q2 h& W+ w! W
    5.jpg 7 e9 O- H( u! V; k
    二、软件部分:
  z# ~* L' W, L* ~7 w; D    1、ST7565驱动部分程序代码:3 x6 H( T1 U/ {5 `, [0 U
  1. void St7565_Port(void)
    & `* D+ Y; n$ z' @: {
  2. {
    7 H3 P8 T8 F3 f5 ^* ?0 f
  3.         GPIO_InitTypeDef GPIO_InitStructure;! D7 j' N+ b* \; x" U: x
  4.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  , ENABLE);        
    . C6 f, ]! k4 N- J  }5 s
  5.         
    ) I" F6 o7 \- J. \0 h
  6.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;                                        / e7 r  {3 w7 V4 j; q" l, H
  7.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    + ^1 O. z, A) x3 F4 U; C
  8.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                          
    % R/ @" O' [. D2 ?& o4 Q
  9.   GPIO_Init(GPIOB, &GPIO_InitStructure);        " a' x2 s+ K/ n# z
  10. }
    / I2 a* e, X2 B5 Y( w! U' b% D* R
  11. - o! D9 i0 \9 P7 U* H2 v6 c
  12. void delay(uint16_t ms)   
    : \/ {! g" L& R: O/ G* t
  13. {      , |% G, Z" ]& x& [
  14.     uint8_t j;   
      K, I( @& F9 ^& ?: N9 x
  15.     while(ms--)   + I9 Q/ Y$ h4 X0 o
  16.       for(j=0;j<=20;j++);                           
    ' D( G: G* x" Q) |; [& n- Z
  17. }          ! \4 j9 ~/ A) C$ m; B
  18.       
    , S% X/ ]1 |1 ?+ R* v7 }$ S& a
  19.    1 T1 v& o0 J0 F, w& ^
  20.    
    & |: z! ?/ X, x) r/ c) G
  21.    
    3 c$ b' I: k8 u7 q- }+ H  p
  22. /************Serial*************/   
    ( I+ m. S8 O) T
  23.    7 C2 \+ }+ j8 I6 `
  24. void St7565_WriteCmd(uint8_t com)   
    * c0 a/ p# M6 q" h5 C
  25. {   6 |0 M' b. Q% B) e& E; |# b& G
  26.         uint8_t i,j;   
    ) \! F! f) o; `. D
  27.         lcd_cs_low();2 a" I3 i( W7 O5 o# z
  28.         lcd_a0_low();
    0 v- T3 c  B2 t9 w) h
  29.         lcd_sck_low();
    ; b3 F1 O5 d+ Y2 z
  30.         
    . T1 d( t# l9 h2 P/ n
  31.         for(i=0;i<8;i++)   
    * |+ k# ~" Z- r' I
  32.         {   
    " c2 s" u, Q& j
  33.                 j=com;   
    9 j5 L3 y, H( x/ ^( x+ @
  34.                 lcd_sck_low();
    ! n4 M: y3 l2 @' u6 c  _9 |: \8 f
  35.                 if( (com&0x80)==0x80)
    1 B& D0 y4 T: j5 P0 M' y: v
  36.                 {
    + R. r3 d+ i( V) t3 b1 K
  37.                         lcd_sda_high();
    , N6 Q: v! ]: P
  38.                 }/ {' [& F& M' w  u8 [4 w
  39.                 else
    , H: a( b" V7 {/ k
  40.                 {5 c! p( @; O# K, p
  41.                         lcd_sda_low();
    7 I3 d9 D& D9 j# T; f" c2 m! v
  42.                 }
    # _% W( V8 I+ E( x8 J  C
  43.                 lcd_sck_high();      
    - y+ {) @( g$ v* \- ~
  44.                 com=j<<1;   
    & [" e7 J( t8 N( _; a
  45.         }  
    ( q5 d! z, _3 w# Z3 z3 e
  46.         lcd_cs_high();9 M' f( M5 `( O- }7 p7 r# j. A
  47.         lcd_a0_high();   7 \& @$ k! [. p0 B" z
  48. }     Y( U0 M+ W8 o7 D: G
  49.    
    0 S/ p- w8 g; l: m: a8 u& E2 ?6 z
  50.    7 r0 O' G9 @2 Y: d3 _4 Y
  51. void St7565_WriteDat(uint8_t dat)    % @, Q# v3 G% ]7 J
  52. {   
    , ]! j6 P# \* S( z9 \' x6 v
  53.         uint8_t i,j;
    3 Q4 N+ c  m! _7 i: b0 F6 H
  54.         lcd_cs_low();   //CS=0
    ! V6 b2 l0 Y/ ?5 `# j
  55.         lcd_a0_high();        //A0=1
    * Q9 d# v8 P+ R/ w- w4 u. B1 K
  56.         lcd_sck_low();  ' t) a0 V) O7 x6 [( `6 I
  57.         for(i=0;i<8;i++)   * m: S* |( B0 o4 e
  58.         {    + D8 m+ d8 b6 y% W
  59.                 j=dat;   
    3 A! e) j2 W' l6 c3 i
  60.                 lcd_sck_low();' \: ?+ Z% R% X" n8 i% D
  61.                 if( (dat&0x80)==0x80 )5 Z( X+ T% H0 h
  62.                 {) i- n+ r! R3 Z3 C4 T4 @
  63.                         lcd_sda_high();6 O- s! Q1 o+ w# G7 u+ K
  64.                 }- M$ u0 |) N! f2 ?
  65.                 else: o5 A2 o. H# B# ]  E& @
  66.                 {1 }2 e# j8 w% i/ Q( I0 I8 l
  67.                         lcd_sda_low();. Q; m8 U2 Y8 ~; q" F/ p
  68.                 }
    8 R4 S) i8 g' H' g0 ~
  69.                 lcd_sck_high();      : X8 _* [+ h( k
  70.                 dat=j<<1;   
    , }7 N( H( P# Z" r% [: c
  71.         } ' B7 e8 S# u" u9 F2 ]
  72.   lcd_cs_high();
    ! o, j" H) [" z
  73.         lcd_a0_low(); , g( R4 \4 U/ O. ^8 c- S
  74. } " y* ^( A. G) l1 z/ _

  75. : I& n4 I) p+ }3 a* w4 G
  76. void ClearDisplay()   1 N% g# |9 [) a3 d
  77. {   5 [9 `9 W: z2 p
  78.         uint8_t  i,j;   
    ) A: Z( j& u' y/ m3 Y# S( R
  79.         for(i=0;i<8;i++)      8 P' ~& r9 @, }
  80.         {   
    & V8 T5 [# F5 I6 j
  81.      St7565_WriteCmd(0xB0+i);               // (Page = 0xB0)//???????     H4 B1 Z0 x- J, b* r# I7 z
  82.      St7565_WriteCmd(0x10);   7 y& K9 Z6 L5 I) D
  83.      St7565_WriteCmd(0x00);      
    ; w$ c6 P, Z& {+ G8 h6 k. a5 i
  84.                 for(j=0;j<132;j++)            //????????   / C& l( k# e: p
  85.                 {   
    " R1 c  F* t# C; L9 r
  86.                         St7565_WriteDat(0x00);   5 H$ u5 I# @1 o8 |, y7 g7 L
  87.                 }   2 P# V4 B# M2 J* X3 _, l
  88.         }   9 F2 w5 r6 `, y1 F( q
  89. }' I5 f; P9 o" {: u9 V. j

  90. 4 ]/ R2 B# w% F9 v5 a" U
  91. void Setadd(uint8_t xl,uint8_t yl)   
    $ B; H3 R8 ^- e9 i$ o& X* r4 t
  92. {    uint8_t i;   - q, c6 a  g$ u9 l, ~5 w
  93.      i=xl&0x0f;   . J& a6 h) l7 N7 [7 a
  94.      xl=(xl>>4)+0x10;   
    + Y+ }$ U6 X! X% ?1 _! s
  95.    , f. n8 ]' y+ p' q& x+ _
  96.      St7565_WriteCmd(0xb0+yl);        
    ' v, Q% |1 z6 O+ r3 {* @
  97.      St7565_WriteCmd(xl);   
    6 d/ D9 P" W% h% X  [5 `
  98.      St7565_WriteCmd(i);    ! {9 @6 `/ U, I# o4 D) C4 z: u
  99. }
    ( \' l2 v6 P3 _- K, d/ m

  100. 9 P6 |4 [- }0 e" h# K
  101. /*******************ÏÔʾ8*16 ASCIIÂë****************/% f) l! d% w# }4 Y5 `# a
  102. void LCD_P8x16Str(unsigned char x,unsigned char y,unsigned char ch[])
    ! y9 N% t. U, ]6 G( R* i; z
  103. {' [! b8 w' A( V- ^) N& f8 r( G
  104.         unsigned char c=0,i=0,j=0;5 m' G6 L9 s% I9 P, g
  105.         while (ch[j]!='\0')
    ' A8 }4 E! w# _# y% K! r$ X/ A
  106.         {   
    / \1 `8 l/ D- r6 V# P
  107.                 c =ch[j]-32;
    , X2 @) R  N: A* b  m+ m, k% n  {
  108.                 if(x>0x7f)           
    6 d$ ?" \- t6 Z" M
  109.     {    - y4 D! j% S7 |5 Y: U& h! F
  110.        x=0;   & x3 e, q/ q! b9 \! E; W5 X/ [; z3 i' Q
  111.        y++;   
    5 E9 [! C. ?5 k* a, u- h. v4 ^
  112.                 }
    4 M* k+ w2 h& ^- g  e
  113.                 Setadd(x,y*2);( R! ~% k1 ]0 O- {" o' j
  114.                 for(i=0;i<8;i++)
    & @* k; H& `% |
  115.                 {
    - Z9 Y2 P7 G: |1 A7 I
  116.                         St7565_WriteDat(F8X16[c*16+i]);//Delay(10);; R2 _( P; y+ C' s
  117.                 }             : X  x- K1 v+ f5 ^( W+ K
  118.                 Setadd(x,y*2+1);
    # Z' n% \$ T" n- E
  119.                 for(i=0;i<8;i++)
    . L4 P# ]9 q* D
  120.                 {
    # P5 v$ N% C  U5 I; }5 A; ]
  121.                         St7565_WriteDat(F8X16[c*16+i+8]);  //Delay(10);
    - @: [: a* L4 \' {7 y& J
  122.                 }9 C+ e- }+ I6 t' E# ?
  123.                 x+=8;
    ( J2 \8 E. V" D3 K
  124.                 j++;7 \; \: o) ~+ W
  125.         }" ^1 @# {/ N; t# X! ~
  126.         
    + H$ P$ {$ F$ i1 J: z/ Y
  127. }* {! ~' O" {: e) Y9 d5 i
  128. % \  N' d- Z, q
  129. void Init_St7565(void). k% V$ A4 C: p1 v
  130. {% v7 N6 b9 |0 D0 C# e
  131.         St7565_Port();  
    2 W! v2 M6 i0 F
  132.         lcd_rst_low();+ I! d) C# j; y  a/ s# A8 g) \5 h
  133.         delay(200); ; w# t4 Y, z6 h3 U# q5 l1 \" W
  134.   lcd_rst_high();  ' d" p+ D) d% I2 o3 d. T
  135.         delay(200);   
    9 Q0 t4 c6 r8 R+ J8 I/ W- B+ X
  136.                                , E. I+ c/ `4 {! `/ w! t. |( R
  137.         St7565_WriteCmd(0xe2);//internal reset         
    + g' r& X" O& }# i: g" V5 p" q1 U
  138.         St7565_WriteCmd(0xA3);//Bais set     1/9 bais   
    " g' o: w; c. B3 |$ W: `) d+ J
  139.         St7565_WriteCmd(0xA0);//ADC select 0xa0 normal 0xA1 reverse  
    5 E6 `5 k; M$ T, u: U
  140.         St7565_WriteCmd(0xc8);//com output scan direction??com??????? 0xc0??????0xC8???¾???   0 [, c* Y9 r4 }( [7 h
  141. /****Select internal resistor ratio****/   
    : X) B) K1 j/ `# V; t0 g; S6 g0 Y
  142.         St7565_WriteCmd(0x2c);//????????????   
    $ K8 X. d! Q) I% }8 S
  143.         St7565_WriteCmd(0x2e);//????????????2um   
    , q8 [( I8 G! H, t
  144.         St7565_WriteCmd(0x2F);//   # v4 N# w: ?& M8 ^) V
  145. /**************************************/   ; ]- n' Y: l7 Z( a, `& K  B( X& R
  146.    
    . a3 J. `4 K7 w7 B* K5 H
  147.         St7565_WriteCmd(0x81);//???g????   3 [7 u, o5 D, Q/ z8 C
  148.         St7565_WriteCmd(0x19);//????????J?????? ?????0x00-0x3f   
    7 T3 A# z8 y3 [- f( W+ M7 _% D
  149.   St7565_WriteCmd(0x24);//????????J?????? ?????0x21-0x27 ?????????????U??????U??   
    . K, A) e+ C, s$ q! W. y
  150.    5 J8 z7 b9 {' A
  151.   St7565_WriteCmd(0xAF);//display lcd on            
    ) c6 S! R! G3 E4 c, T
  152.   St7565_WriteCmd(0x40);//display start addr, @) P2 n. g% i1 }
  153.       
    ) t9 `& I) x( a7 B( Y
  154.         ClearDisplay();
      Q, j  d& Y  n, g( a; A0 e$ ^
  155.         
    # \0 I& K2 I7 ~& c3 M
  156.         LCD_P8x16Str(0,0,"www.stmcu.org.cn");
    . E+ ~& u" _) T3 p* q: C* G
  157.         LCD_P8x16Str(0,1,"LCD ID:ST7565");
    5 C4 G4 S8 X. j% a7 [8 |: ?- |8 i8 k( d1 c
  158.         LCD_P8x16Str(0,2,"MCU:STM32F103RC");
    + }5 r5 j2 E8 o; {2 C
  159.         LCD_P8x16Str(0,3,"STMCU ID:TLLED");# k% P' m; S, `3 K$ Z
  160. }
复制代码
       2、软件包:       . k, K& O' q6 o7 O5 E8 ^
          ST7565 STM32.rar (508.24 KB, 下载次数: 690)

点评

有资料吗兄弟?  发表于 2018-10-30 09:18
赞 收藏 3 评论37 发布时间:2018-10-27 18:34

举报

37个回答
王成-2031247 回答时间:2019-9-5 01:06:58
楼主,用了这个驱动,但没点亮,量单片机端口是受控的,我的屏是ST7565R串行的,定义跟楼主你的一样,就是这个尾缀R不确定是不是有区别,还有我用的单片机是STM32F0的,应该不是单片机的问题,我看你的代码里只有rst那里用到了延时。
TLLED 回答时间:2018-10-30 13:53:55
whtt 发表于 2018-10-29 14:40
- {! |$ T" H0 l+ x+ F3 d+ ~& v这个屏的管脚定义有吗?有资料没?发来看看

3 o# J0 b6 i" E9 a! [) e这个屏的手册我没有找到,找到的管脚的定义,和ST7565芯片的资料,通过查阅芯片的资料来控制这个显示屏
TLLED 回答时间:2018-10-30 14:16:52
whtt 发表于 2018-10-29 14:40) p" e" o& N+ ^0 e* m$ L9 t
这个屏的管脚定义有吗?有资料没?发来看看
( A2 ?4 [+ ]4 C- d: o
    SPI驱动方式试过,并口方式还未试过。' ~+ D0 h+ w( D( j/ o" h& w+ {. F
3 u' s2 }6 q, K. P% T* Y- O
lcm.jpg

ST7565.pdf

下载

468.53 KB, 下载次数: 56

ST7567.pdf

下载

715.09 KB, 下载次数: 26

hejun1203 回答时间:2018-10-28 09:13:10
Inc_brza 回答时间:2018-10-28 21:59:26
焊工不错
涛哥2035 回答时间:2018-10-29 14:40:08
这个屏的管脚定义有吗?有资料没?发来看看

点评

我整理的资料发到楼层了, 你可以参考下  发表于 2018-10-30 14:18
西点钟灵毓秀 回答时间:2018-10-29 17:50:26
弄来玩玩
涛哥2035 回答时间:2018-10-30 15:12:32
强,我也买几个玩玩
TLLED 回答时间:2018-10-30 15:53:07
whtt 发表于 2018-10-30 15:12
5 F. B, w* ]# l! O3 K强,我也买几个玩玩
) ?! R9 I9 e( f9 }
在网上买到这个模块了吗
涛哥2035 回答时间:2018-10-31 14:22:10
TLLED 发表于 2018-10-30 15:53
$ ^' J, ^) t3 c+ H: J* j在网上买到这个模块了吗

0 T. Z9 Q% M# s2 O买了30块
TLLED 回答时间:2018-10-31 14:34:00
可以,我买了几片,只是玩玩
TLLED 回答时间:2018-10-31 14:35:17
whtt 发表于 2018-10-31 14:222 T3 p1 Y' f7 U! J
买了30块

' e5 g9 _0 r# @# C买的多,可以做个板子,当模块使用
tom3721 回答时间:2018-11-2 12:04:16
楼主辛苦了。。。
lvsichen 回答时间:2019-1-15 10:42:28
标记
earnest 回答时间:2019-5-27 11:14:11
感谢楼主!
123下一页

所属标签

相似技术帖

官网相关资源

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