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

STM32F103RC驱动12864-ST7565  

[复制链接]
TLLED 发布时间:2018-10-27 18:34
本帖最后由 TLLED 于 2018-10-27 18:33 编辑
* s. q) x5 {0 b) m: a2 B
4 b" u4 Y, f( w! K" W    折腾一下午,把LCD 12864驱动成, LCD模块没有资料,程序分享个大家。                                                                                                      
1 d$ N) d  b  `    一、硬件部分:; i* T: V; a" a  U$ F
    手工搭建硬件电路
2 Q- ?* g  {2 F    1、显示模块焊接:6 q' k- P3 t9 u% u+ W

6 Z- {# T1 W, {. B% w9 A* A2 z    1.jpg . Z; y/ b6 X) S* Y& U
. ]% {, r9 q% S9 f/ m+ G, {- c
    2、 焊接完成
4 a" {' e# k6 |/ B  `    2.jpg + U; G) A; c+ v2 w. `
    3.jpg
) W& R5 p- C; A, m! d    3、显示效果:4 N. U% `; ^( p4 s- V
    4.jpg   
* X& o& h7 a9 C8 S3 j4 d3 l    4、整体连接图
& a6 I, q. u& [" ~" u5 U4 M    5.jpg # F; j% T+ J. K
    二、软件部分:
2 ]: y1 c( C% X  T4 C: z    1、ST7565驱动部分程序代码:8 g+ F  Q* q4 L
  1. void St7565_Port(void)$ t* o% Q# ^: Z% c; p
  2. {
    $ M3 A8 |+ U" |8 l% S; R
  3.         GPIO_InitTypeDef GPIO_InitStructure;, r& R$ z# Q0 Z/ B" z$ b
  4.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  , ENABLE);        
    2 t8 L; r; y& d' `$ J8 u" ?* z
  5.         $ M; L- s" o+ t5 P$ G
  6.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;                                        " L3 ]& W* T& M
  7.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    2 N( K/ R4 U: T8 Z  ^& j# W
  8.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                          
    # ]; ?5 M" W& |& m' _; s
  9.   GPIO_Init(GPIOB, &GPIO_InitStructure);        
    8 B3 A; i1 B, [! a6 v
  10. }
    - v% S2 W2 I0 x! C7 m' V6 W
  11. - o9 Q% \6 }, |4 w! K; _" A
  12. void delay(uint16_t ms)   
    . c0 e* m8 s4 A+ K- S8 J
  13. {      . y, o$ n" \- z8 ~+ J. a& U- Y
  14.     uint8_t j;   
    - E3 F/ n, Y% M4 S$ y: T
  15.     while(ms--)   
    ' p4 Y! t& F3 i
  16.       for(j=0;j<=20;j++);                            / z# |; D$ E( {2 u3 u
  17. }            g; e, N+ y; T6 \% ^9 O
  18.        3 P. m0 m- i6 o; H
  19.    7 m3 |! ^; b4 D/ H4 S6 A# \
  20.    
    " r- J# T! x/ t7 U. N
  21.    ! S! |& w" {! @# g
  22. /************Serial*************/   ; e* W- m/ W+ j; |/ ]) i# N3 b
  23.    * d6 l- e3 C' l* O! K
  24. void St7565_WriteCmd(uint8_t com)   
    * c% @/ a; U' |, W
  25. {   0 v* M6 e# Q6 a, i, M% u$ |
  26.         uint8_t i,j;   6 g$ h: i. j3 b$ M  Z
  27.         lcd_cs_low();' T" M! u! f7 {
  28.         lcd_a0_low();; A  d& l: M  a3 M& j" _" O
  29.         lcd_sck_low();
    2 Q2 P0 X8 o5 a$ ^
  30.         : _5 y8 i: ~# i2 A6 Q
  31.         for(i=0;i<8;i++)   ; V3 _; L4 |: j; R' o
  32.         {    ; y2 N$ ]1 R2 J% ~- M" u/ A
  33.                 j=com;    $ ?# z0 U- s" A
  34.                 lcd_sck_low();
    9 _: B9 _8 d( e
  35.                 if( (com&0x80)==0x80). `6 ?' k# W1 E! ]) @
  36.                 {- T! C( o9 I% o& e3 [
  37.                         lcd_sda_high();; v! Y3 k$ G# [/ f
  38.                 }
    7 x8 {8 T& v6 T( T! H3 x% G
  39.                 else
    2 \  G% m+ h) y" r! G
  40.                 {
    ! e5 w0 ]7 o# A# _3 M
  41.                         lcd_sda_low();
    . k) L9 ~3 F9 T0 q. Y+ S
  42.                 }
    # x2 c3 X( x: _- S% D
  43.                 lcd_sck_high();      
    0 Q( ?9 h$ U7 i. v
  44.                 com=j<<1;   ) {; V$ D  s' A+ J5 i) ]
  45.         }  , s: }4 Z: G5 W. ?, s
  46.         lcd_cs_high();
    6 i( j/ _! }  y4 l
  47.         lcd_a0_high();   % S' F. n' P4 e$ {6 Y$ A
  48. }   2 i. B  o2 E0 y
  49.    
    & N0 q6 |, x& a% }9 Y5 `% e9 ]9 f
  50.    
    , t$ \4 O- @: e
  51. void St7565_WriteDat(uint8_t dat)    2 N* X' C" |7 ~9 E) m7 l1 B
  52. {   
    3 i6 L. g+ t2 u& X8 v
  53.         uint8_t i,j;
    % V, K1 j1 J; K9 s4 _  Y
  54.         lcd_cs_low();   //CS=0
    ! x7 C4 c: H( v
  55.         lcd_a0_high();        //A0=1
    . N9 q% M% m# b9 r1 J9 i# R
  56.         lcd_sck_low();  
    0 ]7 O9 ]# S% C& G2 u
  57.         for(i=0;i<8;i++)   
    $ \* H4 X( b7 f+ b( j$ H; y
  58.         {    % v& S% J; R, b, c; n
  59.                 j=dat;   6 v9 }' r* E7 O7 c2 {5 M% d( V
  60.                 lcd_sck_low();5 s" I' T( o2 O; p/ a6 W
  61.                 if( (dat&0x80)==0x80 )
    ) P, q+ m! C$ `" ^8 g3 l7 K$ z% C9 L
  62.                 {
    : I- K6 [/ `( e/ z, P$ H& @% c4 ?: E
  63.                         lcd_sda_high();2 ^; O. W. \$ J2 w$ f) ^* k" n
  64.                 }, g7 C3 R% ~) T8 A3 ?. I
  65.                 else
    4 Z& H& \3 b6 z+ k: o4 x. [2 W
  66.                 {
    ) ^) w2 M" w( h
  67.                         lcd_sda_low();
    6 m) L$ f( ]% N& `6 K  n- P
  68.                 }' d$ j! Q" A" D) {$ f
  69.                 lcd_sck_high();      
    % [) K& X/ Z! H1 p4 R
  70.                 dat=j<<1;   
    + c8 ^6 ]( v3 E7 N5 Z" i
  71.         }
    . A! a. t+ M7 l1 Z8 u
  72.   lcd_cs_high();* s$ z+ f; I* k0 G( `) m  B0 _
  73.         lcd_a0_low(); % @( b& Q" @1 C/ l, I" Y
  74. }
      a$ m4 M4 i  \( m0 v

  75. 2 B( W$ w5 [- h+ X+ M3 B
  76. void ClearDisplay()   0 w$ Z# }+ Q; O# E. d% ]' I
  77. {   & i* x) W0 _, n6 \  w
  78.         uint8_t  i,j;   
    / ~' z+ I- M0 F* H( H
  79.         for(i=0;i<8;i++)      
    5 a. L1 ^, T: m; n! T' l
  80.         {   : E( N5 m: c; d$ z" \( E5 z
  81.      St7565_WriteCmd(0xB0+i);               // (Page = 0xB0)//???????   
    ; ~3 I4 n' W1 V( R9 p
  82.      St7565_WriteCmd(0x10);   7 R( K. F* ?& K9 [" g; r" C
  83.      St7565_WriteCmd(0x00);      
    ' C' O; [8 s, K  v- R( G3 `: F+ {
  84.                 for(j=0;j<132;j++)            //????????   
    * a* q2 T* ]7 t. a
  85.                 {   
      I2 W3 k# g& B0 `$ o6 ~
  86.                         St7565_WriteDat(0x00);   ) k  U4 s* {3 z* z  v1 W
  87.                 }   # e0 [3 Q$ ^: @2 m, V; i
  88.         }   
    # I* x6 t9 `" i, E" o1 m* D
  89. }6 z* `' N- I+ {" f
  90. 3 {; ]; I- {2 h( g
  91. void Setadd(uint8_t xl,uint8_t yl)   5 ]& T- Z" L/ a: t6 q8 Q
  92. {    uint8_t i;   - A5 _) `9 i- O7 b' R
  93.      i=xl&0x0f;   
    ( q' F* ^- E3 u. l3 y- v
  94.      xl=(xl>>4)+0x10;   
    / o9 T+ ?) m* ~; }+ B' o& L
  95.    
    3 e4 c& [; D& w1 K, j: |" \
  96.      St7565_WriteCmd(0xb0+yl);        6 S& J6 |) J3 Z3 V4 R
  97.      St7565_WriteCmd(xl);   
    ! P. ]( w9 \2 h+ I1 o3 t' y
  98.      St7565_WriteCmd(i);   
    5 j; @0 v- M3 V
  99. }/ v# C8 P: H$ W, y$ a& [
  100. 5 H2 M0 T0 W6 H9 T' H! v  f' Q
  101. /*******************ÏÔʾ8*16 ASCIIÂë****************/& v& i1 v, E! S
  102. void LCD_P8x16Str(unsigned char x,unsigned char y,unsigned char ch[])
    . u& {% a2 B) A" B& _+ V% o. S, S
  103. {" b3 j% e" z- H3 ?/ e  t
  104.         unsigned char c=0,i=0,j=0;4 {1 R" b* R4 Z1 t
  105.         while (ch[j]!='\0')
      ?  l5 O* q# j: {9 w! ~
  106.         {   
    , Z3 [9 ?5 d% M; X
  107.                 c =ch[j]-32;( D0 n1 \5 i0 ?& E9 {5 O8 L6 _- C
  108.                 if(x>0x7f)           
    5 k8 F2 W! f' J3 E* C' O
  109.     {   
    1 g. l7 K3 j1 U1 L
  110.        x=0;   % S0 {8 ^8 F- s  ]0 K( _
  111.        y++;   ; E* k5 a$ S& q5 X, l* }# z" W2 D
  112.                 }6 D! X; X( z) P1 Z/ v
  113.                 Setadd(x,y*2);1 W8 Z! F" M8 H" M* x
  114.                 for(i=0;i<8;i++) # J) F2 M' w6 x8 o
  115.                 {
    % X# ^, y. U% K9 v( n6 I
  116.                         St7565_WriteDat(F8X16[c*16+i]);//Delay(10);% q' t  E5 O# j- {8 s. r$ W
  117.                 }             * w+ h/ V' ?, Q- Z, f6 T/ ]
  118.                 Setadd(x,y*2+1);3 V+ f, _4 X) z
  119.                 for(i=0;i<8;i++)# G0 j) g% w, }+ D$ X
  120.                 {
    9 i9 d' [# P: h  C* d: ?
  121.                         St7565_WriteDat(F8X16[c*16+i+8]);  //Delay(10);
    * q) N3 q8 X* F2 K  n, ?
  122.                 }
    ; a. w% R- F. B. U! e* M  F
  123.                 x+=8;
    / _' T4 O! y$ S( ?
  124.                 j++;
    3 [# L. A4 j+ W7 ^
  125.         }( u& B5 c4 |! D
  126.         $ q) ^  W7 u, i; f& N4 w
  127. }
    ! M( |# O6 o: o. |8 I  X, q/ P3 b
  128. * h" u! U: a2 T& Y2 K0 i
  129. void Init_St7565(void), O( y) X) |0 }9 ^5 d" {* S
  130. {
    / j# v+ N) O5 w, u0 `
  131.         St7565_Port();  # F: @, h* B# B
  132.         lcd_rst_low();1 U( r* e/ e6 e" W! U* W- j* ^1 G
  133.         delay(200); ( F- O3 j6 E; ]# m$ }; z' L
  134.   lcd_rst_high();  ; i- g/ f: }+ ^% N5 B! m
  135.         delay(200);   
    1 o! o/ E  o8 y$ i$ X! M3 l
  136.                                2 g8 ^5 M. n! T
  137.         St7565_WriteCmd(0xe2);//internal reset          - I6 g" f* ^3 q; U5 O7 H- ?, i
  138.         St7565_WriteCmd(0xA3);//Bais set     1/9 bais    5 H$ m( m* X* l- I- Y+ u
  139.         St7565_WriteCmd(0xA0);//ADC select 0xa0 normal 0xA1 reverse  
    ; d& I4 L8 p# }2 k! u" C. F7 V
  140.         St7565_WriteCmd(0xc8);//com output scan direction??com??????? 0xc0??????0xC8???¾???   & s2 G/ Y8 F. q3 G3 p, F' L
  141. /****Select internal resistor ratio****/   
    1 B+ Y" ?+ a4 F0 R' ~/ k; c. A
  142.         St7565_WriteCmd(0x2c);//????????????   
      C( X! @2 J. w1 |* k- m
  143.         St7565_WriteCmd(0x2e);//????????????2um   
    * w" x! i5 V! [) j: V
  144.         St7565_WriteCmd(0x2F);//   
    3 B* u& K7 m$ Y# c: d( |% t* K
  145. /**************************************/   ' u) J0 z4 t! M! u- I) t& [* Q
  146.    ! a, _2 H, l1 U0 Z/ V1 ^/ P
  147.         St7565_WriteCmd(0x81);//???g????   8 @0 z' \- R0 M" t1 z  B
  148.         St7565_WriteCmd(0x19);//????????J?????? ?????0x00-0x3f   4 Q& B: ^. m: s4 p$ m7 _
  149.   St7565_WriteCmd(0x24);//????????J?????? ?????0x21-0x27 ?????????????U??????U??   : r. o6 s- l9 [/ G% {: D5 m- O. T
  150.    ) d) R3 g7 X3 ]& ]7 k9 N) [( W
  151.   St7565_WriteCmd(0xAF);//display lcd on            
    * Y7 z; g" A* G9 w% X. X! G+ c
  152.   St7565_WriteCmd(0x40);//display start addr# O# c8 ^% M4 E  g8 X$ [
  153.       
    ) _9 u: a% y; ~7 U
  154.         ClearDisplay();
    * S6 [; T6 r1 m" O! Z0 T
  155.         ; q  Z0 U) c1 U1 i1 t0 |7 c
  156.         LCD_P8x16Str(0,0,"www.stmcu.org.cn");# ^. d- Z- {) c
  157.         LCD_P8x16Str(0,1,"LCD ID:ST7565");% g8 E( x$ ~8 k9 v
  158.         LCD_P8x16Str(0,2,"MCU:STM32F103RC");# S# \+ T) Y/ P) K
  159.         LCD_P8x16Str(0,3,"STMCU ID:TLLED");: L, L1 v4 z( G3 V" Z% ~- h" G. I+ x
  160. }
复制代码
       2、软件包:      
9 J2 |9 r6 K; ?$ {: R( ]          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
6 m& i: {3 J4 B0 {2 ]这个屏的管脚定义有吗?有资料没?发来看看

3 a9 Q: E1 n1 [$ @# o) j# h这个屏的手册我没有找到,找到的管脚的定义,和ST7565芯片的资料,通过查阅芯片的资料来控制这个显示屏
TLLED 回答时间:2018-10-30 14:16:52
whtt 发表于 2018-10-29 14:40
- r7 P" V! B( f" w: ~2 S/ m这个屏的管脚定义有吗?有资料没?发来看看
( b6 e/ o1 ?6 g) ~0 _8 N  y
    SPI驱动方式试过,并口方式还未试过。& K( a& M* {+ K! u* }7 ]! ^: B

" s/ [# b( Z0 b5 c6 x! h) L
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. M! X$ l' c  x
强,我也买几个玩玩
$ A5 `! a  P8 `& h! t7 _
在网上买到这个模块了吗
涛哥2035 回答时间:2018-10-31 14:22:10
TLLED 发表于 2018-10-30 15:53
+ f5 r( E# r; S4 S  X在网上买到这个模块了吗
6 h8 p9 _. e) Y2 u5 }
买了30块
TLLED 回答时间:2018-10-31 14:34:00
可以,我买了几片,只是玩玩
TLLED 回答时间:2018-10-31 14:35:17
whtt 发表于 2018-10-31 14:229 @5 ^$ t% o/ I
买了30块

  G2 W/ @* ?; d6 h买的多,可以做个板子,当模块使用
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 手机版