arduino uno spi驱动12864

一、简介

12864是个128x64像素,支持4位/8位接口,支持串行并行的液晶显示模块。我的这个是ST7920的芯片。内置8192个16×16点阵汉字(2Mbits GDRAM),126个16*8点阵ASCII字符(16Kbits HCGROM),用的16位的国标编码,兼容ASCII,把源文件用GB2312编码另存,需显示的字符即为对应的字符地址。GBK,GB18030,是GB2312的扩充,后面的字符没有对应的点阵汉字,显示会出问题。但前面的是一致的,也可以用,最好还是用GB2312另存。还有64 个 16-bits 自造字 RAM (CGRAM)
15 个16-bits 图标 RAM(IRAM),也可以显示图片(64x256bits GDRAM )。

并行占用io有点多,用的串行,串行和并行的传送命令与数据是一致的。

二、接线方式

2 3 4 脚自定义
在这里插入图片描述

三、串行时序

在这里插入图片描述
先CS拉高
发送第一字节 依次发送5个1, RW(读/写 0写 1读) , RS(命令/数据 0命令 1 数据 ) ,0 一共8位 (0x1f << 3 ) | (cmd <<1)
发送第二字节 依次发送数据高四位 4个0 data&0xf0
发送第三字节 依次发送数据低四位 4个0 (data&0x0f)<<4
发送完成
CS拉低

四、初始化

初始化命令
在这里插入图片描述
初始化流程 8位模式
在这里插入图片描述
4位模式
在这里插入图片描述

五、显示

命令集
在这里插入图片描述
在这里插入图片描述

六 代码

示例代码如下 pin自定义 显示中文 代码另存为GB2312然后编译。

#define CS 4
#define SID 3
#define SCLK 2

void writebyte(unsigned char data)
{
    unsigned int i;
    for(  i = 0; i < 8; i++) {
       digitalWrite(SID, !!(data& (1<<(7-i))));
       digitalWrite(SCLK,HIGH);
       digitalWrite(SCLK,LOW);
    }
}

void writecmd(unsigned char data) {
    writebyte(( 0x1F << 3) );
    writebyte(data&0xf0);
    writebyte((data << 4)&0xf0);
}

void writedata(unsigned char data)  {
    writebyte(( 0x1F << 3) | (1 <<1) );
    writebyte(data&0xf0);
    writebyte((data << 4)&0xf0);
}

void lcdclear() {
    writecmd(0x30);
    writecmd(1);
    delayMicroseconds(1600);
}

void lcdinit() {
    digitalWrite(CS,HIGH);
    digitalWrite(SCK,LOW);
    delay(40);
    writecmd(0x30);
    delayMicroseconds(100);
    writecmd(0x30);
    delayMicroseconds(37);
    writecmd(0x0c);
    delayMicroseconds(100);
    writecmd(0x01);
    delay(10);
    writecmd(0x06);
    digitalWrite(CS,LOW);
}
void showstr(int y, int x, unsigned char *str)
{
    unsigned char loc =  ((y&1)<<4) | ((y&2)<<2)| 0x80 |(x&0xf);
    writecmd(loc);
	while(*str)
       writedata(*str++);
}

void setup() {
    pinMode(CS,OUTPUT);
    pinMode(SCLK,OUTPUT);
    pinMode(SID,OUTPUT);
    lcdinit();
}
void loop() {
    digitalWrite(CS,HIGH);
    showstr(0,0,"你好");
    showstr(1,1,"你好");
    showstr(2,2,"abcd");
    showstr(3,3,"abcd");
    digitalWrite(CS,LOW);
}

  • 35
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yvee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值