12232液晶显示模块 带中文字库
深圳市迪威液晶显示技术有限公司
SHEN ZHEN DV LCD HI-TECH CO., LTD
DV12232G(带中文字库)
一、概述
DV12232G 是一种内置8192 个16*16 点汉字库和128 个16*8 点ASCII 字符集图形点阵液晶显示器,它主
要由行驱动器/ 列驱动器及128×32 全点阵液晶显示器组成。可完成图形显示,也可以显示7.5×2 个(16×16
点阵)汉字.与外部CPU 接口采用并行或串行方式控制。
主要技术参数和性能:
1.电源:VDD:+3.0∽+5.5V。(电源低于4.0 伏LED 背光需另外供电)
2.显示内容:122(列)×32(行)点。
3.全屏幕点阵。
4.2M ROM(CGROM)总共提供8192 个汉字(16×16 点阵)。
5.16K ROM(HCGROM)总共提供128 个字符(16×8 点阵)。
6.2MHZ 频率。
7.工作温度: -20℃ ∽ +70℃ ,存储温度: -30℃ ∽ +80℃
UnRegistered
第 3 页
二、外形尺寸及接口图
三、模块主要硬件构成说明
四、指令说明
UnRegistered
第 4 页
控制器接口信号说明
1、RS,R/W 的配合选择决定控制界面的4 种模式:
RS R/W 功能说明 L L MPU 写指令到指令暂存器(IR)
L H 读出忙标志(BF)及地址记数器(AC)的状态
H L MPU 写入数据到数据暂存器(DR)
H H MPU 从数据暂存器(DR)中读出数据
2、E 信号
E 状态 执行动作 结果
高——>低 I/O 缓冲——>DR 配合/W 进行写数据或指令
高 DR——>I/O 缓冲 配合R 进行读数据或指令
低/低——>高 无动作
● 忙标志:BF
BF 标志提供内部工作情况.BF=1 表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0 时,模
块为准备状态,随时可接受外部指令和数据.
利用STATUS RD 指令,可以将BF 读到DB7 总线,从而检验模块之工作状态.
● 字型产生ROM(CGROM)
字型产生ROM(CGROM)提供8192 个此触发器是用于模块屏幕显示开和关的控制。DFF=1 为开显示(DISPLAY
ON),DDRAM 的内容就显示在屏幕上,DFF=0 为关显示(DISPLAY OFF)。
DFF 的状态是指令DISPLAY ON/OFF 和RST 信号控制的。
● 显示数据RAM(DDRAM)
模块内部显示数据RAM 提供64×2 个位元组的空间,最多可控制4 行16 字(64 个字)的中文字型显示
(本模块只用到其中的7.5*2 个),当写入显示数据RAM 时,可分别显示CGROM 与CGRAM 的字型;此模块可显
示三种字型,分别是瘦长的英数字型(16*8)、CGRAM 字型及CGROM 的中文字型,三种字型的选择,由在DDRAM
中写入的编码选择,在00~0F 的编码中将选择CGRAM 的字定义字型,10~7F 的编码中将选择
瘦长英数字的字型,至于A0 以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的
编码(A140~D75F)。
● 字型产生RAM(CGRAM)
字型产生RAM 提供图象定义(造字)功能, 可以提供四组16×16 点的自定义图象空间,使用者可以将内部
字型没有提供的图象字型自行定义到CGRAM 中,便可和CGROM 中的定义一般的通过DDRAM 显示在荧屏中。
● 地址计数器AC
地址计数器是用来贮存DDRAM/CGRAM 之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写
入DDRAM/CGRAM 的值时,地址计数器的值就会自动加一,当RS 为“0”时而R/W 为“1”时,地址计数器的值
会被读取到DB6~DB0 中。
● 游标/闪烁控制电路
此模块提供硬体游标及闪烁控制电路,由地址计数器的值来指定DDRAM 中的游标或闪烁位置。
UnRegistered
第 5 页
五、指令说明
模块控制芯片提供两套控制命令,基本指令和扩充指令如下:
指令表1:(RE=0:基本指令)
指 指 令 码 功 能
令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
清除
显示
0 0 0 0 0 0 0 0 0 1
将DDRAM填满"20H",并且设定DDRAM的地址计
数器(AC)到"00H"
地址
归位
0 0 0 0 0 0 0 0 1 X
设定DDRAM 的地址计数器(AC)到"00H",并且
将游标移到开头原点位置;这个指令不改变
DDRAM 的内容
显示状
态开/关
0 0 0 0 0 0 1 D C B
D=1: 整体显示 ON
C=1: 游标ON
B=1:游标位置反白允许
进入点
设定
0 0 0 0 0 0 0 1 I/D S
指定在数据的读取与写入时,设定游标
的移动方向及指定显示的移位
游标或
显示移
位控制
0 0 0 0 0 1 S/C R/L X X
设定游标的移动与显示的移位控制位;
这个指令不改变DDRAM 的内容
功能
设定
0 0 0 0 1 DL X RE X X
DL=0/1:4/8 位数据
RE=1: 扩充指令操作
RE=0: 基本指令操作
设定
CGRAM
地址
0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 设定CGRAM 地址
设定
DDRAM
地址
0 0 1 0 AC5 AC4 AC3 AC2 AC1 AC0
设定DDRAM 地址(显示位址)
第一行:80H-87H
第二行:90H-97H
读取忙
标志和
地址
0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0
读取忙标志(BF)可以确认内部动作是
否完成,同时可以读出地址计数器(AC)
的值
写数据
到RAM
1 0 数据 将数据D7~D0 写入到内部的RAM
(DDRAM/CGRAM/IRAM/GRAM)
读出RAM
的值
1 1 数据 从内部RAM 读取数据D7~D0
(DDRAM/CGRAM/IRAM/GRAM)
指令表2:(RE=1:扩充指令)
指 指 令 码 功 能
令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
待命
模式
0 0 0 0 0 0 0 0 0 1
进入待命模式,执行其他指令都棵终止
待命模式
卷动地址
开关开启
0 0 0 0 0 0 0 0 1 SR
SR=1:允许输入垂直卷动地址
SR=0:允许输入IRAM 和CGRAM 地址
反白
选择
0 0 0 0 0 0 0 1 R1 R0
选择2 行中的任一行作反白显示,并可
决定反白与否。初始值R1R0=00,第一
次设定为反白显示,再次设定变回正常
睡眠
模式
0 0 0 0 0 0 1 SL X X
SL=0:进入睡眠模式
SL=1:脱离睡眠模式
UnRegistered
第 6 页
扩充
功能
设定
0 0 0 0 1 CL X RE G 0
CL=0/1:4/8 位数据
RE=1: 扩充指令操作
RE=0: 基本指令操作
G=1/0:绘图开关
设定绘
图RAM
地址
0 0 1
0
AC6
0
AC5
0
AC4
AC3
AC3
AC2
AC2
AC1
AC1
AC0
AC0
设定绘图RAM
先设定垂直(列)地址AC6AC5…AC0
再设定水平(行)地址AC3AC2AC1AC0
将以上16 位地址连续写入即可
备注;当IC1 在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF 标志时,BF 需为零,方可接
受新的指令;如果在送出一个指令前并不检查BF 标志,那么在前一个指令和这个指令中间必须延长一段较长
的时间,即是等待前一个指令确实执行完成。
六.时序图
并口读写时序图:
MPU 写数据
MPU 读数据
T p w
V ih 1
V i l1
T r T d s w T h
V a l id D a t a
T c
R S
R /W
E
D B 0 ~ D B 7
T a s
T a h
T a h
T c
T d s w T h
D B 0 ~ D B 7 V a l id D a t a
V i l i
V i h i V ih i
V i l i
T p w
T a s
V ih i
R /W
E
T r
R S V i h i
V i l i V i l i
V i h i
V ih i
T a h
T a h
T d d r
UnRegistered
第 7 页
串口读写时序:
七、软件初始化:
RS RW D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 1 1 X X X X
…….在此指令前,不能检查BF 标志
0 0 0 0 1 1 X X X X …….在此指令前,不能检查BF 标志
电源开启
延迟时间超过40ms
延迟时间超过100us UnRegistered
第 8 页
0 0 0 0 1 1 X X X X …….在此指令前,不能检查BF 标志
0 0 0 0 1 1 1 1 x x …… 在此指令前,不能检查BF 标志
0 0 0 0 1 1 1 0 0 0 ….. 设为基本指令
0 0 0 0 0 0 0 0 0 1 ….. 荧屏显示清除
0 0 0 0 0 0 0 1 I/D S ….. 进入点设定
DV12232G (ST7920) 并口演示程序 Keil C51
// DV12232G 测试程序(并口)
//***************************************************************************
//连线表: CPU=89C52 *
//RS=P2.0 RW=P2.1 E=/(WR*RD) *
//FOSC=12MHz D0-D7=P0.0-P0.7 /RSET=/(CPU RSET) *
//***************************************************************************
#include <reg52.h>
#include <stdlib.h>
#include <intrins.h>
#include <stdio.h>
char xdata LcmWriteCom _at_ 0x0000; //写指令
char xdata LcmWriteData _at_ 0x0100; //写数据
char xdata LcmReadBF _at_ 0x0200; //读BF&AC
char xdata LcmReadData _at_ 0x0300; //读数据
sbit Key=P3^4;
unsigned char code AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置
};
unsigned char code str2[]="欢迎光临dvlcd!!";
unsigned char code str1[]="迪威液晶显示技术欢迎您!内含八千汉字库。";
unsigned char code bmp1[];
void CheckBusy( void )
{
while(LcmReadBF&0x80); //BF=1 Busy
延迟时间超过37us
初始设定结束
UnRegistered
第 9 页
}
void WriteCommand( unsigned char Cbyte )
{
CheckBusy();
LcmWriteCom = Cbyte;
}
void WriteData( unsigned char Dbyte )
{
CheckBusy();
LcmWriteData = Dbyte;
}
unsigned char ReadData( void )
{
CheckBusy();
return LcmReadData;
}
void Delay(unsigned int MS)
{
unsigned char us,usn;
while(MS!=0) //for 12M
{ usn = 2;
while(usn!=0)
{
us=0xf5;
while (us!=0){us--;};
usn--;
}
MS--;
}
}
//迪威液晶测试架专用延时函数
void DelayKey(unsigned int Second , unsigned int MS100)
{ //输入精确到0.1S,是用","
unsigned int i;
for(i=0;i<Second*100+MS100*10;i++)
{
if(Key==0)
{
Delay(20);
while(Key==0) {Delay(20);}
break;
}
else Delay(10);
}
}
void LcmInit( void )
{
WriteCommand(0x30); //8BitMCU,基本指令集合
WriteCommand(0x03); //AC 归0,不改变DDRAM 内容
WriteCommand(0x0C); //显示ON,游标OFF,游标位反白OFF
WriteCommand(0x01); //清屏,AC 归0
WriteCommand(0x06); //写入时,游标右移动
UnRegistered
第 10 页
}
//文本区清RAM 函数
void LcmClearTXT( void )
{
unsigned char i;
WriteCommand(0x30); //8BitMCU,基本指令集合
WriteCommand(0x80); //AC 归起始位
for(i=0;i<64;i++)
WriteData(0x20);
}
//图形区和文本区显示在两个不同的RAM 区
//图形区清RAM 函数
void LcmClearBMP( void )
{
unsigned char i,j;
WriteCommand(0x34); //8Bit 扩充指令集,即使是36H 也要写两次
WriteCommand(0x36); //绘图ON,基本指令集里面36H 不能开绘图
for(i=0;i<32;i++) //12864 实际为256x32
{
WriteCommand(0x80|i); //行位置
WriteCommand(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
WriteData(0);
}
}
void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
{
WriteCommand(0x30); //8BitMCU,基本指令集合
WriteCommand(AC_TABLE[8*row+col]); //起始位置
while(*puts != '\0') //判断字符串是否显示完毕
{
if(col==8) //判断换行
{ //若不判断,则自动从第一行到第三行
col=0;
row++;
}
if(row==2) row=0; //一屏显示完,回到屏左上角
WriteCommand(AC_TABLE[8*row+col]);
WriteData(*puts); //一个汉字要写两次
puts++;
WriteData(*puts);
puts++;
col++;
}
}
void ReadDemo( void )
{
unsigned char i;
unsigned char x,y;
PutStr(0,0,str2); //显示一行文字
for(i=0;i<8;i++) //只操作第一行
UnRegistered
第 11 页
{
WriteCommand(0x80|i);
x = ReadData(); //假读一次,无作用
x = ReadData(); //第二个读取才能正确
y = ReadData(); //每个循环读和写要两次
//每个AC 地址有高低两个字节
WriteCommand(0x90|i); //将读取的内容写到第二行
WriteData(x);
WriteData(y);
}
}
void PutBMP(unsigned char *puts)
{
unsigned int x=0;
unsigned char i,j;
WriteCommand(0x34); //8Bit 扩充指令集,即使是36H 也要写两次
WriteCommand(0x36); //绘图ON,基本指令集里面36H 不能开绘图
for(i=0;i<32;i++) //12864 实际为256x32
{
WriteCommand(0x80|i); //行位置
WriteCommand(0x80); //列位置
for(j=0;j<16;j++) //122/8=15.25=16(只能为整数)
{ //列位置每行自动增加
WriteData(puts[x]);
x++;
}
}
}
//迪威液晶测试用点阵显示
void DisplayDots(unsigned char DotByte)
{
unsigned char i,j;
WriteCommand(0x34); //8Bit 扩充指令集,即使是36H 也要写两次
WriteCommand(0x36); //绘图ON,基本指令集里面36H 不能开绘图
for(i=0;i<32;i++) //12864 实际为256x32
{
WriteCommand(0x80|i); //行位置
WriteCommand(0x80); //列位置
for(j=0;j<16;j++) //122/8=15.25=16(只能为整数)
{ //列位置每行自动增加
WriteData(DotByte);
}
DotByte=~DotByte;
}
}
void main( void )
{
Delay(100); //等待复位
LcmInit();
LcmClearTXT();
LcmClearBMP();
while(1)
{
UnRegistered
第 12 页
LcmClearTXT();
PutBMP(bmp1);
DelayKey(1,5);
DisplayDots(0x55);
DelayKey(1,5);
LcmClearBMP();
PutStr(0,0,str1);
DelayKey(1,5);
LcmClearTXT();
ReadDemo();
DelayKey(1,5);
LcmClearTXT();
DisplayDots(0xaa);
DelayKey(1,5);
}
}
unsigned char code bmp1[]={
//********************************************************//
//***** 转换的文件:E:\!Program\!BmpSample\12832_12232.bmp
//***** 源图形宽度 * 高度:128 * 32
//***** 调整后宽度 * 高度:128 * 32
//***** 字模格式:横向取模,冗余模式,字节正序,正色取模,
//***** 点阵转换时间:2005/03/15 13:37:14
//***** 位图点阵占用512 字节
//********************************************************//
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
0x80,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x0C,0x00,0x00,0x41,
0x80,0x00,0x00,0x30,0x00,0xE0,0xF0,0x00,0x18,0x30,0x00,0x07,0x18,0x00,0x00,0x41,
0x80,0x00,0x00,0x7F,0x80,0x63,0xCF,0xF0,0x18,0x30,0x30,0x06,0x18,0x00,0x00,0x41,
0x80,0x03,0xFF,0x7F,0xE0,0x76,0x0C,0x30,0x1C,0x30,0x60,0x66,0x3F,0xFE,0x00,0x41,
0x80,0x00,0x07,0xC0,0x60,0x3E,0x18,0x60,0x1C,0x60,0xC0,0x6C,0x30,0x00,0x00,0x41,
0x80,0x00,0x06,0xCC,0xE0,0x0C,0x18,0x60,0x0C,0x61,0x80,0xCC,0x60,0x00,0x00,0x41,
0x80,0x03,0x07,0x98,0xC0,0x0C,0x38,0xE0,0x0C,0xE3,0x00,0xCC,0xCC,0x00,0x00,0x41,
0x80,0x03,0x0D,0x99,0xC0,0x1C,0x30,0xC0,0x0C,0xC6,0x00,0xD8,0xCF,0x00,0x00,0x41,
0x80,0x03,0x1F,0x19,0x87,0xD8,0x30,0xC0,0x00,0xC0,0x01,0x99,0x83,0x80,0x00,0x41,
0x80,0x03,0x9F,0x33,0x00,0xD8,0x71,0xC3,0xFF,0xFF,0xF1,0x9B,0x01,0xC0,0x00,0x41,
0x80,0x01,0xB0,0x37,0x01,0xF8,0x61,0x80,0x0C,0x30,0x01,0xB6,0x00,0xE0,0x00,0x41,
0x80,0x01,0xE0,0x70,0x01,0xB0,0x61,0x80,0x0C,0x70,0x03,0x30,0x00,0x00,0x00,0x41,
0x80,0x01,0xE0,0x70,0x01,0xB0,0xE3,0x80,0x1C,0x60,0x03,0x33,0xFF,0xC0,0x00,0x41,
0x80,0x01,0xC0,0xF0,0x03,0x60,0xC3,0x00,0x18,0x60,0x03,0x67,0x18,0xC0,0x00,0x41,
0x80,0x03,0xC1,0xF0,0x03,0x67,0xC3,0x00,0x30,0xE0,0x06,0x66,0x30,0xC0,0x00,0x41,
0x80,0x07,0xC3,0xB0,0x03,0x7F,0xC7,0x00,0x30,0xC0,0x06,0x6E,0x30,0xC0,0x00,0x41,
0x80,0x0E,0xE3,0x30,0x06,0x71,0xF6,0x00,0x60,0xC0,0xC6,0xCC,0x31,0x80,0x00,0x41,
0x80,0x1C,0xE6,0x38,0x06,0x01,0xBC,0x00,0xC1,0xC1,0x8C,0xCC,0x61,0x80,0x00,0x41,
0x80,0x38,0xEC,0x38,0x0F,0x03,0x80,0x01,0x81,0x81,0x8C,0xD8,0x61,0x80,0x00,0x41,
0x80,0x60,0x78,0x18,0x1B,0x83,0x00,0x07,0x01,0x83,0x0D,0x98,0x63,0x00,0x00,0x41,
0x80,0xC0,0x70,0x1C,0x71,0xC6,0x00,0x1E,0x03,0x87,0x01,0x98,0xC3,0x00,0x00,0x41,
0x80,0x00,0xE0,0x0C,0xE0,0xFF,0xFE,0x38,0x01,0xFE,0x01,0x9F,0xFE,0x00,0x00,0x41,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
UnRegistered
第 13 页
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,