一乐电子

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

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最后那几页列程就可以的
; J4 K7 y! y7 T. U5 x2 ` tyuuty7j.jpg
; h3 y1 V& Q2 w& d 新建位图图像.bmp 4 O- }/ w" b8 b$ G5 I
回复

使用道具 举报

发表于 2017-1-13 13:35 | 显示全部楼层
759755401 发表于 2017-1-10 18:42
. |) d0 Y3 a  W1 L按照手册ST7586S最后那几页列程就可以的

7 Q  c  k: X9 z2 p8 Y/ q非常感谢,我再试试!
回复

使用道具 举报

发表于 2017-1-16 15:18 | 显示全部楼层
BaiduShurufa_2017-1-16_15-13-27.bmp + R7 i$ O0 S8 \: P1 v6 O$ y6 Y
U2是稳压芯片ams1117,输出3.3V
% z1 t, I5 t' ^; z/ o大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?
/ Q4 W! h) S* s) v8 }$ h3 p今儿又重新做了一个板子,还是点不亮。
1 M7 J1 G. e+ M! o: g2 y  r我觉得问题可能有2个,1是硬件不对,2程序延时不对。5 i' S0 t9 N- K) t3 r- o
程序中我有一点疑问,是不是我的时序不对呢?程序里面延时程序__delay_cycles(Fosc*0.2);的延时应该是多少毫秒呢?: @: Y0 y4 k8 x, b$ \, ^1 N
  1. - K' w* a0 }5 _; P- P4 i
  2. <P>__delay_cycles(Fosc*0.2);//Delay_ms(20)   //延时20ms</P>
    # f( R- h0 B% s" B. g* }( n
  3. <P>GPM1306_RST_SET;
    1 h! G5 C4 r( k; s
  4. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms
    : y% `! A* L7 e% T! [
  5. LCDWriteCmd(0x01);   // soft reset& l; a6 R7 q6 W7 |$ i
  6. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms </P>
复制代码
( u) B3 Q* ]! C6 _
回复

使用道具 举报

 楼主| 发表于 2017-1-16 16:48 | 显示全部楼层
本帖最后由 wangke2010 于 2017-1-16 17:00 编辑 ) g- `; C, t5 @. V' N( Q! }) @
davg1 发表于 2017-1-16 15:18
8 p0 S5 `8 |3 z1 ?5 pU2是稳压芯片ams1117,输出3.3V
1 l% @4 l5 V) [大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?; v5 S& Z( n# E$ [3 }* X+ @. e& l
今儿又重新做了 ...Fosc就是时钟频率,x0.2就是0.2秒
4 p; b/ N$ {! s) X有条件的话加上逻辑分析仪看看时序3 Q+ d/ I' k. W1 W# O' N; W
如果还是不行的话,楼上那个晒图额朋友可以请教,他已经移植到别的平台上面了。% o& y/ j  ~$ K; z* U* q  z
最后,图片稍微有点不合适,那个电阻是给背光LED限流的,具体看下图
BaiduShurufa_2017-1-16_15-13-27.bmp $ z" X' O% T4 ?, h2 t) {) i. o
( F+ e- _; T  i/ X( g, ^

/ E1 ~; B8 I: N9 O! o+ S
回复

使用道具 举报

发表于 2017-1-16 16:58 | 显示全部楼层
无标题.bmp
+ P- x5 b1 M8 Q2 y+ |" S1 P1 f
  w: o* a. O% |0 ]6 ~1 U, `void init_GPM1306(void)7 S; o4 Z9 a. j' h8 N9 @2 e0 _) b! @
{) {* P4 \$ {" d' c0 A, g
uint8 col,row;
" U1 }" Y8 D% [ delay_1ms(5);
5 @, |( J  V9 S LCM13060_RST = 0;; j- e( h9 H3 }# \1 X
delay_1ms(200);
; h4 }6 ~% R  f8 k3 B. j LCM13060_RST = 1;8 Z2 o1 Q" a, j: N% S0 Q
delay_1ms(200);: s# R! l' ^& n; _) J1 Z
//SPI_TX_command(0x01);//  soft reset8 T2 d5 T0 j2 E) z
//delay_1ms(200);
, a* `- k2 W, W9 q4 x0 B" X
, ?1 _; N# W# I4 s; n' c
) ?4 j) o# n; ?# U, n# a$ V SPI_TX_command(0xD7);// Disable Auto Read: |& `3 M1 k; {: A* R4 s+ c4 |
SPI_TX_DAT(0x9F);  
! A  ]5 j! L7 U9 x4 e2 ^) f
/ w  |7 L+ K( [9 p9 | SPI_TX_command(0xe0);// Enable OTP Read
! ^* l6 |+ T8 ^1 f SPI_TX_DAT(0x00);  
) q( d. R/ R; t* C/ N* ` delay_1ms(10);: z2 ~; b& u3 q* e; `2 @
+ ]/ u' @& D% G0 a, A7 ~/ [
SPI_TX_command(0xe3);// // OTP Up-Load
* e& c- E2 N7 u* L delay_1ms(20); ' D2 X: Z! Q7 R5 ~& }% Z! H6 n
7 I7 }  B2 c! Y* n% x
SPI_TX_command(0xe1); // OTP Control Out1 z6 C# ?# m3 B  R# v
SPI_TX_command(0x11);// Sleep Out2 _: h9 J+ R: A. ~
SPI_TX_command(0x28);// Display OFF1 n' C9 Z& f0 m  [8 A$ @6 O1 n
delay_1ms(50); , t3 H  q6 S5 X) i
- x  p% C" [, d
SPI_TX_command(0xc0);// Vop = B9h效果设置 9BIT. c# H& p8 \* _- r
SPI_TX_DAT(0xd8);   //LOW 8BITS
3 s# b" x, D1 S  f9 G SPI_TX_DAT(0x00);  //HIGH 9BIT
# T3 d  c1 t$ [+ w ) l$ ?- ^* u. ^: G' ?, t, Q7 Y
SPI_TX_command(0xc3);// BIAS = 1/9# S9 N& x! q; s. d
SPI_TX_DAT(0x05);
! v7 t& |9 p7 P/ i* \
0 c+ ]+ A8 s! o% i/ O3 d SPI_TX_command(0xc4);// Booster = x88 C, O' T; [; y& f4 v; M% H
SPI_TX_DAT(0x07);
/ Y) i4 s# E' p  N4 R2 U$ a
2 p2 S% S! A/ e& F SPI_TX_command(0xd0);// Enable Analog Circuit) I/ z+ J& E8 d) g. t
SPI_TX_DAT(0x1d);
* n1 |  |) y# ~: n6 ` ; X1 Y. J' Y" u6 h
SPI_TX_command(0xb5);// N-Line = 0# z4 N+ G& Y- L3 J' h
SPI_TX_DAT(0x00);
% @6 U( Q* e1 J6 f3 T* J; u  
% q4 V* \+ |' J4 |# l SPI_TX_command(0x38);// Monochrome Mode/ D' x, }, {& O$ r" R
SPI_TX_command(0x3a);// Enable DDRAM Interface
  I, ]" G5 a- o) c* K9 z( v SPI_TX_DAT(0x02); % g' i! i' u' B: d% K

" G: l8 b! ?- p+ j SPI_TX_command(0x36);// Scan Direction Setting // 0 @, O% a& Z1 r/ ~
SPI_TX_DAT(0b00000000);   //0b01000000  Display Control从384开始
$ K, p- F0 Y0 n/ H! b
" W& u5 B7 Q- @- P SPI_TX_command(0xb0);// Duty Setting4 T+ d' g& @& P. t
SPI_TX_DAT(0x81);
  \' O- B4 q: B) K 3 _8 A9 f& }1 l* t/ H
SPI_TX_command(0x29);// Display ON
% |8 {+ r. j5 a7 `
9 S  {9 ~7 {. s //____CLS_DISPLAY____清屏
1 n6 f7 g7 N3 P
回复

使用道具 举报

发表于 2017-1-16 18:19 | 显示全部楼层
759755401 发表于 2017-1-16 16:583 |" ~' X; f' H5 p
void init_GPM1306(void)6 i4 I5 f( N& b, p5 `% Q) I8 j# w4 w
{- U/ E  r" Y8 Z0 [) k
uint8 col,row;
$ M2 Y. m9 p4 [2 r
太感谢了!!!3 v, }2 F& a0 \9 |( T
图非常详细,辛苦了!我再试试看!
& |& ?8 W! H* `0 ~; x
回复

使用道具 举报

发表于 2017-1-16 23:42 | 显示全部楼层
wangke2010 发表于 2017-1-16 16:48
, V; X: g; K# d' c/ I; l; _

# T. j# F. W- g- N* Z非常感谢,我用逻辑分析仪看了一下,我发现lz给的实例程序我修改到stc后得到的时序是不对的。
. N$ y# n, O% R+ W& D# J+ g. W$ [# y. `可是头一次玩液晶屏,不知道如何下手
% }' I/ g4 L. W% Z# Y3 b低电平那里的20ms是我改的初始化延时地方
( v, A. N0 ^% v1 p0 i 搜狗截图20170116232752.png
& R+ M5 s& G5 A$ w$ a' L7 |6 E 搜狗截图20170116232350.png
/ {$ f6 \0 m/ Y: o$ i0 g- \ 搜狗截图20170116232324.png / |$ m! r, ]2 {/ M  k

  o% u" g) W2 F& F0 s: |( g' u附上我的程序 STC15W202S-OLED.rar (55.08 KB, 下载次数: 150) & g# U7 |; s' h; `2 k

( t) s( ?: G' }) ]. ~4 l
  1. /* GPM1306.c
    + X, {& e, ~( M4 z) x
  2. * Created on: 2016-10-19
    ! ], x# }, p, ?; A8 \3 n
  3. * ┌─────────────────────────────────────────────┬───────────────┐2 B' W" \& k! U" s. D# |) ^0 r) ~
  4. * PIN_NO : 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
    6 x( q. W$ b, N) k
  5. * NAME : BK-K BK-A NC SCL SDA A0 RST nCS NC VDD C1 VSS VDD C2 C31 C32 C4* z/ x0 K0 q8 t  H; o
  6. * CONN : GND VCC P1.4 P1.3 P1.2 P1.1 P1.0 VDD │ │VSS │VDD │ │ │ │! q7 S1 O  o; O* V5 C/ V7 `+ m
  7. * │ │ │ │ │ │ │ │
    1 O, C7 R" g" W) B/ C5 ^
  8. * │ C1-C5=1uF 25V 0805 ─── │ ─── ─── │ │ ───
    6 H! D; i  f  W. C- G/ A
  9. * │ 120x160pix ─── │ ─── ─── └─│ │-┘ ───
    ; M/ @) [, E/ D+ T
  10. * │ ┌──────────┐ │C1 │ │C5 │C2 C3 │C4
    6 q! c+ n. M2 E& f2 U! v
  11. * └────┤ R1=3R3 ├────────────────────────────────────────┴───┴─────┴──────┴────────────────┘
    & ^: a" A1 u' L$ \( E
  12. * └──────────┘
    5 ^6 G& U* i5 f% ]1 \
  13. *==================================================NOTICE==================================================
    # ?, v5 y( q- I6 F! K3 [& |
  14. *这个程序仅供评估,没有任何技术支持。如有疑问,请仔细阅读压缩包中的PDF文件或者联系芯片/模块厂家。& ^% A. [/ n# r
  15. *这个模块还有很多功能没有在这个程序中体现出来,具体请参阅压缩包中的PDF文件或者联系芯片/模块厂家。3 \$ ], V5 ~0 B, |8 u+ K
  16. *推荐使用TI的LaunchPad验证,如果使用别的板子/芯片,请根据具体情况修改移植源文件。
    $ D, f" e" T& m
  17. **************************************************移植参考**************************************************
    , Q- L3 o; G" Y/ O% l
  18. *使用MSP430系列芯片可以直接使用或者修改一下脚位既可以。注意主频要和 #define Fosc 中定义保持一致。
    $ Q* [6 y! T3 u: P
  19. *移植至别的芯片请注意初始化IO和修改延时参数,修改脚位并注意void LCDInit(void)中有直接控制引脚的指令,需要一并修改。
    ) `1 T( J  _1 l
  20. *祝大家玩的开心。
    ( Q5 J& Z. }% q7 P$ A
  21. P1OUT |= BIT1; 是将P1OUT倒数第二位被置1
    # g. L0 K2 y1 H$ k
  22. P1OUT&=~ BIT0 是将P1OUT最低位 清 01 }- N7 O$ d: T! @, _% k2 {- w& |0 ?
  23. #define Fosc 16e6
    " A" C& _- D( h9 C+ O' i6 A9 m
  24. #define GPM1306_nCS_CLR P1OUT &=~BIT0//清 0- e- d4 M1 l! V/ E2 n4 N- b
  25. #define GPM1306_nCS_SET P1OUT |= BIT0//被置1$ K  ~! H+ Q9 f: n
  26. #define GPM1306_RST_CLR P1OUT &=~BIT1* T4 M. m5 x) j: n3 v' W/ O
  27. #define GPM1306_RST_SET P1OUT |= BIT1: `4 D, [9 h- J3 Y+ h- y
  28. #define GPM1306_A0_CLR P1OUT &=~BIT2
    * e. R/ X# ~, y+ i  ~
  29. #define GPM1306_A0_SET P1OUT |= BIT2; @1 @# w6 j# p' G! ~
  30. #define GPM1306_SDA_CLR P1OUT &=~BIT3
    & X/ c# I" U3 h/ u0 \5 G4 f
  31. #define GPM1306_SDA_SET P1OUT |= BIT3; U8 M0 H7 c7 u( u$ W  n! C
  32. #define GPM1306_SCL_CLR P1OUT &=~BIT4' w2 W- y1 N% u! T
  33. #define GPM1306_SCL_SET P1OUT |= BIT4, g6 D" x' h4 X8 m/ J1 r- `
  34. */
      h4 M- c7 d6 c) Q
  35. #include "stcdelay.c"
    ; D1 A3 X3 J# g! L! i. B+ e
  36. #include "STC15Fxxxx.H"- w5 j, H* D3 ]4 b
  37. /****************延时函数引用**********************/
    " V: x. G8 J7 M: b. `
  38. void delay_us(unsigned int us);
    # m1 [% I. o8 o* F7 R6 H* }
  39. void delay(unsigned int ms);$ v" @! k# r' Y, b8 y/ k
  40. /****************延时函数引用end*******************/
    $ ?* C  k! i8 W6 g" i
  41. sbit SCL = P1 ^ 0; //15
    + R0 ]: N5 B5 u
  42. sbit SDA = P3 ^ 7; //142 N3 C) V/ d0 A: A- `
  43. sbit A0 = P1 ^ 2; //1
    , |" f# ], U9 v: v
  44. sbit RST = P1 ^ 3; //2
    % N" F5 [/ v( ^. R3 B( {
  45. sbit CS = P1 ^ 4; //3# `5 d; ^, S8 |2 G% i, Q& d/ C
  46. const unsigned char gImage_bmp1[96] = { /* 0X00,0X01,0XA0,0X00,0X78,0X00, */
    9 K# C" @4 h( V* o: p0 K) u' `
  47. /*-- 文字: 非 --*/
    , G+ u/ N$ p, }" C* P
  48. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    8 n8 H" x7 v: n4 `! f9 D! ~6 T
  49. 0xF7,0x77,0x77,0x77,0x77,0x00,0xFF,0xFF,0xFF,0x00,0x77,0x77,0x77,0x77,0xF7,0xFF,
    7 {7 V2 H9 D2 K5 W* h1 Z2 z
  50. 0xEF,0xEF,0xEF,0xEF,0xEF,0x00,0xFF,0xFF,0xFF,0x00,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,
      I3 |4 O% @5 k) ?9 g
  51. 0 J2 y9 P9 X* E$ F% f
  52. /*-- 文字: 常 --*/0 I8 [3 i( Z  J3 T- F: H
  53. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    7 n# S8 k/ v- F) a# q$ g. d
  54. 0xDF,0xE7,0xF7,0x15,0x53,0x57,0x57,0x50,0x57,0x57,0x53,0x15,0xF7,0xD7,0xE7,0xFF,
    / Z! x& Y5 f/ R6 Y5 M6 V
  55. 0xFF,0xFF,0xC1,0xFD,0xFD,0xFD,0xFD,0x00,0xFD,0xFD,0xED,0xDD,0xE1,0xFF,0xFF,0xFF,) t) ^9 E3 Y1 C* ]7 S

  56. , `# d- x, b6 Q) B
  57. /*-- 文字: 感 --*/) B& k+ Z6 J% R) S3 p
  58. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    , }% ]3 a" H3 u3 r" c. j0 T
  59. 0xFF,0xFF,0x03,0xFB,0x2B,0xAB,0xAB,0xAB,0x2B,0xFB,0x80,0x7B,0x3A,0xC9,0xFB,0xFF,4 _" G* f2 P7 {$ L& T' F2 L. u
  60. 0x77,0x99,0xFE,0xFF,0x9C,0x7D,0x7D,0x6D,0x54,0x7B,0x7D,0x3E,0xFD,0xDB,0x30,0xFF,
    8 |# S9 g8 z+ ?9 {

  61. ) ~6 C2 d4 M" O& x8 L
  62. /*-- 文字: 谢 --*/
    ' [" c7 O6 j6 c9 `( d" D2 a7 G
  63. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    " k+ Y6 G) ?! s4 e' M* j7 Q& ]

  64. " z4 j( @: `* S( J- b, R% r
  65. };
    : Q$ f5 T7 S0 L
  66. void LCDWriteCmd(char cmd)% t" `- w5 B9 g* E- \6 y+ O( I
  67. {
    * y9 l& A! j3 `! O
  68. unsigned char i ;
    1 O9 O2 l9 B/ K. p
  69. CS=0; //使能芯片9 M3 P2 g( W4 I% _$ d
  70. A0=0;//写命令模式
    5 C$ h# |: k& t
  71. for(i=0;i<8;i++)" V3 I1 D( E- ~1 E
  72. {
    ! a, h" j* ~' `, o9 s  ]6 V$ d) d8 m
  73. SCL=0;
    ) L4 ?5 k( x: Y
  74. if(cmd&0x80) //先传高位字节,后传低位字节7 ^  ?' H) S8 [5 f; z: t+ L
  75. SDA=1;
    ; c, |8 K! c# ?7 g) N  [
  76. else
    $ Y- y3 R5 f" b* K& c6 j
  77. SDA=0;
    ! p5 m7 e, M9 v
  78. SCL=1;, I/ a, h- ?, G1 l0 V5 d, _
  79. cmd=cmd<<1;; H+ o3 T! M' B, h( i% x( ~
  80. }3 J. ]5 `" ^3 S) t
  81. CS=1;
    2 t6 G2 G. t! z- p
  82. }
    , n& E9 }' `$ i2 \8 e
  83. void LCDWriteData(char cmd)0 [# }" G0 m( E1 d; b
  84. {5 |6 T( }6 g  z2 Q2 G
  85. unsigned char i ;
    * H5 X/ M8 X; }, I/ W6 ^4 m1 l) v
  86. CS=0; //使能芯片
    ' [. A. D' ~5 r. F" `
  87. A0=1;//写数据模式- u7 F9 G2 ?  s9 q) o2 C" i
  88. for(i=0;i<8;i++); d! i+ S& G+ y1 T
  89. {
    ) ?) Z& `, v2 E7 l" W6 X5 Y$ ]( S
  90. SCL=0;! G4 m7 c* M$ c. I/ G2 y" p+ R
  91. if(cmd&0x80) //先传高位字节,后传低位字节+ k- s/ ]7 w7 z' s  ]  i& B
  92. SDA=1;
    ' d; M- E" w* n: f# |. h
  93. else
    . C; e# y! c7 R# x
  94. SDA=0;
    ( S# ~* s, X; U/ Y# H
  95. SCL=1;& |& M+ m2 t. G$ P
  96. cmd=cmd<<1;' Z1 l+ \2 r+ j$ V6 E
  97. }
    # P7 r7 e1 D! Y: r/ }5 Z5 c) b
  98. CS=1;
    % K% u" {* H+ h; I+ L
  99. }
    0 ]' v5 p  E- l# `, J, C* B  x
  100. //设置起始行列# A7 _! G7 K& ^1 X' e
  101. //ys为起始行,xs为起始列, ye为结束行, xe为结束列4 A, G% J, L1 g$ u1 T/ D
  102. //xe与xs的差值即字的宽度, ye与ys的差值即字的高度
    2 {; B; C! U4 a9 W" I& i  a
  103. void LCDSetXY(char xs, char ys, char xe, char ye )
    + [2 k; V1 Y: }, {1 I
  104. {
    8 R! Z7 P/ ~) e+ b* C2 F
  105. LCDWriteCmd(0x2A); //设置列地址(横坐标)
    7 X. j3 K" h8 H) Q! f5 t
  106. LCDWriteData(0x00);
    ( x% ]! P0 B& Q. l
  107. LCDWriteData(xs);  c, R$ {1 ?8 I+ G6 {
  108. LCDWriteData(0x00);
    + x; z( q7 w' D" i0 V& T
  109. LCDWriteData(xe);
    3 `1 ~. L2 }! n1 m
  110. LCDWriteCmd(0x2B); //设置行地址(纵坐标)4 w  ~( A4 ~8 r- u& ~  \# m  V
  111. LCDWriteData(0x00);
    8 Y( Y$ h8 }/ O1 h- u( z* h
  112. LCDWriteData(ys);8 v5 i& S9 a! y: ?  i; G9 K+ G% `, g
  113. LCDWriteData(0x00);
    6 V: }8 P$ e. r
  114. LCDWriteData(ye);  e, g, Y( e; p5 e) X
  115. }
    ; a7 S$ i! ~) V
  116. //清屏函数) R- U7 Z" f. X: z' u' a0 o
  117. void LCD_ClrScreen(unsigned char value)
    * r# K4 K+ f- {: Q0 {
  118. {9 }4 s+ K2 |6 K! [3 ~$ i
  119. unsigned char i,j;7 E+ G( p- z) y: f0 ^  J$ c1 c) K
  120. const unsigned char tt[]={0x00,0x49,0x92,0xff,};
    9 Z* i# F" \3 j1 ~& e, G" ^, S
  121. value=value&0x03;5 y# Y; o4 F. N, k8 o4 w( x* q
  122. value=tt[value];: e# v1 ^  w+ u+ Z" R( w4 f
  123. LCDSetXY(0,0,53,119);
    4 r8 \4 d# X) |2 v! H
  124. LCDWriteCmd(0x2C); //向DDRAM写入显示数据
    5 N0 I' j7 e  H
  125. for(i=0;i<120;i++)( c+ {6 u3 P7 _. s9 T6 g
  126. for(j=0;j<54;j++)( E5 j) q) V- c, |  Y/ O' p9 B2 U
  127. LCDWriteData(value);3 s9 y) B# ]* K- E1 G) I1 M
  128. P16 =~P16;
    & M9 v( z2 [: W
  129. }* D0 Y4 |) m; l
  130. void GPM1306_DISBMP(const unsigned char *BMP)
    6 e1 ^7 n: ?) w3 V5 ~
  131. {  M5 o; V1 v2 p% L0 |2 K- s" K$ I; g
  132. unsigned long MCx8x3;
    1 a6 Q* }( s3 i# o5 X2 f! j
  133. unsigned char LINE_COUNT,COLUNM_COUNT,color,t1;4 m0 z" B4 c3 x8 d1 c
  134. signed char vaild_bit=8;- V/ w% T; O% `/ E1 d& M
  135. ((unsigned char *)&MCx8x3)[2]=*BMP;) c; ]* z9 f3 `$ n. J: k# x
  136. BMP++;
    7 h- v- J/ ^2 }0 E
  137. LCDSetXY(0,0,53,119);
    & O" X& n! |3 F+ A
  138. LCDWriteCmd(0x2C); //向DDRAM写入显示数据6 s; O! ^. ~3 w& b. l/ x- w
  139. for(LINE_COUNT=0;LINE_COUNT<120;LINE_COUNT++)
    5 W( l0 M0 f, s) M$ H. g" g
  140. {  ^: S& P4 n4 Q+ J
  141. for(COLUNM_COUNT=0;COLUNM_COUNT<53;COLUNM_COUNT++)//160/3=53....14 d& d! I) Y" P6 q6 [4 B# e
  142. {- a2 P# D3 x9 B6 w
  143. if(vaild_bit<3)7 A+ Z5 Y6 J5 o, x3 K! b# K, Q
  144. {
    . \' M- P2 `+ m! l' q: g/ v: |
  145. MCx8x3=MCx8x3<<vaild_bit;
    ) ^7 ?, x( O3 |3 I* V% d( K# @
  146. ((unsigned char *)&MCx8x3)[2]=*BMP;; @$ h* i% v+ Y' I
  147. BMP++;
    , i+ P2 t& \! _4 ~7 ~0 H) a
  148. MCx8x3=MCx8x3>>vaild_bit;
    6 A2 c; P- p% n; ~1 n/ J( P
  149. vaild_bit=vaild_bit+8;) Y9 x, _- c3 Y, f4 [/ N
  150. }1 T" E% g2 v6 B! A* G% I' F9 ^6 y
  151. color=0;: N4 e* c# O1 b& Q: x
  152. t1=((unsigned char *)&MCx8x3)[2];
    0 p. |/ i  }1 R' i' L# I3 O
  153. if((t1&0x80))
    ' c4 g) ?) D4 y. v  L# k
  154. color=0x03;  \  y& o/ d! j; T
  155. if((t1&0x40))9 X' T0 K& n1 _- R. x( L) _
  156. color=color+0x1c;
    + q& |2 S1 w) S/ X+ B' j
  157. if((t1&0x20))
    + k1 D( z6 D, c- B' a
  158. color=color+0xe0;
    2 B* ^1 t7 S% r, @! Z
  159. MCx8x3=MCx8x3<<3;$ E+ H9 i# `2 t! Z5 o9 E( a( J% X
  160. vaild_bit=vaild_bit-3;0 v, D- O& `: D) d
  161. LCDWriteData(color);- r, U$ A' k1 D% Q% o
  162. }
    9 Y2 @1 g8 c# x9 F( v9 {
  163. if(vaild_bit<3)/ g, C6 @2 p! W: L+ b' M
  164. {- R% s3 @- @; f) P
  165. MCx8x3=MCx8x3<<vaild_bit;" `0 p+ ~. ?9 P3 y, a
  166. ((unsigned char *)&MCx8x3)[2]=*BMP;! L& C3 r9 p4 P9 ~& y+ B. b' X
  167. BMP++;
    * D% |# n& U7 [* ?+ N. \% w  J
  168. MCx8x3=MCx8x3>>vaild_bit;
    ; d. v  O$ T5 B6 s+ H8 }8 E
  169. vaild_bit=vaild_bit+8;- ~& K* c0 `& B$ ?; w2 J. P
  170. }
    % {  N% J# b8 c) W! B
  171. color=0;
    1 X! i/ v4 R8 W. q8 Y
  172. t1=((unsigned char *)&MCx8x3)[2];
    ( o9 q- }5 h1 P+ i2 o$ l
  173. if((t1&0x80))- t' l& m5 L" I; a& H" W/ [4 T
  174. color=0x03;
    " i$ J1 @" a7 {6 h* e+ R/ e& x& q/ B6 R
  175. MCx8x3=MCx8x3<<1;6 H: A6 l7 V3 [' n
  176. vaild_bit=vaild_bit-1;& R2 T  ?; N; Q" i8 E9 f& o! G
  177. LCDWriteData(color);" N: q" d5 V  U+ z
  178. }
    * d! \5 I3 f3 @7 @
  179. }# U( a* \6 ^8 {' q" H' j% i
  180. //初始化函数
    $ ~6 m% ]. n; [: d/ a
  181. void LCDInit(void)% y  w7 W% a/ z% S6 F9 I, G
  182. {6 }- c0 z2 j& j1 z
  183. RST=0;
    * e) |  s4 z& G3 S% b4 @/ y) P
  184. delay(20);//Delay_ms(20) //延时20ms
    $ U) x5 r5 z; I1 v% s, E4 A2 ^. ?+ e
  185. RST=1;0 D% ^" V5 w! l' g: j. U3 n
  186. delay(200);//Delay_ms(200); //延时200ms
    / E# K) O/ U3 c& r. }% X
  187. LCDWriteCmd(0x01); // soft reset
    " n: @! @) f: o
  188. delay(200);//Delay_ms(200); //延时200ms
    " W3 y9 `: |  \1 n
  189. LCDWriteCmd(0x11); //Set power save mode:Sleep out mode
    1 a* P7 @6 [+ y2 F2 `1 e6 w% k
  190. LCDWriteCmd(0xC0); // Set Vop///
    2 x, H0 n* O* z5 E0 M6 Y
  191. LCDWriteData(0xf0); // Set Vop Low 8bit 30//全屏太黑或者太白调整这里
    7 m* q8 B% x/ o) f- @
  192. LCDWriteData(0x00); // Set Vop 9th bit(Total 9 bits) 01//全屏太黑或者太白调整这里5 e3 r  U9 w, b: A* w' t
  193. LCDWriteCmd(0xC3); //Set BIAS system: N) C, p6 L9 a6 `
  194. LCDWriteData(0x04); // 03: BIAS = 1/11 0-5
    3 d& Z7 R$ r2 w  R/ T
  195. LCDWriteCmd(0xC4); // Set booster level5 O$ N# X0 A5 ]% ?
  196. LCDWriteData(0x07); // 07:x8 Booster
    2 H* Z; I6 y0 R' W+ a6 I
  197. LCDWriteCmd(0xD0); // Enable analog circuit& E" S. c" r( t% J* n" _8 e
  198. LCDWriteData(0x1D); // Enable analog circuit7 H, L; a" D7 `, g; |: X
  199. LCDWriteCmd(0x38); // Set display mode: M=1: Monochrome mode% s. i% H, q4 q- D: m
  200. LCDWriteCmd(0x3A); //Enable DDRAM interface8 O6 A0 v) n# m, M  p# X. c
  201. LCDWriteData(0x02); //RIF=0: Monochrome mode & 4-level gray scale mode
    4 M( d# [, _$ e2 X+ l+ l& @
  202. LCDWriteCmd(0x36); // Display Control" o# ]: |7 q" [( t. P& f) V% T5 u5 F
  203. LCDWriteData(0x40); // MY=0: COM0-COM159/MX[1:0]=(0,0):SEG0<-SEG383
    - b' m; M: a& m& n/ b
  204. LCDWriteCmd(0xB0); // Display Duty3 I5 C* ~4 w) h4 k+ p1 T/ B, L& A, O
  205. LCDWriteData(0x81); //Set display duty DT=0x9Fh(1/160) DT=0x81(1/130)
    . ^& m3 F6 o# V+ D: @
  206. LCDWriteCmd(0x20); // Inverse Display:INV=0: Normal display
    3 L1 s  z. C7 C1 l* m( t7 |
  207. LCDWriteCmd(0xf1); //Frame Rate(Monochrome Mode)- `5 s2 G, F1 ~0 l# C, U
  208. LCDWriteData(0x15);//Frame Rate 92.0Hz$ z- T  n2 J3 U  `. P" t
  209. LCDWriteData(0x15);
    ( E! V# y) c! H1 n+ L2 B
  210. LCDWriteData(0x15);7 o3 s) N+ z+ c. ]$ B
  211. LCDWriteData(0x15);+ w: Y1 A2 `9 p% L" y; [# I0 @9 m
  212. LCDWriteCmd(0xb1); // First Output COM
    6 c7 P& G; r8 c/ C
  213. LCDWriteData(0x00); // Set first output COM FC=00h(Start from COM0)
    . h5 w( E. @/ I
  214. LCDWriteCmd(0x29); //Display ON- b" h" z2 O( b7 E0 I' f
  215. }2 L" W. l1 p) U- P5 T
  216. void main()
    3 @: Q+ L, S# C# o7 ?  V% V  x
  217. {( k- I4 v' ~; ~- C" w5 k6 P

  218. ' g2 C5 [( X  v1 Z+ b
  219. LCDInit(); //初始化液晶0 F, B- K) {8 K. }! ^
  220. while(1)
    , d4 S0 P: ]% T! ~
  221. {1 A5 ^; N! A6 \8 P
  222. LCD_ClrScreen(0);
    ! Z) \# p1 v# E  p: j( Y! a) W
  223. delay(400);
    " i1 F/ v: T. Q2 \) |
  224. LCD_ClrScreen(1);
    ( n) Q/ W; q5 K
  225. delay(400);/ O' v  b7 Q( f
  226. LCD_ClrScreen(2);
    : [8 d6 Q& y; D# F9 I; {3 ~
  227. delay(400);
    ; l9 _. J8 i' u; Q" B# k# c- y, c
  228. LCD_ClrScreen(3);
    / t0 L2 A# ?/ A6 w5 S
  229. delay(400);8 Z. }1 g+ T: z- ?! k
  230. GPM1306_DISBMP(&gImage_bmp1[0]);& r! j9 X0 a, [* J! Z" ^( ]0 }) y
  231. delay(400);
    ! Z4 F, P, m; t' Z3 m
  232. GPM1306_DISBMP(&gImage_bmp1[0]);
    : X% ?+ c/ d7 U8 T, v
  233. delay(400);
    . w' U$ d, K& b" [8 f; F  J" Y. Z2 B
  234. GPM1306_DISBMP(&gImage_bmp1[0]);' ~1 x; y# U9 q2 Q5 h: R' j: ^
  235. delay(400);
    ! L! t: O: e, d% I
  236. }
    : G  R; i  W) p' J
  237. }' N# A7 d$ F! g
复制代码

+ H+ S) n' T" t( ]麻烦大家帮忙看看,劳烦大家了!谢谢!!!
3 p2 q4 v' h7 v7 R/ j, p  ?8 y2 Y2 d0 i* |2 L- z8 t; T

6 N1 _. U$ V8 H1 L  X
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-8-20 09:02 , Processed in 0.033231 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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