LM6029 液晶显示模块应用参考 深圳市拓普微科技开发有限公司 版本 描述 日期 编者 0.1 新版本 2005-11-22 PanFeng 0.2 修改 4 节指令集说明 LCD bias select 的指令描述 2006-02-10 PanFeng Ref LM6029-AppNote-V0.2.doc http//www.topwaysz.com 1 / 7
目录 1. 简介...3 2. 电路连接原理简图...3 3. 指令操作...3 4. 指令集说明...4 5. 显示屏与显示区位置关系...5 6. 软件编程流程图...5 附 参考程序...6 http//www.topwaysz.com 2 / 7
1. 简介深圳市拓普微科技开发有限公司生产的 LM6029 点阵图形式液晶显示模块, 采用 S6B0724 控制器, 模块大小 57.6 42.0 2.0mm, 点阵数 128 64dot 轻薄设计 适配 Intel8080 操作时序电路 8 bits 并口数据传输方式, 软件调节对比度等功能 基本特性 - 电源电压 3.0V - 显示分辨率 128 64dot - 显示方式 FSTN, 正显, 半透 2. 电路连接原理简图采用 AT89LV52 单片机同 LM6029 液晶模块通过 I/O 口相连为例 采用间接控制方式 0.1μF 5 1.0μF 4 3V V DD V0 V4 V3 V2 V1 C2- C2+ C1+ C1- C3+ Vout Vss LM6029 DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 /CS1 /RES RS /WR /RD P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.4 P3.5 P3.6 P3.7 P3.3 AT89LV52 Vcc /EA RST XTAL2 XTAL1 Vss 3V 1μF 10k 30pF 12MHz 30pF 序号符号 1 NC 2 NC 3 V0 4 V4 5 V3 6 V2 7 V1 8 C2-9 C2+ 10 C1+ 11 C1-12 C3+ 13 Vout 14 VSS 15 VDD 16 DB7 23 DB0 24 /RD 25 /WR 26 RS 27 /RES 28 /CS1 29 NC 3. 指令操作 Intel8080 时序接口信号组合功能表如下 操作 RS /WR /RD 功能说明 写寄存器命令 0 0 1 写指令到指令寄存器 读寄存器命令 0 1 0 读状态字 (READ STATUS) 写数据操作 1 0 1 写显示数据 读数据操作 1 1 0 读显示数据 http//www.topwaysz.com 3 / 7
4. 指令集说明 Code 指令名称 RS /WR /RD DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 指令描述 Display ON/OFF 0 0 1 1 0 1 0 1 1 1 DON LCD 显示开关设置 DON=0 关显示 DON=1 开显示 Initial display line 0 0 1 0 1 ST5 ST4 ST3 ST2 ST1 ST0 DDRAM 显示起始行地址设置 Set Page address 0 0 1 1 0 1 1 P3 P2 P1 P0 DDRAM 显示页地址设置 Set column address MSB 0 0 1 0 0 0 1 Y7 Y6 Y5 Y4 DDRAM 显示列地址高 4 位设置 Set column address LSB Read status 0 1 0 Write display data Read display data 0 0 1 0 0 0 0 Busy ADC ON/OFF RESETB Y3 Y2 Y1 Y0 0 0 0 0 1 0 1 Write data 写显示数据 1 1 0 Read data 读显示数据 ADC select 0 0 1 1 0 1 0 0 0 0 Reverse display ON/OFF Entire display ON/OFF 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 ADC REV EON BIAS DDRAM 显示列地址低 4 位设置 读状态字 Busy=0 控制器准备好 Busy=1 控制器忙 ADC=0 列地址反向 ADC=1 列地址正向 ON/OFF=0 开显示状态 ON/OFF=1 关显示状态 RESETB=0 正常状态 RESETB=1 复位状态 选择 SEG 输出方向 ADC=0 正向 (SEG0 SEG131) ADC=1 反向 (SEG131 SEG0) LCD 正 / 反显开关设置 REV=0 正显 REV=1 反显 显示设置 EON=0 正常显示 EON=1 全亮显示 LCD 驱动电压的偏压比设置 LCD bias select 0 0 1 1 0 1 0 0 0 1 BIAS=01/9 bias BIAS=11/7 bias Set modify-read 0 0 1 1 1 1 0 0 0 0 0 修改 - 读指令设置 Reset modify-read 0 0 1 1 1 1 0 1 1 1 0 修改 - 读指令结束设置 Reset 0 0 1 1 1 1 0 0 0 1 0 内部重起 选择 COM 输出方向 SHL select 0 0 1 1 1 0 0 x x x SHL=0 正向 (COM0 COM63) SHL=1 反向 (COM63 COM0) SHL Power control 0 0 1 0 0 1 0 1 VC VR VF 内部电源操作设置 Regulator resistor select voltage mode voltage register Set static indicator mode Set static indicator register 0 0 1 0 0 1 0 0 R2 R1 R0 内部电阻率 (Rb/Ra) 设置 0 0 1 1 0 0 0 0 0 0 1 对比度电流量调节设置 对比度电流量大小设置 0 0 1 x x SV5~SV0=000000 111111 small large SV5 SV4 SV3 SV2 0 0 1 1 0 1 0 1 1 0 0 0 1 x x x x x x NOP 0 0 1 1 1 1 0 0 0 1 1 空操作 SV1 S1 SV0 SM S0 指针状态开关设置 SM=0 开设置 SM=1 关设置指针状态设置 S1,S0=00 关 S1,S0=01 开 ( 约闪烁 1 秒 ) S1,S0=10 开 ( 约闪烁 0.5 秒 ) S1,S0=11 开 ( 常亮 ) 说明 1. 表中 x 为任意值 2. 更多详细指令参数设置请参考 Samsung S6B0724 data sheet http//www.topwaysz.com 4 / 7
5. 显示屏与显示区位置关系 显示屏的显示位置与显示缓冲区 DDRAM 单元的一一对应关系如下图 Page Address Data 128 dot Page 0 Page 1 Display Area 64 dot Page 6 Page 7 00h 01h 02h 7Dh 7Eh 7Fh Column Address 6. 软件编程流程图 主程序 初始化程序 写命令 / 参数 写数据 Main Initialize LcdCommand LcdDataWrite Hardware Reset ADC Select voltage register RS=0 RS=1 Initialize SHL Select Initial display Data to P1 Output Display Data End LCD bias set Power control set line Display ON Return /WR=0 /WR=1 Return voltage mode http//www.topwaysz.com 5 / 7
附 参考程序 // 本程序演示在屏幕显示一 128 64dot 的图像, 内容为 深圳拓普微电子 TOPWAY LM6029 #include "reg52.h" #include "intrins.h" #define uchar unsigned char #define uint unsigned int #define LcdDataPort P1 sbit _WR=P3^7; sbit RS=P3^6; sbit _RES=P3^5; sbit _CS1=P3^4; uchar code Pic[]= 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00, 0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x00, 0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x00, 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x80, 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x84,0xC8,0x21,0x00,0x23,0x29,0xA5, 0xF9,0xA1,0x25,0x29,0x23,0x00,0x08,0x08, 0xFF,0x88,0x88,0xFF,0x00,0x00,0xFF,0x00, 0x00,0xFF,0x00,0x00,0x44,0x44,0xFF,0x24, 0x54,0x21,0xF9,0x27,0x21,0x21,0xE1,0x01, 0x00,0x10,0x16,0x1A,0xD2,0x5F,0x52,0x52, 0x5F,0x52,0xDA,0x16,0x12,0x00,0x22,0xF1, 0x08,0x17,0xD4,0x57,0xD4,0x17,0x78,0x87, 0x7C,0x04,0x00,0x00,0xFE,0x92,0x92,0x92, 0xFF,0x92,0x92,0x92,0xFE,0x00,0x00,0x00, 0x10,0x11,0x11,0x11,0x11,0x11,0xFD,0x15, 0x13,0x11,0x11,0x10,0x00,0x00,0x00,0x00, 0x00,0x00,0x07,0x00,0x02,0x02,0x01,0x00, 0x07,0x00,0x01,0x02,0x02,0x00,0x01,0x03, 0x01,0x04,0x02,0x01,0x00,0x00,0x01,0x00, 0x00,0x07,0x00,0x00,0x00,0x04,0x07,0x00, 0x00,0x00,0x07,0x02,0x02,0x02,0x07,0x00, 0x00,0x00,0x00,0x00,0x07,0x05,0x05,0x05, 0x05,0x05,0x07,0x00,0x00,0x00,0x00,0x07, 0x04,0x02,0x01,0x00,0x03,0x05,0x02,0x01, 0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00, 0x03,0x04,0x04,0x04,0x04,0x04,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x04,0x07,0x00, 0x00,0x00,0x01,0x01,0x01,0xFF,0x01,0x01, 0x01,0x00,0x00,0xFC,0x02,0x01,0x01,0x01, 0x01,0x02,0xFC,0x00,0x00,0xFF,0x21,0x21, 0x21,0x21,0x21,0x1E,0x00,0x03,0x1C,0xE0, 0x00,0xE0,0x1E,0x01,0x1E,0xE0,0x00,0xE0, 0x1C,0x03,0x00,0xC0,0x70,0x4E,0x41,0x4E, 0x70,0xC0,0x00,0x00,0x01,0x06,0x18,0xE0, 0x18,0x06,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00, 0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02, 0x02,0x01,0x00,0x00,0x00,0x03,0x00,0x00, 0x03,0x00,0x00,0x00,0x00,0x00,0x03,0x00, 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x03, 0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, 0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0xC0, 0xE0,0x00,0xC0,0x20,0x20,0x20,0x20,0x40, 0x00,0xC0,0x20,0x20,0x20,0x20,0xC0,0x00, 0x40,0x20,0x20,0x20,0x20,0xC0,0x00,0xC0, 0x20,0x20,0x20,0x20,0xC0,0x00,0x00,0x00, 0x00,0x7F,0x40,0x40,0x40,0x40,0x40,0x00, 0x7F,0x00,0x03,0x1C,0x60,0x1C,0x03,0x00, 0x7F,0x00,0x3F,0x44,0x42,0x42,0x42,0x3C, 0x00,0x3F,0x40,0x40,0x40,0x40,0x3F,0x00, 0x40,0x60,0x50,0x48,0x44,0x43,0x00,0x23, 0x44,0x44,0x44,0x22,0x1F,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ; // 延时子函数 http//www.topwaysz.com 6 / 7
void Delay(uint Delx) uint i=0; while(i<delx) i++; // 写指令函数 void LcdCommand(uchar Com) RS=0; LcdDataPort=Com; _WR=0; _WR=1; // 写数据函数 void LcdDataWrite(uchar Data) RS=1; LcdDataPort=Data; _WR=0; _WR=1; // 初始化函数 void Initialize() _CS1=0; _RES=0; Delay(1000); _RES=1; LcdCommand(0xa0); LcdCommand(0xc8); LcdCommand(0xa2); LcdCommand(0x2f); LcdCommand(0x81); LcdCommand(0x29); LcdCommand(0x40); LcdCommand(0xaf); // 设置显示位置 void SetPage(uchar Page) Page=Page & 0x0f; Page=Page 0xb0; LcdCommand(Page); 液晶显示模块应用参考 LM6029 void SetColumn(uchar Column) uchar temp; temp=column; Column=Column & 0x0f; Column=Column 0x00; LcdCommand(Column); temp=temp>>4; Column=temp & 0x0f; Column=Column 0x10; LcdCommand(Column); // 清屏 void ClearScr() uchar i,j; for(i=0;i<8;i++) SetColumn(0); SetPage(i); for(j=0;j<128;j++) LcdDataWrite(0x00); // 显示子函数 void DisplayPic(uchar Page,uchar Column,uchar *PicKu) uchar i,j; for(j=0;j<8;j++) SetPage(Page+j); SetColumn(Column); for(i=0;i<128;i++) LcdDataWrite(PicKu[i+j*128]); // 主函数 void Main() Initialize(); Delay(1000); ClearScr(); DisplayPic(0,0,Pic); while(1) ; //------End of Program------ http//www.topwaysz.com 7 / 7