各类12864的驱动
本帖最后由 sxwangjin1 于 2014-10-10 19:13 编辑7月份换了一份LCD代理的工作,小公司但老板待人不错,公司虽小效率很高。以前的做过3年瀚彩大陆的FAE,做过一年群创PE,不能说见过多大场面,但是也经历过不少事情,但这个公司确实让我佩服。虽然之前有过多年的LCD工作经验,但是到了这个公司和我完全想象的不一样了,更多的还是做黑白,做点阵,做定制,做段码。凭借着老板带着一对业务愣是拯救了两个濒临倒闭的LCD厂商,一年有近亿元的业务量,确实不简单。有点跑题哈哈。。。介绍下我们公司的配置10个业务2个技术,另一个技术还是主要负责数码管的,LCD我只能一个人硬着头皮扛下来,从9月初选定arduino平台经过近一个月的摸索终于有了一点进展,与大家分享共同进步。
以下程序均参考 弘毅 及论坛其他兄弟的程序,我仅为归纳整理http://www.geek-workshop.com/thread-91-1-1.html
目录:
一、ST7920 12864的驱动
二、KS010812864的驱动
三、NT753412864的驱动
第一、ST7920 12864的驱动,这个芯片弘毅使用的是库文件,做为程序开发库文件好用,但是作为学习研究修改就不那么方便了,我在这里把库文件提出来直接放到程序里供大家学习研究,arduino画器件连线的软件没有,连线图我就不画了大家到程序里找把,我使用的编译软件是1.0.5版本
1>串口
// case 0:N|=0x80;break;每行首地址
// case 1:N|=0x90;break;
// case 2:N|=0x88;break;
//case 3:N|=0x98;break;
//基于ST7920芯片的128*64显示程序 2014/9/23
//待处理bug 位图显示时,最下边3-5行数据如不删除程序卡死不能运行,删除后下部有乱点
//此bug在使用ATMEGA8L时出现,使用328及性能更好芯片为发现乱点及卡死现象。2014/10/7
////////////////////////////////////////////////////////////////////////////////////////
//引脚定义
//////////////////////////////////////////////////
//RS(DI)/latch->8,R/Wdatapin->9,E/clock->3
int latchPin = 8;
int dataPin = 9;
int clockPin = 3;
unsigned char show[]={
0xC4, 0xCF,
0xBE, 0xA9,
0xD6, 0xDB,
0xD0, 0xBE,
0xB5, 0xE7,
0xD7, 0xD3};//nanjingzhouxin
unsigned char show1[]="TEL:025-66085988";
unsigned char logo[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF0,0x1F,0xCF,0xFE,0xFF,0x03,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x00,
0x03,0xFF,0xFF,0xF8,0x1F,0xCF,0xFE,0xFF,0x07,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFC,0x0F,0xCF,0xFF,0xFE,0x0F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
0x03,0xFF,0xFF,0xFE,0x0F,0xEF,0xFF,0xFE,0x1F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFF,0x0F,0xEF,0xFF,0xFC,0x3F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
0x03,0xFF,0xFF,0xFF,0x8F,0xE7,0xFD,0xF8,0x3F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFF,0x87,0xF7,0xF9,0xF8,0x7F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
0x00,0x00,0x00,0x7F,0x87,0xF7,0xFB,0xF8,0x7F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x3F,0x87,0xF7,0xF3,0xF0,0x7F,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,
0x00,0x00,0x00,0x7F,0x87,0xF7,0xF7,0xF0,0x7F,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0xFF,0xE7,0xF0,0x7F,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,
0x00,0x00,0x03,0xFE,0x07,0xFF,0xEF,0xF0,0x7F,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x00,0x07,0xFC,0x03,0xFF,0xFF,0xF0,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,
0x00,0x00,0x0F,0xF8,0x03,0xFB,0xDF,0xE0,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,0x1F,0xF0,0x03,0xF9,0x9F,0xE0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
0x00,0x00,0x7F,0xE0,0x03,0xFC,0x3F,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x00,0xFF,0xC0,0x01,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
0x00,0x01,0xFF,0x00,0x03,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x07,0xFE,0x00,0x03,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
0x00,0x0F,0xFC,0x00,0x07,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x3F,0xF0,0x00,0x07,0xF8,0x3F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
0x00,0x7F,0xE0,0x00,0x07,0xF8,0x1F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x01,0xFF,0x80,0x00,0x0F,0xF0,0x0F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
0x03,0xFF,0x00,0x00,0x0F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xFE,0x00,0x00,0x0F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
0x07,0xFC,0x00,0x00,0x1F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xF8,0x00,0x00,0x1F,0xC0,0x07,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
0x07,0xF0,0x00,0x00,0x1F,0xC0,0x07,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x1F,0xC0,0x07,0xF8,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
0x07,0xFF,0xFF,0xFC,0x3F,0x80,0x07,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xF0,0x00,0x00,0x07,0xFF,0xFF,0xFC,0x3F,0x80,0x03,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xF0,0x00,0x00,
0x07,0xFF,0xFF,0xFC,0x7F,0x80,0x03,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,0x03,0xFF,0xFF,0xFC,0x7F,0x00,0x03,0xFC,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,
0x03,0xFF,0xFF,0xFC,0x7F,0x00,0x03,0xFC,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFF,0xFF,0xFC,0xFE,0x00,0x01,0xFE,0x1F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
//////////////////////////
void setup() {
//设置引脚为输出
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
////////////////////////////////////////////////////////////////
//写SPI时序,具体参考shiftout 命令使用
/////////////////////////////////////////////////////////
void WriteByte(int dat)
{
digitalWrite(latchPin, HIGH);
shiftOut(dataPin, clockPin, MSBFIRST, dat);
digitalWrite(latchPin, LOW);
}
//////////////////////////////////////////////////////////
//写命令
////////////////////////////////////////////////////////
void LcdCommandWrite(int value) {
int H_data,L_data;
H_data = value;
H_data &= 0xf0; //屏蔽低4位的数据
L_data = value; //xxxx0000格式
L_data &= 0x0f; //屏蔽高4位的数据
L_data <<= 4; //xxxx0000格式
WriteByte(0xf8); //RS=0,写入的是指令;
WriteByte(H_data);
WriteByte(L_data);
}
//////////////////////////////////////////////////////
//写数据
///////////////////////////////////////////////////////////
void LcdDataWrite(int value) {
int H_data,L_data;
H_data = value;
H_data &= 0xf0; //屏蔽低4位的数据
L_data = value; //xxxx0000格式
L_data &= 0x0f; //屏蔽高4位的数据
L_data <<= 4; //xxxx0000格式
WriteByte(0xfa); //RS=1,写入的是数据
WriteByte(H_data);
WriteByte(L_data);
}
////////////////////////////////////////////////
//主程序
///////////////////////////////////////////////
void loop (void) {
LcdCommandWrite(0x30);//设定为基本指令
delay(60);
LcdCommandWrite(0x01);// 清屏
delay(50);
LcdCommandWrite(0x02);// 清屏
delay(50);
LcdCommandWrite(0x90+1);
delay(10);
int i = 0;//显示南京舟芯电子
for (i=0; i <= 11; i++)
{
LcdDataWrite(show);
}
LcdCommandWrite(0x88);//显示电话
for (i=0; i <= 15; i++)
{
LcdDataWrite(show1);
}
delay(3000);
LcdCommandWrite(0x01);// 清屏
delay(50);
int ygroup,x,y;
int temp;
int tmp;
for(ygroup=0;ygroup<64;ygroup++) //写入液晶上半图象部分
{ //写入坐标
if(ygroup<32)
{
x=0x80;
y=ygroup+0x80;
}
else
{
x=0x88;
y=ygroup-32+0x80;
}
LcdCommandWrite(0x34); //写入扩充指令命令
LcdCommandWrite(y); //写入y轴坐标
LcdCommandWrite(x); //写入x轴坐标
LcdCommandWrite(0x30); //写入基本指令命令
tmp=ygroup*16;
for(i=0;i<16;i++)
{
LcdDataWrite(logo);
tmp++;
}
}
LcdCommandWrite(0x34); //写入扩充指令命令
LcdCommandWrite(0x36); //显示图象
delay(3000);
}
2>并口
//基于ST7920芯片的128*64显示程序 2014/9/23
//待处理bug 位图显示时,最下边3-5行数据如不删除程序卡死不能运行,删除后下部有乱点
int DI = 12;
int RW = 11;
int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚
int Enable = 2;
unsigned char show[]={
0xC4, 0xCF,
0xBE, 0xA9,
0xD6, 0xDB,
0xD0, 0xBE,
0xB5, 0xE7,
0xD7, 0xD3};//nanjingzhouxin
unsigned char show1[]="TEL:025-66085988";
unsigned char logo[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x07,0xFF,0xFF,0x80,0x3F,0x9F,0xFD,0xFE,
0x0F,0xFF,0xFF,0x87,0xFF,0xFF,0xFC,0x00,
0x07,0xFF,0xFF,0xF8,0x3F,0x9F,0xFD,0xFE,
0x0F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
0x07,0xFF,0xFF,0xF8,0x1F,0x9F,0xFF,0xFC,
0x1F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
0x07,0xFF,0xFF,0xFC,0x1F,0xDF,0xFF,0xFC,
0x3F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
0x07,0xFF,0xFF,0xFE,0x1F,0xDF,0xFF,0xF8,
0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
0x07,0xFF,0xFF,0xFF,0x1F,0xCF,0xFB,0xF0,
0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
0x07,0xFF,0xFF,0xFF,0x1F,0xEF,0xF3,0xF0,
0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
0x00,0x00,0x00,0xFF,0x1F,0xEF,0xF7,0xF0,
0x7F,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
0x00,0x00,0x00,0x7F,0x1F,0xEF,0xE7,0xE0,
0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
0x00,0x00,0x00,0xFF,0x0F,0xEF,0xEF,0xE0,
0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
0x00,0x00,0x01,0xFE,0x0F,0xFF,0xCF,0xE0,
0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
0x00,0x00,0x07,0xFC,0x0F,0xFF,0xDF,0xE0,
0xFE,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
0x00,0x00,0x0F,0xF8,0x07,0xFF,0xFF,0xE0,
0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
0x00,0x00,0x1F,0xF8,0x07,0xF7,0xBF,0xC0,
0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
0x00,0x00,0x3F,0xE0,0x07,0xF3,0x3F,0xC0,
0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
0x00,0x00,0x7F,0xC0,0x07,0xF8,0x7F,0x80,
0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
0x00,0x01,0xFF,0x80,0x03,0xFF,0xFF,0x80,
0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
0x00,0x03,0xFE,0x00,0x07,0xFF,0xFF,0x80,
0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
0x00,0x0F,0xFC,0x00,0x07,0xFF,0xFF,0x80,
0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
0x00,0x3F,0xE0,0x00,0x0F,0xFF,0xFF,0xC0,
0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
0x00,0x7F,0xC0,0x00,0x0F,0xF0,0x7F,0xC0,
0xFC,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,
0x00,0xFF,0x80,0x00,0x1F,0xF0,0x3F,0xC0,
0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x07,0xFE,0x00,0x00,0x1F,0xE0,0x1F,0xE0,
0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x07,0xFC,0x00,0x00,0x1F,0xC0,0x1F,0xE0,
0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x07,0xFC,0x00,0x00,0x1F,0xC0,0x1F,0xE0,
0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x07,0xF8,0x00,0x00,0x3F,0xC0,0x1F,0xE0,
0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x0F,0xE0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x0F,0xC0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x0F,0xC0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
0x0F,0xFF,0xFF,0xF8,0x7F,0x00,0x0F,0xE0,
0xFF,0xFF,0xFE,0x00,0x1F,0xE0,0x00,0x00,
0x0F,0xFF,0xFF,0xF8,0x7F,0x00,0x07,0xE0,
0xFF,0xFF,0xFE,0x00,0x1F,0xE0,0x00,0x00,
0x0F,0xFF,0xFF,0xF8,0xFF,0x00,0x07,0xE0,
0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
0x07,0xFF,0xFF,0xF8,0xFE,0x00,0x07,0xE0,
0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
0x07,0xFF,0xFF,0xF8,0xFE,0x00,0x07,0xE0,
0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
0x03,0xFF,0xFF,0xF9,0xFC,0x00,0x03,0xF0,
0x1F,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
void LcdCommandWrite(int value) {
// 定义所有引脚
digitalWrite(DI, 0);
digitalWrite(RW, 0);
int i = 0;
for (i=3; i <= 10; i++) //总线赋值
{
digitalWrite(i,value & 01);//value与0001相与赋予i
value >>= 1;//value右移一位
}
//digitalWrite(Enable,HIGH);
digitalWrite(Enable,1);
delayMicroseconds(1);
digitalWrite(Enable,LOW);
delayMicroseconds(1);
digitalWrite(Enable,HIGH);
delayMicroseconds(1);// 延时1ms
digitalWrite(Enable,LOW);
delayMicroseconds(1);// 延时1ms
}
void LcdDataWrite(int value) {
// 定义所有引脚
int i = 0;
digitalWrite(DI, 1);
digitalWrite(RW, 0);
//digitalWrite(DI, HIGH);
//digitalWrite(RW, LOW);
for (i=DB; i <= DB; i++) {
digitalWrite(i,value & 01);
value >>= 1;
}
digitalWrite(Enable,LOW);
delayMicroseconds(1);
digitalWrite(Enable,HIGH);
delayMicroseconds(1);
digitalWrite(Enable,LOW);
delayMicroseconds(1);// 延时1ms
}
void setup (void) {
int i = 0;
for (i=Enable; i <= DI; i++) {
pinMode(i,OUTPUT);
}
delay(100);
// 短暂的停顿后初始化LCD
// 用于LCD控制需要
LcdCommandWrite(0x30);//设定为基本指令
delay(60);
LcdCommandWrite(0x01);//清屏指令
delay(50);
LcdCommandWrite(0x0c);// 整体显示
delay(20);
LcdCommandWrite(0x06);//
delay(20);
}
void loop (void) {
LcdCommandWrite(0x30);//设定为基本指令
delay(60);
LcdCommandWrite(0x01);// 清屏
delay(50);
LcdCommandWrite(0x02);// 清屏
delay(50);
LcdCommandWrite(0x90+1);
delay(10);
int i = 0;//显示南京舟芯电子
for (i=0; i <= 11; i++)
{
LcdDataWrite(show);
}
LcdCommandWrite(0x88);//显示电话
for (i=0; i <= 15; i++)
{
LcdDataWrite(show1);
}
delay(3000);
LcdCommandWrite(0x01);// 清屏
delay(50);
int ygroup,x,y;
int temp;
int tmp;
for(ygroup=0;ygroup<62;ygroup++) //写入液晶上半图象部分
{ //写入坐标
if(ygroup<32)
{
x=0x80;
y=ygroup+0x80;
}
else
{
x=0x88;
y=ygroup-32+0x80;
}
LcdCommandWrite(0x34); //写入扩充指令命令
LcdCommandWrite(y); //写入y轴坐标
LcdCommandWrite(x); //写入x轴坐标
LcdCommandWrite(0x30); //写入基本指令命令
tmp=ygroup*16;
for(i=0;i<16;i++)
{
LcdDataWrite(logo);
tmp++;
}
}
LcdCommandWrite(0x34); //写入扩充指令命令
LcdCommandWrite(0x36); //显示图象
delay(3000);
}
二、KS0108芯片,这个芯片和ST7920的区别在与写RAM的方式的不同,7920是写上下片,KS0108是写左右片。KS0108无字库,只支持并口驱动。另外我这块板子必须要外接可变电阻才能点亮,这个说明书里会注明:
/////////////////////////////////////////////////////////////////////////////////
//基于arduino 平台的KS0180芯片128*64并口显示LCD测试程序by 王瑾2014/9/27
//程序较大使用小RAM芯片可能无法运行,如无法运行可将调用logo部分删除,会大幅减小RAM使用
//因为uno 坏了只在mega 2560测试成功
//和ST7920芯片主要是RAM地址的分布不同注意分析RAM地址写程序
//程序没有采用库文件,显示程序也没有另写子程序,主要是为了个人修改方便
//////////////////////////////////////////////////////////////////////////////
//
int CS1=A0;//左半屏,高电平有效
int CS2=A1;//右半屏,高电平有效
int RS = 12;
int RW = 11;
int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚DB 0-7
int Enable = 2;
/////////////////////////////////////////////////////////////////////////
// Bitmap点阵数据表 //
// 内容为:南京舟芯电子,TEL025-66085988 //
// 图片尺寸: 128 * 64 //
/////////////////////////////////////////////////////////////////////////
unsigned char logo1[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xF2,0xF2,0x12,0xB2,0xF2,0xD2,
0x9F,0x9F,0xD2,0xF2,0xB2,0x12,0xF2,0xF2,0x02,0x00,0x02,0x02,0x02,0xF2,0xF2,0x12,
0x12,0x13,0x13,0x12,0x12,0xF2,0xF2,0x02,0x02,0x02,0x00,0x40,0x40,0x40,0xFE,0xFE,
0x43,0x4B,0x7A,0x72,0x42,0x42,0xFE,0xFE,0x40,0x40,0x40,0x00,0x02,0x02,0x02,0x02,
0x0F,0x8F,0x92,0x32,0x62,0x42,0x0F,0x0F,0x82,0x82,0x02,0x02,0x00,0x00,0x00,0xFC,
0xFC,0x44,0x44,0x44,0xFF,0xFF,0x44,0x44,0x44,0xFC,0xFC,0x00,0x00,0x00,0x40,0x41,
0x41,0x41,0x41,0x41,0x41,0xF1,0xF1,0x59,0x4D,0x47,0x43,0x41,0x40,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x04,0x04,0x04,0x04,
0x3F,0x3F,0x04,0x04,0x24,0x64,0x7F,0x3F,0x00,0x00,0x00,0x20,0x30,0x1D,0x0D,0x21,
0x61,0x7F,0x3F,0x01,0x01,0x05,0x0D,0x38,0x30,0x00,0x00,0x40,0x60,0x38,0x1F,0x07,
0x00,0x01,0x07,0x06,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,
0x00,0x1F,0x3F,0x20,0x20,0x20,0x20,0x38,0x38,0x01,0x07,0x06,0x00,0x00,0x00,0x0F,
0x0F,0x04,0x04,0x04,0x3F,0x7F,0x44,0x44,0x44,0x4F,0x4F,0x78,0x78,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x60,0x60,0xE0,0xE0,0x60,0x60,0x00,0x20,0xE0,0xE0,0x20,0x60,0x60,0x00,0x20,0xE0,
0xE0,0x20,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0x70,0x10,0xF0,0xE0,0x00,0x00,
0xF0,0xF0,0x90,0x90,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,
0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x10,0xF0,
0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0xF0,0xF0,0x90,0x90,0x10,0x00,
0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0x60,
0xF0,0x90,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x08,0x0F,0x0F,0x09,0x0D,0x0C,0x00,0x08,0x0F,
0x0F,0x08,0x0C,0x0C,0x00,0x00,0x0D,0x0D,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x00,0x00,
0x04,0x0C,0x08,0x0F,0x07,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x07,0x0F,
0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,
0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x04,0x0C,0x08,0x0F,0x07,0x00,
0x00,0x04,0x0D,0x09,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,
0x0F,0x08,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
////////////////////////////////////////////////////////
//写命令子程序
///////////////////////////////////////////////////////
void LcdCommandWrite(int value) {
digitalWrite(RS, 0);
digitalWrite(RW, 0);
int i = 0;
for (i=3; i <= 10; i++) //总线赋值
{
digitalWrite(i,value & 01);//value与0001相与赋予i
value >>= 1;//value右移一位
}
digitalWrite(Enable,1);
delayMicroseconds(1);
digitalWrite(Enable,LOW);
delayMicroseconds(1);
}
//////////////////////////////////////////////////////
//写数据子程序
/////////////////////////////////////////////////////
void LcdDataWrite(int value) {
// 定义所有引脚
int i = 0;
digitalWrite(RS, 1);
digitalWrite(RW, 0);
//digitalWrite(DI, HIGH);
//digitalWrite(RW, LOW);
for (i=DB; i <= DB; i++) {
digitalWrite(i,value & 01);
value >>= 1;
}
digitalWrite(Enable,HIGH);
delayMicroseconds(1);
digitalWrite(Enable,LOW);
delayMicroseconds(1);// 延时百万分之一秒
}
///////////////////////////////////////////////////
//输出引脚声明
//////////////////////////////////////////////////
void setup (void) {
int i = 0;
for (i=Enable; i <= 12; i++) {
pinMode(i,OUTPUT);
}
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
}
////////////////////////////////////////////
//循环主程序
/////////////////////////////////////////////////
void loop (void) {
///////////////////////////////////////////////////////////////////////////////////////////
//初始化,因为KS0108芯片无初始化命令需要对整个屏幕赋值0x00,不然的话会有杂点
//没有查到KS0108芯片的始化命令,位图调用一直有杂点,采用REST复位也不能解决,所以采用此方法
//////////////////////////////////////////////////////////////////////////////////////////
digitalWrite(CS1,1);
digitalWrite(CS2,1);
LcdCommandWrite(0x3e);//显示关
int i = 0;
int yg,x,y;
int temp;
int tmp;
for(yg=0;yg<8;yg++)
{
x=yg+0xb8; //0xb8为首页地址
y=0x40; //0x40为首列地址注意分析规格书RAM地址分布图
LcdCommandWrite(x); //写入y轴坐标
LcdCommandWrite(y); //写入x轴坐标
tmp=yg*64;
for(i=0;i<64;i++)
{
LcdDataWrite(0x00);
tmp++;
}
}
LcdCommandWrite(0x3f); //显示图象
delay(1);
//////////////////////////////////////////////////////////
//显示ZXET logo
///////////////////////////////////////////////////////////
digitalWrite(CS1,1);//先显示左半屏
digitalWrite(CS2,0);
for(yg=0;yg<8;yg++)
{
x=yg+0xb8;
y=0x40;
LcdCommandWrite(x); //写入y轴坐标
LcdCommandWrite(y); //写入x轴坐标
tmp=2*yg*64;
for(i=0;i<64;i++)
{
LcdDataWrite(logo);
tmp++;
}
}
LcdCommandWrite(0x3f);//此处无需延迟直接接右半屏显示程序
////////////////////////
digitalWrite(CS1,0); //显示右半屏
digitalWrite(CS2,1);
for(yg=0;yg<8;yg++)
{
x=yg+0xb8;
y=0x40;
LcdCommandWrite(x); //写入y轴坐标
LcdCommandWrite(y); //写入x轴坐标
tmp=(2*yg+1)*64;
for(i=0;i<64;i++)
{
LcdDataWrite(logo);
tmp++;
}
}
LcdCommandWrite(0x3f);
delay(3000);
///////////////////////////////////////////////////////////////
//显示 文字,依然采用位图数据调用,KS0108无字库只能采用这种办法
///////////////////////////////////////////////////////////////
digitalWrite(CS1,1);
digitalWrite(CS2,0);
for(yg=0;yg<8;yg++)
{
x=yg+0xb8;
y=0x40;
LcdCommandWrite(x); //写入y轴坐标
LcdCommandWrite(y); //写入x轴坐标
tmp=2*yg*64;
for(i=0;i<64;i++)
{
LcdDataWrite(logo1);
tmp++;
}
}
LcdCommandWrite(0x3f);
//////////////////////////////////////
digitalWrite(CS1,0);
digitalWrite(CS2,1);
for(yg=0;yg<8;yg++)
{
x=yg+0xb8;
y=0x40;
LcdCommandWrite(x); //写入y轴坐标
LcdCommandWrite(y); //写入x轴坐标
tmp=(2*yg+1)*64;
for(i=0;i<64;i++)
{
LcdDataWrite(logo1);
tmp++;
}
}
LcdCommandWrite(0x3f);
delay(3000);
///////////////////////////////////////////////////////
//测试画面 :全黑
////////////////////////////////////////////////////////
digitalWrite(CS1,1);
digitalWrite(CS2,1);
for(yg=0;yg<8;yg++)
{
x=yg+0xb8;
y=0x40;
LcdCommandWrite(x); //写入y轴坐标
LcdCommandWrite(y); //写入x轴坐标
for(i=0;i<64;i++)
{
LcdDataWrite(0xFF);
}
}
LcdCommandWrite(0x3f);
delay(3000);
///////////////////////////////////////////////////////
//测试画面 :全白
////////////////////////////////////////////////////////
digitalWrite(CS1,1);
digitalWrite(CS2,1);
for(yg=0;yg<8;yg++)
{
x=yg+0xb8;
y=0x40;
LcdCommandWrite(x); //写入y轴坐标
LcdCommandWrite(y); //写入x轴坐标
for(i=0;i<64;i++)
{
LcdDataWrite(0x00);
}
}
LcdCommandWrite(0x3f);
delay(3000);
///////////////////////////////////////////////////////
//测试画面 :数条纹
////////////////////////////////////////////////////////
digitalWrite(CS1,1);
digitalWrite(CS2,1);
for(yg=0;yg<8;yg++)
{
x=yg+0xb8;
for(i=0;i<32;i++)
{
y=0x40+2*i;
LcdCommandWrite(x); //写入y轴坐标
LcdCommandWrite(y); //写入x轴坐标
LcdDataWrite(0xFF);
}
}
LcdCommandWrite(0x3f);
delay(3000);
}
三、NT7534这块芯片是COG芯片即chip on glass 芯片是bonding在玻璃上的,前两块是COB芯片是bongding在PCB板上的,这块芯片功能更多,可设置的更多,可以通过命令设置偏压,VLCD电压,对比度,等等具体参考附件里的规格书资料,这里还有一点因为我要做一个使用ATMEGA8L的测试板,但是程序基本超过2.2K8L就运行不起来了,不知道是我程序的问题还是芯片的问题还是arduino的问题,我只能精简程序,位图上下0x00的部分后删除,int 都改为unsigned char 总算是可以运行了
我这里使用的是并口驱动,这块芯片也是可以串口的,和ST7920的3线SPI不同它是 4线SPI程序,程序后续后放出
////////////////////////////////////////////////////////
//基于arduino平台的NT7534128*64液晶并口驱动程序by 王瑾2014/10/4
// 从新设定变量,精简bitmap 使其在uno上运行 2014/10/5
////////////////////////////////////////////////////////
/////
////引脚定义
unsigned char a0 = 3;
unsigned char RW = 2;//对应WR
unsigned char RES=4;
unsigned char CS1=5;
unsigned char DB[] = {6, 7, 8, 9, 10,11,12,13};//使用数组来定义总线需要的管脚
unsigned char E= A0;// 对应RD
/////////////////////////////////////////////////////////////////////////
// Bitmap点阵数据表 //
// 内容为:南京舟芯电子,TEL025-66085988 //
// 图片尺寸: 128 * 64 //
/////////////////////////////////////////////////////////////////////////
unsigned char logo1[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xF2,0xF2,0x12,0xB2,0xF2,0xD2,
0x9F,0x9F,0xD2,0xF2,0xB2,0x12,0xF2,0xF2,0x02,0x00,0x02,0x02,0x02,0xF2,0xF2,0x12,
0x12,0x13,0x13,0x12,0x12,0xF2,0xF2,0x02,0x02,0x02,0x00,0x40,0x40,0x40,0xFE,0xFE,
0x43,0x4B,0x7A,0x72,0x42,0x42,0xFE,0xFE,0x40,0x40,0x40,0x00,0x02,0x02,0x02,0x02,
0x0F,0x8F,0x92,0x32,0x62,0x42,0x0F,0x0F,0x82,0x82,0x02,0x02,0x00,0x00,0x00,0xFC,
0xFC,0x44,0x44,0x44,0xFF,0xFF,0x44,0x44,0x44,0xFC,0xFC,0x00,0x00,0x00,0x40,0x41,
0x41,0x41,0x41,0x41,0x41,0xF1,0xF1,0x59,0x4D,0x47,0x43,0x41,0x40,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x04,0x04,0x04,0x04,
0x3F,0x3F,0x04,0x04,0x24,0x64,0x7F,0x3F,0x00,0x00,0x00,0x20,0x30,0x1D,0x0D,0x21,
0x61,0x7F,0x3F,0x01,0x01,0x05,0x0D,0x38,0x30,0x00,0x00,0x40,0x60,0x38,0x1F,0x07,
0x00,0x01,0x07,0x06,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,
0x00,0x1F,0x3F,0x20,0x20,0x20,0x20,0x38,0x38,0x01,0x07,0x06,0x00,0x00,0x00,0x0F,
0x0F,0x04,0x04,0x04,0x3F,0x7F,0x44,0x44,0x44,0x4F,0x4F,0x78,0x78,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x60,0x60,0xE0,0xE0,0x60,0x60,0x00,0x20,0xE0,0xE0,0x20,0x60,0x60,0x00,0x20,0xE0,
0xE0,0x20,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0x70,0x10,0xF0,0xE0,0x00,0x00,
0xF0,0xF0,0x90,0x90,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,
0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x10,0xF0,
0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0xF0,0xF0,0x90,0x90,0x10,0x00,
0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0x60,
0xF0,0x90,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x08,0x0F,0x0F,0x09,0x0D,0x0C,0x00,0x08,0x0F,
0x0F,0x08,0x0C,0x0C,0x00,0x00,0x0D,0x0D,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x00,0x00,
0x04,0x0C,0x08,0x0F,0x07,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x07,0x0F,
0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,
0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x04,0x0C,0x08,0x0F,0x07,0x00,
0x00,0x04,0x0D,0x09,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,
0x0F,0x08,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//////////////////////////////////////////////////////////////
//写命令子程序
///////////////////////////////////////////////////////////
void WriteCommand(unsigned char value) {
digitalWrite(a0, 0);
digitalWrite(RW, 0);
digitalWrite(CS1, 0);
digitalWrite(E, 1);
unsigned char i;
for (i=6; i <= 13; i++) //总线赋值
{
digitalWrite(i,value & 01);//value与0001相与赋予i
value >>= 1;//value右移一位
}
digitalWrite(CS1,1);
digitalWrite(RW, 1);
digitalWrite(E, 0);
}
////////////////////////////////////////////////////////////
//写数据子程序
//////////////////////////////////////////////////////////
void WriteData(unsigned char value) {
digitalWrite(a0, 1);
digitalWrite(RW, 0);
digitalWrite(CS1, 0);
digitalWrite(E, 1);
unsigned char i;
for (i=6; i <= 13; i++) //总线赋值
{
digitalWrite(i,value & 01);//value与0001相与赋予i
value >>= 1;//value右移一位
}
digitalWrite(CS1,1);
digitalWrite(RW, 1);
digitalWrite(E, 0);
}
//////////////////////////////////////////////////////
//清屏子程序
/////////////////////////////////////////////////////////
void cl() //清屏,其实就是把所有的地址全部填成0
{
unsigned char x,y;
for(y=0;y<8;y++)
{
WriteCommand(0xb0+y);
WriteCommand(0x10);
WriteCommand(0x00);
for(x=0;x<128;x++)WriteData(0);
}
}
///////////////////////////////////////////////////////
//全显示子程序
//////////////////////////////////////////////////////
void qx() //把所有的地址全部填成1
{
unsigned char x,y;
for(y=0;y<8;y++)
{
WriteCommand(0xb0+y);
WriteCommand(0x10);
WriteCommand(0x00);
for(x=0;x<128;x++)WriteData(0xff);
}
}
/////////////////////////////////////////////////
//初始化设定
////////////////////////////////////////////
void setup (void) {
unsigned char i;
for (i=2; i <= 13; i++) {
pinMode(i,OUTPUT);
}
pinMode(22,OUTPUT);
delay(100);
digitalWrite(RES,HIGH);
delay(1000);
WriteCommand(0x24);//对比度
WriteCommand(0xa2);//BR=1/9
WriteCommand(0xa0);//set seg direction
WriteCommand(0xc8);//set com direction
WriteCommand(0x2f);//set power control
WriteCommand(0x40);//set scroll line
WriteCommand(0x81);//SET ELECTRONIC VOLUME
WriteCommand(0x20);//set pm: 通过改变这里的数值来改变电压
//WriteCommand(0xa6);//set inverse display a6 off, a7 on
//WriteCommand(0xa4);//set all pixel on
WriteCommand(0xaf);//开显示
}
////////////////////////////////////////////////////
//主循环程序
/////////////////////////////////////////////////////
void loop (void) {
cl();
unsigned char x,y;
for(y=0;y<4;y++)
{
WriteCommand(0xb2+y);
WriteCommand(0x10);
WriteCommand(0x00);
int tmp=128*y;
for(x=0;x<128;x++)
{
WriteData(logo1) ;
tmp++ ;
}
}
delay(2000);
qx() ;//set all pixel on
delay(2000);
cl();
delay(2000);
}
12864最好的防范就是串行节省资源 不错,帮顶。 kaizhiyu 发表于 2014-10-7 21:15 static/image/common/back.gif
12864最好的防范就是串行节省资源
但是在我接触到的客户绝大多数都使用的是并口,实际的应用中更看重的是稳定 很漂亮,专业玩屏的这是 附件的压缩文件没法下载啊 手头有一个WSM-6833A的大屏,是串口的,不知道如何驱动,楼主能帮忙吗 谢谢分享学习一下 我有一个信利TR-804 94V-0 MPG967-c1-2的显示屏,没找到资料,楼主能帮忙驱动吗?驱动芯片是RA8835P3N。
附件都不能下载了. 请问有没有st7565p的库文件呢?谢谢 感谢楼主的分享,通过楼主的程序终于把手头的NT7538驱动起来了
页:
[1]