快捷搜索:  汽车  科技

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(7)采用 ST7525 带背光 有3.3V、5V版本可选。(6)接口简单:并行、串行、IIC 接口;(3)按照 8*16 点阵汉字来计算可显示 24 字*4 行;(4)按照 5*8 点阵汉字来计算可显示 32 字*8 行;(5)可软件调对比度、正显/反显转换、行列扫描方向可改(可旋转 180 度使用)。

开始做一个0.5至30V的可调电源 因淘到的成品机箱尺寸的原因 选择了这款屏。

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(1)

晶联讯的屏

JLX19264G-925 图像型点阵液晶模块的特性

(1)192*64 点阵单色图片,或其它小于 192*64 点阵的单色图片;

(2)可选用 16*16 点阵或其他点阵的图片来自编汉字,按照 16*16 点阵汉字来计算可显示 12 字*4 行;

(3)按照 8*16 点阵汉字来计算可显示 24 字*4 行;

(4)按照 5*8 点阵汉字来计算可显示 32 字*8 行;

(5)可软件调对比度、正显/反显转换、行列扫描方向可改(可旋转 180 度使用)。

(6)接口简单:并行、串行、IIC 接口;

(7)采用 ST7525 带背光 有3.3V、5V版本可选。

外形尺寸及接口引脚功能

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(2)

模块的接口引脚功能:

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(3)

电路框图

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(4)

背光参数

正常工作电流为:48~120mA(LED 灯数共 6 颗);

工作电压:3.0V、5.0V

指令功能:

下表是“ST7525”IC 支持的指令:

CD:0:指令; 1:数据 W/R: 0:写; 1:读 D7~D0:有用的数据位; -:不必理会的

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(5)

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(6)

点阵与 DD RAM(显示数据存储器)地址的对应关系

请留意页的定义:PAGE 与平时所讲的“页”并不是一个意思,在此表示 ” 8 个行就是一个“页”,一个 192*64 点阵的屏分为 8 个“页”,从第 0“页”到第 7“页”。

DB7--DB0 的排列方向:数据是从下向上排列的。最低位 D0 是在最上面,最高位 D7 是在最下面。 每一位(bit)数据对应一个点阵,通常“1”代表点亮该点阵,“0”代表关掉该点阵.如下图所示:

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(7)

程序举例:

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

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(8)

串行接口

程序

// JLX19264G-925-PN-S 驱动IC是ST7525 串行接口

#include <reg52.h>

#include <intrins.h>

#include <Chinese_code.h>

sbit CS1=P0^5; /*对应LCD的CS引脚*/

sbit reset=P0^7; /*对应LCD的RST引脚*/

sbit rs=P0^6; /*对应LCD的RS引脚*/

sbit sclk=P2^2; //对应LCD的SCK(D0)

sbit sid=P2^3; //对应LCD的SDA(D1)

sbit key=P2^0;

#define DataBus P1

void delay_us(int i);

void delay(int i);

//写指令到LCD模块

void transfer_command(int data1)

{

char i;

cs1=0;

rs=0;

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

{

sclk=0;

if(data1&0x80) sid=1;

else sid=0;

sclk=1;

data1=data1<<=1;

}

cs1=1;

}

//写数据到LCD模块

void transfer_data(int data1)

{

char i;

cs1=0;

rs=1;

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

{

sclk=0;

if(data1&0x80) sid=1;

else sid=0;

sclk=1;

data1=data1<<=1;

}

cs1=1;

}

//延时1

void delay(int i)

{

int j k;

for(j=0;j<i;j )

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

}

void waitkey()

{

repeat:

if(key==1)goto repeat;

else delay(2500);

}

//LCD模块初始化

void initial_lcd()

{

reset=0; //低电平复位

delay(100);

reset=1; //复位完毕

delay(200);

transfer_command(0xe2); //软复位

delay(200);

transfer_command(0x2f); //打开内部升压

delay(200);

transfer_command(0xa0); //

transfer_command(0x81); //微调对比度

transfer_command(0x79); //微调对比度的值,可设置范围0x00~0xFF

transfer_command(0xeb); //1/9偏压比(bias)

transfer_command(0xc4); //行列扫描顺序:从上到下

transfer_command(0xaf); //开显示

}

void lcd_address(uchar page uchar column)

{

column=column-1; //我们平常所说的第1列,在LCD驱动IC里是第0列。所以在这里减去1.

page=page-1;

transfer_command(0xb0 page); //设置页地址。每页是8行。一个画面的64行被分成8个页。我们平常所说的第1页,在LCD驱动IC里是第0页,所以在这里减去1

transfer_command(((column>>4)&0x0f) 0x10); //设置列地址的高4位

transfer_command(column&0x0f); //设置列地址的低4位

}

//全屏清屏

void clear_screen()

{

unsigned char i j;

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

{

lcd_address(1 i 1);

for(j=0;j<192;j )

{

transfer_data(0x00);

}

}

}

void display_graphic_192x64(uchar *dp)

{

uchar i j;

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

{

lcd_address(i 1 1);

for(j=0;j<192;j )

{

transfer_data(*dp);

dp ;

}

}

}

//==================display a piture of 128*64 dots================

void full_display(uchar data_left uchar data_right)

{

int i j;

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

{

lcd_address(i 1 1);

for(j=0;j<96;j )

{

transfer_data(data_left);

transfer_data(data_right);

}

}

}

//显示32x32点阵图像、汉字、生僻字或32x32点阵的其他图标

void display_graphic_32x32(uchar page uchar column uchar *dp)

{

uchar i j;

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

{

lcd_address(page j column);

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

{

transfer_data(*dp); //写数据到LCD 每写完一个8位的数据后列地址自动加1

dp ;

}

}

}

//显示16x16点阵图像、汉字、生僻字或16x16点阵的其他图标

void display_graphic_16x16(uchar page uchar column uchar *dp)

{

uchar i j;

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

{

lcd_address(page j column);

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

{

transfer_data(*dp); //写数据到LCD 每写完一个8位的数据后列地址自动加1

dp ;

}

}

}

//写入一组16x16点阵的汉字字符串(字符串表格中需含有此字)

//括号里的参数:(页,列,汉字字符串)

void display_string_16x16(uchar page uchar column uchar reverse uchar *text)

{

uchar i j k data1;

uint address;

j = 0;

while(text[j] != '\0')

{

i=0;

address=1;

while(Chinese_text_16x16[i]> 0x7e )

{

if(Chinese_text_16x16[i] == text[j])

{

if(Chinese_text_16x16[i 1] == text[j 1])

{

address = i*16;

break;

}

}

i =2;

}

if(column>191)

{

column =0;

page =2;

}

if(address !=1)

{

for(k=0;k<2;k )

{

lcd_address(page k column);

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

{

if(reverse==1) data1=~Chinese_code_16x16[address];

else data1=Chinese_code_16x16[address];

transfer_data(data1);

address ;

}

}

j =2;

}

else

{

for(k=0;k<2;k )

{

lcd_address(page k column);

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

{

if(reverse==0) transfer_data(0x00);

else transfer_data(0xff);

}

}

j ;

}

column =16;

}

}

//显示8x16点阵图像、ASCII 或8x16点阵的自造字符、其他图标

void display_graphic_8x16(uchar page uchar column uchar *dp)

{

uchar i j;

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

{

lcd_address(page j column);

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

{

transfer_data(*dp); //写数据到LCD 每写完一个8位的数据后列地址自动加1

dp ;

}

}

}

//显示8x16的点阵的字符串,括号里的参数分别为(页 列,字符串指针)

void display_string_8x16_2(uchar page uchar column uchar reverse uchar *text)

{

uchar data1;

uint i=0 j k n;

while(text[i]>0x00)

{

if((text[i]>=0x20)&&(text[i]<=0x7e))

{

j=text[i]-0x20;

for(n=0;n<2;n )

{

lcd_address(page n column);

for(k=0;k<8;k )

{

if(reverse==1) data1=~ascii_table_8x16[j][k 8*n];

else data1=ascii_table_8x16[j][k 8*n];

transfer_data(data1);

}

if(reverse==0) transfer_data(0x00);

else transfer_data(0xff);

}

i ;

column =8;

}

else

i ;

if(column>127)

{

column=0;

page =2;

}

}

}

void display_string_8x16(uint page uint column uchar *text)

{

uint i=0 j k n;

while(text[i]>0x00)

{

if((text[i]>=0x20)&&(text[i]<=0x7e))

{

j=text[i]-0x20;

for(n=0;n<2;n )

{

lcd_address(page n column);

for(k=0;k<8;k )

{

transfer_data(ascii_table_8x16[j][k 8*n]);//显示5x7的ASCII字到LCD上,y为页地址,x为列地址,最后为数据

}

}

i ;

column =8;

}

else

i ;

}

}

//显示一串5x8点阵的字符串

//括号里的参数分别为(页,列,是否反显,数据指针)

void display_string_5x8(uint page uint column uchar reverse uchar *text)

{

uchar i=0 j k data1;

while(text[i]>0x00)

{

if((text[i]>=0x20)&&(text[i]<=0x7e))

{

j=text[i]-0x20;

lcd_address(page column);

for(k=0;k<5;k )

{

if(reverse==1) data1=~ascii_table_5x8[j][k];

else data1=ascii_table_5x8[j][k];

transfer_data(data1);

}

if(reverse==1) transfer_data(0xff);

else transfer_data(0x00);

i ;

column =6;

}

else

i ;

}

}

void display_string_5x8_1(uint page uint column uchar *text)

{

uint i=0 j k;

while(text[i]>0x00)

{

if((text[i]>=0x20)&&(text[i]<0x7e))

{

j=text[i]-0x20;

lcd_address(page column);

for(k=0;k<5;k )

{

transfer_data(ascii_table_5x8[j][k]);//显示5x7的ASCII字到LCD上,y为页地址,x为列地址,最后为数据

}

i ;

column =6;

}

else

i ;

}

}

void main(void)

{

while(1)

{

initial_lcd();

clear_screen(); //clear all dots

display_graphic_192x64(bmp2);

waitkey();

clear_screen(); //clear all dots

display_graphic_192x64(bmp1);

waitkey();

clear_screen(); //clear all dots

display_graphic_192x64(bmp3);

waitkey();

clear_screen(); //clear all dots

display_graphic_192x64(bmp6);

waitkey();

clear_screen(); //clear all dots

display_graphic_192x64(bmp5);

waitkey();

clear_screen();

display_string_5x8(1 1 1 " MENU "); //显示5x8点阵的字符串,括号里的参数分别为(页,列,是否反显,数据指针)

display_string_5x8(3 1 0 " Select>>>>");

display_string_5x8(3 100 1 "1.Graphic ");

display_string_5x8(4 100 0 "2.Chinese " );

display_string_5x8(5 100 0 "3.Movie ");

display_string_5x8(6 100 0 "4.Contrast ");

display_string_5x8(7 100 0 "5.Mirror ");

display_string_5x8(8 1 1 " PRE USER DEL NEW ");

display_string_5x8(8 59 0 " ");

display_string_5x8(8 94 0 " ");

display_string_5x8(8 97 48 0 " ");

waitkey();

clear_screen();

display_string_8x16_2(1 1 1 "--");

display_string_16x16(1 17 1 "→粉尘测试 ");

display_string_16x16(3 33 0 "一般测试");

display_string_16x16(5 33 0 "校准模式");

display_string_16x16(7 33 0 "充电模式 ↓");

waitkey();

clear_screen();

display_graphic_32x32(1 49 cheng1); //在第1页,第49列显示单个汉字"成"

display_graphic_32x32(1 89 gon); //在第1页,第49列显示单个汉字"成"

display_graphic_16x16(6 1 zhuang1); //在第5页,第1列显示单个汉字"状"

display_graphic_16x16(6 (1 16) tai1); //在第5页,第17列显示单个汉字"态"

// display_graphic_8x16(6 (1 16*2) mao_hao); //在第5页,第25列显示单个字符":"

display_graphic_16x16(6 (1 16*2 8) shi1); //在第5页,第41列显示单个汉字"使"

display_graphic_16x16(6 (1 16*3 8) yong1); //在第5页,第49列显示单个汉字"用"

display_graphic_8x16(6 (89) num0); //在第5页,第89列显示单个数字"0"

display_graphic_8x16(6 (89 8*1) num0); //在第5页,第97列显示单个数字"0"

display_graphic_8x16(6 (89 8*2) mao_hao); //在第5页,第105列显示单个字符":"

display_graphic_8x16(6 (89 8*3) num0); //在第5页,第113列显示单个数字"0"

display_graphic_8x16(6 (89 8*4) num0); //在第5页,第121列显示单个数字"0"

waitkey();

clear_screen(); //clear all dots

display_string_8x16(1 1 "(<\"0123456abt~`!@#$%^\">)");//在第1页,第1列显示字符串

display_string_8x16(3 1 "{[(<\" '&*|\\@#_- =' \">)]}");//在第*页,第*列显示字符串

display_string_5x8_1(5 1 "[!#$%&'()* -./0123456789:;<=>?]");

display_string_5x8_1(6 1 "[ABCDEFGHIJKLMNOPQRSTUVWXYZabcd]");

display_string_5x8_1(7 1 "(abcdefghijklmnopqrstuvwxyzabcd)");

display_string_5x8_1(8 1 "{[(<\" '&*|\\@abcde012#_- =' \">)]}");

waitkey();

full_display(0xff 0xff);

waitkey();

full_display(0x55 0xaa);

waitkey();

full_display(0xaa 0x55);

waitkey();

full_display(0xff 0x00);

waitkey();

full_display(0x00 0xff);

waitkey();

}

}

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(9)

并行接口

并行程序与串行只是接口定义、写数据和命令不一样,其它都一样

并行程序:

#include <reg52.h>

#include <intrins.h>

sbit cs1=P3^2; //对应 LCD 的 CS

sbit reset=P3^1; //对应 LCD 的 RST

sbit rs=P3^0; //对应 LCD 的 RS

sbit e=P3^5; //对应 LCD 的 RD(E)

sbit wr=P3^4; //对应 LCD 的 WR

sbit key=P2^0; /*按键接口,P2.0 口与 GND 之间接一个按键*/

//写指令到 LCD 模块

void transfer_command(int data1)

{

cs1=0;

rs=0;

wr=0;

e=0;

P1=data1;

e=1;

e=0;

P1=0x00;

cs1=1;

}

//写数据到 LCD 模块

void transfer_data(int data1)

{

cs1=0;

rs=1;

wr=0;

e=0;

P1=data1;

e=1;

e=0;

P1=0x00;

cs1=1;

}

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(10)

图 10.IIC 接口

IIC 程序与串、并行接口定义、写数据和命令不一样,取模代码是一样的

IIC 程序:

// 液晶演示程序 JLX19264G-925,IIC 接口!

// 驱动 IC 是:ST7525

#include <reg52.h>

#include <intrins.h>

sbit reset=P3^2; //对应 LCD 的 RST

sbit scl=P3^1; //对应 LCD 的 SCK(D0)

sbit sda=P3^0; //对应 LCD 的 SDA(D1)

sbit key=P2^0;

void delay_us(int i);

void delay(int i);

//延时 1

void delay(int i)

{

int j k;

for(j=0;j<i;j )

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

}

//延时 2

void delay_us(int i)

{

int j k;

for(j=0;j<i;j )

for(k=0;k<10;k );

}

void waitkey()

{

repeat:

if(key==1)goto repeat;

else delay(400);

}

void transfer(int data1)

{

int i;

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

{

scl=0;

if(data1&0x80) sda=1;

else sda=0;

scl=1;

scl=0;

data1=data1<<1;

}

sda=0;

scl=1;

scl=0;

}

void start_flag()

{

scl=1; /*START FLAG*/

sda=1; /*START FLAG*/

sda=0; /*START FLAG*/

}

void stop_flag()

{

scl=1; /*STOP FLAG*/

sda=0; /*STOP FLAG*/

sda=1; /*STOP FLAG*/

}

//写命令到液晶显示模块

void transfer_command(uchar com)

{

start_flag();

transfer(0x7c);

transfer(com);

stop_flag();

}

字库文件Chinese_code.h部分内容:

文件很长不方便全部列出 可自己按相同格式补齐

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(11)

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(12)

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(13)

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(14)

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(15)

64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动(64点阵液晶黑白屏模块19264G-925-PN说明书及ST7525驱动)(16)

猜您喜欢: