文档库 最新最全的文档下载
当前位置:文档库 › JLX240160G-668-PC说明书

JLX240160G-668-PC说明书

JLX240160G-668-PC使用说明书

(带字库IC)

目 录

序号 内 容 标 题 页码

1 概述 2

2 特点 2-3

3 外形及接口引脚功能 3-6

4 电路框图 6

5 背光参数 6

6 指令表及硬件接口、编程案例 7-末页

1.概述

晶联讯电子专注于液晶屏及液晶模块的研发、制造。所生产JLX240160G-668型液晶模块由于使用方便、显示清晰,广泛应用于各种人机交流面板。

JLX240160G-668可以显示240列*160行点阵单色或4灰度级的图片,或显示7个/行*5行32*32点阵或显示10个/行*6行24*24点阵的汉字,或显示15个/行*10行16*16点阵的汉字。

2.JLX240160G-668图像型点阵液晶模块的特性

2.1结构牢。

2.2 IC采用矽创公司ST7586S,功能强大,稳定性好

2.3功耗低。

2.4接口简单方便:可采用4线SPI串行接口,或选择并行接口。

2.5工作温度宽:-20℃ - 70℃;

2.6可靠性高:寿命为50,000小时(25℃)。

2.7显示内容:

●240*160点阵单色或4灰度级图片;

●或显示7个×5行32*32点阵的汉字;

●或显示10个×6行24*24点阵的汉字;

●或显示15个×10行16*16点阵的汉字;

●或显示20个×13行12*12点阵的汉字;

●或显示其他的ASCII码等;

2.8字库IC(IC型号:JLX-GB2312-32S4W,此IC为可选的配件)自带字库内容:

3.外形尺寸及接口引脚功能:

模块的接口既可以当成并口用,也可以当成串口用(PCB内部跳线选择串口/并口):

◆当并行时,CON1功能如下:

引 线 号 符 号 名 称 功 能

1 ROM_IN 字库IC接口SI 字库IC:串行数据输入。不带字库时:空脚

2 ROM_OUT 字库IC接口SO 字库IC:串行数据输出。不带字库时:空脚

3 ROM_SCK 字库IC接口SCLK字库IC:串行时钟。不带字库时:空脚

4 ROM_CS 字库IC接口CS#字库IC:片选输入。不带字库时:空脚

5 LEDA 背光电源 背光电源正极,同VDD电压(5V或3.3V)

6 VSS 接地 0V

7 VDD 电路电源 5V或3.3V

8 A0 寄存器选择信号 H:数据寄存器 0:指令寄存器

9 RESET 复位 低电平复位,复位完成后,回到高电平,液晶模块开始工作

10 CS 片选 低电平片选

11 D7

12 D6

13 D5

14 D4

I/O 数据总线DB7-DB0

15 D3

16 D2

17 D1

18 D0

19 E(RD) 使能信号(读) 6800时序时:E:使能信号

8080时序时:读信号

20 R/W(WR) 读/写(写) 6800时序时:RW: H:读信号 L:写信号

8080时序时:写信号

◆当4线SPI串行时,接口功能如下:

引 线 号 符 号 名 称 功 能

1 ROM_IN 字库IC接口SI 字库IC:串行数据输入。不带字库时:空脚

2 ROM_OUT 字库IC接口SO 字库IC:串行数据输出。不带字库时:空脚

3 ROM_SCK 字库IC接口SCLK字库IC:串行时钟。不带字库时:空脚

4 ROM_CS 字库IC接口CS#字库IC:片选输入。不带字库时:空脚

5 LEDA 背光电源 背光电源正极,同VDD电压(5V或3.3V)

6 VSS 接地 0V

7 VDD 电路电源 5V或3.3V

8 SCL(A0) 串行时钟 串行时钟

9 RESET 复位 低电平复位,复位完成后,回到高电平,液晶模块开始工作

10 CS 片选信号 低电平片选

11 NC(D7) 空脚

12 NC(D6) 空脚

13 NC(D5) 空脚

15 NC(D3) 空脚

16 NC(D2) 空脚

17 A0(D1) 寄存器选择H:数据寄存器 0:指令寄存器

18 SDA(D0) 串行数据串行数据

19 NC 空脚

20 NC 空脚

◆当3线SPI串行时,接口功能如下:

引 线 号 符 号 名 称 功 能

1 ROM_IN 字库IC接口SI 字库IC:串行数据输入。不带字库时:空脚

2 ROM_OUT 字库IC接口SO 字库IC:串行数据输出。不带字库时:空脚

3 ROM_SCK 字库IC接口SCLK字库IC:串行时钟。不带字库时:空脚

4 ROM_CS 字库IC接口CS#字库IC:片选输入。不带字库时:空脚

5 LEDA 背光电源 背光电源正极,同VDD电压(5V或3.3V)

6 VSS 接地 0V

7 VDD 电路电源 5V或3.3V

8 SCL (A0)串行时钟 串行时钟

9 RESET 复位 低电平复位,复位完成后,回到高电平,液晶模块开始工作

10 CS 片选信号 低电平片选

11 NC(D7) 空脚

12 NC(D6) 空脚

13 NC(D5) 空脚

14 NC(D4) 空脚

15 NC(D3) 空脚

16 NC(D2) 空脚

17 NC(D1) 空脚

18 SDA(D0) 串行数据串行数据

19 NC 空脚

20 NC 空脚

表1:模块的接口引脚功能

4. 电路框图

图2:JLX240160G-668图像点阵型液晶模块的电路框图

5.背光参数

该型号液晶模块带LED 背光源。它的性能参数如下:

工作温度:-20.∽+70°C;

背光颜色:白色。

正常工作电流为:(8∽20)*5=40~100mA(LED灯数共5颗);

工作电压:5V或3.3V,由你选择的VDD电源电压(5V或3.3V)决定;

正常工作条件下,LED可连续点亮5万小时;

6.指令表及硬件接口、编程案例

液晶模块中有两个IC,一个IC在LCD玻璃上,叫ST7586S,是液晶屏的驱动IC,另一个IC在PCB上,叫JLX-GB2312-32S4W,是标准的汉字库存储芯片,是不可改写的存储器(ROM).

不带字库IC时,单片机(MCU)也可以通过控制驱动IC(ST7586S)使液晶屏显示。

带字库IC时,单片机(MCU)可以从字库IC中读取汉字的点阵数据,再将点阵数据写入驱动IC(ST7586S)使液晶屏显示。

6.1 LCD驱动IC(ST7586S)的指令表:

请详细参考ST7586S的IC资料.

6.2 字库IC(JLX-GB2312-32S4W)的操作指令及点阵数据的调用方法:

6.2.1字库IC的操作指令只有两条,两条只选一条进行使用,操作指令表如下:

以下分别介绍一般读取和快速读取:

6.2.1.1 Read Data Bytes(一般读取)

6.2.1.2 Read Data Bytes at Higher Speed(快速读取点阵数据)

6.2.2字库调用方法:

6.2.2.1 汉字点阵排列格式

6.2.2.211X12 点、15X16点、24X24点、32X32点汉字及5X7 点、7X8 点、6X12点、12X24 点字符、12 点阵不等宽字符、16点阵不等宽字符的排列格式:详见字库IC资料(JLX-GB2312-32S4W)的第19-26页。

6.2.2.3汉字点阵字库地址表如下:

6.2.2.4字符在芯片中的地址计算方法:

用户只要知道字符的内码,就可以计算出该字符点阵在芯片中的地址,然后就可从该地址连续读出 点阵信息用于显示。

举例说明:15X16 点 GB2312 标准点阵字库:

6.3接口方式及程序:

6.3.1 液晶模块与MPU(以8051系列单片机为例)接口图如下:

DB0~DB7

P1.0~P1.7

MCU:51系列P3.3P2.1P3.2P3.4P3.5P3.1P3.7P3.0P3.6

液晶模块L C D 驱动I C 接口

字库I C 接口RS ROM_CS

E ROM_SCK ROM_IN RESET CS ROM_OUT R/W

并行接口图

6.3.2并行程序:

/* 液晶模块型号:JLX240160G-668,

并行接口,6800时序,

驱动IC 是:ST7586S(or compatible), 字库IC:JLX-GB2312-32S4W

可以调用字库ROM 里的汉字:32*32点阵,16*32点阵,16*16点阵,8*16点阵,12*12点阵,5*7点阵等 编写:叶建人

版权所有:晶联讯电子:网址 https://www.wendangku.net/doc/6413279673.html,; */

#include #include #define BYTE unsigned char

//========================================================================== sbit lcd_cs1 = P3^4; sbit lcd_reset= P3^5;

sbit lcd_rs = P3^3;// lcd_rs sbit lcd_rw = P2^1;// lcd_rw sbit lcd_E = P3^0;// RD /*另外:DB0~DB7与P1.0~P1.7相连*/

sbit Rom_CS = P3^6; /*字库IC 接口定义Rom_CS 就是字库IC 的CS#*/ sbit Rom_SCK = P3^7; sbit Rom_OUT = P3^2; sbit Rom_IN = P3^1;

//========================================================================= #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar code bmp1[];

{

P1=cmd;

lcd_cs1=0;

lcd_rs=0;

lcd_rw=0;

lcd_E=1;

lcd_E=0;

lcd_cs1=1;

}

/*写数据到LCD模块*/

void transfer_data_lcd(int dat)

{

P1=dat;

lcd_cs1=0;

lcd_rs=1;

lcd_rw=0;

lcd_E=1;

lcd_E=0;

lcd_cs1=1;

}

/*延时:1毫秒的i倍*/

void delay(int i)

{

int j,k;

for(j=0;j

for(k=0;k<110;k++);

}

/*等待一个按键,我的主板是用P2.0与GND之间接一个按键*/

void waitkey()

{

repeat:

if (P2&0x01) goto repeat;

else delay(6);

if (P2&0x01) goto repeat;

else

delay(400);

}

/*LCD模块初始化*/

void initial_lcd()

{

lcd_reset=1;

lcd_reset=0; //硬件复位

delay(10);

lcd_reset=1; //硬件复位完成后置高

delay(10);

transfer_command_lcd(0x11); //退出睡眠模式

transfer_command_lcd(0xC0); // 设置VOP

transfer_data_lcd(0x40); // 设置VOP的值的低8位(总共9位) transfer_data_lcd(0x01); // 设置VOP的值的第9位,也是最高一位 transfer_command_lcd(0xC3); // 设置BIAS

transfer_data_lcd(0x00); // 00:BIAS = 1/14

transfer_command_lcd(0xC4); // 设置升压倍数

transfer_data_lcd(0x07); // 07:8倍压

transfer_command_lcd(0xD0); // 允许模拟电路

transfer_data_lcd(0x1D); // 允许模拟电路

transfer_command_lcd(0x39); // 39: 设置为黑白模式

transfer_command_lcd(0x3A); // 允许 DDRAM 接口

transfer_data_lcd(0x02); // 允许 DDRAM 接口

transfer_command_lcd(0xB0); // Duty设置

transfer_data_lcd(0x9f); // Duty设置:1/160

transfer_command_lcd(0x20); // 反显设置:OFF

transfer_command_lcd(0xf1); //温度补偿,温度变化改变帧频

transfer_data_lcd(0x15);

transfer_data_lcd(0x15);

transfer_data_lcd(0x15);

transfer_data_lcd(0x15);

transfer_command_lcd(0xb1); // 扫描起始行设置

transfer_data_lcd(0x00); // 扫描起始行设置:从COM0开始

transfer_command_lcd(0x29); // 打开显示:DISPLAY ON

}

/*传送一个字节(8比特)黑白图像的数据*/

/*因为这款型号的IC:ST7586S 原是应用于彩色STN屏的,IC输出列的1个地址是包含3个列,无法分开,比如SEG0、SEG1、SEG2*/

/*而且SEG0、SEG1是引出来的,对应右边数起来的S1、S2, SEG2没引出来,所以不关心这一列。*/

/*依此类推SEG3、SEG4是引出来的,对应右边数起来的S3、S4, SEG5没引出来,*/

/*送数据时右起第1列的数据是“D7 D6 D5 D4 D3 D2 D1 D0” 中的高3位---D7 D6 D5,第2列是中3位---D4 D3 D2,低2位---D1 D0不会用到。*/ void transfer_mono_data(char mono_data)

{

char i,gray_data=0;

for(i=0;i<4;i++)

{

if(mono_data&0x80)

{

gray_data=0x1c;

if(mono_data&0x40)

{

gray_data+=0xe0;

}

else;

}

else

{

gray_data=0x00;

if(mono_data&0x40)

{

gray_data+=0xe0;

}

else;

}

transfer_data_lcd(gray_data);

mono_data=mono_data<<2;

}

}

/*写LCD 行列地址:X为起始的列地址,Y为起始的行地址,x_total,y_total分别为列地址及行地址的起点到终点的差值 */

void lcd_address(int x,int y,x_total,y_total)

{

int x_ge,x_shi,y_ge,y_shi,x_end,y_end,x_end_shi,x_end_ge,y_end_shi,y_end_ge;

x=x+8;

x_shi=x/256;

x_ge=x%256;

y_shi=y/256;

y_ge=y%256;

x_end=x+x_total/2-1;

y_end=y+y_total-1;

x_end_shi=x_end/256;

x_end_ge=x_end%256;

y_end_shi=y_end/256;

transfer_data_lcd(x_ge);

transfer_data_lcd(x_end_shi);

transfer_data_lcd(x_end_ge);

transfer_command_lcd(0x2B);

transfer_data_lcd(y_shi);

transfer_data_lcd(y_ge);

transfer_data_lcd(y_end_shi);

transfer_data_lcd(y_end_ge);

}

/*清屏*/

void clear_screen()

{

int i,j;

lcd_address(0,0,240,160);

transfer_command_lcd(0x2c);

for(i=0;i<160;i++)

for(j=0;j<30;j++)

transfer_mono_data(0x00); }

/*出厂测试的画面*/

void test_screen()

{

int i,j;

lcd_address(0,0,240,160);

transfer_command_lcd(0x2c);

for(i=0;i<160;i++)

{

for(j=0;j<30;j++)

{

transfer_mono_data(0xff);

}

}

waitkey();

lcd_address(0,0,240,160);

transfer_command_lcd(0x2c);

for(i=0;i<160;i++)

{

for(j=0;j<30;j++)

{

transfer_mono_data(0x55);

}

}

waitkey();

lcd_address(0,0,240,160);

transfer_command_lcd(0x2c);

for(i=0;i<160;i++)

{

for(j=0;j<30;j++)

{

transfer_mono_data(0xaa);

}

}

waitkey();

lcd_address(0,0,240,160);

transfer_command_lcd(0x2c);

for(i=0;i<80;i++)

{

}

for(j=0;j<30;j++)

{

transfer_mono_data(0x00);

}

}

waitkey();

lcd_address(0,0,240,160);

transfer_command_lcd(0x2c);

for(i=0;i<80;i++)

{

for(j=0;j<30;j++)

{

transfer_mono_data(0x00);

}

for(j=0;j<30;j++)

{

transfer_mono_data(0xff);

}

}

waitkey();

lcd_address(0,0,240,160);

transfer_command_lcd(0x2c);

for(i=0;i<80;i++)

{

for(j=0;j<30;j++)

{

transfer_mono_data(0x55);

}

for(j=0;j<30;j++)

{

transfer_mono_data(0xaa);

}

}

waitkey();

lcd_address(0,0,240,160);

transfer_command_lcd(0x2c);

for(i=0;i<80;i++)

{

for(j=0;j<30;j++)

{

transfer_mono_data(0xaa);

}

for(j=0;j<30;j++)

{

transfer_mono_data(0x55);

}

}

waitkey();

}

/*显示8*16点阵ASCII码字符或等同于8*16点阵的图像*/ void disp_8x16(int x,int y,char *dp)

{

int i,j;

lcd_address(x,y,8,16);

transfer_command_lcd(0x2c);

for(j=0;j<1;j++)

{

transfer_mono_data(*dp);

dp++;

}

}

}

/*显示16*16点阵汉字或等同于16*16点阵的图像*/

void disp_16x16(int x,int y,char *dp)

{

int i,j;

lcd_address(x,y,16,16);

transfer_command_lcd(0x2c);

for(i=0;i<16;i++)

{

for(j=0;j<2;j++)

{

transfer_mono_data(*dp);

dp++;

}

}

}

/*显示16*32点阵ASCII码字符或等同于16*32点阵的图像*/ void disp_16x32(int x,int y,char *dp)

{

int i,j;

lcd_address(x,y,16,32);

transfer_command_lcd(0x2c);

for(i=0;i<32;i++)

{

for(j=0;j<2;j++)

{

transfer_mono_data(*dp);

dp++;

}

}

}

/*显示半个32*32点阵的汉字或等同于32*16点阵的图像*/ void disp_32x16_zk(int x,int y,uchar *dp1)

{

int i,j;

lcd_address(x,y,32,16);

transfer_command_lcd(0x2c);

for(i=0;i<16;i++)

{

for(j=0;j<4;j++)

{

transfer_mono_data(*dp1);

dp1++;

}

}

}

/*显示240*160点阵的图像*/

void disp_240x160(int x,int y,char *dp)

{

transfer_command_lcd(0x2c);

for(i=0;i<160;i++)

{

for(j=0;j<30;j++)

{

transfer_mono_data(*dp);

dp++;

}

}

}

/****送指令到晶联讯字库IC***/

void send_command_to_ROM( uchar datu )

{

uchar i;

for(i=0;i<8;i++ )

{

if(datu&0x80)

Rom_IN = 1;

else

Rom_IN = 0;

datu = datu<<1;

Rom_SCK=0;

Rom_SCK=1;

}

}

/****从晶联讯字库IC中取汉字或字符数据(1个字节)***/

static uchar get_data_from_ROM( )

{

uchar i;

uchar ret_data=0;

Rom_SCK=1;

for(i=0;i<8;i++)

{

Rom_OUT=1;

Rom_SCK=0;

ret_data=ret_data<<1;

if( Rom_OUT )

ret_data=ret_data+1;

else

ret_data=ret_data+0;

Rom_SCK=1;

}

return(ret_data);

}

/*从相关地址(addrHigh:地址高字节,addrMid:地址中字节,addrLow:地址低字节)中连续读出DataLen个字节的数据到 pBuff的地址*/ /*连续读取*/

void get_n_bytes_data_from_ROM(uchar addrHigh,uchar addrMid,uchar addrLow,uchar *pBuff,uchar DataLen)

{

uchar i;

Rom_CS = 0;

lcd_cs1=1;

Rom_SCK=0;

send_command_to_ROM(0x03);

send_command_to_ROM(addrHigh);

send_command_to_ROM(addrMid);

send_command_to_ROM(addrLow);

for(i = 0; i < DataLen; i++ )

*(pBuff+i) =get_data_from_ROM();

相关文档