KS0107是三星公司前期推出的64路COM驱动IC,配合KS0108(64路SEG驱动IC)可以实现128x32/128x64/192x128图形点阵显示。目前市面已有AIP31107/AIP31108/UCI0107/UCI0108可替代使用。
一、基本特性
KS0107支持64路行(COM)输出,最大可扩展到128路,须与KS0108配合使用;
KS0108支持64路列(SEG)输出,最大可级联方式扩展到512列,须与KS0107配合使用;
IC工作电压5.0V;(替代型号可适用2.7-5.0V)
VLCD电压可达17.0V,需要外部升压;
8位并口通讯(8080/6800);(KS0108与MCU接口)
指令简单;(7条指令即可完成显示设置,仅对KS0108设置)
封装类型:QFP100 COB(裸片)
二、KS0107/KS0108应用方式
2.1 128x32点阵:1xKS0107+2xKS0108,1/32duty,VLCD=7.0V;
2.2 128x64点阵:1xKS0107+2xKS0108,1/64duty,VLCD=9.0V;
2.3 128x128点阵:2xKS0107+4xKS0108,1/128duty,VLCD>=13.0V;
2.4 128x480点阵:2xKS0107+16xKS0108,1/128duty ,VLCD>=13.0V;
这里要注意,KS0107必须跟KS0108配对使用,也就是说,1颗KS0107最大能搭配8个KS0108(512列);使用到2个KS0108时,必须分成2组配对使用,LCD采用分屏方式设计COM和SEG走线。应用最多的是128x32和128x64点阵,这2种应用成熟,成本低廉。后面2种现在已经用其它方案替代了,以后会介绍。
三、KS0108指令表
KS0108的指令很少(共7条指令),应用非常方便。
四、KS0108数据传送格式
KS0108支持8位并口通讯,按照指令表MCU直接发送指令或显示数据即可。
五、KS0108显存对应关系(见图)
KS0108内置64x64bit显存区,刚好对应显示屏的4096个显示像素点;KS0108显存的行地址是按页存储的,分8页,每页8bit,所以使用KS0108在做图形取模时要注意取模方向从上向下,高位在前。
六、应用实例
G12864这款模组较多应用于3D打印机、点钞机、保险箱(柜)及一些仪表设备。
七、原理图参考(以128x64应用)
因图面较大,请下载压缩包(AD10及以上版本)。
八、实例程序
/*********************************************************************/ /* TEST PROGRAMME KS0108&KS0107 OR EQUIVALENT FOR G12864 */ /*********************************************************************/ #include#define Pdata P1 #define TT 1 #define ET 1 /*********************************************************************/ // INTERFACE DEFINE 6800 /*********************************************************************/ sbit RS = P2^7; /* RS=1 display RAM data; RS=0 instruction data */ sbit RW = P2^6; /* RW=1; READ; RW=0, WRITE */ sbit E = P2^5; sbit _RST = P2^2; /*RST=0,device been initialized; -_RST=1;NORMAL*/ sbit _CS1 = P2^4; /*CS1低有效*/ sbit _CS2 = P2^3; /*CS2低有效*/ unsigned char code ba[8]={0x00,0x00,0x00,0x36,0x49,0x49,0x49,0x36}; //定义8字模 unsigned char code bmp[1024]; /****************delay****************************/ void delay(int i) { while(i--);} void delay1s(void) { int i,j; for(i=0;i<200;i++) for(j=0;j<200;j++); } /****************busy check***********************/ unsigned char readdata(bit rs) { unsigned char readdat; RS = rs; RW = 1; E = 0; //使能信号,6800用 Pdata = 0xff; delay(TT); E = 1; delay(TT); readdat= Pdata; E = 0; return(readdat); } void checkbusy() //判忙,非必须 { unsigned char readdat; do { readdat=readdata(0); //仅当第4,7位为0时才可操作 readdat=readdat&0x90; } while(!(readdat==0x00)); } void writedata(bit rs,unsigned char data1) //写指令/数据,RS=0指令 RS=1 数据 { RS = rs; RW = 0; E = 0; Pdata = data1; delay(TT); E = 1; delay(TT); E = 0; } /**************write instruction ic1*****************/ void writelcm(bit rs,unsigned char data1,unsigned char nu) //nu表示选择哪个KS0108 { switch(nu) { case 1: _CS1 = (ET); break; case 2: _CS2 = (ET); break; default: return; } checkbusy(); writedata(rs,data1); switch(nu) { case 1: _CS1 = !(ET); break; case 2: _CS2 = !(ET); break; default: return; } } /****************initiallization*******/ init() { _RST = 0; delay(100); _RST = 1; _CS1 = !(ET); /*CS1=0,选择KS0108 _CS2 = !(ET); /*CS2=0, 选择KS0108 writelcm(0,0x40,1); /* set IC display address 0,Y direction*/ writelcm(0,0x40,2); writelcm(0,0xb8,1); /* set IC page=0 */ writelcm(0,0xb8,2); writelcm(0,0xc0,1); /* set IC start line */ writelcm(0,0xc0,2); writelcm(0,0x3f,1); /* set IC display on */ writelcm(0,0x3f,2); } /***********************************************************************************/ void display1(unsigned char data1,unsigned char data2,unsigned char cs) { unsigned char i,j; for (i=0;i<8;i++) { writelcm(0,i+0xb8,cs); writelcm(0,0x40,cs); for(j=0;j<32;j++) {writelcm(1,data1,cs); writelcm(1,data2,cs);} //写显示数据 } } /*************************************************************************************/ void display8(unsigned char *p) { unsigned char i,j,k; unsigned char *q; for (i=0;i<8;i++) { writelcm(0,i+0xb8,1); writelcm(0,0x40,1); for(j=0;j<8;j++) //8页 {q=p; for(k=0;k<8;k++) //每页写8个字 writelcm(1,*q++,1); delay(1000); } } for (i=0;i<8;i++) { writelcm(0,i+0xb8,2); writelcm(0,0x40,2); for(j=0;j<8;j++) { q=p; for(k=0;k<8;k++) writelcm(1,*q++,2); delay(1000); } } } /****************************************************************************************/ void displaybmp12864(unsigned char *p) //显示图片 { unsigned char i,j; for (i=0;i<8;i++) { writelcm(0,i+0xb8,1); writelcm(0,0x40,1); for(j=0;j<64;j++) writelcm(1,*p++,1); writelcm(0,i+0xb8,2); writelcm(0,0x40,2); for(j=0;j<64;j++) writelcm(1,*p++,2); } } /*****************main***********************/ main() {while(1) { init(); displaybmp12864(bmp); delay1s(); delay1s(); display1(0xff,0xff,1); display1(0xff,0xff,2); delay1s(); delay1s(); display1(0x55,0xaa,1); //行列测试 display1(0x55,0xaa,2); delay1s(); delay1s(); display1(0xaa,0x55,1); display1(0xaa,0x55,2); display1(0xaa,0x55,3); delay1s(); delay1s(); display1(0x55,0x55,1); display1(0x55,0x55,2); delay1s(); delay1s(); display1(0xaa,0xaa,1); display1(0xaa,0xaa,2); delay1s(); delay1s(); display1(0xff,0x00,1); display1(0xff,0x00,2); delay1s(); delay1s(); display1(0x00,0xff,1); display1(0x00,0xff,2); delay1s(); delay1s(); display1(0x00,0x00,1); display1(0x00,0x00,2); delay1s(); display8(ba); delay(20000); } } /***************************************************************************************/ /*****************图片大小=128x64/8=1024KB**********************************************/ /***************************************************************************************/ /*** 调入了一幅图像:H:\E小白\文章\光电显示\KS0107\PIC.bmp --*************************/ /*** 宽度x高度=128x64 纵向取模,字节倒序**********************************************/ unsigned char code bmp[1024]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFE,0xFE,0x0E,0x0E,0x0E,0x0E,0x0E, 0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, 0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, 0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, 0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, 0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, 0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E, 0x0E,0x0E,0x0E,0x0E,0x0E,0xFE,0xFE,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x60,0xE0,0x00,0x00,0x00,0x00,0x40,0x20, 0x20,0x20,0x60,0xC0,0x00,0x00,0xC0,0x60,0x20,0x20,0x60,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x80, 0x60,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x20,0x20,0x20,0x20,0x40,0x40, 0x80,0x00,0x00,0x80,0xC0,0x60,0x20,0x20,0x20,0x20,0xC0,0x80,0x00,0x20,0x20,0x20, 0xE0,0x20,0x20,0x20,0x00,0xC0,0x60,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x40,0x40,0x00,0x00,0x60,0x70, 0x58,0x4C,0x46,0x41,0x00,0x00,0x39,0x45,0x42,0x42,0x45,0x39,0x00,0x40,0x63,0x36, 0x08,0x34,0x63,0x41,0x00,0x1F,0x64,0x42,0x42,0x42,0x3C,0x00,0x08,0x0E,0x09,0x08, 0x08,0x7F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x40,0x20,0x30, 0x1F,0x00,0x00,0x1F,0x20,0x40,0x40,0x40,0x40,0x60,0x30,0x1F,0x00,0x00,0x00,0x00, 0x7F,0x00,0x00,0x00,0x00,0x21,0x42,0x46,0x44,0x4C,0x38,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x80, 0x80,0x40,0x40,0x40,0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0x00, 0xC0,0xC0,0x00,0x00,0x00,0x00,0xC0,0x40,0x40,0x40,0x80,0x00,0x00,0xC0,0x00,0x00, 0x00,0x00,0x00,0xC0,0x00,0x40,0xC0,0x40,0x00,0x80,0x80,0x40,0x40,0x40,0x00,0x00, 0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x80,0x80, 0x40,0x40,0x40,0xC0,0x80,0x00,0x00,0xC0,0x40,0x40,0x40,0x80,0x80,0x00,0x00,0xC0, 0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0xC0,0x40,0x40, 0x40,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x1F, 0x30,0x20,0x24,0x24,0x3C,0x00,0x00,0x3F,0x04,0x04,0x08,0x33,0x20,0x20,0x18,0x0F, 0x08,0x08,0x0E,0x18,0x20,0x00,0x3F,0x04,0x04,0x04,0x03,0x00,0x00,0x3F,0x02,0x02, 0x02,0x02,0x02,0x3F,0x00,0x20,0x3F,0x20,0x00,0x1F,0x30,0x20,0x20,0x20,0x00,0x00, 0x00,0x00,0x00,0x3F,0x00,0x03,0x0C,0x38,0x0C,0x03,0x00,0x3F,0x00,0x00,0x1F,0x30, 0x20,0x20,0x20,0x10,0x1F,0x00,0x00,0x3F,0x20,0x20,0x20,0x10,0x1D,0x00,0x00,0x1F, 0x30,0x20,0x20,0x20,0x1F,0x00,0x00,0x3F,0x20,0x20,0x20,0x20,0x00,0x3F,0x22,0x22, 0x22,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70, 0x70,0x70,0x70,0x70,0x70,0x7F,0x7F,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; //此处受字符限制,图片数据省略
九、显示效果(显示图片与例程略有不同)
十、原理图文件