一乐电子

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

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最后那几页列程就可以的$ C2 _* S- p) G8 F
tyuuty7j.jpg - j9 z: r8 Y0 L, |( e7 }* h
新建位图图像.bmp / Y" Q+ @8 D, L4 \5 X- O8 g
回复

使用道具 举报

发表于 2017-1-13 13:35 | 显示全部楼层
759755401 发表于 2017-1-10 18:42
  M/ Z9 ~9 u# r/ |按照手册ST7586S最后那几页列程就可以的

: N9 K1 c; A! E1 h非常感谢,我再试试!
回复

使用道具 举报

发表于 2017-1-16 15:18 | 显示全部楼层
BaiduShurufa_2017-1-16_15-13-27.bmp 0 }# ]" a( o( ?" u( b+ R
U2是稳压芯片ams1117,输出3.3V
2 g" i8 z1 K& y: w% ?大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?
: d) f6 `' }9 {% W; B$ X今儿又重新做了一个板子,还是点不亮。. H- ?9 N$ h. |* K. [: P, z- s) c
我觉得问题可能有2个,1是硬件不对,2程序延时不对。
' Z" m/ }1 y. Z7 ^$ s- a" v程序中我有一点疑问,是不是我的时序不对呢?程序里面延时程序__delay_cycles(Fosc*0.2);的延时应该是多少毫秒呢?
0 `- j" G+ z' c! T& J. E, z: d
  1. * I1 M4 v8 W! q1 X
  2. <P>__delay_cycles(Fosc*0.2);//Delay_ms(20)   //延时20ms</P>
    ( Z( p  ?+ o, l: }1 H
  3. <P>GPM1306_RST_SET;
    9 N! u! |% y0 o- ?0 h/ ]
  4. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms; b/ u# ?% p  f7 B* Q0 @
  5. LCDWriteCmd(0x01);   // soft reset. a" a6 l/ |4 f0 T& Y5 ]* {9 k; \
  6. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms </P>
复制代码

% o3 ^/ D7 M. z/ N$ V. F% Z2 d
回复

使用道具 举报

 楼主| 发表于 2017-1-16 16:48 | 显示全部楼层
本帖最后由 wangke2010 于 2017-1-16 17:00 编辑 + {8 `$ d. c6 D1 R
davg1 发表于 2017-1-16 15:18
# X6 h% z: R* P7 UU2是稳压芯片ams1117,输出3.3V
' Y5 C! r5 f2 w: w大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?
% b# k/ j: f- i" S+ `今儿又重新做了 ...Fosc就是时钟频率,x0.2就是0.2秒7 |$ y7 P% {- O) I
有条件的话加上逻辑分析仪看看时序
/ k$ I* u% C# R5 |- w+ j$ [. y如果还是不行的话,楼上那个晒图额朋友可以请教,他已经移植到别的平台上面了。
7 u, C3 C% C1 ^1 V: S% \. b最后,图片稍微有点不合适,那个电阻是给背光LED限流的,具体看下图
BaiduShurufa_2017-1-16_15-13-27.bmp
. Y2 D+ }' u. w
; R# W6 F  o3 ?8 j: T. ~2 X$ N6 R- M
回复

使用道具 举报

发表于 2017-1-16 16:58 | 显示全部楼层
无标题.bmp ; O' D$ p# P: S& s- Z, a. m
5 o/ Z$ c; q( C# I
void init_GPM1306(void)
. k/ V( \$ s, l{
+ C% G* ^0 x* j( s# T) S uint8 col,row;
$ q7 Z0 O. Z6 E3 Q' a9 B. n delay_1ms(5); 8 Q8 W! O0 X! x
LCM13060_RST = 0;
; y% S$ m7 E' Y7 _ delay_1ms(200);4 }! P8 q& i+ m; u9 h9 n
LCM13060_RST = 1;) y$ s# k6 \( C! X5 ]2 Q' r) }
delay_1ms(200);
+ A3 _8 J9 V( ^, J; ]2 J //SPI_TX_command(0x01);//  soft reset9 l+ d2 W4 g  d
//delay_1ms(200);
- C" B! n$ }6 ^# S5 Z, l+ V9 v
4 @7 k' _: {: C$ T
# `& E% X8 u/ s( `. H SPI_TX_command(0xD7);// Disable Auto Read
2 q! j6 v) g+ \( U7 L4 } SPI_TX_DAT(0x9F);  
6 ?% v* o8 P$ Z5 ?
6 E5 `' w# I9 A+ ] SPI_TX_command(0xe0);// Enable OTP Read % z8 Y$ w/ L4 |
SPI_TX_DAT(0x00);  
$ Q: W2 ^! p3 y0 F" h delay_1ms(10);6 l9 K  D7 C) @+ Y1 y4 |9 @
. @2 z9 M7 h; A) ]- X0 q) \5 P
SPI_TX_command(0xe3);// // OTP Up-Load
, O& g2 F% v3 | delay_1ms(20);
# U: z% U3 }- p( e" ^ : e0 X: u9 k* V2 m  ]
SPI_TX_command(0xe1); // OTP Control Out! |, [7 x$ g* }- Y* m6 d, x. ?; B
SPI_TX_command(0x11);// Sleep Out
3 g2 n" J4 g4 L! J6 [4 k1 C+ i* Y SPI_TX_command(0x28);// Display OFF
! A' `0 J: F" P6 ] delay_1ms(50);
' h  W5 s/ X5 b6 Z2 u 0 w4 S% l' O' E4 O4 P
SPI_TX_command(0xc0);// Vop = B9h效果设置 9BIT
& u7 o2 U1 p% B  h; m% H% G0 ? SPI_TX_DAT(0xd8);   //LOW 8BITS
. k2 l3 ~% d+ D; P2 z% M" c SPI_TX_DAT(0x00);  //HIGH 9BIT
7 j5 Q/ ~: |' E2 o
( R% w- Z( n$ t9 [" D* D+ l( ` SPI_TX_command(0xc3);// BIAS = 1/9
" u- M  f/ d3 t# Q5 b4 m SPI_TX_DAT(0x05);/ n; G2 L! x1 D' ?

. t5 ~$ j1 @% L$ i1 G/ @7 I; E SPI_TX_command(0xc4);// Booster = x87 V# G+ M9 B3 B
SPI_TX_DAT(0x07);  K7 ~5 i% ?  N' t. l" X( j
4 A3 N0 W+ O' `- T( P  L% F8 M: F) U1 Z
SPI_TX_command(0xd0);// Enable Analog Circuit
3 N6 n# w& Q: a( J$ ?- S SPI_TX_DAT(0x1d); 4 I0 h9 _6 M# A. `

6 y3 M* ~5 d  k5 m SPI_TX_command(0xb5);// N-Line = 0
. a4 l" j" e3 T* [% o  {; o, o SPI_TX_DAT(0x00);
# r2 S0 L- `/ M# l% A  
. N. _1 a, w" f# ~9 a. t" \ SPI_TX_command(0x38);// Monochrome Mode" b) {, k6 s( w$ q
SPI_TX_command(0x3a);// Enable DDRAM Interface1 _* _9 G& j2 O5 X
SPI_TX_DAT(0x02); * I, X# m2 U/ S1 G% @" m

4 x3 W$ [7 d  W1 @) f( P; F# J SPI_TX_command(0x36);// Scan Direction Setting //
  z1 {( d7 N) ?) p  f  `9 R SPI_TX_DAT(0b00000000);   //0b01000000  Display Control从384开始
* v2 ?- A/ B6 `
% Y" n; w. {2 x SPI_TX_command(0xb0);// Duty Setting  q/ I; Y  }) _: M
SPI_TX_DAT(0x81);
4 x/ Y0 Z7 ?6 i4 H5 e; H3 l ) L. V3 x1 ]4 {! v1 z( n
SPI_TX_command(0x29);// Display ON, O' u& U, X. _& _2 t+ y) O9 W

; U# S7 S' a3 f* B' |' y //____CLS_DISPLAY____清屏
# p6 ~" l, `& C$ B. Z- t( ^
回复

使用道具 举报

发表于 2017-1-16 18:19 | 显示全部楼层
759755401 发表于 2017-1-16 16:58
4 q  [1 J2 @( f4 t/ u9 s6 jvoid init_GPM1306(void)
% T  ^. ?7 D; H% t5 b" m. U{" u& w/ y7 \7 ]/ c8 S% D: L
uint8 col,row;
7 M0 L3 T8 ]1 T  m4 B
太感谢了!!!
- |# s5 v5 C* J  ^# s& ~图非常详细,辛苦了!我再试试看!
5 b4 Y) V4 E& E+ g7 G
回复

使用道具 举报

发表于 2017-1-16 23:42 | 显示全部楼层
wangke2010 发表于 2017-1-16 16:48
7 l6 }1 Z) m) A, u9 L9 Y
/ p7 S& }! K" `. C0 h; O% x8 ?
非常感谢,我用逻辑分析仪看了一下,我发现lz给的实例程序我修改到stc后得到的时序是不对的。# c0 h- L# r) Q
可是头一次玩液晶屏,不知道如何下手1 a# O7 g) Z% z0 X. [+ o+ q
低电平那里的20ms是我改的初始化延时地方( q$ |4 B: X, ~/ k' Z$ s
搜狗截图20170116232752.png ' B) N/ `9 \! n( a8 j
搜狗截图20170116232350.png
/ ~( k# G3 A7 _' ^' i! L, h 搜狗截图20170116232324.png * |# R4 O$ ]5 E; R! a

% Q2 v# B; Y. m附上我的程序 STC15W202S-OLED.rar (55.08 KB, 下载次数: 150)
) z! l! E" e( _5 q4 A+ Z* ?
" J' N" t! v: \- X; Y( Q3 e
  1. /* GPM1306.c
    ; T! e  p! ?6 E$ Y2 g( u! w8 D
  2. * Created on: 2016-10-19# A" |6 M9 I/ \/ q
  3. * ┌─────────────────────────────────────────────┬───────────────┐1 I$ c4 ?. p9 k
  4. * PIN_NO : 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 19 K# t2 f! x4 l
  5. * NAME : BK-K BK-A NC SCL SDA A0 RST nCS NC VDD C1 VSS VDD C2 C31 C32 C4
    * D0 n6 v6 Y  E1 O' u. a8 H3 t  {
  6. * CONN : GND VCC P1.4 P1.3 P1.2 P1.1 P1.0 VDD │ │VSS │VDD │ │ │ │
    $ E3 F- f4 ?5 `) A8 @# C/ ~
  7. * │ │ │ │ │ │ │ │! V5 b9 ~1 i# E) I
  8. * │ C1-C5=1uF 25V 0805 ─── │ ─── ─── │ │ ───- v  h( C) U/ ^! r. L
  9. * │ 120x160pix ─── │ ─── ─── └─│ │-┘ ───
    ) o( S( i4 W0 ]! j9 l& a
  10. * │ ┌──────────┐ │C1 │ │C5 │C2 C3 │C4
    6 M6 f9 ]' r5 j3 W: O& J
  11. * └────┤ R1=3R3 ├────────────────────────────────────────┴───┴─────┴──────┴────────────────┘2 k, x, e5 `0 H2 a" g
  12. * └──────────┘2 r4 J" S  o: |) P( k: D
  13. *==================================================NOTICE==================================================
    % x; O) S1 F7 Z) w, n
  14. *这个程序仅供评估,没有任何技术支持。如有疑问,请仔细阅读压缩包中的PDF文件或者联系芯片/模块厂家。& P7 k, @7 p8 w! w8 @; T) C3 P
  15. *这个模块还有很多功能没有在这个程序中体现出来,具体请参阅压缩包中的PDF文件或者联系芯片/模块厂家。( h8 I0 o* Z% s3 E0 d) m* ~) }9 W* m9 p
  16. *推荐使用TI的LaunchPad验证,如果使用别的板子/芯片,请根据具体情况修改移植源文件。
    * ^0 n; C' G6 l: g' A  X: |
  17. **************************************************移植参考**************************************************0 a# }8 Q, H: _* U' O
  18. *使用MSP430系列芯片可以直接使用或者修改一下脚位既可以。注意主频要和 #define Fosc 中定义保持一致。
      U- E, @( q; A  S/ _+ n
  19. *移植至别的芯片请注意初始化IO和修改延时参数,修改脚位并注意void LCDInit(void)中有直接控制引脚的指令,需要一并修改。7 V9 S; E$ a- Q5 k
  20. *祝大家玩的开心。4 C3 R( F  g1 `0 O$ k
  21. P1OUT |= BIT1; 是将P1OUT倒数第二位被置1& A1 m. U( y/ I2 B
  22. P1OUT&=~ BIT0 是将P1OUT最低位 清 0- U5 X+ s! a1 c: a
  23. #define Fosc 16e6- L; ^6 c, [8 K1 o" C0 H
  24. #define GPM1306_nCS_CLR P1OUT &=~BIT0//清 0
    1 v5 v) Z' E+ Q8 S4 y
  25. #define GPM1306_nCS_SET P1OUT |= BIT0//被置1' F+ t$ O5 {0 T3 f5 y
  26. #define GPM1306_RST_CLR P1OUT &=~BIT1
    $ ~) o6 R( W0 v4 a6 {$ W
  27. #define GPM1306_RST_SET P1OUT |= BIT17 b; I3 n9 ]2 q9 a! z1 f
  28. #define GPM1306_A0_CLR P1OUT &=~BIT2
    . e8 g6 `  i$ S# B0 y
  29. #define GPM1306_A0_SET P1OUT |= BIT2
    % d, s2 B6 {1 |. B1 _5 I  p# e
  30. #define GPM1306_SDA_CLR P1OUT &=~BIT3+ z" E; P( k" l4 E# t( G
  31. #define GPM1306_SDA_SET P1OUT |= BIT3
      l5 s5 S3 K7 U& c$ N% Y
  32. #define GPM1306_SCL_CLR P1OUT &=~BIT4( H8 f3 b" q2 l# f# y
  33. #define GPM1306_SCL_SET P1OUT |= BIT4$ }! k9 [( c$ O: O7 f$ }5 {
  34. */" c: L  p. I  c+ J+ G8 t
  35. #include "stcdelay.c"
    9 r6 T& m5 g; }) e* V1 T; P
  36. #include "STC15Fxxxx.H"
    + {1 m1 R0 ~, ~
  37. /****************延时函数引用**********************/% @, I$ M- w5 d. E1 a5 B" r. |
  38. void delay_us(unsigned int us);" f  h/ I0 L) e0 f9 i
  39. void delay(unsigned int ms);
      |8 y7 D- @: {  M# ~
  40. /****************延时函数引用end*******************/% I, X0 L5 D3 C6 B% O! V
  41. sbit SCL = P1 ^ 0; //15
    1 L! ?: H6 ]9 i
  42. sbit SDA = P3 ^ 7; //14- L: x/ H; c( \, B
  43. sbit A0 = P1 ^ 2; //1% U4 n: _5 A! k+ O
  44. sbit RST = P1 ^ 3; //24 e; g" J" f3 {* v* M& J5 H
  45. sbit CS = P1 ^ 4; //3
    " B( W% @$ H4 K3 D
  46. const unsigned char gImage_bmp1[96] = { /* 0X00,0X01,0XA0,0X00,0X78,0X00, */. @5 n+ W  c9 F
  47. /*-- 文字: 非 --*/
    $ X) o0 p6 [, \" w
  48. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    5 ?) s0 h* w" I7 L
  49. 0xF7,0x77,0x77,0x77,0x77,0x00,0xFF,0xFF,0xFF,0x00,0x77,0x77,0x77,0x77,0xF7,0xFF,1 g2 z1 {4 O; {  q' F7 }
  50. 0xEF,0xEF,0xEF,0xEF,0xEF,0x00,0xFF,0xFF,0xFF,0x00,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,
    8 N- t! q3 x8 F' X$ `

  51. 9 T6 P! k$ n* {- p, d$ b
  52. /*-- 文字: 常 --*/
      X! x  j- K9 k9 H. G! ~1 b8 v  {
  53. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    - a2 Q3 B/ S9 Y. N" \
  54. 0xDF,0xE7,0xF7,0x15,0x53,0x57,0x57,0x50,0x57,0x57,0x53,0x15,0xF7,0xD7,0xE7,0xFF,
    * d9 F) w% ?9 H+ l7 c7 Z& q, O+ q5 j
  55. 0xFF,0xFF,0xC1,0xFD,0xFD,0xFD,0xFD,0x00,0xFD,0xFD,0xED,0xDD,0xE1,0xFF,0xFF,0xFF,
    3 T/ J& o( |& ]' \
  56. ) A6 k' i- B* D+ ?
  57. /*-- 文字: 感 --*/
    ; i6 `( s3 Y4 i, j* [, O
  58. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/+ I4 V' x* s8 f* `8 K
  59. 0xFF,0xFF,0x03,0xFB,0x2B,0xAB,0xAB,0xAB,0x2B,0xFB,0x80,0x7B,0x3A,0xC9,0xFB,0xFF,& m1 D* ]0 O$ m& I5 ]) J
  60. 0x77,0x99,0xFE,0xFF,0x9C,0x7D,0x7D,0x6D,0x54,0x7B,0x7D,0x3E,0xFD,0xDB,0x30,0xFF,
    * y$ Q. d8 d3 p5 l* f0 I0 \

  61. 7 B1 J! X% B9 Z6 Q* \4 C
  62. /*-- 文字: 谢 --*/! H0 d4 a$ }( M0 E( W( t
  63. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    # o! A" U) j+ x% M: u
  64. & ?8 U! F( S' E2 ]( i6 V& v
  65. };" |, u2 ~, J. C6 _) s, v, L
  66. void LCDWriteCmd(char cmd): k4 [( R) q# j/ v: t2 z/ Q
  67. {) S$ [8 i: o+ Y9 I7 x7 c/ V
  68. unsigned char i ;
    1 q; G0 ]9 r% f. ^6 N* U8 `# a
  69. CS=0; //使能芯片1 k0 N, M# t" h; H* z
  70. A0=0;//写命令模式' E* y! S' l- L* s: @4 u- s
  71. for(i=0;i<8;i++)# x; ]4 B/ {. y% ?
  72. {& j% O8 x8 ~+ {! a
  73. SCL=0;
    + e5 y2 {; [# C$ N( |+ |
  74. if(cmd&0x80) //先传高位字节,后传低位字节
    4 ]3 q  j4 @" o2 ~
  75. SDA=1;
    + n. h9 ~9 s& o- N
  76. else# Z( |" p$ |3 J* k1 `6 }, g! \
  77. SDA=0;, o+ n# Y+ I$ J
  78. SCL=1;
    7 A- |* h/ ?/ J1 @/ q
  79. cmd=cmd<<1;
    1 N! a6 V# I$ b' q( X) U2 I! ~5 i
  80. }. m/ u5 I7 p, W: T5 p
  81. CS=1;7 ^- v. V0 x" P( ~) J
  82. }; u- ~  N( ?# @4 Z# V$ N
  83. void LCDWriteData(char cmd)
    * I4 j: v* O' v
  84. {
    - z( N& o$ R: i, |" X
  85. unsigned char i ;# ?5 B' T1 e6 G, {- Z- g* [/ G
  86. CS=0; //使能芯片  s# t  i1 X$ r$ E1 M% @
  87. A0=1;//写数据模式9 E. o5 K; f. g6 T" N1 r/ Z( w- D4 w
  88. for(i=0;i<8;i++)  x" c3 [- w! B( i% T
  89. {
    0 i4 @! ^! o' E& {
  90. SCL=0;  h1 f1 w: J1 A4 l5 p0 l
  91. if(cmd&0x80) //先传高位字节,后传低位字节
    : J0 E7 b! W9 r3 n
  92. SDA=1;
    5 w7 J0 |; s0 L, N$ @  `
  93. else
    9 K! b( _( @; r$ k$ a# `/ u1 v" \
  94. SDA=0;, [/ e( O1 s7 W' D- S
  95. SCL=1;* h' |, V: s' n& _1 r4 u
  96. cmd=cmd<<1;* r$ O* v0 R  u0 y6 L# |
  97. }" L) G7 y  g" P7 [
  98. CS=1;6 J$ ^: W" q1 `5 [. e# _
  99. }5 I" l9 `" C2 z* \7 o
  100. //设置起始行列
      Z/ w! J+ D& B+ W! S' P- g
  101. //ys为起始行,xs为起始列, ye为结束行, xe为结束列
    1 ?; t9 ~( `8 t& E' y- o1 v
  102. //xe与xs的差值即字的宽度, ye与ys的差值即字的高度
    ' U7 G. p4 r" [) d8 l
  103. void LCDSetXY(char xs, char ys, char xe, char ye ): L' G! ?1 s3 W: ^& X
  104. {
    ! N. V" _: p/ g- o8 x" k8 H" Y: q
  105. LCDWriteCmd(0x2A); //设置列地址(横坐标)
    ( |/ [; y7 z% X, E# Y
  106. LCDWriteData(0x00);
    5 @  ]# x) N3 H$ w- |/ w
  107. LCDWriteData(xs);
    $ v% T4 B) F+ W% H# h
  108. LCDWriteData(0x00);
    ! U. D1 i! u$ S' |
  109. LCDWriteData(xe);/ _4 J" Y1 T, y2 L. a8 P0 x
  110. LCDWriteCmd(0x2B); //设置行地址(纵坐标)
    7 _1 j" @, C# X9 C2 }2 j; t% _
  111. LCDWriteData(0x00);
    & {% C/ o% k4 \" w
  112. LCDWriteData(ys);
    ; }0 a3 H! G, B+ S9 W7 a
  113. LCDWriteData(0x00);
    7 c, _/ j" F8 o" F% x3 y' ]% ]" c
  114. LCDWriteData(ye);$ p6 H8 O5 x. U" N
  115. }7 z" f1 a  |4 h
  116. //清屏函数
    / ^; t8 ?* i5 p" L9 E- k% g! k0 S) u
  117. void LCD_ClrScreen(unsigned char value)
    + W5 w0 \' n& b- V0 x( h  m
  118. {! |$ U% z4 N  }9 N
  119. unsigned char i,j;1 d5 }" }, d  M. s4 S! `  s3 K! M
  120. const unsigned char tt[]={0x00,0x49,0x92,0xff,};
    9 S% D( W6 i7 ^" t- W: F
  121. value=value&0x03;
    3 P8 O+ ?) P6 n9 h6 I1 f- v6 y  q
  122. value=tt[value];" f- c* ^( ]2 G2 f
  123. LCDSetXY(0,0,53,119);; E% x' w! i3 w' V/ ]! h
  124. LCDWriteCmd(0x2C); //向DDRAM写入显示数据( l9 B7 C9 G5 X8 N6 @. ?- k5 y
  125. for(i=0;i<120;i++)4 @& |4 s7 B/ }) N
  126. for(j=0;j<54;j++)
    ) b2 N- q4 Y+ f; c
  127. LCDWriteData(value);
    $ m; P) `' T# e$ }
  128. P16 =~P16;9 f8 f* P  [. c5 k; Q( W
  129. }
    - I  g& `- Q& O# O$ ~
  130. void GPM1306_DISBMP(const unsigned char *BMP)
    . i: F2 Z- V$ I  U/ h- v! g
  131. {! e7 C2 A8 A5 @$ b, r2 M( Y+ \
  132. unsigned long MCx8x3;' V7 u* ~4 T( G: C
  133. unsigned char LINE_COUNT,COLUNM_COUNT,color,t1;: r" ~0 W: b% a) t) z* i# a0 K
  134. signed char vaild_bit=8;
    / Y+ O0 R% k6 O* {, B) o% ~
  135. ((unsigned char *)&MCx8x3)[2]=*BMP;2 K+ T! e0 ^8 i" l0 J
  136. BMP++;
    ( f8 m5 I7 r# \( x) h3 e
  137. LCDSetXY(0,0,53,119);
    & G, j' x1 R, C( c4 Q& x/ {
  138. LCDWriteCmd(0x2C); //向DDRAM写入显示数据
    . `( a9 y, A; Z, B( A
  139. for(LINE_COUNT=0;LINE_COUNT<120;LINE_COUNT++), O$ D3 _9 r0 Y! r+ Q
  140. {# u5 u) ~8 ]! a7 C( X5 R
  141. for(COLUNM_COUNT=0;COLUNM_COUNT<53;COLUNM_COUNT++)//160/3=53....19 _$ {+ P! H- k+ o. V1 {
  142. {/ b1 P3 c  L2 ]  l- k
  143. if(vaild_bit<3)/ G/ o8 \; u! a
  144. {
    " z  ?7 w- u0 C  R. a6 b7 f  _
  145. MCx8x3=MCx8x3<<vaild_bit;& {' `( f, \2 I' [( x6 m; H, b0 @7 Z
  146. ((unsigned char *)&MCx8x3)[2]=*BMP;
    3 R& l5 q5 |" T0 G$ q$ U
  147. BMP++;
    2 H4 u9 r: q) P& z1 y' \
  148. MCx8x3=MCx8x3>>vaild_bit;/ c9 x8 y1 L$ T& C  |) S1 }% d7 U
  149. vaild_bit=vaild_bit+8;
    ( @& p4 _; y! Z5 I" G
  150. }
    ' I, ?+ N5 H/ L, S6 m# o" |
  151. color=0;
    9 @' u' T. l- X/ Y9 |3 l
  152. t1=((unsigned char *)&MCx8x3)[2];
    3 \& N$ R6 a7 z/ R7 P5 L' L% P8 L
  153. if((t1&0x80))
    7 p7 E, @8 H9 s5 t# G: D
  154. color=0x03;8 c5 I! E) O. i) O: T
  155. if((t1&0x40))/ J2 e8 t. t' c7 _4 |( u3 T
  156. color=color+0x1c;! f# @* v8 K* W
  157. if((t1&0x20))
    7 d5 x7 W' j# M, e9 ~
  158. color=color+0xe0;, s" c0 {. h$ y/ m4 b% `( f* V: K
  159. MCx8x3=MCx8x3<<3;
      ]2 ]6 `0 ]- h6 U
  160. vaild_bit=vaild_bit-3;5 b# [2 P1 z1 L# S& E: `+ B
  161. LCDWriteData(color);
    . G" M. {, m+ @; @8 `1 t  {+ E
  162. }
    3 W$ V( i. d5 x
  163. if(vaild_bit<3)
    ; P& K- P8 U: S8 a+ Q5 ^
  164. {
    8 b: l4 v. l  x1 f: p
  165. MCx8x3=MCx8x3<<vaild_bit;  J: n3 U, [7 P5 B( `2 P" v& b
  166. ((unsigned char *)&MCx8x3)[2]=*BMP;
    # E1 W( z2 l$ s1 {, R
  167. BMP++;
    3 C7 O, O7 N( K( j: {
  168. MCx8x3=MCx8x3>>vaild_bit;
    ) p4 R( L/ ]4 ]! l+ d
  169. vaild_bit=vaild_bit+8;) s( K( S2 X8 a4 S" }( R6 d* ^. a
  170. }& M. V0 V2 D2 ?6 P  K- j& d
  171. color=0;# ]3 F, A4 o7 ~7 T5 j5 W: G/ t: d
  172. t1=((unsigned char *)&MCx8x3)[2];- ~& V" o3 e- c! B" Q5 W* V7 q/ [) Z) R0 T
  173. if((t1&0x80)); X6 O& H( Y9 P( e# d# e
  174. color=0x03;/ {* \' K" W0 J9 g/ R
  175. MCx8x3=MCx8x3<<1;
    : D' n  e& Y" V" L
  176. vaild_bit=vaild_bit-1;0 q/ R$ V4 f5 m
  177. LCDWriteData(color);" S# t" _. W2 }6 c) j  L1 K. S
  178. }
    : U- z2 s$ ]; c& b
  179. }: q- M. W9 b  [% W0 u0 {+ d4 A0 A1 g
  180. //初始化函数
      w! ~- i  v& W- i
  181. void LCDInit(void)
    , K  T% Q% ?0 H& f  a
  182. {
    ! }9 J- }9 x8 j
  183. RST=0;
    - L* W0 {( H7 e$ ~/ c2 h- r1 m
  184. delay(20);//Delay_ms(20) //延时20ms
    2 f: Y/ V1 Y/ t- z
  185. RST=1;# B, _. P7 x1 U6 W
  186. delay(200);//Delay_ms(200); //延时200ms
    : i0 T( `% B: k( Q9 X6 @  ?, d
  187. LCDWriteCmd(0x01); // soft reset% |% ]* _% d5 Z3 z. E
  188. delay(200);//Delay_ms(200); //延时200ms
    / Z9 b: X' ]6 |) _9 E' a
  189. LCDWriteCmd(0x11); //Set power save mode:Sleep out mode
    8 K& A9 O8 n* C' }) @
  190. LCDWriteCmd(0xC0); // Set Vop///
      T$ a4 s+ m3 p
  191. LCDWriteData(0xf0); // Set Vop Low 8bit 30//全屏太黑或者太白调整这里
    7 u7 m2 b1 D- l
  192. LCDWriteData(0x00); // Set Vop 9th bit(Total 9 bits) 01//全屏太黑或者太白调整这里
    ) Y; S  m/ }1 C, |8 c% R4 ?& _
  193. LCDWriteCmd(0xC3); //Set BIAS system' p( r7 t( R) ?- S6 E
  194. LCDWriteData(0x04); // 03: BIAS = 1/11 0-50 I" u5 l6 @2 ]- s6 |
  195. LCDWriteCmd(0xC4); // Set booster level& O  u( p4 L/ z6 s- R( H/ ~
  196. LCDWriteData(0x07); // 07:x8 Booster
    ! X( r% a; o3 f3 I# \3 u6 \
  197. LCDWriteCmd(0xD0); // Enable analog circuit  ~- t; A2 A& J3 K+ I5 ^8 X' }
  198. LCDWriteData(0x1D); // Enable analog circuit
    + z3 S& H8 f8 B5 N4 g
  199. LCDWriteCmd(0x38); // Set display mode: M=1: Monochrome mode& B; `) D4 D; L) S" Y* A- S
  200. LCDWriteCmd(0x3A); //Enable DDRAM interface7 ]( ~) }2 D) y
  201. LCDWriteData(0x02); //RIF=0: Monochrome mode & 4-level gray scale mode
    9 N0 s: A7 S6 l0 X: g
  202. LCDWriteCmd(0x36); // Display Control2 o1 V! V: ?) I4 @
  203. LCDWriteData(0x40); // MY=0: COM0-COM159/MX[1:0]=(0,0):SEG0<-SEG383+ J: x. z5 x( B+ M
  204. LCDWriteCmd(0xB0); // Display Duty
    $ t( E" t+ Z3 ?- z& T
  205. LCDWriteData(0x81); //Set display duty DT=0x9Fh(1/160) DT=0x81(1/130)# k3 k0 k& \& N& a1 Z
  206. LCDWriteCmd(0x20); // Inverse Display:INV=0: Normal display4 x) ]/ |( B( Q/ X
  207. LCDWriteCmd(0xf1); //Frame Rate(Monochrome Mode)5 Q2 M+ i. _! w& k  S! ^5 d
  208. LCDWriteData(0x15);//Frame Rate 92.0Hz  v# ^: Q* E3 R8 {
  209. LCDWriteData(0x15);
      k& }# B) f, r8 i$ d
  210. LCDWriteData(0x15);4 _5 r6 Y1 c3 H& O
  211. LCDWriteData(0x15);) a( g5 Z, A3 d; X! I
  212. LCDWriteCmd(0xb1); // First Output COM
      F* D) r7 r* [& T, I3 V
  213. LCDWriteData(0x00); // Set first output COM FC=00h(Start from COM0)
    + {0 h/ l  G! m4 @
  214. LCDWriteCmd(0x29); //Display ON
    7 Z( ~  X5 [/ e% y4 Z  c; M
  215. }
    ! S. S9 e! ?$ {2 l) k
  216. void main()
    ( e) s6 L( Q+ w: W
  217. {
    7 U& q! Q: @: b2 M5 H3 q+ X5 `
  218.   F. R0 A/ H6 h3 U5 x# J
  219. LCDInit(); //初始化液晶& T: {+ t2 V( {2 M. \# F
  220. while(1)
    7 h) N, F+ e! s: R- H
  221. {
    & M" G: k$ \; Y6 E: I0 P; s2 g
  222. LCD_ClrScreen(0);
    * l2 f8 P8 K0 ~/ x4 V4 J8 _
  223. delay(400);( P, e* C7 @( {* N2 T
  224. LCD_ClrScreen(1);" ]8 X  {4 H; t! k" h: |
  225. delay(400);
    * T% b3 e0 J5 \- s4 p
  226. LCD_ClrScreen(2);) E5 Y5 A+ \" Y; a- \8 ~4 o8 l
  227. delay(400);" E2 _: B/ J" ~# K- p3 z
  228. LCD_ClrScreen(3);
    1 v7 ^& P8 g4 N
  229. delay(400);
    1 w& R0 k& g" E! {$ g  D' f
  230. GPM1306_DISBMP(&gImage_bmp1[0]);. e' L9 f8 D0 q4 n7 c. B! p$ C
  231. delay(400);( x- o5 N4 D, q! E: k- g% I( n
  232. GPM1306_DISBMP(&gImage_bmp1[0]);8 d9 V" E# J! C6 S% \
  233. delay(400);- P3 X, r" F4 v% r
  234. GPM1306_DISBMP(&gImage_bmp1[0]);1 p7 C4 g7 M. d5 J/ e
  235. delay(400);
    . q) a( v% `$ l9 A3 k' j
  236. }
    ! @& G0 O, B  o8 ?
  237. }
    ) _6 b( K; S3 x* c  u$ a! |! c, F  {
复制代码
. f7 e9 k7 @8 i- P" H
麻烦大家帮忙看看,劳烦大家了!谢谢!!!) S, R: n) w  v2 W( \
6 N) t' L9 ~7 i! x) {8 V( v

. k# v( J+ a* h1 a( t" `$ Y
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-7-13 09:10 , Processed in 0.038574 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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