极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 150654|回复: 39

【小巧高性能】mini LCD12864测试+自改可用的驱动库

  [复制链接]
发表于 2012-2-25 13:14:24 | 显示全部楼层 |阅读模式
  上次附件传错了,这里道下歉哈~已经更新
最近淘宝上出了一些mini版的12864,使用SPI连接方式,外形非常小巧,价格十分低廉,刷新速度比一般的大号LCD12864快很多,而且支持作图。


  由于到手后苦于无法用arduino驱动,通过搜索发现Ladyade做过ST7565的arduino驱动库,遂直接挖过来,结果屏幕左右颠倒,从中间分成两半,无法正常显示,于是经过一晚上的摸索,终于修正了参数,成功使用,下面我就共享一下库及其程序。

  PS:如果要显示图片,可以直接使用弘毅的BMP转十六进制的字模软件,但是设置要改成纵向生成8位。






库:
实例程序:
  1. // Zzz

  2. #include "ST7565.h"

  3. int ledPin =  13;   
  4. #define BACKLIGHT_LED 10

  5. ST7565 glcd(9, 8, 7, 6, 5);

  6. #define LOGO16_GLCD_HEIGHT 16
  7. #define LOGO16_GLCD_WIDTH  16

  8. static unsigned char __attribute__ ((progmem)) logo16_glcd_bmp[]={
  9. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  10.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  11.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  12.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  13.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  14.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  15.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xF0,0xF0,0x30,
  16.       0x30,0xF0,0xE0,0xC0,0x10,0xF0,0xF0,0x10,0xF0,0xF0,0x90,0xC0,0xF0,0x70,0x10,0x00,
  17.       0x00,0x00,0xFE,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFE,0xE0,0x00,0x00,0x00,0x00,
  18.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xE0,
  19.       0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  20.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,
  21.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF8,0xF8,0xF8,0x78,
  22.       0x38,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,
  23.       0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x3E,0x3F,0x33,0x30,
  24.       0x38,0x1F,0x2F,0x30,0x3F,0x3F,0x31,0x00,0x30,0x3F,0x3F,0x23,0x00,0x00,0x00,0x00,
  25.       0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0xFF,0xFE,0x80,0x00,0x00,
  26.       0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  27.       0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xFC,0xFC,0xFC,0xF8,
  28.       0xF8,0xF8,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  29.       0x00,0x00,0x00,0xC0,0xE0,0xF8,0xFC,0xFE,0xFF,0x7F,0x1F,0x0F,0x07,0x03,0x00,0x00,
  30.       0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x0F,0x0F,0x0F,0x0F,0x1F,0x1F,0x1F,
  31.       0x1F,0x0F,0x00,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,
  32.       0xFC,0xFC,0xF8,0xF8,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  33.       0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x01,0x0F,0xFF,0xFF,0xFF,0xFF,0xFC,0x80,
  34.       0x00,0x00,0x00,0x80,0xF0,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x07,0xFF,0xFF,0xFF,0xFF,
  35.       0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFE,0xFF,0xFF,0x7F,0x0F,0x0F,0x7F,
  36.       0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  37.       0xFC,0xFF,0x7F,0x3F,0x1F,0x3F,0xFF,0xFF,0xFC,0xF0,0xF0,0xE0,0x80,0x00,0x00,0x00,
  38.       0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  39.       0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x80,0x80,0x80,0x80,0x80,
  40.       0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  41.       0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x07,0x7F,0xFF,0xFF,0xFF,
  42.       0xFC,0xE0,0xF0,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  43.       0xFF,0xFE,0x00,0x00,0x00,0x00,0x80,0xF8,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,
  44.       0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x80,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  45.       0x03,0x01,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,
  46.       0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,
  47.       0x7F,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x0F,0x0F,0x1F,0x3F,0xFF,0xFF,0xFF,
  48.       0xFF,0xE7,0x87,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  49.       0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x7F,0xFF,
  50.       0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
  51.       0xFF,0xFF,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x01,0x01,0x01,0x01,
  52.       0x01,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xC0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  53.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xC0,
  54.       0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  55.       0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x3F,
  56.       0xFF,0xFF,0xFF,0xFE,0xF0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  57.       0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
  58.       0x07,0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x03,0x03,
  59.       0x03,0x03,0x00,0x00,0x00,0x07,0x07,0x07,0x07,0x07,0x01,0x00,0x00,0x00,0x00,0x00,
  60.       0x00,0x00,0x03,0x07,0x07,0x07,0x07,0x07,0x07,0x00,0x1F,0x3F,0x3F,0x3F,0x3F,0x3F,
  61.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x0F,0x1F,0x3F,0x3F,0x3F,0x3F,0x1F,
  62.       0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
  63.       0xF0,0xF0,0xF0,0xE7,0xE7,0xE7,0xE7,0xE7,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,
  64.       0x00,0x03,0x07,0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  65.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  66.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  67.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  68.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  69.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  70.       0x00,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
  71.       0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,
  72.       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

  73. void setup()   {               
  74.   Serial.begin(9600);

  75.   
  76.   pinMode(BACKLIGHT_LED, OUTPUT);
  77.   digitalWrite(BACKLIGHT_LED, LOW);

  78.   
  79.   glcd.st7565_init();
  80.   glcd.st7565_command(CMD_DISPLAY_ON);
  81.   glcd.st7565_command(CMD_SET_ALLPTS_NORMAL);
  82.   glcd.st7565_set_brightness(0x00);
  83.   
  84.   glcd.clear();
  85.   glcd.drawbitmap(0, 0, logo16_glcd_bmp,128, 64, BLACK);
  86.   glcd.display();
  87.   
  88.   delay(50000);
  89.   glcd.clear();

  90.   glcd.drawstring(0,0, "LCD12864 Testing");
  91.   glcd.drawstring(0,3, "Control IC ST7565LCD");
  92.   glcd.drawstring(0,6, "library Re-Design Zzz");
  93.   glcd.display();
  94.   delay(7000);
  95.   glcd.clear();


  96. }


  97. void loop()                     
  98. {}
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-2-25 13:17:58 | 显示全部楼层
不错 多少米?
回复 支持 反对

使用道具 举报

发表于 2012-2-25 13:31:53 | 显示全部楼层
不错啊~楼主搞点应用出来~
回复 支持 反对

使用道具 举报

发表于 2012-2-25 14:01:20 | 显示全部楼层
前来围观
回复 支持 反对

使用道具 举报

发表于 2012-2-25 14:01:34 | 显示全部楼层
搞个雷电,格斗,坦克啥的游戏
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-2-25 14:13:05 | 显示全部楼层
yanghaoxin314 发表于 2012-2-25 14:01
搞个雷电,格斗,坦克啥的游戏

那些都没品位我准备移植PEWPEW2
回复 支持 反对

使用道具 举报

发表于 2012-2-25 14:15:53 | 显示全部楼层
赞一个,mini版的12864在哪买的?
回复 支持 反对

使用道具 举报

发表于 2012-2-25 14:26:55 | 显示全部楼层
本帖最后由 坏鸟 于 2012-2-25 14:27 编辑

不错不错,辛苦了!!收藏一个,以后肯定会用到。
谢谢分享哇.......!!!
回复 支持 反对

使用道具 举报

发表于 2012-3-2 21:48:01 | 显示全部楼层
能否发下连线图啊谢谢
回复 支持 反对

使用道具 举报

发表于 2012-3-26 14:35:37 | 显示全部楼层
Micky 发表于 2012-3-2 21:48
能否发下连线图啊谢谢

根据lz的代码 ST7565 glcd(9, 8, 7, 6, 5);
查看了下ST7565.h内容
class ST7565 {
public:
  ST7565(int8_t SID, int8_t SCLK, int8_t A0, int8_t RST, int8_t CS) :sid(SID), sclk(SCLK), a0(A0), rst(RST), cs(CS) {}
  ST7565(int8_t SID, int8_t SCLK, int8_t A0, int8_t RST) :sid(SID), sclk(SCLK), a0(A0), rst(RST), cs(-1) {}

这里有定义的
也就是说数字口9到5分别接12864的L_SI,L_CLK,L_A0,L_RST,L_CS
然后你接好GND和LED那两个就好了。

PS:我测试了下 显示BMP那个正常,但是位置错位,显示文字看不清,像乱码一样。估计代码那里有问题
有待进一步测试。
回复 支持 反对

使用道具 举报

发表于 2012-3-27 06:55:24 | 显示全部楼层

RE: 【小巧高性能】mini LCD12864测试+自改可用的驱动库

wolfkin 发表于 2012-3-26 14:35
根据lz的代码 ST7565 glcd(9, 8, 7, 6, 5);
查看了下ST7565.h内容
class ST7565 {

arduino 还是放弃图片显示吧,估计溢出了。
弘毅的12864教程,显示两张图片就会乱码
回复 支持 反对

使用道具 举报

发表于 2012-5-29 21:41:27 | 显示全部楼层
thomas 发表于 2012-3-27 06:55
arduino 还是放弃图片显示吧,估计溢出了。
弘毅的12864教程,显示两张图片就会乱码

我也碰到过溢出 换成1280 2560 就OK了
回复 支持 反对

使用道具 举报

发表于 2012-7-16 22:46:39 | 显示全部楼层
楼主 我的问题和你的一样
把你的程序写了换一样
能说下杂样修改反转吗?
回复 支持 反对

使用道具 举报

发表于 2012-7-25 16:26:51 | 显示全部楼层
这个LCD可以反转显示吗?
回复 支持 反对

使用道具 举报

发表于 2012-7-29 13:07:24 | 显示全部楼层
地址好多...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 12:38 , Processed in 0.047850 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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