LCD12864液晶屏简介

LCD12864带中文字库图形点阵式液晶显示器,可配合各种单片机可完成中文汉字、英文字符和图形显示,可构成全中文人机交互图形界面,模块具有功耗低、显示内容丰富等特点而应用广泛。它是利用液晶经过处理后能改变光线的传播方向,以电流刺激液晶分子产生点、线、面并配合背光灯构成画面。其显示分辨率为128×64, 内置2M位中文字型ROM(CGROM)8192个(1616点阵)汉字,和16K位半宽字型ROM(HCGROM)128个(168点阵)ASCII字符集,可以显示8×4行16×16点阵的汉字。ST7920的字型产生RAM(CGRAM)提供用户自定义字符生成(造字)功能,可提供4组1616点阵的空间。将要显示的字符的编码写到显示RAM(DDRAM)上,硬件自动从CGROM中选择将要显示的字型显示在屏幕上。绘图RAM提供6432个字节的空间,最多可以控制256*64点阵的二维绘图缓冲空间。具有4位/8位并行(适配M6800时序)、2线或3线串行多种接口方式。各种液晶厂家均有提供几乎都是同样规格的LCD12864模块或兼容模块,基本上也都采用了兼容的IC,所以从特性上基本上是一样的;当然,很多厂商提供了不同的字符颜色、背光色之类的显示模块。
LCD12864内部主要由LCD 显示屏(LCD PANEL)、控制器(controller)、驱动器(driver)和偏压产生电路构成。

模块引脚定义

Vout为LCD驱动电压输出端,可不接
RST使用时不需复位LCD,可不接
VO一般LCD背面有电位器调节对比度,电压越高对比度也越高,可不接

Arduino UNO与LCD12864模块SPI串行接线方式

Arduino UNO LCD12864
A2 R/W
A3 RS
A4 E
GND VSS
5V VCC
GND PSB
GND BLK
5V BLA

测试代码

在Arduino IDE库管理器搜索u8glib,并安装如图示所例程库
打开PCtoLCD2002软件,设置参数为C5I,选择模式为字符模式,输入要转换的汉字,然后点击生成字模,最后把生成的字模放入一个字符数组里面。


打开HelloWorld.ino例程,多个汉字显示代码演示

#include "U8glib.h"
U8GLIB_ST7920_128X64_4X u8g(18, 16, 17);// SPI Com: SCK = en = 18, MOSI = rw = 16, CS = di = 17
const uint8_t rook_bitmap1[] PROGMEM = {0x00,0x00,0x27,0xFC,0x14,0x04,0x14,0xA4,
0x81,0x10,0x42,0x08,0x40,0x40,0x10,0x40,
0x17,0xFC,0x20,0x40,0xE0,0xE0,0x21,0x50,
0x22,0x48,0x2C,0x46,0x20,0x40,0x00,0x40,/*"深",0*/
};
const uint8_t rook_bitmap2[] PROGMEM = {0x11,0x04,0x11,0x24,0x11,0x24,0x11,0x24,
0x11,0x24,0xFD,0x24,0x11,0x24,0x11,0x24,
0x11,0x24,0x11,0x24,0x11,0x24,0x1D,0x24,
0xE1,0x24,0x42,0x24,0x02,0x04,0x04,0x04,/*"圳",1*/
};
const uint8_t rook_bitmap3[] PROGMEM = {0x02,0x00,0x01,0x00,0x00,0x00,0x7F,0xFC,
0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,
0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x28,0x21,0x10,0x01,0x00,0x01,0x00,/*"市",2*/
};
const uint8_t rook_bitmap4[] PROGMEM = {0x08,0x90,0x08,0x88,0x08,0x88,0x10,0x80,
0x17,0xFE,0x30,0xA0,0x30,0xA0,0x50,0xA0,
0x90,0xA0,0x10,0xA0,0x11,0x20,0x11,0x22,
0x11,0x22,0x12,0x22,0x12,0x1E,0x14,0x00,/*"优",0*/
};
const uint8_t rook_bitmap5[] PROGMEM = {0x08,0x40,0x08,0x20,0x0B,0xFE,0x10,0x00,
0x10,0x00,0x31,0xFC,0x30,0x00,0x50,0x00,
0x91,0xFC,0x10,0x00,0x10,0x00,0x11,0xFC,
0x11,0x04,0x11,0x04,0x11,0xFC,0x11,0x04,/*"信",1*/
};
const uint8_t rook_bitmap6[] PROGMEM = {0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,
0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,
0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,
0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE,/*"电",2*/
};
const uint8_t rook_bitmap7[] PROGMEM = {0x00,0x00,0x7F,0xF8,0x00,0x10,0x00,0x20,
0x00,0x40,0x01,0x80,0x01,0x00,0xFF,0xFE,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,/*"子",3*/
};
const uint8_t rook_bitmap8[] PROGMEM = {0x08,0x10,0x1D,0x10,0xF0,0x90,0x10,0x90,
0x10,0x10,0xFD,0x10,0x10,0x90,0x38,0x90,
0x34,0x10,0x50,0x1E,0x53,0xF0,0x90,0x10,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,/*"科",0*/
};
const uint8_t rook_bitmap9[] PROGMEM = {0x10,0x20,0x10,0x20,0x10,0x20,0x13,0xFE,
0xFC,0x20,0x10,0x20,0x10,0x20,0x15,0xFC,
0x18,0x84,0x30,0x88,0xD0,0x48,0x10,0x50,
0x10,0x20,0x10,0x50,0x51,0x88,0x26,0x06,/*"技",1*/
};
const uint8_t rook_bitmap10[] PROGMEM = {0x02,0x00,0x02,0x00,0xFF,0xFE,0x04,0x00,
0x04,0x00,0x0F,0xF0,0x08,0x10,0x18,0x10,
0x2F,0xF0,0x48,0x10,0x88,0x10,0x0F,0xF0,
0x08,0x10,0x08,0x10,0x08,0x50,0x08,0x20,/*"有",2*/
};
const uint8_t rook_bitmap11[] PROGMEM = {0x00,0x00,0x7B,0xF8,0x4A,0x08,0x52,0x08,
0x53,0xF8,0x62,0x08,0x52,0x08,0x4B,0xF8,
0x4A,0x44,0x4A,0x48,0x6A,0x30,0x52,0x20,
0x42,0x10,0x42,0x88,0x43,0x06,0x42,0x00,/*"限",3*/
};
const uint8_t rook_bitmap12[] PROGMEM = {0x00,0x80,0x04,0x80,0x04,0x80,0x08,0x40,
0x08,0x40,0x10,0x20,0x20,0x10,0x42,0x08,
0x82,0x06,0x04,0x00,0x04,0x40,0x08,0x20,
0x10,0x20,0x3F,0xF0,0x10,0x10,0x00,0x00,/*"公",4*/
};
const uint8_t rook_bitmap13[] PROGMEM = {0x00,0x00,0x3F,0xF8,0x00,0x08,0x00,0x08,
0x7F,0xE8,0x00,0x08,0x00,0x08,0x1F,0x88,
0x10,0x88,0x10,0x88,0x10,0x88,0x10,0x88,
0x1F,0x88,0x10,0x88,0x00,0x28,0x00,0x10,/*"司",5*/
};
void draw(void) {// graphic commands to redraw the complete screen should be placed here  //u8g.setFont(u8g_font_unifont);//u8g.setFont(u8g_font_osb21);//u8g.drawStr( 0, 22, "Hello World!");u8g.drawBitmapP( 32,  0, 2, 16, rook_bitmap1);//0行0列显示“深”u8g.drawBitmapP( 48, 0, 2, 16, rook_bitmap2);//0行16列显示“圳”u8g.drawBitmapP( 64, 0, 2, 16, rook_bitmap3);//0行32列显示“市”u8g.drawBitmapP( 16, 16, 2, 16, rook_bitmap4);//16行32列显示“优”u8g.drawBitmapP( 32, 16, 2, 16, rook_bitmap5);//16行32列显示“信”u8g.drawBitmapP( 48, 16, 2, 16, rook_bitmap6);//16行32列显示“电”u8g.drawBitmapP( 64, 16, 2, 16, rook_bitmap7);//16行32列显示“子”u8g.drawBitmapP( 80, 16, 2, 16, rook_bitmap8);//16行32列显示“科”u8g.drawBitmapP( 96, 16, 2, 16, rook_bitmap9);//16行32列显示“技”u8g.drawBitmapP( 32, 32, 2, 16, rook_bitmap10);//32行32列显示“有”u8g.drawBitmapP( 48, 32, 2, 16, rook_bitmap11);//32行32列显示“限”u8g.drawBitmapP( 64, 32, 2, 16, rook_bitmap12);//32行32列显示“公”u8g.drawBitmapP( 80, 32, 2, 16, rook_bitmap13);//32行32列显示“司”
}
void setup(void) {}
void loop(void) {// picture loopu8g.firstPage();  do {draw();} while( u8g.nextPage() );// rebuild the picture after some delaydelay(500);
}

u8g.drawStr( m, n, str);//m代表的是第m列,n代表的是第n行,str是要显示的字符串
u8g.drawBitmapP( m, n, x, y, str);//m代表的是第m列,n代表的是第n行,x代表的是生成字。模点阵时的列数除以8,y代表的是点阵行数,str是要显示的字符串。

实验结果

接好线,编译上传代码到Arduino UNO后,可在LCD12864上程序对应位置显示出汉字。

Arduino UNO通过SPI串行方式驱动LCD12864液晶屏相关推荐

  1. stm32驱动LCD12864液晶屏驱动程序,亲测可行,复制直接能用!

    废话不多说,直接贴程序,你自己复制过去即可,免得我通过把工程上传的方式,你下载还得需要c币,这个现在很贵呀!!! 就两个文件,LCD12864.h和LCD12864.c,自己复制过去后,改一下引脚即可 ...

  2. 【Arduino】使用C#实现Arduino与电脑进行串行通讯

    在给Arduino编程的时候,因为没有调试工具,经常要通过使用串口通讯的方式调用Serial.print和Serial.println输出Arduino运行过程中的相关信息,然后在电脑上用Arduin ...

  3. 【Proteus仿真】Arduino UNO利用Stepper库实现uln2003驱动步进电机转动

    [Proteus仿真]Arduino UNO利用Stepper库实现uln2003驱动步进电机转动 Proteus仿真 Proteus说明 Proteus软件里面的步进电机的步距角默认是90,和代码中 ...

  4. 液晶屏 LCD12864 / LCD12232 串行 / 并行接口驱动

    液晶屏 LCD12864 / LCD12232 串行 / 并行接口驱动 一.LCD12864 / LCD12232 1.LCD12864 2.LCD12232 3.接线图 二.ST7920 1.接口时 ...

  5. DSP SPI串行外设接口

    1.SPI介绍 1.1 SPI简介 SPI的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器 ...

  6. 3.3 SPI串行Flash配置模式

     SPI串行Flash配置模式 1.SPI串行配置介绍 串行Flash的特点是占用管脚比较少,作为系统的数据存贮非常合适,一般都是采用串行外设接口(SPI 总线接口).Flash 存贮器与EEPROM ...

  7. linux12.040串口驱动,pci串行口驱动下载

    设备管理器中的pci串行口显示叹号?pci串行口驱动也叫pci串行卡驱动,串行卡简称串卡,本次小编发布的这个pci串行口驱动不但支持 SUPPORT:NT40 98 ME 2K XP VISTA SE ...

  8. arduino下载库出错_arduino的I2C通讯 3:驱动1602液晶屏

    上个推送,我们学习了I2C功能的基础知识.而且知道了使用很多器件都需要安装库.本次,我们一起来做一个实例,用arduino驱动1602液晶屏 1602代表屏幕有16列,2行.传统的驱动方式占用了大量的 ...

  9. ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能

    最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...

最新文章

  1. Java Swing 皮肤
  2. vim设置solarized配色
  3. VTK:Rendering之Shadows
  4. JavaScript及jQuery选择器(二)
  5. 【渝粤题库】陕西师范大学292071社会统计学作业(高起专)
  6. 解决maven加载不了oracle jdbc驱动包的问题
  7. 面试官问我什么是「栈」,我随手画了 10 张图来解释
  8. java string equal 与==的区别
  9. MongoDB 学习笔记(一):安装及简单shell操作
  10. 密码学专题 非对称加密算法指令概述 DH算法指令
  11. 易语言文件夹加密解密助手
  12. 土建中级工程师考试用书电子版_湖南土建中级职称教材1.pdf
  13. 《软件过程管理》 第七章 软件过程的质量管理
  14. python爬取作品集_Python爬虫爬取哈利波特小说集,并用数据可视化剖析登场人物...
  15. 常见系统安全漏洞及解决方案
  16. 小小Mac:Web移动端适配方案
  17. 广告片制作技巧分享。
  18. JMeter 常用的几种断言方法,你会几种呢?
  19. Matlab中fspecial函数 和imfilter函数的用法
  20. 有趣的灵魂用有趣的屏保SadMac.saver

热门文章

  1. vim 光标十字定位和对齐线
  2. 1727: Dungeon Master
  3. 2022年湖北武汉安全员ABC证一年考几次?什么时候考试呢?
  4. ArcGIS10.2安装教程(win11版)
  5. 用单片机实现USB主机接口
  6. Tobii Studio眼动仪教程 - 真正的测谎机器
  7. linux systemtap java,Systemtap 两个实用的小例子
  8. win7远程桌面计算机全名,详细教你win7远程桌面连接
  9. HFM student Hyperion Financial Management
  10. 蘑菇云「行空板Python入门教程」第九课-智慧农业物联网系统2