LM2068S 液晶显示模块应用参考 深圳市拓普微科技开发有限公司 版本 描述 日期 编者 0.1 新版本 2006-08-10 淮俊霞 http://www.topwaysz.com 1 / 8
目录 1. 简介...3 2. 电路连接原理简图...3 3. 指令操作...3 4. 指令集说明...4 5. 显示内存及显示区的合成...5 6. 流程图...6 参考程序...7 http://www.topwaysz.com 2 / 8
1. 简介 本公司生产的 LM2068S 点阵图形式液晶显示模块, 采用 RA8835(SED1335 兼容 ) 控制器, 内嵌 32K SRAM 作为显示存储器, 模块大小 99.5 71.1 9.5mm, 点阵数 320 240dot 适配 Intel8080 系列 MPU 的操作时序电路 较强的显示存储器管理能力 显示区具有文本和图形两种显示特性, 多种显示合成方式 基本特性 : 单电源电压 :3.3V 或 5.0V 显示分辨率 :320 240dot 显示方式 :FSTN 正显, 半透 背光 : 高效率白色 LED 背光 TAB 结构 内置 DC-DC 转换电路, 无需外加负压 内嵌 CGROM, 自带 160 个 5 7 点阵字体的字符 功能丰富的的指令集, 具有 14 条指令, 多数带多个参数 2. 电路连接原理简图 以 8 位并行通信为例, 模块与单片机 AT89S52 的接口如下图所示 25kΩ 5V VDD VOUT V0 VSS LM2068S DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 /RD /CS /RES A0 /WR P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.2 P3.4 P3.5 P3.6 P3.7 AT89S52 Vcc /EA RST XTAL2 XTAL1 Vss 5V 1μF 10kΩ 30pF 12MHz 30pF 序号 符号 1 VSS 2 VDD 3 V0 4 /WR 5 /RD 6 /CS 7 A0 8 /RES 9 DB0 16 DB7 17 NC 18 VOUT 19 BLA 20 BLK 3. 指令操作 Intel8080 操作时序接口信号组合功能表如下 : 操作 /RD /WR A0 数据类型 写寄存器命令 1 0 1 写寄存器代码 读寄存器命令 0 1 1 读显示数据和光标指针 写数据操作 1 0 0 写显示数据和指令参数 读数据操作 0 1 0 读状态标志位 http://www.topwaysz.com 3 / 8
4. 指令集说明 指令名称 参 Code 数 A0 D7 D6 D5 D4 D3 D2 D1 D0 SYSTEM 1 0 1 0 0 0 0 0 0 40H 初始化驱动和显示设置 SET P1 0 DR 0 IV 1 W/S M2 M1 M0 32H M0, 内部字符发生器 CGROM M1, 外部字符发生器 CGRAM, 字符代码为 80H~9FH M2, 外部字符发生器 CGRAM, 字体为 8 8dot W/S: 单屏结构液晶显示驱动系统 IV: 画面首行作为边界 P2 0 WF 0 0 0 0 FX 87H FX: 字符体宽度大小 =8 pixels WF: 交流驱动波形, 每帧翻转一次 P3 0 0 0 0 0 FY 07H FY: 字符体高度大小 =8 pixels P4 0 C/R 27H* C/R: 每行占显示存储器为 40 字节, 即显示域宽度为 320dot P5 0 TC/R 2BH* TC/R: 驱动频率的时间常数 P6 0 L/F EFH* L/F: 显示 240 行, 即显示域高度为 240dot P7 0 APL 28H* AP: 显示存储器内一个显示行占显示缓冲器的字节数是 40 P8 0 APH 00H* byte, SLEEP 无 1 0 1 0 1 0 0 1 1 53H 休闲模式设置 IN DISP 1 0 1 0 1 1 0 0 D 59H 显示开 / 关状态设置 ON/OFF D: 显示开 / 关设置位 P1 0 FP5 FP4 FP3 FP2 FP1 FP0 FC1 FC0 55H FC1,FC0: 光标显示, 但不闪烁 FP1,FP0: 第 1 区显示开 FP3,FP2: 第 2 区显示开 FP5,FP4: 第 3 区显示开 SCROLL 1 0 1 0 0 0 1 0 0 44H 显示开始地址和显示范围设置 P1 0 SAD1L 00H 显示 1 区的显示 RAM 起始地址 =0000H P2 0 SAD1H 00H P3 0 SL1 77H 显示 1 区占用的显示行 =120 行 P4 0 SAD2L 00H 显示 2 区的显示 RAM 起始地址 =2800H P5 0 SAD2H 28H P6 0 SL2 EFH 显示 2 区占用的显示行 =240 行 P7 0 SAD3L 00H 显示 3 区的显示 RAM 起始地址 =5000H P8 0 SAD3H 50H P9 0 SAD4L - 显示 4 区的显示 RAM 起始地址. 未用 10 0 SAD4H - CSR 1 0 1 0 1 1 1 0 1 5DH 光标形状设置 FORM P1 0 0 0 0 0 0 CRX 07H CRX: 光标水平方向占据 8 点列 P2 0 CM 0 0 0 CRY 07H CRY: 光标显示呈底线光标形式 CM: 线状光标显示 CGRAM 1 0 1 0 1 1 1 0 0 5CH CGRAM 首址设置 ADR P1 0 SAGL 00H SAG:CGRAM 起始地址 P2 0 SAGH 78H CSRDIR 无 1 0 1 0 0 1 1 DIR1 DIR2 4CH DIR1,DIR2: 光标移动方向设置 HDOT 1 0 1 0 1 1 0 1 0 5AH 水平点位移设置 SCR P1 0 0 0 0 0 0 D 00H* 点为单位的显示画面水平位移量, 初始化清零 OVLAY 1 0 1 0 1 1 0 1 1 5BH 显示合成方式设置 P1 0 0 0 0 OV DM2 DM1 MX1 MX0 00H MX1,MX0: 第 1 区和第 3 区逻辑 或 DM1: 第 1 区为文本显示属性 DM2: 第 3 区为文本显示属性 CSRW 1 0 1 0 0 0 1 1 0 46H 光标指针地址设置 Hex. 描述 P1 0 CSRL 00H 设置光标指针在第 1 显示区的起始位置 P2 0 CSRH 00H CSRR 1 0 1 0 0 0 1 1 1 47H 读取光标指针地址 P1 0 CSRL - 设置读取显示存储器的起始地址 P2 0 CSRL - MWRITE - 1 0 1 0 0 0 0 1 0 42H 显示数据写入 MREAD - 1 0 1 0 0 0 0 1 1 43H 读取显示数据 说明 :1. 表中指令参数值带 * 不可修改, 其它仅为参考 2.TC/R: 驱动频率的时间常数可由下式求出 :TC/R C/R+4 3. 更详细指令参数设置请参考 RAIO RA8835 data sheet 或 EPSON SED1335 data sheet http://www.topwaysz.com 4 / 8
显示行 5. 显示内存及显示区的合成 本模块的显示屏属于单屏结构, 控制器可以同时管理 32K 的显示存储器, 也就是三个显示区以及自定义字符发生器 显示屏的显示位置与显示存储器 DDRAM 单元的一一对应关系如下图 : 显示位 0 1 C/R SAD SAD+1 SAD+C/R SAD+C/R+1 SAD+AP-1 SAD+AP SAD+AP+1 SAD+AP+C/R SAD+AP+C/R+1 SAD+2AP-1 SAD+2AP 显示窗口宽度 DDRAM 分配给一个显示行的单元数 AP 注 :C/R 为系统设置指令中 P4 参数的取值 各显示区及 CGRAM 的起始地址可以采用如下设置 : 显示一区显示二区显示三区 CGRAM 首址 SAD1:0000H 首址 SAD2:2800H 首址 SAD3:5000H 属性 : 文本或图形属性 : 图形属性 : 文本或图形 CGRAM 首址 SAG:7800H CGRAM1 首址 :SAG+80H 8 代码 :80H~9FH CGRAM2 首址 :SAG+A0H 8 代码 :E0H~FFH 注 :CGRAM2 的首地址不是 SAG+E0H 8, 因为控制部在 CGRAM2 寻址上配置了 40H 的异或电路, 使得 CGRAM1 与 CGRAM2 两个区的地址是连续的 三个显示区合成显示方式如下图所示 两重合成显示时, 若显示一区所控制的显示屏上的行数 SL1 等于扫描的帧参数 L/F, 仅为显示一区和显示二区的合成显示 SAD2 SAD1 SL1 SAD3 显示二区 ( 图形 ) 显示一区 ( 文本或图形 ) SL2 SAD3 SAD2 SAD1 SL1 显示二区 ( 图形 ) 显示一区 ( 图形 ) 显示三区 ( 图形 ) SL2 显示三区 ( 文本或图形 ) 两重合成显示 三重合成显示 http://www.topwaysz.com 5 / 8
6. 流程图 开始 开始 硬件复位系统设置显示区域设置显示状态设置显示合成设置 CGRAM 首址设置 设置光标移动方向为右加一 (4CH) 定位光标到字符代码的首地址 用数据写入指令 42H 连续写入 8 个数据 返回 自定义字符流程图 光标设置清内存开显示返回初始化流程图 开始模块初始化显示字符结束主程序流程图 http://www.topwaysz.com 6 / 8
参考程序 // 本程序的演示结果为 : // "TOPWAY LM2068S" ( 显示一区 ) // www.topwaydisplay.com ( 显示三区 ) #include <reg52.h> #include <intrins.h> #define LCD_BUS P1 //MCU P1<------> LCM sbit _RD=P3^2; // 复位信号 sbit _CS=P3^4; // 芯片选择 sbit _RES=P3^5; // 寄存器选择信号 sbit A0=P3^6; // 读信号 sbit _WR=P3^7; // 写信号 // 延迟子程序 void Delay(unsigned int t) unsigned int i,j; for(i=0;i<t;i++) for(j=0;j<10;j++); // 写指令代码 void CmdWrite(unsigned char cmdcode) _CS=0; A0=1; LCD_BUS=cmdcode; // 写入指令代码 _RD=1; _WR=0; _WR=1; _CS=1; // 写数据或参数 void DataWrite(unsigned char wrdata) _CS=0; A0=0; LCD_BUS=wrdata; _RD=1; _WR=0; _WR=1; _CS=1; // 写入数据或参数 // 写入字符串 void PrintStr(unsigned char code *pstr) CmdWrite(0x42); while(*pstr>0) DataWrite(*pstr); pstr++; // 整屏幕写入数据 void FullScreenFill(unsigned char low,unsigned char high,unsigned char fill_data) unsigned char i,j; CmdWrite(0x46); DataWrite(low); DataWrite(high); CmdWrite(0x42); for(i=0;i<240;i++) for(j=0;j<40;j++) DataWrite(fill_data); // 光标显示位置设置 http://www.topwaysz.com 7 / 8
// 模块初始化 void LCD_Initial() _RES=0; Delay(100); _RES=1; Delay(100); CmdWrite(0x40); // 系统设置 DataWrite(0x32); //P1 参数 : 单屏幕,CGROM+CGRAM1+CGRAM2 DataWrite(0x87); //P2 参数 :8 点列 DataWrite(0x07); //P3 参数 :8 点行 DataWrite(0x27); //P4 参数 : 显示窗口宽度为 40 DataWrite(0x2b); //P5 参数 :TC/R>=C/R+4 DataWrite(0xef); //P6 参数 :240 扫描行 DataWrite(0x28); //P7 参数 :APL //P8 参数 :APH CmdWrite(0x44); DataWrite(0x77); DataWrite(0x28); DataWrite(0xef); DataWrite(0x50); CmdWrite(0x58); DataWrite(0x55); CmdWrite(0x5b); CmdWrite(0x5c); DataWrite(0x78); CmdWrite(0x5d); DataWrite(0x07); DataWrite(0x07); CmdWrite(0x4c); FullScreenFill(0x00,0x00,0x00); FullScreenFill(0x00,0x28,0x00); FullScreenFill(0x00,0x50,0x00); // 显示区域设置 // 显示一区首地址为 0000H // 显示一区的扫描行数 120 行 // 显示二区首地址为 2800H // 显示二区的扫描行数 240 行 // 显示三区首地址为 5000H // 显示状态设置, 显示总开关关闭 // 打开各区显示和光标 // 合成方式设置 // 两重合成显示, 一 三区为文本, 三个区 " 或 " 关系 //CGRAM 的起始地址为 7800H // 光标形状设置 // 光标移动方向设为向右 // 清显示一区 // 清显示二区 // 清显示三区 CmdWrite(0x59); // 打开显示总开关 // 主程序 void main() _RD=1; _WR=1; _CS=1; A0=1; LCD_BUS=0xff; LCD_Initial(); CmdWrite(0x46); // 定义光标在显示一区位置 DataWrite(0x3d); DataWrite(0x02); PrintStr("TOPWAY LM2068S"); CmdWrite(0x46); // 定义光标在显示三区位置 DataWrite(0x0a); DataWrite(0x50); PrintStr("www.topwaydisplay.com"); Delay(100); while(1) ; //end of program http://www.topwaysz.com 8 / 8