发作品签到
专业版

GPM1306-st7586s-160x120屏

工程标签

1.9k
0
0
5

简介

GPM1306的特殊屏160X130驱动板,, 可正常亮点,驱动有些有小问题,请大神赐教~

简介:GPM1306的特殊屏160X130驱动板,, 可正常亮点,驱动有些有小问题,请大神赐教~

开源协议

GPL 3.0

创建时间:2022-12-15 15:32:21更新时间:2022-12-16 10:36:08

描述

近期开始学习arduino,手上有存了很久的GPM1306屏,这货是ST7586s驱动,显示效果还是错的。
本来ST7586S是能渠道384X160的屏,而且是4级灰度显示,结果封装了一个160X120的屏,将先根据网上原画图发板打板。
230310zy3aep0zno53xa6y.png230311ei45tu4i5ibgu9qa.png
这个屏在封装上就是采用非常规的模式:
231141igglj5ivywhbqqy0.jpg231138il6d4401ei1xc6ht.jpg
网上找的演示代码如下:
/*  GPM1306.c
*  Created on: 2016-10-19
*                  ┌─────────────────────────────────────────────┬───────────────┐
*  PIN_NO : 17    16     15    14    13    12   11    10    9    8    7    6     5     4    3     2     1
*  NAME   : BK-K  BK-A   NC    SCL   SDA   A0   RST   nCS   NC   VDD  C1   VSS   VDD   C2   C31   C32   C4
*  CONN   : GND   VCC          P1.4  P1.3  P1.2 P1.1  P1.0       VDD  │   │VSS  │VDD   │    │     │     │
*            │                                                        │   │     │      │    │     │     │
*            │     C1-C5=1uF 25V 0805                                ───  │    ───    ───   │     │    ───
*            │     120x160pix                                        ───  │    ───    ───   └─│ │-┘    ───
*            │    ┌──────────┐                                        │C1 │     │C5    │C2       C3     │C4
*            └────┤  R1=3R3  ├────────────────────────────────────────┴───┴─────┴──────┴────────────────┘
*                 └──────────┘
*==================================================NOTICE==================================================
*这个程序仅供评估,没有任何技术支持。如有疑问,请仔细阅读压缩包中的PDF文件或者联系芯片/模块厂家。
*这个模块还有很多功能没有在这个程序中体现出来,具体请参阅压缩包中的PDF文件或者联系芯片/模块厂家。
*推荐使用TI的LaunchPad验证,如果使用别的板子/芯片,请根据具体情况修改移植源文件。
**************************************************移植参考**************************************************
*使用MSP430系列芯片可以直接使用或者修改一下脚位既可以。注意主频要和 #define Fosc 中定义保持一致。
*移植至别的芯片请注意初始化IO和修改延时参数,修改脚位并注意void LCDInit(void)中有直接控制引脚的指令,需要一并修改。
*祝大家玩的开心。
*/
#include  "msp430g2553.h"
---由于长度有限,详细见附件下载。。。

实际测试图片只能正常显示一部份,其它是乱码。

后来对根据定义接上arduino,经过几天的尝试,最终采用u8g2库的u8x8_d_st7586s_jlx384160点亮,当然对修改了初始化代码。
这个库能正确的将3个灰度的像素转化成单色进行160X120显示,不然其它只会53X120,字体粗大的惨不忍睹!
修改后的代码初始化驱动库代码如下:
static const uint8_t u8x8_d_st7586s_jlx384160_init_seq[] = {
  U8X8_START_TRANSFER(),/* enable chip */
  U8X8_END_TRANSFER(),/* disable chip */
//  U8G_ESC_RST(15), /* hardware reset */
  U8X8_DLY(60),   /* Delay 60 ms */
  U8X8_START_TRANSFER(),/* enable chip */

  U8X8_C(0x001), // Soft reset
  U8X8_DLY(60), // Delay 120 ms

  U8X8_C(0x011), // Sleep Out
  U8X8_C(0x028), // Display OFF
  U8X8_DLY(25), // Delay 50 ms

  //U8X8_CAA(0x0C0,0x0E5,0x00),// Vop = F0h in trace a bit too dark
  U8X8_CAA(0x0C0,0x0EE,0x00),// Vop = 136h data sheet suggested 0x0145 but this caused streaks

  U8X8_CA(0x0C3,0x004), // BIAS = 1/10 0x04 in trace

  U8X8_CA(0x0C4,0x005), // Booster = x6 0x05 in trace

  U8X8_CA(0x0D0,0x01D), // Enable Analog Circuit

  U8X8_CA(0x0B3,0x000), // Set FOSC divider

  U8X8_CA(0x0B5,0x08B), // N-Line = 0

  U8X8_C(0x039), // 0x39 Monochrome mode. 0x38 - gray Mode

  U8X8_C(0x03A), // Enable DDRAM Interface
  U8X8_A(0x002), // monochrome and 4-level

  U8X8_C(0x036), // Scan Direction Setting
  U8X8_A(0x0C8), // COM159 -> COM0  SEG384 -> SEG0
  // U8X8_A(0x088), // COM159 -> COM0  SEG0-> SEG384

  // 设置起点行
  U8X8_C(0x037), // Set start line  --ROW
  U8X8_A(0x029),

  U8X8_C(0x0B1), // First output COM
  U8X8_A(0x000), //

  U8X8_C(0x0B0), // Duty Setting (num rows - 1)
  U8X8_A(0x09f), // 160-1

  U8X8_C(0x020), // Display inversion off

  // U8X8_C(0x02A), // Column Address Setting
  // U8X8_A(0x000), // COL0 -> COL127
  // U8X8_A(0x000), //
  // U8X8_A(0x000), //
  // U8X8_A(0x035), // 128*3=384 pixels

  // U8X8_C(0x02B), // Row Address Setting
  // U8X8_A(0x000), // ROW0 -> ROW135
  // U8X8_A(0x000), //
  // U8X8_A(0x000), //
  // U8X8_A(0x077), // 160 pixels

  // U8X8_C(0x0F1), // Frame rate monochrome
  // U8X8_A(0x00C), // The factory firmware set this to 49.0 Hz 0x07
  // U8X8_A(0x00C), // This caused a shimmer under 50Hz LED lights
  // U8X8_A(0x00C), // 69.0 Hz (0x0C) fixes this and should avoid the
  // U8X8_A(0x00C), // issue in the US too
  
  U8X8_C(0x029), // Display ON
  U8X8_END_TRANSFER(),/* disable chip */
  U8X8_END()  /* end of sequence */
};


main.cpp如下:
#include
#include

//U8G2_ST7586S_ERC240160_1_4W_SW_SPI u8g2(U8G2_MIRROR, 13, 11, 10, 9, 8);

//修改过的库文件,原点(0,0)起始坐标是(80,0)
U8G2_ST7586S_JLX384160_1_4W_SW_SPI u8g2(U8G2_MIRROR, 13, 11, 10, 9, 8);
---由于长度有限,详细见附件下载。。。


图片取模软件,相比PCtoLCD2002更精细,这是最终测试可以显示的设置:

230837aswb9rpbpi90bswl.png


代码例子可以正常显示NTC的温度及图片,但现在的问题是:
1、采用U8G2库显示,需要采用镜像模式(U8G2_ST7586S_JLX384160_1_4W_SW_SPI u8g2(U8G2_MIRROR, 13, 11, 10, 9, 8);)才能显示正常;
2、驱动默认起始行坐标不是(0.0),通过调节起始行后,坐标是(80,0),意思就是每次显示必须要对坐标进行转换。将X坐标加上80才能显示到。


在此请教各位大神,是否有完美的驱动或者修改方法,此屏采用非镜像及将坐标调整到(0,0);
本人也在学习图片及字体显示方法,奈何U8G2库太庞大,关联太多,网上没有详细教程,
是否有大神可以展示完整的显示字体及图片的代码及注明说明的教程,
不甚感谢!

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
ST7586S.pdf
25
2
126X64 GPM1306参考及取模软件.rar
110
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航