一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: wangke2010
收起左侧

淘宝上的液晶GPM1306资料来了,大家一起来玩啊

[复制链接]
发表于 2016-12-20 11:35 | 显示全部楼层
320x240就好了。
发表于 2016-12-22 12:15 | 显示全部楼层
GPM1306
发表于 2017-1-10 15:49 | 显示全部楼层
大神,移植到了stc单片机上,未能点亮,程序中提到初始化中有控制字也需要修改,能否指点一下是哪里呢?
发表于 2017-1-10 18:42 | 显示全部楼层
按照手册ST7586S最后那几页列程就可以的
& \/ y$ i+ S  Q. F& c tyuuty7j.jpg 7 C1 E+ p: M0 o" P: O7 Y6 b
新建位图图像.bmp
7 M3 E% D8 Q8 m& n
发表于 2017-1-13 13:35 | 显示全部楼层
759755401 发表于 2017-1-10 18:42% U8 r% n) o; l4 z* x; m  U, V
按照手册ST7586S最后那几页列程就可以的

4 M5 [2 v6 [4 X% a% {非常感谢,我再试试!
发表于 2017-1-16 15:18 | 显示全部楼层
BaiduShurufa_2017-1-16_15-13-27.bmp
2 [. ]* g9 F* [1 i2 c' ZU2是稳压芯片ams1117,输出3.3V8 q' O2 q: s. i3 F
大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?7 n9 l& X6 P6 j* r! R
今儿又重新做了一个板子,还是点不亮。. l4 |, c, l& L* X+ Y
我觉得问题可能有2个,1是硬件不对,2程序延时不对。& a& J- {- V( M8 n  m: ~9 E
程序中我有一点疑问,是不是我的时序不对呢?程序里面延时程序__delay_cycles(Fosc*0.2);的延时应该是多少毫秒呢?
' _1 F. _  @1 P1 }

  1. ' B1 c2 T! ^1 l9 O- @
  2. <P>__delay_cycles(Fosc*0.2);//Delay_ms(20)   //延时20ms</P>( r' X) w$ N) S/ g2 D: T5 n
  3. <P>GPM1306_RST_SET;) D; e% J3 j" N% _; V) [$ e
  4. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms
    1 B* p3 b( c; u& ]  U2 p! z
  5. LCDWriteCmd(0x01);   // soft reset
    ! o3 K# s# T# q# V3 c. l. ^* h
  6. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms </P>
复制代码

5 |( u. L$ J) `* K% K% D% I
 楼主| 发表于 2017-1-16 16:48 | 显示全部楼层
本帖最后由 wangke2010 于 2017-1-16 17:00 编辑 , b9 d3 W" u2 Q. K
davg1 发表于 2017-1-16 15:183 d7 ~2 V) S. ^/ i4 q" N
U2是稳压芯片ams1117,输出3.3V
" e2 O! X8 I3 f* N5 B+ }大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?0 U* i- r' h( _
今儿又重新做了 ...Fosc就是时钟频率,x0.2就是0.2秒7 D. |* d1 D/ F' n! f
有条件的话加上逻辑分析仪看看时序! e5 H: ^2 X, F) K0 _  ~4 Y
如果还是不行的话,楼上那个晒图额朋友可以请教,他已经移植到别的平台上面了。- z4 I7 l6 R% M0 z% R+ T
最后,图片稍微有点不合适,那个电阻是给背光LED限流的,具体看下图
BaiduShurufa_2017-1-16_15-13-27.bmp : x: o+ x, ~# r( w' O! R, }
) U2 B7 i3 h1 a! k2 E$ `

) A* z. m2 Q4 [3 ^1 {7 {  R+ [1 G
发表于 2017-1-16 16:58 | 显示全部楼层
无标题.bmp   O* d  H* U/ g6 p9 Y# I
- F) `- B5 r# i3 r, O
void init_GPM1306(void)
5 d& h! v# ^. [: R5 D{' |7 S: a. j. z
uint8 col,row;) z% @/ l7 d2 q. c" W
delay_1ms(5); 0 L* Q1 r2 @" {- G
LCM13060_RST = 0;, k8 G% }; q6 a9 U8 h6 b
delay_1ms(200);
4 S% ^0 q7 a( q% f' d LCM13060_RST = 1;
! N3 z  B+ S& G6 v" R0 a delay_1ms(200);+ J) V. h  v1 N! X
//SPI_TX_command(0x01);//  soft reset
: b2 p1 _; \5 e' v //delay_1ms(200);
+ C  Q. ^# f7 l' K. h 7 Q$ {% w4 a& |& X. P

* s. ^4 ~1 D$ K# ^ SPI_TX_command(0xD7);// Disable Auto Read& H. P& v/ a) {$ r7 o" g6 I
SPI_TX_DAT(0x9F);  
' k! _* a* J  v6 }( ?/ _" T
) J) B# a5 F0 d0 c: u- c! m SPI_TX_command(0xe0);// Enable OTP Read
# d- ?+ I- P& Q& a5 T5 O% T+ } SPI_TX_DAT(0x00);  
4 V  O% W1 {& p! w! L6 L. z delay_1ms(10);1 b. {3 S0 t7 W! }2 Q; ^2 y
2 t  t5 }/ [/ o  B& W
SPI_TX_command(0xe3);// // OTP Up-Load
1 _7 j6 [) r( D8 [( w, u delay_1ms(20);
0 R6 A1 F" p  O- p 3 i; {& q& c1 {0 A
SPI_TX_command(0xe1); // OTP Control Out. W6 z# z' d% `9 s; o
SPI_TX_command(0x11);// Sleep Out! K) D, @# w6 ]$ K
SPI_TX_command(0x28);// Display OFF2 P0 e1 r* A+ E3 r: `- Y2 w6 B
delay_1ms(50); : A, S) _1 C/ n
$ c- D$ p+ }5 d2 l5 p1 n
SPI_TX_command(0xc0);// Vop = B9h效果设置 9BIT
8 a1 q+ x4 _9 p% X. y; N SPI_TX_DAT(0xd8);   //LOW 8BITS
( j9 B6 x* q& T SPI_TX_DAT(0x00);  //HIGH 9BIT3 j. N- h. c) u1 t1 Y

) `3 X1 E, {8 q" Q1 U5 u6 p SPI_TX_command(0xc3);// BIAS = 1/9
$ s7 l2 W% E! D2 x SPI_TX_DAT(0x05);
% i/ z7 d8 @  g' x( m5 L1 R2 T- z
1 ]3 }, o9 [* R- p6 w SPI_TX_command(0xc4);// Booster = x8, f6 N& a6 v0 ]* q/ `" `+ z
SPI_TX_DAT(0x07);
' e6 ]6 p  l! m; a! S) V
3 j2 u1 E& R; |  K2 q( O SPI_TX_command(0xd0);// Enable Analog Circuit1 p& g5 w, c, A
SPI_TX_DAT(0x1d); ; v1 @6 A1 f1 Z& ^; i

9 U0 p5 J$ Q0 F8 W* Q) K+ i8 G SPI_TX_command(0xb5);// N-Line = 0/ v$ _0 C9 b2 x/ s& z2 Y
SPI_TX_DAT(0x00); : W1 U/ ^+ v+ J* ^0 _( O3 L0 x
  : j- r5 r4 ]4 `: b3 H9 ?
SPI_TX_command(0x38);// Monochrome Mode
7 o, ~$ m( ]+ Z; m1 [$ e SPI_TX_command(0x3a);// Enable DDRAM Interface
4 T, `* m+ Q5 {- t SPI_TX_DAT(0x02);
# L7 z% X5 o- r
+ I4 M  g0 G0 r+ q, H2 A SPI_TX_command(0x36);// Scan Direction Setting //
0 m& b7 B4 Q6 v0 c SPI_TX_DAT(0b00000000);   //0b01000000  Display Control从384开始) f. `2 R$ o" \6 L
/ {& t# P* d0 H
SPI_TX_command(0xb0);// Duty Setting! f1 Z3 T9 g- `; Y5 D! [7 i
SPI_TX_DAT(0x81);
( w# m- l" D- n' W
8 h  i5 c& Q+ e4 }- k7 T SPI_TX_command(0x29);// Display ON! k7 F' ^* j/ Y6 i& e
. I, @) k: Z$ b& i- f3 V* p
//____CLS_DISPLAY____清屏
. e; E) y; O5 n- u8 C8 K
发表于 2017-1-16 18:19 | 显示全部楼层
759755401 发表于 2017-1-16 16:58
. B% \( F2 @& Y1 Q; x3 q. |( qvoid init_GPM1306(void); [3 F* o. E( y1 u1 K% P+ O
{# M$ b( p; M5 x
uint8 col,row;

9 _3 J0 u! h( x& t$ ^  i太感谢了!!!8 u* B6 j4 p4 t+ W% @% A
图非常详细,辛苦了!我再试试看!
4 h* {" d$ ^5 a3 A/ G
发表于 2017-1-16 23:42 | 显示全部楼层

3 w7 E3 r' U' s非常感谢,我用逻辑分析仪看了一下,我发现lz给的实例程序我修改到stc后得到的时序是不对的。
5 Z9 f! o1 L9 h: q可是头一次玩液晶屏,不知道如何下手( v1 w. G; G  U" c  A- ~' H* W
低电平那里的20ms是我改的初始化延时地方' D: E2 \' X6 j% v( R+ f1 C4 j
搜狗截图20170116232752.png
# u& x$ R: ^" O7 z4 Z/ q( N3 s0 D 搜狗截图20170116232350.png
' w( w" f% X/ C# r. s 搜狗截图20170116232324.png
8 D! e8 d! A) `  V" F: y0 f) \* Z+ s, Q
附上我的程序 STC15W202S-OLED.rar (55.08 KB, 下载次数: 150)
  U3 j& M( }/ w3 |" G) H! _( l4 Q$ x  Q2 i2 B% Y: N8 v+ K
  1. /* GPM1306.c
    * J! G! n5 k# v" I" U7 M
  2. * Created on: 2016-10-19' y% W9 U6 I- z! d+ b
  3. * ┌─────────────────────────────────────────────┬───────────────┐7 {5 @' @3 c; {
  4. * PIN_NO : 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
    - x9 Z2 k' B+ o) j
  5. * NAME : BK-K BK-A NC SCL SDA A0 RST nCS NC VDD C1 VSS VDD C2 C31 C32 C4' F3 M* Z) V" R
  6. * CONN : GND VCC P1.4 P1.3 P1.2 P1.1 P1.0 VDD │ │VSS │VDD │ │ │ │! i5 J. U# O, ~$ X) ]& H( x
  7. * │ │ │ │ │ │ │ │7 k  e& j1 e! y7 M  G/ k
  8. * │ C1-C5=1uF 25V 0805 ─── │ ─── ─── │ │ ───
    5 s8 p# u$ V. y6 c
  9. * │ 120x160pix ─── │ ─── ─── └─│ │-┘ ───
    0 o* i! f  g  k7 z
  10. * │ ┌──────────┐ │C1 │ │C5 │C2 C3 │C4
    ( X9 S" x8 Y7 y- E
  11. * └────┤ R1=3R3 ├────────────────────────────────────────┴───┴─────┴──────┴────────────────┘
    % y9 t3 L! W  H2 {5 w- {% G; x
  12. * └──────────┘1 Y  _5 {, K# `9 N
  13. *==================================================NOTICE==================================================- R: S  k! l5 ?" d6 B
  14. *这个程序仅供评估,没有任何技术支持。如有疑问,请仔细阅读压缩包中的PDF文件或者联系芯片/模块厂家。" x" r7 N4 H* L8 X/ G8 {" a
  15. *这个模块还有很多功能没有在这个程序中体现出来,具体请参阅压缩包中的PDF文件或者联系芯片/模块厂家。
    0 W* o( m- }0 Q
  16. *推荐使用TI的LaunchPad验证,如果使用别的板子/芯片,请根据具体情况修改移植源文件。6 l7 `# z3 f3 A* {& R) s/ j
  17. **************************************************移植参考**************************************************; v' b" B5 J, ^7 M( M
  18. *使用MSP430系列芯片可以直接使用或者修改一下脚位既可以。注意主频要和 #define Fosc 中定义保持一致。8 `" c- ~5 n$ J% C9 a8 e
  19. *移植至别的芯片请注意初始化IO和修改延时参数,修改脚位并注意void LCDInit(void)中有直接控制引脚的指令,需要一并修改。
    . D9 s4 t5 _- G& G
  20. *祝大家玩的开心。
    ( u% \! ]( l$ r1 `; D3 C
  21. P1OUT |= BIT1; 是将P1OUT倒数第二位被置1
      J) [! \3 p: W  p/ b: P' t7 s
  22. P1OUT&=~ BIT0 是将P1OUT最低位 清 0
    $ d# n. T8 {. ?
  23. #define Fosc 16e6
    3 P6 P, E9 Y  P; n' x! C0 o
  24. #define GPM1306_nCS_CLR P1OUT &=~BIT0//清 0! J, {5 ~# [: U+ `; z6 v+ e3 K  [
  25. #define GPM1306_nCS_SET P1OUT |= BIT0//被置1
    $ B8 [% u  p, G' w
  26. #define GPM1306_RST_CLR P1OUT &=~BIT14 H* z' _. H. Z' ~. b* f! G1 N! j
  27. #define GPM1306_RST_SET P1OUT |= BIT1, N3 m1 J) ?4 @1 @! e
  28. #define GPM1306_A0_CLR P1OUT &=~BIT2
    % w- q5 U6 s0 L+ o
  29. #define GPM1306_A0_SET P1OUT |= BIT2
    : m! j3 b  I$ _7 c
  30. #define GPM1306_SDA_CLR P1OUT &=~BIT3
    ' K& y  I/ c1 I# J7 i. d' M5 ^( u
  31. #define GPM1306_SDA_SET P1OUT |= BIT3
    4 F. O! g) Y1 i, Z$ _
  32. #define GPM1306_SCL_CLR P1OUT &=~BIT4% m5 c& E; z9 H& \; I! A
  33. #define GPM1306_SCL_SET P1OUT |= BIT4& F, ]! d: V  U- `+ f: v
  34. */
    2 S2 J, Y$ A4 X& a8 V
  35. #include "stcdelay.c"
    " K. @$ C. O7 e3 g. g7 ^. s) N
  36. #include "STC15Fxxxx.H"9 Z- I' }; h- N) ?& m* H6 W
  37. /****************延时函数引用**********************/
    / M6 Q8 V5 u0 X
  38. void delay_us(unsigned int us);- p+ N' ^6 m$ N8 [3 X, x
  39. void delay(unsigned int ms);' e5 @$ d- U: ?3 x9 B
  40. /****************延时函数引用end*******************/" |# q  i$ N( E- O- v! X5 p  Q1 `
  41. sbit SCL = P1 ^ 0; //156 E* F0 _# z# S* t* X; }: \+ b, q
  42. sbit SDA = P3 ^ 7; //14
    9 s5 Q* }& p( R; j" q
  43. sbit A0 = P1 ^ 2; //1
    ( D# @4 Y' a' O
  44. sbit RST = P1 ^ 3; //2
    0 h' e7 C& W2 {  V) \* e
  45. sbit CS = P1 ^ 4; //3
    ) l( H  K: P4 f
  46. const unsigned char gImage_bmp1[96] = { /* 0X00,0X01,0XA0,0X00,0X78,0X00, */- W2 |( {1 O% M+ U
  47. /*-- 文字: 非 --*/
    # ~' a3 |1 W2 k& h: c, Q
  48. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    - z" x3 @# t9 I: W, \9 |
  49. 0xF7,0x77,0x77,0x77,0x77,0x00,0xFF,0xFF,0xFF,0x00,0x77,0x77,0x77,0x77,0xF7,0xFF,0 t$ P) D6 o+ r
  50. 0xEF,0xEF,0xEF,0xEF,0xEF,0x00,0xFF,0xFF,0xFF,0x00,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,
    ( ]+ p5 f# @. \: O
  51. 0 E+ g" @! Q# n6 x, J
  52. /*-- 文字: 常 --*/
    0 z' K3 u* G& n- a6 r
  53. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    - Z% P1 r# C2 e+ K8 z5 i
  54. 0xDF,0xE7,0xF7,0x15,0x53,0x57,0x57,0x50,0x57,0x57,0x53,0x15,0xF7,0xD7,0xE7,0xFF,
    ' i1 {8 J5 ~# L+ B  H
  55. 0xFF,0xFF,0xC1,0xFD,0xFD,0xFD,0xFD,0x00,0xFD,0xFD,0xED,0xDD,0xE1,0xFF,0xFF,0xFF,
    " o4 J# G% s* \: r3 P, g7 Q# d. P

  56. / K" H0 g9 o2 S6 Z/ u( w% ?
  57. /*-- 文字: 感 --*/" i6 H  j. X7 z7 S. e; @7 S* l" y: q
  58. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/3 }/ B/ x  d: g3 ^$ m! o
  59. 0xFF,0xFF,0x03,0xFB,0x2B,0xAB,0xAB,0xAB,0x2B,0xFB,0x80,0x7B,0x3A,0xC9,0xFB,0xFF,
    ! D: v/ p: m3 W0 c' p4 Z/ p- ?: n  b
  60. 0x77,0x99,0xFE,0xFF,0x9C,0x7D,0x7D,0x6D,0x54,0x7B,0x7D,0x3E,0xFD,0xDB,0x30,0xFF,( V+ T4 ^) P/ Y# p: p

  61. + x' Q1 S8 s$ _2 f/ s- U
  62. /*-- 文字: 谢 --*/
    ' ]: g: l) E- r. i1 {5 u3 h* y
  63. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/3 [8 G% h4 ]# x0 p

  64. 5 i  o0 l! V; O% w. O) R8 R
  65. };9 W9 p0 Z  b0 N' X( V9 a
  66. void LCDWriteCmd(char cmd)
    1 T& I: K' V5 x2 F: T) a
  67. {- U, Z% o# V' }
  68. unsigned char i ;: u+ @/ m' C: m
  69. CS=0; //使能芯片/ X& z$ O2 K+ l. Q
  70. A0=0;//写命令模式
      \9 o5 N8 H) {5 G
  71. for(i=0;i<8;i++)
    " ~4 f( L, G1 B* i# ?3 P" }
  72. {
    % g8 ^! D7 b- k1 {; B
  73. SCL=0;
    ( l% \$ w, v5 R! m, [
  74. if(cmd&0x80) //先传高位字节,后传低位字节
    ; _  W+ I" z$ L/ G) i
  75. SDA=1;
    + U3 V/ D7 o$ U6 ^
  76. else
    9 q2 }4 _, z' S. N6 e3 C
  77. SDA=0;
    & o' w. L/ K8 U9 `
  78. SCL=1;
    ( p/ d* K/ t' _' k$ @" a
  79. cmd=cmd<<1;4 F  a  B2 t& t7 m/ p
  80. }2 q  y3 P  s) |" M0 H4 G
  81. CS=1;
    & l- y3 T# |9 m- f; H. J+ U
  82. }$ q$ B: Y( E' N3 T, R( m
  83. void LCDWriteData(char cmd)3 ~8 X) H' C# U8 G; {+ b
  84. {
    , e/ M; s1 O$ l; z6 M
  85. unsigned char i ;* X' R7 [1 i: S, k0 D
  86. CS=0; //使能芯片% A- N9 V, p' W( U1 e5 G4 B
  87. A0=1;//写数据模式+ u# {5 v' t0 d
  88. for(i=0;i<8;i++)
    7 i$ }; t+ f/ p, R7 e
  89. {
    + ]# b9 Z( {! M5 Q  u% v: V$ U
  90. SCL=0;
    6 K; q3 x) q+ Y. a% x6 h" Z
  91. if(cmd&0x80) //先传高位字节,后传低位字节
    3 L- u: W- [' c6 z/ }* t
  92. SDA=1;9 p6 u6 d, x2 ?- o9 d
  93. else0 }7 B' X, i2 y  V
  94. SDA=0;' g# C6 b% ]6 k; ?4 @; ?( ?; q  w
  95. SCL=1;' o8 G- |: Q$ M5 t# a4 t3 d: C
  96. cmd=cmd<<1;$ m) s. p7 I: P: L- i
  97. }! C& u, ]  P4 h5 O6 s! k- \
  98. CS=1;
    8 S  F, {5 y* m! J; c: Y1 o  p
  99. }" [' Q' K( h7 |
  100. //设置起始行列
    + i! v, l- H9 {2 q. W! Z- x. }; D1 }
  101. //ys为起始行,xs为起始列, ye为结束行, xe为结束列
    - x& {. _$ D+ [- P3 o3 i
  102. //xe与xs的差值即字的宽度, ye与ys的差值即字的高度/ H( e$ k' ^  I1 r  o1 ?
  103. void LCDSetXY(char xs, char ys, char xe, char ye )( s+ |) x/ N9 z0 c4 j9 c( [
  104. {
    ! {  f: l: F0 K1 i/ @- `9 B1 J
  105. LCDWriteCmd(0x2A); //设置列地址(横坐标)
    * I3 ?0 A: h+ {+ |! |1 {$ c% Z
  106. LCDWriteData(0x00);
    $ C6 n7 J5 Z9 w7 r+ ]- z
  107. LCDWriteData(xs);0 c! Y* S# Y1 c) U7 m6 r
  108. LCDWriteData(0x00);! T5 W4 b5 ]+ C3 C/ a1 q7 E
  109. LCDWriteData(xe);- m3 ?- H; |, B" l; e
  110. LCDWriteCmd(0x2B); //设置行地址(纵坐标). V( v' h, C& h; U
  111. LCDWriteData(0x00);
    7 E" W  m5 J% s) P) d% V9 P
  112. LCDWriteData(ys);) @8 R8 }2 i9 j' c5 ^0 L; b7 P
  113. LCDWriteData(0x00);9 n( b- }3 ~1 A8 k& Y( \' }" M: S
  114. LCDWriteData(ye);
    ; v3 o- G! J: Q, [) [! b
  115. }
      }* u7 a' V( n8 D
  116. //清屏函数
    & \/ P) G0 s; `5 R# H0 A6 w9 Q
  117. void LCD_ClrScreen(unsigned char value)
    1 |- o8 i  c3 @6 H
  118. {* c- E) \% X: R4 \8 D
  119. unsigned char i,j;9 |1 }# j! b- h
  120. const unsigned char tt[]={0x00,0x49,0x92,0xff,};( B) D+ H/ K% i9 R/ A+ h" C
  121. value=value&0x03;
    ( K/ b! ~# s$ T
  122. value=tt[value];
    3 @5 y& w  W+ @" B) J
  123. LCDSetXY(0,0,53,119);
    3 c8 m: R3 g+ x6 q
  124. LCDWriteCmd(0x2C); //向DDRAM写入显示数据% f9 p9 B3 }  Q! u6 v
  125. for(i=0;i<120;i++)9 ^$ ~: ^; x9 {0 a
  126. for(j=0;j<54;j++)
    7 {$ A( E/ A  `
  127. LCDWriteData(value);* W6 [) I! C- ?7 S: u! H4 V- ]) n
  128. P16 =~P16;: O9 @& h' s; s7 S, F+ E
  129. }# ?  e: p% d9 _! S
  130. void GPM1306_DISBMP(const unsigned char *BMP), U0 e: x+ D# C9 d7 e8 o5 O, O. S
  131. {* w8 X2 K0 g/ z2 _% H- ~4 N
  132. unsigned long MCx8x3;
    , o3 H2 ^& d: l
  133. unsigned char LINE_COUNT,COLUNM_COUNT,color,t1;
    ( i9 F! r8 }8 z+ y) \
  134. signed char vaild_bit=8;5 A* W: k6 O( z" X! `7 Z' i  `* K- q. I
  135. ((unsigned char *)&MCx8x3)[2]=*BMP;4 G. O/ a+ K& t( g9 A
  136. BMP++;
    . T+ d2 v* j1 w7 x/ F! s$ Z. T
  137. LCDSetXY(0,0,53,119);
    ; m3 q9 X4 b( n5 L- O; l5 W% {
  138. LCDWriteCmd(0x2C); //向DDRAM写入显示数据* ?) A# {( x) ?# U1 e
  139. for(LINE_COUNT=0;LINE_COUNT<120;LINE_COUNT++)8 \# z& w) l# y6 ^# h4 m8 s# h+ m
  140. {
    + n1 `  T' l1 A4 l6 F' A/ J: G) N
  141. for(COLUNM_COUNT=0;COLUNM_COUNT<53;COLUNM_COUNT++)//160/3=53....1
    8 z' K$ ^8 e1 m$ _- P5 z
  142. {
    4 \* M, B# d% z% j( S
  143. if(vaild_bit<3)
    / V' C- U, \  n! c9 I4 m3 [! C
  144. {
    0 f6 {+ i% s, L7 f, e
  145. MCx8x3=MCx8x3<<vaild_bit;
      }$ ?# |3 G# z- o! V$ ]
  146. ((unsigned char *)&MCx8x3)[2]=*BMP;: [% c7 O* h$ X( r
  147. BMP++;) h* V* c! k4 B" j8 Q  G/ n
  148. MCx8x3=MCx8x3>>vaild_bit;: F4 K% ?3 j: f
  149. vaild_bit=vaild_bit+8;
    # e3 z' V: `& N2 G5 O$ z
  150. }
    3 ~& g) F5 m% J( O% p
  151. color=0;. X# g$ Q, Q0 f, Z2 c" [# D8 q
  152. t1=((unsigned char *)&MCx8x3)[2];  K0 i6 G0 y) y
  153. if((t1&0x80))
    + b7 e6 n$ D% N, m
  154. color=0x03;
    7 f. h0 W- e6 V2 I; w) W/ X
  155. if((t1&0x40))
    " R7 [9 @; R. `3 d$ }5 T7 e% Q3 Z
  156. color=color+0x1c;. l; ^% @  B: P6 m& ~0 p5 e& f- e
  157. if((t1&0x20))5 E  Y5 y" Y- E0 q# @
  158. color=color+0xe0;) j7 E/ {! B# h! T" W4 z4 B
  159. MCx8x3=MCx8x3<<3;7 @- Q8 V3 S9 I# `% v9 |3 ~) q
  160. vaild_bit=vaild_bit-3;
    9 }7 X; c# M; Z; J7 W3 g) G
  161. LCDWriteData(color);
    , w* O4 {) B* z; T( a/ `
  162. }4 J: J7 ], o. k
  163. if(vaild_bit<3)
    8 t- D' D7 `7 `) e+ F4 F; F3 U
  164. {# c2 _5 B  G4 R5 W1 N( K1 R
  165. MCx8x3=MCx8x3<<vaild_bit;
    3 k- w  O4 c2 F' E$ U
  166. ((unsigned char *)&MCx8x3)[2]=*BMP;5 Z* E7 k" ], ~
  167. BMP++;
    ) y. d' o- |2 `5 J2 v
  168. MCx8x3=MCx8x3>>vaild_bit;
    . h" I. m* u! Q( G  h
  169. vaild_bit=vaild_bit+8;
    # J9 i# y. c) g, F3 J
  170. }
    - D( T- R/ [9 T7 O9 y4 I
  171. color=0;+ |# F: w. Q1 ]4 G) |
  172. t1=((unsigned char *)&MCx8x3)[2];: L9 G( Z# v7 `7 R2 R7 X  c
  173. if((t1&0x80))
    : O; s# h* `# \8 F
  174. color=0x03;5 x1 D8 E' M& G4 o$ k* }- U
  175. MCx8x3=MCx8x3<<1;7 f: t! \$ R( \3 D) I: K3 ^( m
  176. vaild_bit=vaild_bit-1;
    5 I( v; s- j' R- M
  177. LCDWriteData(color);
    ) r2 l2 @" F' ]
  178. }( w( U7 t; R+ H; K' z* h3 w+ T
  179. }; y4 g& H3 Y' c4 d
  180. //初始化函数4 T& D9 x- v/ k4 y; N
  181. void LCDInit(void)
    % Q6 T3 P/ O5 @3 H% g; h6 G3 q) P& p
  182. {
    0 M% ?6 }" H2 v( [  R
  183. RST=0;
    + T% d: _3 n; p1 \
  184. delay(20);//Delay_ms(20) //延时20ms
    4 `+ F) w7 A6 O& Q1 x% b3 Y$ e* @
  185. RST=1;  I( r' n) B! J) v' I- C
  186. delay(200);//Delay_ms(200); //延时200ms) s8 r' ~* o. `+ x' o4 @3 Q$ a
  187. LCDWriteCmd(0x01); // soft reset
    5 I4 N5 I4 r# C% S! }
  188. delay(200);//Delay_ms(200); //延时200ms: Y* G, l& T# E
  189. LCDWriteCmd(0x11); //Set power save mode:Sleep out mode
    " @) T; h3 X. S& ^
  190. LCDWriteCmd(0xC0); // Set Vop///
    ( E% r. ^% K; U1 Z, R/ z6 P0 m
  191. LCDWriteData(0xf0); // Set Vop Low 8bit 30//全屏太黑或者太白调整这里9 Q( u! e/ h8 M- Y
  192. LCDWriteData(0x00); // Set Vop 9th bit(Total 9 bits) 01//全屏太黑或者太白调整这里
      w" L9 Z+ E6 ~1 B6 U- [5 x, H7 j
  193. LCDWriteCmd(0xC3); //Set BIAS system* _+ A1 L7 j) S1 U
  194. LCDWriteData(0x04); // 03: BIAS = 1/11 0-51 A5 k9 s6 @! l) k$ {# h
  195. LCDWriteCmd(0xC4); // Set booster level
    + H. G" R" q& c1 c, j6 h7 a" q& k
  196. LCDWriteData(0x07); // 07:x8 Booster6 r( y/ D3 x5 P4 j
  197. LCDWriteCmd(0xD0); // Enable analog circuit
    . q1 z6 _& b' s8 S. d# ?
  198. LCDWriteData(0x1D); // Enable analog circuit
    + P$ |9 F! `& T3 |. a0 t3 }
  199. LCDWriteCmd(0x38); // Set display mode: M=1: Monochrome mode$ ?7 g3 K6 o( D: V3 R: W
  200. LCDWriteCmd(0x3A); //Enable DDRAM interface
    . e- ^* k( H' L8 g5 {( N
  201. LCDWriteData(0x02); //RIF=0: Monochrome mode & 4-level gray scale mode, u- x/ V# p9 k: s( V8 a% {+ I2 R
  202. LCDWriteCmd(0x36); // Display Control& i" m) g  Q; W( d" r3 j& Y' ?
  203. LCDWriteData(0x40); // MY=0: COM0-COM159/MX[1:0]=(0,0):SEG0<-SEG383$ G8 P' M' H  }  k
  204. LCDWriteCmd(0xB0); // Display Duty% A) R2 P3 ^- t; R
  205. LCDWriteData(0x81); //Set display duty DT=0x9Fh(1/160) DT=0x81(1/130)4 l$ m" p6 \9 Z- D: l
  206. LCDWriteCmd(0x20); // Inverse Display:INV=0: Normal display
    8 u, W* @1 M! I# s8 Y' B& Z
  207. LCDWriteCmd(0xf1); //Frame Rate(Monochrome Mode)
    ; L+ N5 G; j- ~9 j# ^$ t
  208. LCDWriteData(0x15);//Frame Rate 92.0Hz
    + \: s  c5 M0 H
  209. LCDWriteData(0x15);  p8 {2 A$ \* f1 ^# ^/ e- a# Y9 G
  210. LCDWriteData(0x15);
    3 i+ E  s& C7 K$ H+ H" t) H
  211. LCDWriteData(0x15);
    " X' @. H! o! w( P9 |7 u, B' `
  212. LCDWriteCmd(0xb1); // First Output COM& x% H% v  V( U6 g. G* l/ w
  213. LCDWriteData(0x00); // Set first output COM FC=00h(Start from COM0)
    0 J) D$ E6 _. w( c2 F
  214. LCDWriteCmd(0x29); //Display ON2 |# e  c4 v  @" E1 F1 a$ l1 N7 m
  215. }
    ! Y' k  j1 L, z! G/ X  J2 g
  216. void main(), m  Z' c0 F: E  ^. j
  217. {
    % A. i8 p8 |% o% b5 R! c( ~
  218. 2 a' z( y# k: c, Y
  219. LCDInit(); //初始化液晶. k* u) R* U  J, E: n& j/ g
  220. while(1)
    - i+ _/ m$ h" u8 W; q6 P6 y  X; [
  221. {
    8 c7 L( Y% s8 ~  Z% r$ F
  222. LCD_ClrScreen(0);
    0 }, M! ^! }. \1 }& c
  223. delay(400);# X0 ~& X: L! ~: I' p0 q% T( _! ~
  224. LCD_ClrScreen(1);, a, u# J6 K$ l
  225. delay(400);
      s% d) b& ~/ q( o, g
  226. LCD_ClrScreen(2);! z+ K$ M, c# J
  227. delay(400);
      \* P1 I/ x9 O& B( F" D% ?
  228. LCD_ClrScreen(3);
    $ g/ V% J, p* n/ r! e" l. w- Z
  229. delay(400);
    # h6 w1 h$ k" S
  230. GPM1306_DISBMP(&gImage_bmp1[0]);
    " f" u9 n& o# ^2 V/ H7 b
  231. delay(400);
    ) L3 _" e; @/ I  l
  232. GPM1306_DISBMP(&gImage_bmp1[0]);
    , m: Z: x. S# n' _
  233. delay(400);
    8 E  F1 v- e; w& M, b& m
  234. GPM1306_DISBMP(&gImage_bmp1[0]);
    9 m4 o3 o( [' S+ D; G0 G5 j8 p
  235. delay(400);
    4 h, {+ Q: w7 P* g. }+ G
  236. }- C! _6 I* \8 j1 J. x1 z
  237. }1 l/ Y( z8 s# W5 N. T( R
复制代码
: M5 E% W  s; g) L$ {2 B- u
麻烦大家帮忙看看,劳烦大家了!谢谢!!!
3 z! y9 n! q9 X& R9 K5 D" V1 O: N( ]# D) a' Z- g1 `( ~
3 S% r' a1 y6 T% C% C

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-3 18:40 , Processed in 0.060291 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表