一乐电子

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

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最后那几页列程就可以的
2 w, k( |5 p7 _. d# A  k- c tyuuty7j.jpg   U) n( z6 E) K
新建位图图像.bmp 8 a" P6 S, W( o9 F( V4 f
回复

使用道具 举报

发表于 2017-1-13 13:35 | 显示全部楼层
759755401 发表于 2017-1-10 18:42
+ O' ~$ P" n5 Z) I$ U* n按照手册ST7586S最后那几页列程就可以的
' O0 y1 _( u& A( d: x
非常感谢,我再试试!
回复

使用道具 举报

发表于 2017-1-16 15:18 | 显示全部楼层
BaiduShurufa_2017-1-16_15-13-27.bmp : }% f1 h8 A9 o% m% T' A# X
U2是稳压芯片ams1117,输出3.3V
) `3 h0 x) S/ K7 t" i大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?
8 E& R& Q3 g% R6 M今儿又重新做了一个板子,还是点不亮。  P8 S3 t$ n) I- z' L' V
我觉得问题可能有2个,1是硬件不对,2程序延时不对。- y( l6 T! m+ q  P, U) g( Y) {
程序中我有一点疑问,是不是我的时序不对呢?程序里面延时程序__delay_cycles(Fosc*0.2);的延时应该是多少毫秒呢?
$ p4 C8 d4 N- J1 B

  1. ) Z# A( m5 E+ Q: I6 K3 L
  2. <P>__delay_cycles(Fosc*0.2);//Delay_ms(20)   //延时20ms</P>
    ; z; B$ ]4 ]0 j: I4 n& ~
  3. <P>GPM1306_RST_SET;
    0 T0 p1 ]9 K' f8 i! ~
  4. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms
    ( c8 D4 @* {# s9 Q" L( R  D9 p
  5. LCDWriteCmd(0x01);   // soft reset
    3 Z% ]  H7 x" h0 H- c
  6. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms </P>
复制代码

' t5 f# f4 F: P7 p
回复

使用道具 举报

 楼主| 发表于 2017-1-16 16:48 | 显示全部楼层
本帖最后由 wangke2010 于 2017-1-16 17:00 编辑
4 z4 Z2 q$ k3 M* W
davg1 发表于 2017-1-16 15:18$ [8 k6 F8 d; k: @4 ?) A, R$ U
U2是稳压芯片ams1117,输出3.3V
, v3 q& D# r3 {大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?: H7 E4 _  ?, b' Y$ Y- J) m6 z; g# f
今儿又重新做了 ...Fosc就是时钟频率,x0.2就是0.2秒" o4 Y3 b1 r( Q. y7 H1 [
有条件的话加上逻辑分析仪看看时序' |& O, h0 \2 Q# S0 T
如果还是不行的话,楼上那个晒图额朋友可以请教,他已经移植到别的平台上面了。$ m& N7 M: X3 l: \1 t
最后,图片稍微有点不合适,那个电阻是给背光LED限流的,具体看下图
BaiduShurufa_2017-1-16_15-13-27.bmp
2 L! C; W/ g7 Z% I+ b: r  y* U, \
5 ?% p  a6 g; M3 P
回复

使用道具 举报

发表于 2017-1-16 16:58 | 显示全部楼层
无标题.bmp
( R) S8 l( q  t3 K
9 t$ l5 ]1 i3 ?void init_GPM1306(void)+ C/ L; y, E* W) g3 _1 Y% M
{& u# A( B% }7 e0 O5 ?
uint8 col,row;
" x6 C* _6 i% P7 L3 Y1 x delay_1ms(5);
% |% B: q5 h9 P- w' F2 J) K LCM13060_RST = 0;
/ T$ F! r8 w- E+ w% X delay_1ms(200);4 O# W% N( {4 w$ w8 O% |
LCM13060_RST = 1;
* ]* b3 g0 V1 E, [9 w0 M( O delay_1ms(200);
* z* E) V- h9 [1 {: M+ h. o4 ~0 @ //SPI_TX_command(0x01);//  soft reset
" s1 n; V3 [: U/ p/ A4 t //delay_1ms(200);
1 h. q" _; b5 D* p3 Z  a, X, p; E " }, D- D* G- o: d" v9 B
4 _- f& E; E9 I  \5 k. W5 C
SPI_TX_command(0xD7);// Disable Auto Read
# p1 ~% [* r: r8 O SPI_TX_DAT(0x9F);  " L. h' N1 ]% ~

, W8 X$ x9 H+ _! k SPI_TX_command(0xe0);// Enable OTP Read ; ]2 P$ b, z) }
SPI_TX_DAT(0x00);  " P, Q3 i1 s. W& V! W( `* @. a" Z
delay_1ms(10);
: v! }6 U& U) Q( R+ m
4 [) o1 {0 E2 a! s7 l SPI_TX_command(0xe3);// // OTP Up-Load
" Z2 E0 ]0 s6 O6 q3 ^ delay_1ms(20);
0 r* L# y) W3 B( a
5 I0 h: [; F6 L  ~# H SPI_TX_command(0xe1); // OTP Control Out
. k9 W2 `  l6 ?; ~+ e- M9 T- N/ t SPI_TX_command(0x11);// Sleep Out4 q  O  y9 m1 |( x7 f
SPI_TX_command(0x28);// Display OFF
  Z8 g4 {  `* |  T& _7 u4 B delay_1ms(50);
- `: H% n0 h8 M9 s( b
, ]) A8 |( G, P- ?/ R# @' j7 k SPI_TX_command(0xc0);// Vop = B9h效果设置 9BIT4 w, W# U) E8 s& g3 b& R
SPI_TX_DAT(0xd8);   //LOW 8BITS. ]" |7 q# M( d! I
SPI_TX_DAT(0x00);  //HIGH 9BIT
9 I, P( `# g7 P0 ]" V   T' u; s  b  ]8 X
SPI_TX_command(0xc3);// BIAS = 1/9
3 m( V6 O  E& d% `1 f% | SPI_TX_DAT(0x05);
4 R* A: e6 ~' m2 G 8 k9 ^) s$ O) q9 J) \
SPI_TX_command(0xc4);// Booster = x8
. f0 @. n6 x3 ?) B& z7 Z( |4 t# q SPI_TX_DAT(0x07);
* T% ~" N2 i; d# r4 W8 Y3 M5 g 1 ~& h! g7 ~% _  M4 ~1 e" o# d
SPI_TX_command(0xd0);// Enable Analog Circuit
2 W& J8 B9 s% @% ?: s4 W0 o% d5 Q SPI_TX_DAT(0x1d);
4 W  z- m, [' d6 P% N! d( {, f- s
9 _& t3 \1 A  ?6 ^& | SPI_TX_command(0xb5);// N-Line = 0
* c( O, l2 J2 h$ R/ A SPI_TX_DAT(0x00);
% b8 ~$ w8 J8 `  
, j0 W" k% d- k* L* @* H5 m SPI_TX_command(0x38);// Monochrome Mode1 M9 Z% J8 [( ?
SPI_TX_command(0x3a);// Enable DDRAM Interface8 Y  I; c8 A: t$ u0 D
SPI_TX_DAT(0x02);
3 R9 o+ K0 J5 J* W& {5 C7 [; y # `) G  m0 w1 {6 A! l! h5 e
SPI_TX_command(0x36);// Scan Direction Setting // ) J5 H3 M$ ?# ^; t& X: O: o0 x
SPI_TX_DAT(0b00000000);   //0b01000000  Display Control从384开始
# x* T0 b! s+ m8 V) L
* N/ g6 S0 V' c SPI_TX_command(0xb0);// Duty Setting
; o+ l3 h) n/ Y. b0 f0 l SPI_TX_DAT(0x81);
- F3 K; C/ c# d7 H& ~: J , v) U# }. f$ X/ c% W0 y; i1 t% Q
SPI_TX_command(0x29);// Display ON
- X+ N( |- q" N+ c1 J& f1 P 9 ?. X- I5 v4 g; Y
//____CLS_DISPLAY____清屏
3 F2 U: E: E% ], H6 i9 ^
回复

使用道具 举报

发表于 2017-1-16 18:19 | 显示全部楼层
759755401 发表于 2017-1-16 16:58
  [" ^# O# J- z) `+ Ivoid init_GPM1306(void)5 `- [5 ^3 B; ^1 |- r: q" O
{
: m( y$ Y$ H! k6 A6 I uint8 col,row;
4 M& i8 ]) N: s
太感谢了!!!
5 Y- \! w4 o! I: ?& h9 [图非常详细,辛苦了!我再试试看!
, h; n' d3 m7 t: A0 j, C. ~# F
回复

使用道具 举报

发表于 2017-1-16 23:42 | 显示全部楼层
  D6 [4 o3 v% R" V6 x0 i8 `: X# A
非常感谢,我用逻辑分析仪看了一下,我发现lz给的实例程序我修改到stc后得到的时序是不对的。9 u2 r/ w3 v+ f4 C/ I0 s4 G
可是头一次玩液晶屏,不知道如何下手
/ g. v/ C! A6 o; w低电平那里的20ms是我改的初始化延时地方& Z, k, u8 Z6 G
搜狗截图20170116232752.png
" W. ]) i+ p7 o- } 搜狗截图20170116232350.png " U( x  V6 H3 V
搜狗截图20170116232324.png : g: T5 d- l8 }9 E1 q4 P7 M. a* R% T

/ e4 M$ F* p. e! Q* b7 z附上我的程序 STC15W202S-OLED.rar (55.08 KB, 下载次数: 150) " H+ X5 K( L9 P" y. I
* W- p' W, v5 c) b% j5 @! M
  1. /* GPM1306.c
    ' W, d8 R# k/ h( A+ o/ p
  2. * Created on: 2016-10-19
    3 c% J8 x# x1 J9 r1 Z& O2 K
  3. * ┌─────────────────────────────────────────────┬───────────────┐! V3 X# u! C7 N# U7 A
  4. * PIN_NO : 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1& L# a6 A6 I  M# y' l
  5. * NAME : BK-K BK-A NC SCL SDA A0 RST nCS NC VDD C1 VSS VDD C2 C31 C32 C4
    9 o6 y& v+ a# A$ O* U
  6. * CONN : GND VCC P1.4 P1.3 P1.2 P1.1 P1.0 VDD │ │VSS │VDD │ │ │ │* Z( H. H$ i- F# R5 v  ]+ P0 c. H
  7. * │ │ │ │ │ │ │ │8 }" i$ o. o: t
  8. * │ C1-C5=1uF 25V 0805 ─── │ ─── ─── │ │ ───
    # h. R, ^& B9 R2 x& a( P: f
  9. * │ 120x160pix ─── │ ─── ─── └─│ │-┘ ───8 j' C; d4 V$ e4 ^7 ~
  10. * │ ┌──────────┐ │C1 │ │C5 │C2 C3 │C43 L3 _4 d9 }. Z) C
  11. * └────┤ R1=3R3 ├────────────────────────────────────────┴───┴─────┴──────┴────────────────┘" \6 l/ |7 R) u0 o5 }
  12. * └──────────┘4 {7 u: C: c) Q1 p
  13. *==================================================NOTICE==================================================3 C8 F0 ~9 f% K/ j; T
  14. *这个程序仅供评估,没有任何技术支持。如有疑问,请仔细阅读压缩包中的PDF文件或者联系芯片/模块厂家。' D& \1 M# b- P6 a2 G# o7 E8 \" J
  15. *这个模块还有很多功能没有在这个程序中体现出来,具体请参阅压缩包中的PDF文件或者联系芯片/模块厂家。" k. d& b" S/ H, q/ C
  16. *推荐使用TI的LaunchPad验证,如果使用别的板子/芯片,请根据具体情况修改移植源文件。
      x2 [$ o( }/ s( w; x# v
  17. **************************************************移植参考**************************************************
    . y- q  o- f/ i( L) _  Q9 H
  18. *使用MSP430系列芯片可以直接使用或者修改一下脚位既可以。注意主频要和 #define Fosc 中定义保持一致。$ z' g! s8 h# Q3 A9 F
  19. *移植至别的芯片请注意初始化IO和修改延时参数,修改脚位并注意void LCDInit(void)中有直接控制引脚的指令,需要一并修改。; S5 n$ b: D6 B7 y# y
  20. *祝大家玩的开心。* _% q* L8 r4 l8 [+ ~1 R
  21. P1OUT |= BIT1; 是将P1OUT倒数第二位被置1% i5 w* u, R9 `3 \( }7 w
  22. P1OUT&=~ BIT0 是将P1OUT最低位 清 0: y: B- `" l5 [) |, X
  23. #define Fosc 16e6
    7 O9 `8 d4 D: T# B5 M5 n. Y, F/ z
  24. #define GPM1306_nCS_CLR P1OUT &=~BIT0//清 0/ S6 k& E7 \, `! ?
  25. #define GPM1306_nCS_SET P1OUT |= BIT0//被置1
    " }3 h& Z# l9 k3 c0 Y+ p  G, n
  26. #define GPM1306_RST_CLR P1OUT &=~BIT18 }  k( I# f6 d& l3 Z, p" L7 n
  27. #define GPM1306_RST_SET P1OUT |= BIT1, z5 d$ O: x8 u# L$ Z
  28. #define GPM1306_A0_CLR P1OUT &=~BIT2. x, Z& R/ y, v9 Y3 W/ Y8 G
  29. #define GPM1306_A0_SET P1OUT |= BIT2
    $ x' }8 @' s- s6 e
  30. #define GPM1306_SDA_CLR P1OUT &=~BIT3
    2 Q& o$ P2 ^2 C7 }' S% j5 Z
  31. #define GPM1306_SDA_SET P1OUT |= BIT3
    & E0 k% f4 X$ F# _8 e
  32. #define GPM1306_SCL_CLR P1OUT &=~BIT40 x) D' h5 r9 O
  33. #define GPM1306_SCL_SET P1OUT |= BIT4
    & F% q' J: q' i8 f# g$ T; {% }
  34. */# K$ t/ J; w: [
  35. #include "stcdelay.c"
    & h% \' \7 W  R/ F; g2 a
  36. #include "STC15Fxxxx.H"
    & f6 P1 L: Q) R/ X. w
  37. /****************延时函数引用**********************/% [3 S) t! P( ~( _
  38. void delay_us(unsigned int us);
    * R9 o* _' W  ^
  39. void delay(unsigned int ms);
    ; G" L3 ]( `* i
  40. /****************延时函数引用end*******************/; d! z/ }- l, y/ e% _1 T
  41. sbit SCL = P1 ^ 0; //15# e3 V* n* q' P) a0 K& Z
  42. sbit SDA = P3 ^ 7; //14
    0 `  _4 R5 P7 d; b
  43. sbit A0 = P1 ^ 2; //12 s" F9 ^1 {0 k) [
  44. sbit RST = P1 ^ 3; //2
    5 w, v% `  r3 k9 ]4 W0 e9 P1 K. w
  45. sbit CS = P1 ^ 4; //3
    1 R# g3 c* Z) x& D: a" H+ p
  46. const unsigned char gImage_bmp1[96] = { /* 0X00,0X01,0XA0,0X00,0X78,0X00, */8 {' J, w8 m0 x  z. n
  47. /*-- 文字: 非 --*/  _# H& ?9 [3 w3 b6 I
  48. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/, t2 A4 t2 B. `
  49. 0xF7,0x77,0x77,0x77,0x77,0x00,0xFF,0xFF,0xFF,0x00,0x77,0x77,0x77,0x77,0xF7,0xFF,+ h$ K# ^$ P' D
  50. 0xEF,0xEF,0xEF,0xEF,0xEF,0x00,0xFF,0xFF,0xFF,0x00,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,3 `. S+ [4 i0 x! z. ~

  51. # H3 R9 v2 @% G0 ^  T
  52. /*-- 文字: 常 --*/9 r6 B9 v9 u" e  y
  53. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/+ }; N9 C8 l% P! p5 ~. F+ ^
  54. 0xDF,0xE7,0xF7,0x15,0x53,0x57,0x57,0x50,0x57,0x57,0x53,0x15,0xF7,0xD7,0xE7,0xFF,
    " [0 L- B% {! `- v  s3 V/ I
  55. 0xFF,0xFF,0xC1,0xFD,0xFD,0xFD,0xFD,0x00,0xFD,0xFD,0xED,0xDD,0xE1,0xFF,0xFF,0xFF,
    . {$ z8 w; \( D2 n$ ~* w! z- ]% J
  56. 1 h2 d+ E' o0 q5 C
  57. /*-- 文字: 感 --*/
    5 N0 [; r# l6 H  H, f# i& c
  58. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0 |* R! C; C3 Q+ [* t
  59. 0xFF,0xFF,0x03,0xFB,0x2B,0xAB,0xAB,0xAB,0x2B,0xFB,0x80,0x7B,0x3A,0xC9,0xFB,0xFF,5 u5 G' U* h. ?9 ^4 M/ _* X  a
  60. 0x77,0x99,0xFE,0xFF,0x9C,0x7D,0x7D,0x6D,0x54,0x7B,0x7D,0x3E,0xFD,0xDB,0x30,0xFF,+ c. R9 W0 J  V4 I: X4 ^
  61. 9 C5 T3 i* Y3 f$ |: a
  62. /*-- 文字: 谢 --*/+ b' \8 F; z* |; K9 V1 K8 H9 S
  63. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
    ' H( N/ ?; `3 l4 ~) ^
  64. 3 c8 d8 l* P0 v& z3 Z8 c# z
  65. };
    " B, o5 f2 R. x! y' ?9 o" C% L% J
  66. void LCDWriteCmd(char cmd)" `4 L( m1 ]6 p2 P5 x' E4 _( C
  67. {- p. k/ h/ G. m
  68. unsigned char i ;
    : \6 O8 k# a3 {8 g9 T
  69. CS=0; //使能芯片
    6 Z& v; C! [" ]+ l/ l# w, S3 d
  70. A0=0;//写命令模式
    ) u; r# R( `1 N; {6 K1 T9 `4 H+ Z
  71. for(i=0;i<8;i++)0 q( Z/ w4 W5 d! [6 P$ f
  72. {
    4 ^$ U- {5 R3 {4 `/ A, A6 m
  73. SCL=0;4 W! G5 Q  r2 M7 L& d0 P
  74. if(cmd&0x80) //先传高位字节,后传低位字节- {% `3 ?) c8 S7 N+ [. y% o& Y0 e
  75. SDA=1;6 h$ q9 `4 I4 i  a# ~% S, O
  76. else  S% @+ q# m; D- _
  77. SDA=0;4 X6 Y/ j4 m$ r! z) R
  78. SCL=1;* W; q  }8 z7 `- S9 ^% g  @4 t
  79. cmd=cmd<<1;: _. T: A) M* H& l, q" r* n( ?8 E$ X
  80. }: k4 a8 Y3 A) G0 N5 k+ x/ }) Q, s
  81. CS=1;
    ' V7 ~, m1 p; y3 ^
  82. }( Z% I: ~" n* F0 f$ A: I" h3 V& M, ]
  83. void LCDWriteData(char cmd)
    , k" y& x% }6 g" A! R
  84. {0 c5 e$ ?* x4 Q* t, d/ \  h- Z
  85. unsigned char i ;! b5 b  D8 h" i, k% V3 S. A
  86. CS=0; //使能芯片
    7 [+ a( N; U, b* O; f. C
  87. A0=1;//写数据模式
    $ h: {% T  Z& s! M) A
  88. for(i=0;i<8;i++)$ e* Q5 ]: l3 K& ?
  89. {- @0 n3 U. ^+ L! C
  90. SCL=0;0 n" {. e3 N; V  ]3 L4 e
  91. if(cmd&0x80) //先传高位字节,后传低位字节3 D- e- R6 a# l! Y" T- }) p: ]
  92. SDA=1;7 z, Z3 F( M1 H! u
  93. else3 I. ]" [- @7 Q& P- f0 d7 S
  94. SDA=0;
      n7 }- ~7 p4 q$ o
  95. SCL=1;
    8 q/ \+ K% E5 Y) Y
  96. cmd=cmd<<1;
    + p, |+ H) T4 h8 k( p/ v8 D
  97. }/ H% m: h0 ~4 c  g0 e' K* l
  98. CS=1;2 I' g$ }8 H9 E; g- [
  99. }
    : i5 a( Q2 l  f
  100. //设置起始行列& `9 [2 R% N# V7 y1 D# w- b
  101. //ys为起始行,xs为起始列, ye为结束行, xe为结束列: C( B. {9 q0 t8 l9 c
  102. //xe与xs的差值即字的宽度, ye与ys的差值即字的高度% e  S" S$ i7 d2 g" l
  103. void LCDSetXY(char xs, char ys, char xe, char ye )% F+ _8 ~/ C9 h, w- ]
  104. {0 A9 @. [  {! D% y% [
  105. LCDWriteCmd(0x2A); //设置列地址(横坐标)
    8 Q3 n% K7 o  q$ H9 J$ x" W8 A+ V
  106. LCDWriteData(0x00);
    # {1 h1 `1 r% M+ \) N; e
  107. LCDWriteData(xs);
    0 f$ B! F- }+ I( a$ C1 B
  108. LCDWriteData(0x00);) @( V) K: c9 a. j" j
  109. LCDWriteData(xe);
    # |. N: n: C' K2 q5 n6 o
  110. LCDWriteCmd(0x2B); //设置行地址(纵坐标)2 x6 n( o4 m$ e# p' U% A1 z# f
  111. LCDWriteData(0x00);! e3 {" A# U: X
  112. LCDWriteData(ys);
    : v# {3 c' U+ u* X. s( n  `  G, Z
  113. LCDWriteData(0x00);) x2 w! _9 ]( j. [! X' ^
  114. LCDWriteData(ye);" F, T5 M9 L6 V- @8 w9 z. H7 K0 j$ \
  115. }
    . `. n+ `2 ~* K2 T. W
  116. //清屏函数
    % H2 |. E! }( E/ x0 f
  117. void LCD_ClrScreen(unsigned char value)4 v7 p/ W3 @; }% ^! V
  118. {
    * w% m4 h+ D& v; p- G* a& z% U: n- I
  119. unsigned char i,j;% n. D2 U4 L" d1 b0 e% S
  120. const unsigned char tt[]={0x00,0x49,0x92,0xff,};" G* E/ j/ {- }1 Y. n' A( D2 z
  121. value=value&0x03;4 c! I2 Z! ?  G" M* P3 Z
  122. value=tt[value];: c( Z- M3 \3 o! ]% o  D4 [
  123. LCDSetXY(0,0,53,119);
    % E3 B6 _9 ^8 ?
  124. LCDWriteCmd(0x2C); //向DDRAM写入显示数据
    . J# J; V1 y, p. r
  125. for(i=0;i<120;i++)
    : Q% J0 T. b; c) V" K
  126. for(j=0;j<54;j++)4 U1 L- c; b& X# y( G
  127. LCDWriteData(value);
    4 _+ P+ g5 C( V3 z
  128. P16 =~P16;6 r. o* x! Z* f0 ]8 t, ]
  129. }
    ! R9 U1 R" Q/ O$ _( j+ ~3 r% w
  130. void GPM1306_DISBMP(const unsigned char *BMP)
    + N( d. n3 S$ w; ?8 I+ m
  131. {6 n; ]$ m" d: g& L
  132. unsigned long MCx8x3;4 E, f2 ?7 T# w$ C% m/ W+ C
  133. unsigned char LINE_COUNT,COLUNM_COUNT,color,t1;
    ; j$ Q3 h& b7 T3 z
  134. signed char vaild_bit=8;
    ' }0 R. {- d. Y4 @& c2 C
  135. ((unsigned char *)&MCx8x3)[2]=*BMP;
    1 D1 o* z2 l3 a8 y3 g2 U
  136. BMP++;0 T: g1 W" Y/ {4 \8 o
  137. LCDSetXY(0,0,53,119);+ q7 B$ Q7 U. X! N* E
  138. LCDWriteCmd(0x2C); //向DDRAM写入显示数据
    1 a) ]( p  q+ Y2 D" }5 V
  139. for(LINE_COUNT=0;LINE_COUNT<120;LINE_COUNT++)
    3 Z: u& ~' w5 B! l
  140. {
    , ^8 B+ e* s7 Y2 I
  141. for(COLUNM_COUNT=0;COLUNM_COUNT<53;COLUNM_COUNT++)//160/3=53....1
      m# W) b' L* i$ ^7 T
  142. {4 b3 V- H8 R$ W* N: ]/ N; P! I
  143. if(vaild_bit<3)1 _" E. \# Q% }8 c/ J
  144. {- `/ c' ^6 N6 R: p1 }( y
  145. MCx8x3=MCx8x3<<vaild_bit;8 B3 z' y2 U7 a% h; [1 k
  146. ((unsigned char *)&MCx8x3)[2]=*BMP;% K* o! y& y( z& S# |7 p9 H4 j
  147. BMP++;
    : ^0 B# a- G/ [$ H, [
  148. MCx8x3=MCx8x3>>vaild_bit;+ b- A( ?6 b0 n- \% c
  149. vaild_bit=vaild_bit+8;6 V5 N8 j- V/ a6 ~9 b' `, L
  150. }
    2 |: K0 G  e3 o8 {0 L" [8 t$ @# ^+ P
  151. color=0;
    5 D$ X9 h7 p$ e) f
  152. t1=((unsigned char *)&MCx8x3)[2];
    % u2 [2 }! J1 F( f
  153. if((t1&0x80))5 [0 v1 x# I! u! `$ M' k, ]
  154. color=0x03;
    ; p/ z! q0 _3 U  Z4 v
  155. if((t1&0x40))
    2 ?8 i0 L: T8 ~. S& h! j$ ^  W. t
  156. color=color+0x1c;
    ) }! E2 ^' Z3 a7 [! ^: |
  157. if((t1&0x20))  a. ~, K% M" u& ]; `6 k) P
  158. color=color+0xe0;& g. @1 R" n: N1 l! r( `
  159. MCx8x3=MCx8x3<<3;
    9 C, ]" d! B) Y8 ?' Y- V, `# Q1 \
  160. vaild_bit=vaild_bit-3;( {3 h. g; @# |, P
  161. LCDWriteData(color);
    9 X0 W6 i" d* C" I1 v: g3 q- `5 l
  162. }5 c& w3 U* O6 ]: y
  163. if(vaild_bit<3)  I" t, L  \, R! K: Z% _+ M9 g
  164. {
    9 ]$ I; W& K8 B7 U
  165. MCx8x3=MCx8x3<<vaild_bit;8 m$ D! q% @, r% r) ]
  166. ((unsigned char *)&MCx8x3)[2]=*BMP;
    ) S/ o0 M0 i* B, H5 v. h5 ~
  167. BMP++;. O- ?! {! T$ ~/ w- i
  168. MCx8x3=MCx8x3>>vaild_bit;
      j% B) ]. x  F7 _% V1 E
  169. vaild_bit=vaild_bit+8;
    6 e* X# S. h" j: `/ K1 b. t
  170. }
    5 T3 [! v" Y: H; i1 s
  171. color=0;0 G  D1 ^% e4 M  k* \0 j1 ^
  172. t1=((unsigned char *)&MCx8x3)[2];3 T8 w' v, P5 h7 ^
  173. if((t1&0x80))
    % Y. q" T: l; j- b, ~
  174. color=0x03;
    4 ?6 |+ C( A8 z( V7 t" r1 [8 S
  175. MCx8x3=MCx8x3<<1;1 ]' H$ Z/ J4 v; J
  176. vaild_bit=vaild_bit-1;
    % A+ W5 a' m' M- O9 @
  177. LCDWriteData(color);5 ]) X2 B/ ^: @0 e
  178. }" f. S% j3 M& s+ D! K
  179. }
    6 b: T% L: g- N- l, W# P
  180. //初始化函数( i; X: X' o  w( Z$ ]
  181. void LCDInit(void)' h1 z3 O# [  _. o& v9 B8 F
  182. {3 W- y; C6 o9 n# T1 j
  183. RST=0;
    + \  Z0 p" q4 g, c2 P4 Y& j5 a8 U8 Q
  184. delay(20);//Delay_ms(20) //延时20ms
    . }; z, _6 c# N7 w- v+ L. ~2 }
  185. RST=1;
    # \7 W: |' w  V3 e& e& z7 F5 D3 q
  186. delay(200);//Delay_ms(200); //延时200ms
    ( U0 |& j% D- I
  187. LCDWriteCmd(0x01); // soft reset! i3 b. |* S1 q4 W4 q3 ^6 }5 J4 T
  188. delay(200);//Delay_ms(200); //延时200ms
    % t6 l. Q7 r0 a1 s
  189. LCDWriteCmd(0x11); //Set power save mode:Sleep out mode
    + {0 ~0 @% [2 B. f9 e
  190. LCDWriteCmd(0xC0); // Set Vop///7 F0 r) x! ^: @: c( {
  191. LCDWriteData(0xf0); // Set Vop Low 8bit 30//全屏太黑或者太白调整这里3 P" x0 K( w; m+ q/ L* U
  192. LCDWriteData(0x00); // Set Vop 9th bit(Total 9 bits) 01//全屏太黑或者太白调整这里4 B9 L, h+ K6 l; s
  193. LCDWriteCmd(0xC3); //Set BIAS system3 [- N9 F8 {5 F6 r' Z# L1 D
  194. LCDWriteData(0x04); // 03: BIAS = 1/11 0-5
    ' V. X4 L. \) z5 J- w" N
  195. LCDWriteCmd(0xC4); // Set booster level! g2 Z& T$ Z- M# t, X9 X: `
  196. LCDWriteData(0x07); // 07:x8 Booster
    . [$ B0 z' w- P! I
  197. LCDWriteCmd(0xD0); // Enable analog circuit% e' P3 }" ]" J! H5 E  V
  198. LCDWriteData(0x1D); // Enable analog circuit1 p8 r2 }, C+ L
  199. LCDWriteCmd(0x38); // Set display mode: M=1: Monochrome mode
    $ X5 y# M* N0 p; @% x
  200. LCDWriteCmd(0x3A); //Enable DDRAM interface  ~2 P7 F$ C( ^% C' S  e; |6 E5 i- Q
  201. LCDWriteData(0x02); //RIF=0: Monochrome mode & 4-level gray scale mode
    ) H' b4 G1 I4 A( i! o* U6 @* H
  202. LCDWriteCmd(0x36); // Display Control) @7 F& Y4 c. x( V$ ~3 z$ O, F
  203. LCDWriteData(0x40); // MY=0: COM0-COM159/MX[1:0]=(0,0):SEG0<-SEG383* W4 u* M; W4 d3 \
  204. LCDWriteCmd(0xB0); // Display Duty5 s( k* _( Q5 H, ~1 t2 s! V
  205. LCDWriteData(0x81); //Set display duty DT=0x9Fh(1/160) DT=0x81(1/130)" f7 d" c# s, I5 D0 n% B! e5 g9 U
  206. LCDWriteCmd(0x20); // Inverse Display:INV=0: Normal display; r/ {" k2 p+ T7 F
  207. LCDWriteCmd(0xf1); //Frame Rate(Monochrome Mode)
    * I$ j: ~+ Y$ q
  208. LCDWriteData(0x15);//Frame Rate 92.0Hz
    7 ~" X0 u8 k  C
  209. LCDWriteData(0x15);
    ( y2 h/ {7 Y6 W9 c$ C5 g
  210. LCDWriteData(0x15);
    2 T3 X5 e  g# W
  211. LCDWriteData(0x15);% w. J, Q$ {. r+ [1 n' r
  212. LCDWriteCmd(0xb1); // First Output COM
    8 E! F5 s' o6 T
  213. LCDWriteData(0x00); // Set first output COM FC=00h(Start from COM0)  O. q8 c/ z! Q/ Q
  214. LCDWriteCmd(0x29); //Display ON! i- C3 s. R, Y3 r# m1 E
  215. }
    $ ]  E3 Y! p; K4 s2 {
  216. void main()+ w5 I1 @0 U, G- z
  217. {
    0 [5 R4 b. |' a. O% R' s2 |
  218. 7 E( e6 F5 f/ g- Q' v; Q
  219. LCDInit(); //初始化液晶
    3 ], e( p! Z' S6 D! b0 x0 b
  220. while(1)
    5 L. e* h9 q0 |) G6 h
  221. {
    , ?6 l6 ^! q7 ^2 k- U
  222. LCD_ClrScreen(0);
    + y4 r; s6 B7 |, V+ l# x+ u
  223. delay(400);
    ( I" F% }$ Z: `  X0 c+ I
  224. LCD_ClrScreen(1);8 ^) B) S; y( j/ @3 P
  225. delay(400);. u9 J: ?* E0 k
  226. LCD_ClrScreen(2);! E/ z. _2 i; _7 ]1 Q
  227. delay(400);# `3 f% V8 x# ]/ V" o9 f
  228. LCD_ClrScreen(3);
    2 S& b; x2 L4 \; K, u9 m
  229. delay(400);, `, h2 ~" g" f1 |! N# @
  230. GPM1306_DISBMP(&gImage_bmp1[0]);3 [. d# E! T# s+ Y$ J0 X. c0 o
  231. delay(400);
    9 d+ F" _- z# a7 ^5 O# t9 c) ~# G# M9 ~
  232. GPM1306_DISBMP(&gImage_bmp1[0]);
    7 j% z( z  L( M9 Q3 S
  233. delay(400);
      w/ ]2 }, k# T
  234. GPM1306_DISBMP(&gImage_bmp1[0]);
    + I  F! W& E9 i9 t
  235. delay(400);2 ?9 i: X* g& Q8 p& K
  236. }
    8 D9 L. |) }* {5 o) I  Q+ l* n
  237. }$ m: a$ d; ?3 D+ F0 A3 \' O9 J
复制代码

- S; i" |% G5 K- n麻烦大家帮忙看看,劳烦大家了!谢谢!!!: a- t$ ~: r7 a4 X+ h9 w

9 N# S: W1 m8 T" R: D
& Y2 W/ c4 r7 r$ j, R- N
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-1-12 00:43 , Processed in 0.040952 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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