一乐电子

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

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最后那几页列程就可以的$ C% g8 ]$ m! ]; F" n
tyuuty7j.jpg
8 q, _# P7 [/ O3 @# B 新建位图图像.bmp
) d( Z6 F0 y6 m
回复

使用道具 举报

发表于 2017-1-13 13:35 | 显示全部楼层
759755401 发表于 2017-1-10 18:42' |! C2 J! G3 V: V
按照手册ST7586S最后那几页列程就可以的
. e$ h* \9 s# s1 x
非常感谢,我再试试!
回复

使用道具 举报

发表于 2017-1-16 15:18 | 显示全部楼层
BaiduShurufa_2017-1-16_15-13-27.bmp
* H" O- `- J' o, mU2是稳压芯片ams1117,输出3.3V: i2 l* J/ a( M, m; c" Y) W2 v
大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?
# I8 y% ^1 K) @$ k, E# z; \3 d今儿又重新做了一个板子,还是点不亮。
  e# U. M" ^" f/ \7 g4 ]  X我觉得问题可能有2个,1是硬件不对,2程序延时不对。
  d1 V& K4 T" n$ ?  Z程序中我有一点疑问,是不是我的时序不对呢?程序里面延时程序__delay_cycles(Fosc*0.2);的延时应该是多少毫秒呢?
% }* v) F5 ]8 J" p, c. ]

  1. 0 n* `' e* V$ [+ N- _; F* a
  2. <P>__delay_cycles(Fosc*0.2);//Delay_ms(20)   //延时20ms</P>
    6 f2 X2 O" T2 d  O3 z$ v5 U
  3. <P>GPM1306_RST_SET;  ]) F/ L. ?; [- m4 d
  4. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms3 p4 n/ w8 s) t4 {0 s' W+ ]: i8 ]
  5. LCDWriteCmd(0x01);   // soft reset8 F* ]5 M0 B+ w9 h" l5 @! S
  6. __delay_cycles(Fosc*0.4);//Delay_ms(200); //延时200ms </P>
复制代码

" i6 V, c. t* E# T9 s3 A
回复

使用道具 举报

 楼主| 发表于 2017-1-16 16:48 | 显示全部楼层
本帖最后由 wangke2010 于 2017-1-16 17:00 编辑 , q8 X$ R* L% f9 u/ L' O& \4 j
davg1 发表于 2017-1-16 15:18
' u: b  }# ?+ AU2是稳压芯片ams1117,输出3.3V9 g; f& G/ O- W0 T2 G/ C3 b( ~5 |
大神,麻烦您再帮我看看我硬件搭的有没有问题可以吗?; R; n% k- a9 ?/ {
今儿又重新做了 ...Fosc就是时钟频率,x0.2就是0.2秒
2 i8 S# C3 C1 I有条件的话加上逻辑分析仪看看时序' }% L- O5 p0 f" k5 y
如果还是不行的话,楼上那个晒图额朋友可以请教,他已经移植到别的平台上面了。
; P! |  \, O8 F$ E0 l最后,图片稍微有点不合适,那个电阻是给背光LED限流的,具体看下图
BaiduShurufa_2017-1-16_15-13-27.bmp
) e  ~6 s, |$ K' R9 u) W  Y' R. T* g2 _/ T- L, L4 H! P8 r
5 G! J+ ^3 }- @6 K$ J' R* e1 d
回复

使用道具 举报

发表于 2017-1-16 16:58 | 显示全部楼层
无标题.bmp ( L0 b# k: G7 d

* _* M0 f* e5 x2 |void init_GPM1306(void)
% g$ Z5 x) M& M" s' I! p1 }  N{" t  E; X, Y7 j" m% o0 _0 n
uint8 col,row;
- U/ G- u: S' U0 f delay_1ms(5);
' M$ ~) M; t% N( P5 s LCM13060_RST = 0;
9 U+ Y: M8 d) {8 S delay_1ms(200);
0 K" `- m! H! k; K1 z LCM13060_RST = 1;, i% U  X  t0 I1 p
delay_1ms(200);, D: V/ L' F  ]& |6 u! K0 e5 Q
//SPI_TX_command(0x01);//  soft reset: k8 H6 h' X- F0 a) x6 a  e. L3 u
//delay_1ms(200);& O% s% K3 `) ]' A# l2 A8 H

* @" t* ^/ ]* s3 `& g9 x- i) o# U% x
: s6 \1 R! v; O7 J; c9 o SPI_TX_command(0xD7);// Disable Auto Read
: `/ _8 ]. ~5 I/ Y( b" g SPI_TX_DAT(0x9F);  
8 f+ x# O' j( N
1 [$ g% ?4 `2 S, J1 Y+ C' u SPI_TX_command(0xe0);// Enable OTP Read 1 Y& A# N6 y6 N( n3 l5 n7 m
SPI_TX_DAT(0x00);  
. ?9 W  e" J! P) v. P delay_1ms(10);
/ y0 o3 o0 `/ h# n * j  _! c( _( G" ~; _' r3 u
SPI_TX_command(0xe3);// // OTP Up-Load9 X# S5 L: r3 d
delay_1ms(20);
- p7 a2 J4 M5 x4 W3 x4 Z! s 8 }+ Q; A1 q8 o8 U: E7 E5 f
SPI_TX_command(0xe1); // OTP Control Out5 a0 M5 a3 _4 \
SPI_TX_command(0x11);// Sleep Out: W, O. E  ~) ]! v# F& y
SPI_TX_command(0x28);// Display OFF# M9 w$ Y0 e3 R, l% t
delay_1ms(50);
" o: u  j1 d* h- Y) ~; V! P
# J0 d9 V: Z3 X/ Z) o7 p7 ] SPI_TX_command(0xc0);// Vop = B9h效果设置 9BIT
& k1 [+ O, e. N: f SPI_TX_DAT(0xd8);   //LOW 8BITS
  S" S, i$ {, G  _( d; @8 X3 o, j: v SPI_TX_DAT(0x00);  //HIGH 9BIT
9 P$ B3 }# |' P% B' g4 i- b - g; h8 V% U8 }) c3 W" X  i5 Q
SPI_TX_command(0xc3);// BIAS = 1/9
7 u; {$ x8 `( k4 k7 R, a+ E SPI_TX_DAT(0x05);
; P7 w9 u) V4 s  t- g0 L8 i / O$ R/ [% F0 r5 ^+ z# Y
SPI_TX_command(0xc4);// Booster = x8
- Z4 ?6 M( c1 n: k0 H1 O* ]3 a  | SPI_TX_DAT(0x07);* R3 k  |  q5 [! g

" f. a6 K4 e3 d! O SPI_TX_command(0xd0);// Enable Analog Circuit
9 i& N4 h. Z- ~ SPI_TX_DAT(0x1d);
0 n4 T% F2 P) v 4 i+ K5 I( v3 b
SPI_TX_command(0xb5);// N-Line = 0
/ {8 G* ~* Q( {- c, ? SPI_TX_DAT(0x00); & d% y1 {4 `! c# K
  
6 ?6 h' D+ G% o" `9 Q2 @6 P; @. c SPI_TX_command(0x38);// Monochrome Mode6 P* \* }9 P. Y7 B9 S) z
SPI_TX_command(0x3a);// Enable DDRAM Interface
* [5 z: D, j* y1 T: X1 y( c4 j; T) [ SPI_TX_DAT(0x02); 8 r! N; F4 v% m5 V1 _! K9 K. b

, I: {6 d) c, a: b* V" }1 h SPI_TX_command(0x36);// Scan Direction Setting //
2 N, k( Z* O" \& m6 S SPI_TX_DAT(0b00000000);   //0b01000000  Display Control从384开始) e6 @8 j3 ?7 x6 ~

( ^$ Z1 z! k. s9 I SPI_TX_command(0xb0);// Duty Setting
" H/ X' M; N' R; v) ^1 M SPI_TX_DAT(0x81); 0 @# |' L+ Z2 v* H! |
; k/ Z" s2 L6 Q
SPI_TX_command(0x29);// Display ON# y( e& |" l# o, h9 i5 Z

9 e" N1 {2 x! T, Q  G$ D //____CLS_DISPLAY____清屏 + h: Y5 r; \0 C  }4 x3 W' s. ?
回复

使用道具 举报

发表于 2017-1-16 18:19 | 显示全部楼层
759755401 发表于 2017-1-16 16:581 c! q6 U% w5 D  K
void init_GPM1306(void)
+ ^# f& G, P: W7 L{( J. B4 d6 c9 @; N0 Z/ [. v
uint8 col,row;

3 z6 M6 k9 C. r6 b太感谢了!!!4 u, m9 j" }5 S. I. R$ I- a# _
图非常详细,辛苦了!我再试试看!2 `0 i8 k* n9 R( @0 f
回复

使用道具 举报

发表于 2017-1-16 23:42 | 显示全部楼层
2 n9 }- O- _; ?7 _8 k$ n
非常感谢,我用逻辑分析仪看了一下,我发现lz给的实例程序我修改到stc后得到的时序是不对的。
4 l- R8 J2 P; g) a1 J可是头一次玩液晶屏,不知道如何下手
% Y' C0 [: ^; \8 Y低电平那里的20ms是我改的初始化延时地方
! S  w1 y& h2 Q- q, M6 ` 搜狗截图20170116232752.png : Y- J. j2 S; e! I8 a% Z) S5 j% E
搜狗截图20170116232350.png * h  m8 \$ B- D5 T. W& T1 u
搜狗截图20170116232324.png ' d* m6 p- Q8 S) K) g  i# [+ `1 w

8 t( B4 i! @* Y+ A) K+ b" Z附上我的程序 STC15W202S-OLED.rar (55.08 KB, 下载次数: 150)
* m, b8 O$ C+ ^0 j
) U- a3 I3 ^$ q# U) k3 [' w
  1. /* GPM1306.c; t1 I+ @9 \' p! D6 y5 x% c' a. y
  2. * Created on: 2016-10-19  R& C' T2 G% t6 a1 \1 H1 V
  3. * ┌─────────────────────────────────────────────┬───────────────┐% V' m5 @) Y" ]: N
  4. * PIN_NO : 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
    . b7 i3 D. F3 W& {7 S
  5. * NAME : BK-K BK-A NC SCL SDA A0 RST nCS NC VDD C1 VSS VDD C2 C31 C32 C4
    5 T+ i1 B  H  ~6 i* W
  6. * CONN : GND VCC P1.4 P1.3 P1.2 P1.1 P1.0 VDD │ │VSS │VDD │ │ │ │
    ) S, I6 N  t" ^1 d: s
  7. * │ │ │ │ │ │ │ │
    4 c& f' y5 T3 S5 b6 G+ V5 }
  8. * │ C1-C5=1uF 25V 0805 ─── │ ─── ─── │ │ ───
    ' O7 s0 r/ s$ S5 f2 W
  9. * │ 120x160pix ─── │ ─── ─── └─│ │-┘ ───+ Z& [2 `0 y) l* s; P+ o' P9 w; i
  10. * │ ┌──────────┐ │C1 │ │C5 │C2 C3 │C4
    , D; H  e5 {% I* y3 |" O
  11. * └────┤ R1=3R3 ├────────────────────────────────────────┴───┴─────┴──────┴────────────────┘
    0 i( L% F4 S( s1 v
  12. * └──────────┘- Y, a' u: L9 _3 K1 W2 S
  13. *==================================================NOTICE==================================================
    , ?) p+ Q- H- ~. g
  14. *这个程序仅供评估,没有任何技术支持。如有疑问,请仔细阅读压缩包中的PDF文件或者联系芯片/模块厂家。
    ' G! {( X$ }8 q: m  r4 b
  15. *这个模块还有很多功能没有在这个程序中体现出来,具体请参阅压缩包中的PDF文件或者联系芯片/模块厂家。
    5 N: q- {6 M- L* d" v+ ], z; b
  16. *推荐使用TI的LaunchPad验证,如果使用别的板子/芯片,请根据具体情况修改移植源文件。
    - O8 G$ ^& m- \- u' c8 Y9 n: S
  17. **************************************************移植参考**************************************************
    5 z" o2 @- j+ I% k5 r% c& v; U
  18. *使用MSP430系列芯片可以直接使用或者修改一下脚位既可以。注意主频要和 #define Fosc 中定义保持一致。
    ; _/ e' V4 ?  i' E9 [7 j
  19. *移植至别的芯片请注意初始化IO和修改延时参数,修改脚位并注意void LCDInit(void)中有直接控制引脚的指令,需要一并修改。. `) T& ], `$ L
  20. *祝大家玩的开心。5 k% B  N& X4 h. _! Y# k* c
  21. P1OUT |= BIT1; 是将P1OUT倒数第二位被置1
    6 M  `7 G- A8 ^: A
  22. P1OUT&=~ BIT0 是将P1OUT最低位 清 06 s  N5 P. N; S% ?
  23. #define Fosc 16e6
    ! J+ Z$ S2 i* E: l" R3 r  ?: J
  24. #define GPM1306_nCS_CLR P1OUT &=~BIT0//清 0$ i3 _' Q; H0 y4 z' H0 O6 o
  25. #define GPM1306_nCS_SET P1OUT |= BIT0//被置16 ]) N- u" A% E  q% L* u8 G
  26. #define GPM1306_RST_CLR P1OUT &=~BIT1- S( [! L& z' j, B+ C8 R
  27. #define GPM1306_RST_SET P1OUT |= BIT1" c/ }% Z6 C. _3 _
  28. #define GPM1306_A0_CLR P1OUT &=~BIT2
    + H9 U6 J; q2 G! ~; i
  29. #define GPM1306_A0_SET P1OUT |= BIT2
    6 C8 L: K& h- F6 \7 \) R+ D
  30. #define GPM1306_SDA_CLR P1OUT &=~BIT3
    : O: u. ~& E- j, d6 f
  31. #define GPM1306_SDA_SET P1OUT |= BIT3
    2 @/ P3 m+ h9 ~' F. g
  32. #define GPM1306_SCL_CLR P1OUT &=~BIT4
    ; _: s& ]/ P: j( f% i4 d, ]
  33. #define GPM1306_SCL_SET P1OUT |= BIT4
    - F9 n' V" `' {( ]. q
  34. */7 s: W+ v8 e* z; _
  35. #include "stcdelay.c"2 g; c. {, P3 P! L
  36. #include "STC15Fxxxx.H"8 `/ m+ Y* K! |3 T
  37. /****************延时函数引用**********************/$ s! e/ T" [2 a: Y
  38. void delay_us(unsigned int us);
    6 f/ ~2 U) Z+ e( M8 b$ ~
  39. void delay(unsigned int ms);2 v) J& Z, r* _3 \) E' p4 D
  40. /****************延时函数引用end*******************/3 W% b$ d  N- w8 t0 k( t; |
  41. sbit SCL = P1 ^ 0; //15
    ! v' O" b! y4 f' Q: d; g, ]" @
  42. sbit SDA = P3 ^ 7; //14+ w! d6 U* P0 A% Q0 t& ~  l. V. W
  43. sbit A0 = P1 ^ 2; //1
    6 J& _5 i. b* f: B; h" ]
  44. sbit RST = P1 ^ 3; //2
    7 Q! p; D3 E+ M/ t' ?
  45. sbit CS = P1 ^ 4; //3& O+ y; c* r' x4 D2 V
  46. const unsigned char gImage_bmp1[96] = { /* 0X00,0X01,0XA0,0X00,0X78,0X00, */
    4 H: Y" L8 x" T  d6 P
  47. /*-- 文字: 非 --*/
    . c% G- l1 ]0 \# |+ p' S, W3 V
  48. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/) f* W# I" W1 W0 X" b
  49. 0xF7,0x77,0x77,0x77,0x77,0x00,0xFF,0xFF,0xFF,0x00,0x77,0x77,0x77,0x77,0xF7,0xFF,8 E% a2 _5 @7 t5 J" b) ?
  50. 0xEF,0xEF,0xEF,0xEF,0xEF,0x00,0xFF,0xFF,0xFF,0x00,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,. \( ]7 N# C0 d) l/ G7 i; E
  51. : \: a1 o: v% j5 n: ^
  52. /*-- 文字: 常 --*/- B& K6 G$ _3 V/ ^7 X* A
  53. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/" ]6 z% h/ C1 C; M% [
  54. 0xDF,0xE7,0xF7,0x15,0x53,0x57,0x57,0x50,0x57,0x57,0x53,0x15,0xF7,0xD7,0xE7,0xFF,
    1 k# L; S/ F% b
  55. 0xFF,0xFF,0xC1,0xFD,0xFD,0xFD,0xFD,0x00,0xFD,0xFD,0xED,0xDD,0xE1,0xFF,0xFF,0xFF,
    . J* Q1 y2 F5 c# f  e1 v

  56. 2 a- W" h& N5 p
  57. /*-- 文字: 感 --*/
    4 \. f0 K) K3 v2 g! n6 L  G( m& B
  58. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/* Q1 G3 |  L! K
  59. 0xFF,0xFF,0x03,0xFB,0x2B,0xAB,0xAB,0xAB,0x2B,0xFB,0x80,0x7B,0x3A,0xC9,0xFB,0xFF,
    0 h- R! O: y7 x; Y: n/ r
  60. 0x77,0x99,0xFE,0xFF,0x9C,0x7D,0x7D,0x6D,0x54,0x7B,0x7D,0x3E,0xFD,0xDB,0x30,0xFF,
    ' s% V8 I& V5 }9 M  c9 r
  61. * ^/ s( G5 P# r6 i" p& e2 Z0 g
  62. /*-- 文字: 谢 --*/, L' S6 q7 t3 R0 `6 B
  63. /*-- 新宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/. v1 [. ]8 W. R$ F$ i
  64. ' U; f( r% p* X1 y' d2 G
  65. };: u5 n# |. V$ H$ ?' k4 y
  66. void LCDWriteCmd(char cmd)
    9 D7 N, t  n1 E- [1 y
  67. {
    2 ?2 `1 h. u/ k3 o- g
  68. unsigned char i ;# a3 U7 w- Y8 l% w
  69. CS=0; //使能芯片
    4 z) ~; W6 y5 h# x$ o
  70. A0=0;//写命令模式
    3 [0 Z$ b5 G9 ~; S- b3 e4 I) K
  71. for(i=0;i<8;i++)
    0 Q: F5 U- m( L# b6 L2 g- ]: d; {
  72. {# I% u$ M2 z# H$ d  J
  73. SCL=0;
    ; ~4 A5 C! n" p* f  Y$ {
  74. if(cmd&0x80) //先传高位字节,后传低位字节
    ! P2 O7 S1 G8 o% s- S, b+ n
  75. SDA=1;) N! s6 i0 u; ~. {( C' U
  76. else
    ' o  q# y9 e: _& H. b
  77. SDA=0;
    ) t. u) q# ?/ H/ r; |& H
  78. SCL=1;6 R. v2 F$ t2 R3 B8 l% F
  79. cmd=cmd<<1;  t! t* `; e1 j- O3 P2 ]4 p$ C
  80. }
    , J; |% G0 X  I$ P1 D/ ^
  81. CS=1;
    * q& E. T# Y( W) ]6 Q( r2 M
  82. }
    $ U& a: W7 ~5 B) z
  83. void LCDWriteData(char cmd)
    ; |8 v4 [( Y% I$ h' R6 k
  84. {
    % v9 d3 Q1 K9 b9 @
  85. unsigned char i ;
    ; I; b+ o! w+ @' T8 ]
  86. CS=0; //使能芯片! c3 z- s) n+ K& m8 }7 T
  87. A0=1;//写数据模式$ I. f2 F+ x" o
  88. for(i=0;i<8;i++)
    0 y, a: x/ B. {
  89. {- X2 }5 j$ |9 N; }* a
  90. SCL=0;
    1 u3 V, J- j, q. W( S
  91. if(cmd&0x80) //先传高位字节,后传低位字节
    4 T3 D7 g/ X4 @! \" a* y. Q
  92. SDA=1;
    7 @2 K% x  {. e6 i  w5 \
  93. else
    * K2 g1 d. g- e8 F
  94. SDA=0;
    , n* |+ y+ f4 ?: I2 M" J- I
  95. SCL=1;
    , L* E; y0 f; J
  96. cmd=cmd<<1;' ]) U" _: A! q! \
  97. }
    + V6 R) |! a' C8 p
  98. CS=1;
    , K; z* m5 `- _% |; S# V
  99. }0 R% a* s0 J( z/ ]3 z
  100. //设置起始行列$ H, _9 W4 ]( ^- B$ r$ Z
  101. //ys为起始行,xs为起始列, ye为结束行, xe为结束列
    % c: F# l) C% o+ [3 z5 F9 c
  102. //xe与xs的差值即字的宽度, ye与ys的差值即字的高度
    ! `$ T' T+ O& I, l
  103. void LCDSetXY(char xs, char ys, char xe, char ye )
    $ q: N& D; l/ N) |- G3 a$ v5 Q9 ^/ @
  104. {
    / G9 s3 P8 t( d  h
  105. LCDWriteCmd(0x2A); //设置列地址(横坐标), z' h* X$ ^/ n/ l
  106. LCDWriteData(0x00);
    + d$ q' b3 z/ b2 {
  107. LCDWriteData(xs);0 E4 r. w2 @7 K: b. i
  108. LCDWriteData(0x00);9 u* l& N% O* }
  109. LCDWriteData(xe);3 I( `" i+ r" c1 x7 `
  110. LCDWriteCmd(0x2B); //设置行地址(纵坐标)
    9 O. J* [( w. ?' K( N" r
  111. LCDWriteData(0x00);  f( z6 E0 H  E% b& q
  112. LCDWriteData(ys);* o$ G: L! Y- S, }
  113. LCDWriteData(0x00);
    3 c: `) |) Z/ \7 D! H
  114. LCDWriteData(ye);
    5 i2 q$ D! r  W6 Q
  115. }
    7 m, U- D/ A# T3 F
  116. //清屏函数
    ( G+ K) [# C4 _3 d$ z) y
  117. void LCD_ClrScreen(unsigned char value)
    ( G  |5 E. f$ S6 B
  118. {& A8 P3 }1 q; h& l# {7 R8 Y1 ]
  119. unsigned char i,j;# p( D5 S3 O9 w" `- N" x4 \  E. }
  120. const unsigned char tt[]={0x00,0x49,0x92,0xff,};* }- Y% {4 D4 ]) l# }- l4 Q+ s3 a
  121. value=value&0x03;4 r- P7 k8 z5 O+ ]  U  _3 T' K
  122. value=tt[value];
    + A9 U$ f( [& [1 y$ E' T
  123. LCDSetXY(0,0,53,119);% ^, }  W7 d2 k1 N
  124. LCDWriteCmd(0x2C); //向DDRAM写入显示数据( `* X# j# H$ R$ r; Q
  125. for(i=0;i<120;i++), V' z/ t6 D8 q+ @$ G, u3 L, j
  126. for(j=0;j<54;j++)
    ; B8 }: J3 m& v6 z
  127. LCDWriteData(value);  C) {% C( m  o3 T4 j# X
  128. P16 =~P16;
    0 j7 X* J' n& Y* g5 [3 t
  129. }
    6 f" ?! B9 p3 s2 P
  130. void GPM1306_DISBMP(const unsigned char *BMP)
    : Z# |& [7 h% `* f0 Y8 P4 I
  131. {5 d3 ?# Q' Y) ~9 j3 M
  132. unsigned long MCx8x3;
      j9 |: r& U2 E6 L
  133. unsigned char LINE_COUNT,COLUNM_COUNT,color,t1;
    : `3 }# L" N+ S4 r' }+ q' c0 K8 {
  134. signed char vaild_bit=8;
    ) A2 q; d0 ~  ^1 \" k7 n
  135. ((unsigned char *)&MCx8x3)[2]=*BMP;0 w' |% q" D3 ~6 f
  136. BMP++;/ {. X" M3 g; O( A6 k' S, ~
  137. LCDSetXY(0,0,53,119);5 \! d# m0 Z5 |, }. a4 w
  138. LCDWriteCmd(0x2C); //向DDRAM写入显示数据
    1 F" W) h& D' N( O* d: _, S
  139. for(LINE_COUNT=0;LINE_COUNT<120;LINE_COUNT++)
    ! w" g9 u3 Z3 J( H
  140. {
    / n, {3 C7 H0 T' A5 S4 u( y- M' ]
  141. for(COLUNM_COUNT=0;COLUNM_COUNT<53;COLUNM_COUNT++)//160/3=53....1+ m+ r6 U: f3 X; |* M* x
  142. {2 r* N. P; L3 s* _5 A. S
  143. if(vaild_bit<3)( l( V; J* k6 s. f
  144. {
    5 j/ w( [& s' ^& J
  145. MCx8x3=MCx8x3<<vaild_bit;
    & l0 D  v/ T  @' {* b3 n: S- F$ q
  146. ((unsigned char *)&MCx8x3)[2]=*BMP;
    & W( e; o* v8 e
  147. BMP++;
    & {3 T1 o) h' I% f# R5 K, m
  148. MCx8x3=MCx8x3>>vaild_bit;
    9 {! _0 [: V; {5 a" x/ ?
  149. vaild_bit=vaild_bit+8;
    ( C' {% L( ?" x4 P1 F
  150. }0 Z0 u4 P7 x7 ]& V& b, b# Z4 H
  151. color=0;* v0 L/ L9 u! q: Q* a& H4 o% F2 X
  152. t1=((unsigned char *)&MCx8x3)[2];% Q8 @; c; a, t
  153. if((t1&0x80))
    5 w$ S  l; t' \$ j  h: e
  154. color=0x03;# T" w1 i& W, A- Q9 a) Z
  155. if((t1&0x40))
    % R0 a+ o( W7 T1 y) I. w8 Z
  156. color=color+0x1c;4 z5 n- f8 n/ n% f! w+ W* x
  157. if((t1&0x20))
    / j% O: t' v$ e: N
  158. color=color+0xe0;
    ! [& x5 u" p. Z. L, z6 F
  159. MCx8x3=MCx8x3<<3;4 S# O, A* O, H7 `' K
  160. vaild_bit=vaild_bit-3;6 G  \# J! ]9 ^
  161. LCDWriteData(color);
    & U, R! Y) t3 ]8 U& _
  162. }
    / Q( k- \5 V& q* O5 v, M6 D' A# X
  163. if(vaild_bit<3)5 r) T/ C( c5 o, K& h
  164. {, }+ s% I- t9 }1 U. `0 R) x9 H4 g
  165. MCx8x3=MCx8x3<<vaild_bit;
    : h/ \5 s+ I8 ~7 p! @
  166. ((unsigned char *)&MCx8x3)[2]=*BMP;" x! q; U2 D/ }
  167. BMP++;
    # \/ l8 |8 f" e
  168. MCx8x3=MCx8x3>>vaild_bit;; R/ [0 |1 N- c- X/ k2 t
  169. vaild_bit=vaild_bit+8;; C4 x3 d5 k* I+ `) x' U* ]* y
  170. }
    2 w9 L6 O: Q4 `0 R* a% s
  171. color=0;$ S0 C1 U5 Y5 `) v
  172. t1=((unsigned char *)&MCx8x3)[2];2 O' F: S- V7 h2 C
  173. if((t1&0x80))
    5 X( ]$ V. V# r4 [7 P! y
  174. color=0x03;4 j# `) X0 B3 \) Z0 S* U" f
  175. MCx8x3=MCx8x3<<1;; Q, j7 f3 M7 C. v; k
  176. vaild_bit=vaild_bit-1;* v2 [0 v1 _$ S1 V: T, j/ h
  177. LCDWriteData(color);
    ( |) s! j$ }+ [! G1 ^( N
  178. }
      G" }6 V6 D8 C& j$ T1 t( Q  w7 @
  179. }. o# g+ Y1 ?0 c3 _: u* g7 E
  180. //初始化函数9 d3 q8 G  f) Y3 @
  181. void LCDInit(void)
    3 v6 ~( }/ I0 A0 N
  182. {
    3 X  _: n5 I7 _% u6 d) O" [5 \6 k
  183. RST=0;* V9 {* p: i8 z4 Z
  184. delay(20);//Delay_ms(20) //延时20ms
    . Q- h/ L9 u8 o
  185. RST=1;
    ) C, e+ e% `! X( }$ I# I' T6 J  W
  186. delay(200);//Delay_ms(200); //延时200ms
    ) M6 y" f& z9 Q- z0 s; _. l
  187. LCDWriteCmd(0x01); // soft reset2 E0 `% v. i% M4 M  ]3 \+ j
  188. delay(200);//Delay_ms(200); //延时200ms
    9 U0 T3 I/ V- V, k
  189. LCDWriteCmd(0x11); //Set power save mode:Sleep out mode
    + _4 K& K6 |) }
  190. LCDWriteCmd(0xC0); // Set Vop///
    0 \% D8 Q  a2 V$ Z' M% J
  191. LCDWriteData(0xf0); // Set Vop Low 8bit 30//全屏太黑或者太白调整这里4 w: c6 Y0 D6 M1 o3 C' j
  192. LCDWriteData(0x00); // Set Vop 9th bit(Total 9 bits) 01//全屏太黑或者太白调整这里8 J9 t: s4 H" v, d
  193. LCDWriteCmd(0xC3); //Set BIAS system: C2 W' Y. b4 f7 E# K
  194. LCDWriteData(0x04); // 03: BIAS = 1/11 0-5# f" o2 w' S& O
  195. LCDWriteCmd(0xC4); // Set booster level) G0 D$ v3 D; d* Z2 }+ ?/ k
  196. LCDWriteData(0x07); // 07:x8 Booster& o3 r, i) |; ^& y; j
  197. LCDWriteCmd(0xD0); // Enable analog circuit+ I: _; m% o8 x' `
  198. LCDWriteData(0x1D); // Enable analog circuit7 x. W& Q! S- w+ D/ R; D& L' |
  199. LCDWriteCmd(0x38); // Set display mode: M=1: Monochrome mode
    * w$ A9 P, m( v0 `
  200. LCDWriteCmd(0x3A); //Enable DDRAM interface
    9 v7 [  p( u+ `
  201. LCDWriteData(0x02); //RIF=0: Monochrome mode & 4-level gray scale mode3 x! n3 Z; Q. f7 w" M3 B! G) \+ H  E
  202. LCDWriteCmd(0x36); // Display Control7 C, }5 z: q3 Y; C: ?& ]+ G
  203. LCDWriteData(0x40); // MY=0: COM0-COM159/MX[1:0]=(0,0):SEG0<-SEG3839 ^  E; S/ h# i) K
  204. LCDWriteCmd(0xB0); // Display Duty' C6 \3 m  i" X8 {
  205. LCDWriteData(0x81); //Set display duty DT=0x9Fh(1/160) DT=0x81(1/130), G) r, O, j% Z$ ?$ G4 H
  206. LCDWriteCmd(0x20); // Inverse Display:INV=0: Normal display, v' q. a- l: K9 H& `. i) q- Y6 d& c( U
  207. LCDWriteCmd(0xf1); //Frame Rate(Monochrome Mode)4 O1 y2 p2 O9 k; ~* I3 k
  208. LCDWriteData(0x15);//Frame Rate 92.0Hz
    7 N$ l+ ?5 d5 q4 w0 H
  209. LCDWriteData(0x15);. [$ q0 F0 C0 T' a9 P
  210. LCDWriteData(0x15);
    - L- r3 ^* L& T3 |
  211. LCDWriteData(0x15);3 o$ h6 H0 J/ e- |9 H
  212. LCDWriteCmd(0xb1); // First Output COM, w: t9 }( I( m& l! s, c$ y. c
  213. LCDWriteData(0x00); // Set first output COM FC=00h(Start from COM0)
    3 u5 h: ^1 n1 G! m: A
  214. LCDWriteCmd(0x29); //Display ON
    " P6 a6 O: A# ^5 R  b" Q, f
  215. }9 Y# i' A5 ]3 G& S- B- M9 Y/ y
  216. void main()' ^+ b8 r3 k2 C: g
  217. {- p# L( g2 I- |, R$ t' e

  218. ! A, d- q; i1 I) c. s% q
  219. LCDInit(); //初始化液晶
    1 W. b) P4 b5 Y: t% \
  220. while(1)
    . m& v" Z  N7 n" C
  221. {3 Y( x1 ]* G- ]/ X9 Q$ g5 S- P1 |
  222. LCD_ClrScreen(0);
    9 Y" h/ ^8 w. L' ]$ @+ N
  223. delay(400);0 k& A0 x" {: c) q
  224. LCD_ClrScreen(1);
    4 b; [) g3 g3 I% s6 Y2 d9 P( x' s
  225. delay(400);9 B: K% Y. b2 {5 a/ U; q, F- {% d
  226. LCD_ClrScreen(2);
      V  D, |7 A1 }- g1 o" A
  227. delay(400);
    2 N- ]9 N) |0 Z+ q- [
  228. LCD_ClrScreen(3);& I9 |+ ]2 R% P7 i
  229. delay(400);
    " a% M) h" O- Z% T. I
  230. GPM1306_DISBMP(&gImage_bmp1[0]);
    , w. N8 h6 ~* D# n7 r$ Q
  231. delay(400);
    ) {3 _- n( r+ |" b+ c
  232. GPM1306_DISBMP(&gImage_bmp1[0]);
    : ^% H9 Z; A0 Y# f
  233. delay(400);
    , u6 D% N0 v" C6 [/ ]) f; F. Y) P
  234. GPM1306_DISBMP(&gImage_bmp1[0]);
    0 }# e2 ]# r1 n( o8 M& r
  235. delay(400);
    - K" q+ h, \% N% O) }8 m) e
  236. }* [* r$ M4 X/ |8 S9 v. E
  237. }* v* w( Y4 |' c
复制代码

; \2 a& Y9 P1 z5 N! o: i/ b麻烦大家帮忙看看,劳烦大家了!谢谢!!!
+ F. j% z" C0 a  t" s4 l; n' O. t. }8 L* @2 g) C0 n% x
; E1 B  a7 k: z+ G! z2 @
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-10-27 12:31 , Processed in 0.037698 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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