RAiO RA8802 RA8820 中文文字/图形 LCD 控制器 应用手册 Version 2.5 October 1, 2004 RAiO Technology Inc. Copyright RAiO Technology Inc. 2003, 2004 RAiO TECHNOLOGY INC. 1/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RA8802/8820 中文文字/图形 LCD 控制器应用手册改版说明 版 本 日 期 2.0 January 29, 2004 2.1 March 25, 2004 说 明 First Release Version 修改第 4 章与 9.15 节 增加图 B-1B 2.2 April, 12, 2004 2.3 May 3, 2004 增加附录 B.4 Power 应用电路 增加 4.1、4.2、8.2、8.3、8.4、附录 E 节 修改 2、2.3、3、5、7、8.1、9.13 附录 B.2、B.3、F 节 2.4 June 10, 2004 修改图 B-1B 的接脚名称 增加表 3-1:RA8802/8820 与驱动器 IC 的接口名称对照表 修改图 5-1、图 5-2:用 DAC 控制 LCD 亮度的应用电路及文字说 明 2.5 October 1, 2004 增加图 8-2A:重置脚位 RST# 的时序 修改图 8-3:一般 RA8802/8820 电源开启或重置的流程图 修改图 B-3, B-4, B-5 增加附录 G. 字型与字码表(GB) RAiO TECHNOLOGY INC. 2/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 章节 内 容 页数 1. 简介 ......................................................................................................................................5 2. 微控制器(MCU)的接口 ..........................................................................................................6 2.1 8080 系列的 MCU 接口 ..................................................................................................................................6 2.2 6800 系列的 MCU 接口 ..................................................................................................................................7 2.3 4Bit/8Bit 的 MCU 界面 ...................................................................................................................................9 2.4 MCU 接口的程序范例 .................................................................................................................................. 10 3. 液晶显示驱动器(LCD Driver)的接口...................................................................................13 3.1 液晶显示器面板(LCD Panel) 大小的设定 ................................................................................................... 14 4. 中文字型 ROM ....................................................................................................................16 4.1 中文字型 ROM 的使用................................................................................................................................. 16 4.2 自建字型 ROM............................................................................................................................................. 18 5. 液晶显示器的亮度调整........................................................................................................23 6. 触摸式面板(Touch Panel)的界面 .......................................................................................28 6.1 电阻式触摸面板 ........................................................................................................................................... 28 6.2 触摸面板的应用 ........................................................................................................................................... 30 7. 系统时序(Clock)的选择 ......................................................................................................34 8. 硬件的启始设定...................................................................................................................36 8.1 重置(Reset)与系统设定............................................................................................................................... 36 8.2 电源开启或重置(Power On/Reset)的程序.................................................................................................. 38 8.3 缓存器的起始设定 ....................................................................................................................................... 40 8.4 Wakeup 的程序........................................................................................................................................... 41 9. RA8802/8820 功能应用介绍 ...............................................................................................42 9.1 文字模式设定............................................................................................................................................... 42 9.1.1 文字显示............................................................................................................................................... 42 9.1.2 粗体字之显示功能 ................................................................................................................................ 44 9.2 绘图模式设定............................................................................................................................................... 45 9.3 闪烁与反白显示 ........................................................................................................................................... 48 9.3.1 闪烁显示............................................................................................................................................... 48 9.3.2 屏幕反白............................................................................................................................................... 49 9.3.3 文字反白............................................................................................................................................... 50 9.4 中/英文文字对齐 .......................................................................................................................................... 51 9.5 LCD 屏幕显示 On/Off 设定 ......................................................................................................................... 53 9.6 光标 On/Off 设定 ......................................................................................................................................... 53 9.7 光标位置与移位设定.................................................................................................................................... 53 RAiO TECHNOLOGY INC. 3/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.7.1 光标位置............................................................................................................................................... 53 9.7.2 游标移位............................................................................................................................................... 56 9.8 光标闪烁设定............................................................................................................................................... 56 9.8.1 光标闪烁时间设定 ................................................................................................................................ 57 9.9 光标高度与宽度设定.................................................................................................................................... 57 9.9.1 游标高度............................................................................................................................................... 57 9.9.2 游标宽度............................................................................................................................................... 58 9.10 工作及显示窗口大小设定 .......................................................................................................................... 59 9.11 行距设定 .................................................................................................................................................... 65 9.12 自动填入数据到 DDRAM........................................................................................................................... 65 9.13 屏幕更新频率设定 ..................................................................................................................................... 66 9.14 中断(Interrupt)与忙碌(Busy)设定 ............................................................................................................ 66 9.15 省电模式 .................................................................................................................................................... 68 9.16 ASCII 区块选择设定 .................................................................................................................................. 69 9.16.1 ASCII 字形区块 0 ............................................................................................................................... 69 9.16.2 ASCII 字形区块 1 ............................................................................................................................... 71 9.16.3 ASCII 字形区块 2 ............................................................................................................................... 72 9.16.4 ASCII 字形区块 3 ............................................................................................................................... 73 附录 A. 液晶显示驱动器(LCD Driver)的时序图 ......................................................................74 附录 B. 应用电路图 .................................................................................................................76 B.1 RA8802 应用电路(320x240)....................................................................................................................... 76 B.2 RA8802 应用电路(320x240)....................................................................................................................... 78 B.3 RA8820 应用电路(160x160)....................................................................................................................... 80 B.4 Power 应用电路 ......................................................................................................................................... 82 附录 C. 除错与分析流程 ..........................................................................................................84 附录 D. 支援的 Driver 型号 .....................................................................................................85 附录 E. 指令时间.....................................................................................................................86 附录 F. C51 范例程序..............................................................................................................87 附录 G. 字型与字码表(GB) .....................................................................................................94 RAiO TECHNOLOGY INC. 4/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 1. 简介 RA8802/8820 是一个中英文文字与绘图模式的点矩阵液晶显示(LCD)控制器,RA8802 可最大支持 320x240 点的 LCD 面板,RA8820 可最大支持 240x240 点的 LCD 面板。内建 512K Byte 的字型码,可以显示中文字 型、数字符号、英日欧文等字母,使用者只要透过 MCU 对 RA8802/8820 写入中/英文字型码,就可以直接 在 LCD 面板上显示中英文字型,而不需要透过 MCU 以绘图方来处理中英文的显示。为了让使用者更加了解 RA8802/8820 的使用与其附加的许多软硬件功能,因此建立此应用手册供客户参考。 图 1-1 是 RA8802/8820 的系统接口图,我们将依据此系统接口图,在以下的几章分别做完整的界面介绍, 同时会在每一个应用上举出图示与例题,让使用者了解硬件的连接状态。在第九章我们将对 RA8802/8820 所提供的功能做详细的说明与介绍,同样配合许多图示与例题让使用者在实际设计时能轻易上手。最后在目 录内我们附了很多参考数据,如完整电路图、Demo Program 等等,为了配合此应用手册,希望使用者能与 RA8802/8820 的 Data Sheet 一同参考,以其达到最快的学习效果。 微控制器 (MCU ) 液晶驅動器 ( LCD Driver) RA8802 RA8820 可擴充字形 (Extendible Font ROM) 液晶顯示器 (LCD Panel) 升壓電路 (亮度調整 ) 硬體 啟始設定 觸摸式面板 (Touch Panel) 時脈 (Clock) 图 1-1:RA8802/8820 系统接口图 RAiO TECHNOLOGY INC. 5/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 2. 微控制器(MCU)的接口 RA8802/8820 文字/图形 LCD 控制器与一般的 LCD 控制器相类似,都有支持 8080 和 6800 两大系列属性的 MCU 接口。使用者可以透过 SYS_MI 这根脚位去选择 RA8802/8820 的 MCU 接口是 8080 或者是 6800 的兼 容系统,如果 SYS_MI 外接一 Pull Low 电阻,则 RA8802/8820 的 MCU 将定义成与 8080 兼容的接口,否 则 RA8802/8820 的 MCU 接口将定义成与 6800 兼容的接口。 2.1 8080 系列的 MCU 接口 图 2-1 是 RA8802/8820 与 8080 兼容系列的 MCU 接口示意图,此时 RA8802/8820 将只接受与 8080 系列兼 容的 MCU 所传送出来的控制信号。 8080 MCU RA8802 RS A0 CS1 A1-A7 Decoder CS2 IORQ SYS_MI DB0-3(DB0-7) - D0-D3(D0 -D7) RD RD WR WR RES RST 图 2-1:8080 (4/8-bit) MCU 与 RA8802/8820 的界面图 图 2-2 是 8080 系列 MCU 与 RA8802/8820 间的系统时序图,在 RA8802/8820 的定义中,RS 为 “H” 时是表 示对缓存器下命令,也就是对 RA8802/8820 的缓存器进行读写的动作(Register Access Cycle),而 RS 为 “L” 时是表示对 Display RAM 进行 Data 读写的动作(Data Access Cycle)。不论是 8080 或 6800, “RS” Pin 通常接到 MCU 的 Address Pin “A0” ,8080 系列 MCU 与 6800 最大的不同是 Read、Write 的控制信号是分 开的,RD 为 Low 时是进行读取动作,WR 为 Low 时是进行写入动作,至于读写的目的地则由 RS 决定。 下面图 2-2 表示如果是对缓存器进行读取动作,MCU 必须透过数据总线先送出缓存器的地址,然后才能在 数据总线上读取缓存器的数据,如果是对缓存器进行写入动作,MCU 必须透过数据总线先送出缓存器的地 址,然后再送出要写入的数据。当 8088 MCU 对 RA8802/8820 Display RAM 进行数据的读取动作,MCU 能直接在数据总线上读取 Display RAM 的数据,如果 8088 MCU 对 Display RAM 进行数据的写入动作, MCU 则直接在数据总线上送出要写入的数据。 RAiO TECHNOLOGY INC. 6/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 t AH8 RS, CS1 t AW8 t CYC t CC WR, RD t DS8 t DH8 DB0~DB7 (WRITE) t OH8 t ACC8 DB0~DB7 (READ) 图 2-2:8-Bit 8080 MCU 对 RA8802/8820 缓存器/Data 进行读取/写入动作 表 2-1 Signal RS, CS1# WR#, RD# DB0 to DB7 Rating Min Max 10 -- Symbol Parameter Unit Condition tAH8 Address hold time ns ns System Clock: 8MHz tAw8 Address setup time 63 -- tCYC System cycle time 800 -- ns Voltage: 3.3V tCC Strobe pulse width 400 -- ns tDS8 Data setup time 63 -- ns tDH8 Data hold time 10 -- ns tACC8 RD access time -- 330 ns tOH8 Output disable time 10 -- ns 2.2 6800 系列的 MCU 接口 图 2-3 是 RA8802/8820 与 6800 兼容系列的 MCU 接口示意图,此时 RA8802/8820 将只接受 6800 系列兼容 的 MCU 所传送出来的控制时序。6800 系列 MCU Read, Write 的控制信号是同一根 Pin,RD/WR 为 High 时 是进行读取动作,RD/WR 为 Low 时是进行写入动作,而 EN 则是确定读写的动作是否有效(Enable),至于 读写的目的地仍由 RS 决定。 RAiO TECHNOLOGY INC. 7/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 6800 MCU RA8802 A0 VDD RS A1 -A7 CS1 Decoder VMA CS2 SYS_MI D0-D3(D0 -D7) DB0-3(DB0-7) EN EN R/W R/W RES RST 图 2-3:6800 (4/8-bit) MCU 与 RA8802/8820 的界面图 RA8802/8820 无法同时接受 6800 及 8080 的控制信号,因此在 MCU 的接口上,某些脚位上会因为使用者 选择不同的 MCU 而有不同的定义,例如 RD#(EN) (Pin#33),当使用者选择的 MCU 接口为 8080 时是定义 成 RD#,而选择 6800 MCU 时是定义为 EN。而 Pin #32,当使用者选择的 MCU 接口为 8080 时是定义成 WR#,而选择 6800 MCU 时是定义为 RD/WR,对于 MCU 接口的脚位定义,使用者可以参考 RA8802/8820 Data Sheet 第 4.1 节的说明。 下面图 2-4 表示如果是 6800 MCU 对 RA8802/8820 缓存器进行读取动作,MCU 必须透过数据总线先送出缓 存器的地址,然后才能在数据总线上读取缓存器的数据,如果是对缓存器进行写入动作,MCU 必须透过数 据总线先送出缓存器的地址,然后再送出要写入的数据。当 6800 对 RA8802/8820 Display RAM 进行数据的 读取动作,MCU 能直接在数据总线上读取 Display RAM 的数据,如果 6800 MCU 对 Display RAM 进行数据 的写入动作,则 MCU 直接在数据总线上送出要写入的数据。 RAiO TECHNOLOGY INC. 8/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 t CYC6 EN t AW6 t EW t AH6 RS, R/W, CS1 t DH6 t DS6 DB0~DB7 (WRITE) t OH6 t ACC6 DB0~DB7 (READ) 图 2-4:8-bit 6800 MCU 对 RA8802/8820 缓存器/Data 进行读取/写入动作 表 2-2 Signal A0, R/W#, CS1# DB0 to DB7 EN Rating Min Max 10 -- Symbol Parameter Unit Condition tAH6 Address hold time ns System Clock: 8MHz Voltage: 3.3V tAw6 Address setup time 63 -- ns tCYC6 System cycle time 800 -- ns tDS6 Data setup time 63 -- ns tDH6 Data hold time 10 -- ns tACC6 Access time -- 330 ns tOH6 Output disable time 10 -- ns tEW Enable pulse width 400 -- ns 2.3 4Bit/8Bit 的 MCU 界面 RA8802/8820 除了支持 8080 和 6800 两大系列兼容的 MCU 接口外,也可以设定 MCU 上的数据总线接口是 4-Bit 或是 8-Bit,使用者可以透过 SYS_DB 这根脚位去选择 MCU 的数据总线(Data Bus)接口,如果 SYS_DB 外 接 一 Pull Low 电 阻 , 则 RA8802/8820 的 MCU 数 据 总 线 接 口 将 定 义 成 4-Bit , 否 则 RA8802/8820 的 MCU 数据总线接口将定为 8-Bit。因为 RA8802/8820 内部的缓存器大多是 8-Bit 的架构, 因此如果使用 4-Bit 的数据总线接口,MCU 将会花较多的周期(Cycle)去存取 RA8802/8820 内部的缓存器。 当选择 4-bit MCU 作传输模式时,RA8802/8820 的 MCU 接口只有用到数据总线的 DB3~DB0,而没有用到 的 DB7~DB4 则必须接 Pull Low,同时每一个八位的指令或数据将被分为两个 Nibble(4-Bit)依序透过数据总 RAiO TECHNOLOGY INC. 9/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 线的 DB3~DB0 进行传送,第一次先透过总线(DB3~DB0)传送数据的较高位 Bit[7..4],第二次再透过总线 (DB3~DB0)传送数据的较低位 Bit[3..0],使用者可以参考 2.4 节中的例题 5~8。 2.4 MCU 接口的程序范例 下面将列出一些简单的程序说明 MCU 与 RA8802/8820 存取缓存器的方式,这些程序及以后的范例都是以 65C02 的汇编语言撰写,非常浅显易懂,也相当容易转成其它的语言格式。在此之前我们必须先了解 RA8802/8820 的 Pin “RS”定义,RA8802/8820 的 “RS” 是缓存器(RS=1)及 DDRAM(RS=0) 的选择 Pin,可 由 SYS_PLR 这根脚位去选择,也就是说 MCU 要对 RA8802/8820 缓存器进行存取的动作时 RS 必须为 1, 由前面的接口示意图可以知道 “RS” Pin 通常接到 MCU 的 Address Pin “A0” ,在这些例子当中我们定义 A0 = 1 时 MCU 的译码位置为 REG_ADDR,A0 = 0 时 MCU 的译码位置为 DATA_ADDR。 例 题 1:8-Bit MCU 写入 Data 到 RA8802/8820 的缓存器 LDA STA LDA STA #00h REG_ADDR #A5h REG_ADDR ; 选择 LCD Controller Register (LCR) LDA STA LDA STA #E0h REG_ADDR #5Ah REG_ADDR ; 选择 Pattern Data Register (PDR) ; 写入“A5” 到 LCR 缓存器 ; 写入“5A” 到 PDR 缓存器 例 题 2:8-Bit MCU 读取 RA8802/8820 的缓存器的 Data LDA STA LDA #00h REG_ADDR REG_ADDR ; 选择 LCD Controller Register (LCR) LDA STA LDA #E0h REG_ADDR REG_ADDR ; 选择 Pattern Data Register (PDR) ; 读取 LCR 缓存器的值 ; 读取 PDR 缓存器的值 例 题 3:8-Bit MCU 写入一中文到光标所在的位置 LDA STA LDA STA #BAh DATA_ADDR #F4h DATA_ADDR LDA STA LDA STA #ADh DATA_ADDR #B6h DATA_ADDR RAiO TECHNOLOGY INC. ; 加载 “网” 的中文码高位 “BA” ; 加载 “网” 的中文码低位 “F4” ; 光标所在的位置将显示 “网” 的中文字 ; 加载 “页” 的中文码高位 “AD” ; 加载 “页” 的中文码低位 “B6” ; 光标所在的位置将显示 “页” 的中文字 10/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 例 题 4:8-Bit MCU 读取 Display RAM 的 Data LDA REG_ADDR ; 读取光标所在的位置的 Display RAM Data 上面的例题 1~4 是 8-Bit 的 MCU 存取方式,如果是使用 4-Bit 的数据总线接口,MCU 将会花较多的 Cycle Time 去存取 RA8802/8820 内部的缓存器及 Display RAM Data,使用者可以比较一下例题 5~8 与例题 1~4 的差异性。 例 题 5:4-Bit MCU 写入 Data 到 RA8802/8820 的缓存器 LDA STA LDA STA LDA STA LDA STA #0h REG_ADDR #0h REG_ADDR #Ah REG_ADDR #5h REG_ADDR ; 选择 LCD Controller Register (LCR) LDA STA LDA STA LDA STA LDA STA #Eh REG_ADDR #0h REG_ADDR #5h REG_ADDR #Ah REG_ADDR ; 选择 Pattern Data Register (PDR) ; 写入“A5” 到 LCR 缓存器 ; 写入“5A” 到 PDR 缓存器 例 题 6:4-Bit MCU 读取 RA8802/8820 的缓存器的 Data LDA STA LDA STA LDA #0h REG_ADDR #0h REG_ADDR REG_ADDR : : LDA REG_ADDR LDA STA LDA STA LDA #Eh REG_ADDR #0h REG_ADDR REG_ADDR : : LDA REG_ADDR RAiO TECHNOLOGY INC. ; 选择 LCD Controller Register (LCR) ; 读取 LCR 缓存器的值(High Nibble) ; 读取 LCR 缓存器的值(Low Nibble) ; 选择 Pattern Data Register (PDR) ; 读取 PDR 缓存器的值(High Nibble) ; 读取 PDR 缓存器的值(Low Nibble) 11/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 例 题 7:4-Bit MCU 写入一中文到光标所在的位置 LDA STA LDA STA LDA STA LDA STA #Bh DATA_ADDR #Ah DATA_ADDR #Fh DATA_ADDR #4h DATA_ADDR LDA STA LDA STA LDA STA LDA STA #Ah DATA_ADDR #Dh DATA_ADDR #Bh DATA_ADDR #6h DATA_ADDR ; 加载 “网” 的中文码高位 “BA” ; 加载 “网” 的中文码低位 “F4” ; 光标所在的位置将显示 “网” 的中文字 ; 加载 “页” 的中文码高位 “AD” ; 加载 “页” 的中文码低位 “B6” ; 光标所在的位置将显示 “页” 的中文字 例 题 8:4-Bit MCU 读取 Display RAM 的 Data LDA REG_ADDR : : LDA REG_ADDR : : : RAiO TECHNOLOGY INC. ; 读取光标所在的位置的 Display RAM Data(High Nibble) ; 读取光标所在的位置的 Display RAM Data(Low Nibble) 12/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 3. 液晶显示驱动器(LCD Driver)的接口 本章将介绍 RA8802/8820 与液晶显示驱动器(LCD Driver)之间的接口,RA8802 最大可支持 320x240 点的液 晶显示器(LCD Panel),而 RA8820 最大可支持 240x160 点,使用者可以依据在此范围内想设计的显示器 Panel 大小来选择适当的 LCD Driver。图 3-1 是 RA8802/8820 与 ST8016 LCD Driver 连接的示意图,用来 驱动 160x160 的液晶显示器面板。 Y1~Y160 EIO1 FR MD LP S/C 160*160 DOT LCD PANEL DISPOFF L/R XCK DI0~DI7 EIO2 VDD ST8016 (Common) Y1~Y160 VSS YD LP FR LP DISPOFF DISPOFF XCK FRM ST8016 (Segment) EIO1 MD S/C L/R EIO2 LD0~LD7 DI0~DI7 XCK RA8802 图 3-1:RA8802/8820 与 LCD Driver(ST8016)的接线图 在图 3-1 中使用两个 ST8016 的 LCD Driver,分别处理 160x160 LCD Panel 的 Common 及 Segment,而 RA8802/8820 则送出 Frame(FRM)、Latch Pulse(LP)、YD 及 Data Bus 等信号给 ST8016,图 3-2 是 RA8802/8820 与 LCD Driver 之间的接口讯号波形图, 对于 LCD Driver 接口的脚位定义 ,使用者可以参考 RA8802/8820 Data Sheet 第 4.2 节的说明。 RAiO TECHNOLOGY INC. 13/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 Total 160 LP for one frame FRM YD LP XCK DATA COM1 Period FRM YD LP XCK DATA D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D37 D38 D39 D1 D2 COM (N) Period FRM YD LP XCK DATA DN- 5 DN- 4 DN-3 DN- 2 DN-1 DN D1 D2 图 3-2:RA8802/8820 与 Driver 的接口讯号波形图 RA8802/8820 也可以设定连接至 LCD Driver 上的数据总线接口是 4-Bit 或是 8-Bit,使用者可以透过 SYS_LD 这根脚位去选择,如果 SYS_LD 外接一 Pull Low 电阻,则 RA8802/8820 的 LCD Driver 数据总线 接 口 将 定 义 成 4-Bit , 否 则 RA8802/8820 的 LCD Driver 数 据 总 线 接 口 将 定 为 8-Bit 。 像 图 3-1 中 RA8802/8820 与 ST8016 LCD Driver 连接的就是 8-Bit 的总线接口。 3.1 液晶显示器面板(LCD Panel) 大小的设定 RA8802 可以支持 320x240 点尺寸的液晶显示器(LCD Panel),也就是 20 列 x 15 行的中文字(RA8802/8820 内定每一中文字型为 16x16 点),RA8820 可以支持 240x160 点尺寸的液晶显示器(LCD Panel),也就是 15 列 x 10 行的中文字,针对不同尺寸的液晶显示器,可透过软件的方式来设定: RAiO TECHNOLOGY INC. 14/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 软 件 设 定 :使用者可以透过设定缓存器的方式,来更改对应的显示器大小。可利用显示窗口(Display Window) REG[28h, 38h, 48h, 58h] 和 工 作 窗 口 (Active Window)REG[20h, 30h, 40h, 50h] , 来 改 变 RA8802/8820 对显示器大小的设定。例如 RA8802,使用者选用的是 320x240 LCD 面板,所使用到的范围 也是 320x240 点的大小,此时的显示窗口与工作窗口的缓存器设定值是相同的。 表 3-1:RA8802/8820 与驱动器 IC 的接口名称对照表 RA8802/8820 Driver 界面名称 Driver IC 界面名称 LP LP LOAD CL1 CP XCK SCP CL2 FLM YD FR FRAME FRM DF(M) LD[7:0] D[7:0] DISPOFF RAiO TECHNOLOGY INC. Driver IC 界面名称之定义 Data Latch Clock Latch Pulse in one line Latch pulse of display data Data Latch Pulse Data Shift Clock Clock pulse for segment shift register Shift Clock Pulse for X-Drivers Data Shift Pulse Scan Start-up Signal First Line Marker Frame Pulse Frame start signal(First line mark of common signal) Switch signal to convert LCD drive waveform into AC LCD Data Bus /DISPOFF Display OFF /D.OFF Display OFF DISP Display OFF 15/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 4. 中文字型 ROM 4.1 中文字型 ROM 的使用 RA8802/8820 内建有 512KByte 的 16x16 中文显示字型 ROM(Font ROM),其中 RA8802/8820-T 储存标准 繁体中文 BIG5 码,包含 13,094 个常用与次常用字型、408 个特殊字与两组 ASCII CODE,RA8802/8820-S 储存 7602 个标准 GB 码的简体中文。同时 RA8802/8820 也提供额外的硬件界面可支持一外挂的 512KByte 字型 ROM(External ROM),让使用者的显示字型多一倍。一般来说,RA8802/8820 内建的中文显示字型已 经可以符合大多数的中文显示应用,如果仍然不足才需要外加字型 ROM,当然如果不须要外挂字型 ROM 时,在电路板(PCB)的 Layout 上可以省略许多 Pin 不用,如 MA[19..0]、MD[7..0]和 MCS# 等。 不过要注意,MA0 必须 Pull High(10KOhm),如果不使用外接字型 ROM,建议您 MA[7:0]与 MD[7:0]可直 接接到 VDD,以节省电源消耗。 图 4-1 为 RA8802/8820 与外挂字型 ROM(512Kbyte)之间的电路接口,图 4-2 说明这些连接讯号的动作及相 关的波形。对于外挂的字型 ROM 接口脚位定义,使用者可以参考 RA8802/8820 Data Sheet 第 4.4 节的说 明。 RA8802 MX27C4000 4MBit A[18:0] MA[18..0] D[7:0] MD[7:0] OE# CE# MCS# 图 4-1:RA8802/8820 与外挂字型 ROM(512KByte)之间的电路接口 ADDRESS INPUT (MA0~MA18) DATA ADDRESS tACC MCS tCS DATA OUT MD0~MD7 VALID DATA tOH 图 4-2 RA8802/8820 与外部字型 ROM 的波形图 RAiO TECHNOLOGY INC. 16/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 缓存器[F0h]是用来设定与字型 ROM 相关的功能,Bit6 就是如前面所述用来选择显示的字形是使用内部字型 ROM 或是外部字型 ROM。而当使用者选择 RA8802/8820-T 时,必须将 Bit[5..4]设成 “01” 才能正确显示繁 体字型,选择 RA8802/8820-S 时,必须将 Bit[5..4]设成 “10” 才能正确显示简体字型。 REG [F0h] Font Control Register (FCR) Bit Description Text/Graph 字型 ROM 的转换 7 -- Default Access 1h R/W -- 0h R/W -- 00h R/W Text 0h R/W 1:致能 0:禁能 内部/外部字型 ROM 选择 6 1:选择外部字型 ROM 0:选择内部字型 ROM 字型 ROM 的语系选择 5-4 01:选择繁体(BIG5)字型 10:选择简体(GB)字型 文字码的类别选择 (注 1) 2 1:输入的数据为 ASCII 码 0:输入 GB 码为中文字 下面的例题在第一章有提到,只要先设定光标位置,然后将要显示的中文其中文码(Big-5 或 GB 码)共两个 Byte,透过 MCU 写入 Data Address 既可: 例 题 :8-Bit MCU 写入一中文字 “网” 到光标所在的位置 LDA ; 选择内部字形 ROM 与繁体字型 #10010000b Write_REG[F0h] LDA STA LDA STA ; 加载 “网” 的中文码高位 “BA” #BAh DATA_ADDR ; 加载 “网” 的中文码低位 “F4” #F4h ; 光标所在的位置将显示 “网” 的中文字 DATA_ADDR 注 1:中文内码不论是 GB 或 BIG5 码都是由两个 Byte 组成,但是英文及一些符号 ASCII 码只由一个 Byte 组成(00h~FFh),通常 RA8802/8820 将送到 Display RAM 的 Data(00h~9Fh)视为 ASCII 码,也就半 角文字(8x16),大于等于 “A0h” 的视为全角码(如繁简中文)的高位,必须再送一次低位内码,才能显 示全角字型。如果使用者有用到 A0h~FFh 的 ASCII 码,则 MCU 在送 Data(ASCII 码)到 Display RAM 之前必须将缓存器[F0h]的 Bit2 设成 “1”。 RAiO TECHNOLOGY INC. 17/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 4.2 自建字型 ROM RA8802/8820 内建有 512KByte 字型 ROM(Font ROM),也可以开放给客户下 Mask 使用,客户可以自 行编码自建字库,每个字都是 16x16 的字型,因为 16x16 的字形型需要 32Byte 的内存空间,512Kbyte 的 ROM 共可以储存 16K 个字型(16Kx32=512K),512Kbyte 的 ROM 共有 19 条地址线(Address Line) Æ A[18:0],00000h~0001Fh 的 32Byte 储存第一个字形,00020h~0003Fh 的 32Byte 储存第二个字 形,依此类推,如下表 4-1: 表 4-1 Addr[18:5] Addr[4:0] 字型 No. 000,0000,0000,000 XXXXX 1 000,0000,0000,001 XXXXX 2 : XXXXX : : XXXXX : 111,1111,1111,110 XXXXX 16383 111,1111,1111,111 XXXXX 16384 至于 32Byte 的字型储存顺序如图 4-3 所示,假设您想将图 4-4 的字当成 Font ROM 的第一个字形,那么 ROM 00000h~0001Fh 的储存数据如下表 4-2: RAiO TECHNOLOGY INC. 18/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 表 4-2 RAiO TECHNOLOGY INC. Addr[18:5] Addr[4:0] Data 000,0000,0000,000 00000 08h 00001 1Ch 00010 1Ch 00011 FFh 00100 7Fh 00101 1Ch 00110 3Eh 00111 3Eh 01000 77h 01001 41h 01010 00h 01011 00h 01100 83h 01101 7Fh 01110 3Fh 01111 0Fh 10000 20h 10001 10h 10010 1Ch 10011 9Eh 10100 1Eh 10101 1Fh 10110 1Fh 10111 1Fh 11000 1Fh 11001 3Fh 19/115 11010 7Eh 11011 FEh 11100 FCh 11101 F8h 11110 F0h 11111 C0h www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 Byte17 Byte18 : : : : : : : : : : : : Byte31 Byte32 Byte1 Byte2 : : : : : : : : : : : : Byte15 Byte16 08h 1Ch 1Ch FFh 7Fh 1Ch 3Eh 3Eh 77h 41h 00h 00h 83h 7Fh 3Fh 0Fh 图 4-3:32Byte 的字型储存顺序 20h 10h 1Ch 9Eh 1Eh 1Fh 1Fh 1Fh 1Fh 3Fh 7Eh FEh FCh F8h F0h C0h, 图 4-4:32Byte 的字型 Data 因为 512Kbyte 的 ROM 共可以储存 16K 的字型,所以我们用 2 个 Byte 的字型码来选择显示的字型,事 实上字型码与 ROM Address 的对应如图 4-5 所示。字型码的 High Byte 与 Low Byte 各取 Bit[6:0]组合成 Font ROM 的 Address A[18:5],也就是 A[18] 对应 High Byte 的 Bit6,A[17] 对应 High Byte 的 Bit5,依 此类推,A[11] 对应 Low Byte 的 Bit6,A[10] 对应 Low Byte 的 Bit5,直到 A[5] 对应 High Byte 的 Bit0, 至于 High Byte 与 Low Byte 的 Bit7 为 0 或 1 皆不影响选择显示的字型。 Low Byte High Byte 7 6 5 4 3 2 1 0 7 18 17 16 15 14 13 12 6 5 4 3 2 1 0 11 10 9 8 7 6 5 ROM Address 图 4-5:字型码与 ROM Address 的对应 如果 Font ROM 的 00000h~0001Fh 储存表 4-2 的 Data,那么在文字模式下连续写入”00h”(或 80h)两次 (High Byte and Lowe Byte),光标所在位置会秀出图 4-4 所示的字型,请参考图 4-6。图 4-6 中 High Byte 与 Low Byte 的 Bit7 为 X,代表 Don’t Care,也就是 0 或 1 皆不影响选择显示的字型。 RAiO TECHNOLOGY INC. 20/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 Address(0000h~0001Fh) 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 : : : 0 0 0 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 X 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 High Byte =00h or 80h Low Byte = 00h or 80h 图 4-6:字型码与 ROM Address 对应的例题(1) 再假设 Font ROM 的 5C8A0h~5C8BFh 储存表 4-2 的 Data,那么在文字模式下连续写入”5Ch”(High Byte) 与”45h”(Lowe Byte),光标所在位置会秀出图 4-4 所示的字型,请参考图 4-7。同样的在图 4-7 中 High Byte 与 Low Byte 的 Bit7 为 X,代表 Don’t Care,也就是 0 或 1 皆不影响选择显示的字型。 因此客户可以依据上述法则建立自己的 ROM Code 与字型码,经由下 Mask 产生专有的字型用于产品 上。而客户拿到自己建立字型 ROM 的 RA8802/8820 后,在使用上必须将缓存器[F0h]的 Bit[7]设成 “0” 才能正确显示相对应于字型码的字型。至于外挂字型 ROM 也是同样的根据这个规则,只是使用时要将 缓存器[F0h]的 Bit6 要设成 1。 附带一提的是您也可以将字型当成一 16x16 的 Bitmap,每个 Bitmap 由 2 个 Byte 码来定义,利用不同 的 Bitmap 组合成一图形,相对于 512Kbyte 的 ROM,可以储存许多图形在里面! RAiO TECHNOLOGY INC. 21/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 Address(5C8A0h~5C8BFh) 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 1 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 : : : 1 0 1 1 1 0 0 1 0 0 X 1 0 1 1 1 0 0 X 1 0 0 0 1 0 1 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 High Byte = 5Ch or DCh Low Byte = 45h or C5h 图 4-7:字型码与 ROM Address 对应的例题(2) RAiO TECHNOLOGY INC. 22/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 5. 液晶显示器的亮度调整 传统的 LCD 亮度调整方式大都是以可调式电阻为主,藉由电阻值的改变去控制供给 LCD 面板的升压电路, 来达到调整 LCD 亮度的目的,使用上非常不方便。因此 RA8802/8820 内建了一个定电流输出的 5-bit 数字模拟转换器(Digital to Analog Converter, DAC),使用者可以利用这个 DAC 产生不同的电流输出,进而控制 外部的升压电路,使得供给 LCD Panel 高压的电压准位随着 DAC 的设定值而改变,这样透过 MCU 就可以 达到用程序的方法去控制 LCD 的亮度。 R2 VEE R3 39K 3.9K VEE VEE 100K V0 V1 IOUT LM358 100K R1 LM358 100K 104 680 RA8802/8820 LCD PANEL R7 100K 图 5-1:用 DAC 控制 LCD 亮度的应用电路(I) VDD VEE L1 R3 R4 200K 1M SW VIN IOUT 4.7u SHDN GND R1 FB R5 100K 2.2K RA8802/8820 LT1615 0.1 R2 4.7u R6 39K 0 图 5-2:用 DAC 控制 LCD 亮度的应用电路(II) 图 5-1 是用 RA8803/8822 的 DAC 控制 LCD 亮度的应用电路,在此图中 RA8803/8822 是利用外部减法器电 路和控制 DAC 电流输出范围,去改变供给 LCD 面板的输出电压 “V0” 的变动范围,进而得到想要的亮度控 RAiO TECHNOLOGY INC. 23/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 制。图 5-2 是藉由升压组件(LT1615)来做 VEE 电压的输出调整,以供给 LCD 面板的应用电路,R5 用来调 整 VEE(通常为 VLCD 电压) ,让 VEE 调整为适合所使用的 Panel 与驱动 IC 之电压准位,若要经由 RA8803/8822 进行亮度控制,可由 RA8803/8822 的 DAC 输出电流 IOUT 进行(5Bit 的 DAC 可以有 32 阶的 变化),由 R3 来调整控制的范围,使缓存器 LCCR[4:0] 为 00000b~11111b 时,VEE 的+/- 变化在 1V~2V 左 右(视 Panel 的特性) 。RA8803/8822 DAC 输出电流与 VEE 为反比关系,此电路可节省较多的组件,降低成 本。事实上控制 LCD 亮度的方法很简单,只要透过 MCU 去设定缓存器 LCCR 就可以控制整个 DAC 的功 能,下面的程序例题是说明控制 LCD 的亮度为最亮及最暗的方法。 REG [D0h] LCD Contrast Control Register (LCCR) Bit Description Default Access 1h R/W 1h R/W 1h R/W 0h R/W LCD 亮度控制 7 1:禁能 0:致能 DAC 写入致能 6 1:不允许 MCU 写数据于 Bit[4..0] 0:允许 MCU 写入数据于 Bit[4..0] 重置 LCD 亮度控制功能 5 1:正常操作 0:DAC 重置,设 Iout 为 0uA 设 DAC Iout 值 4-0 00000b Æ 0µA (Min. Current) : : 11111b Æ 500uA (Max. Current) 例 题: LDA #00111111b Write_REG[D0h] ; 设定 LCD 的亮度为最暗 ; 存入 Data 到缓存器[D0h]LCCR (注 1) : : LDA #00110000b Write_REG[D0h] ; 设定 LCD 的亮度为最亮 ; 存入 Data 到缓存器[D0h]LCCR 图 5-3 是 RA8802/8820 DAC 的输出电流 “Iout” 和图 5-1 LCD 面板的输出电压 “V0”,两者之间的对应曲线 图。每种 LCD 面板所需要的电压与明亮控制范围不同,因此使用者在开发时应配合 LCD 面板规格、升压电 路与控制 DAC 电流输出范围,才能得到想要的亮度控制,就如同图 5-1 的外部减法器电路,使用者可能需 RAiO TECHNOLOGY INC. 24/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 要改变 R1, R2 与 R3,以及用软件的方式和控制 DAC 电流输出范围,才能得到适当的亮度控制。 25.00 V0 (Voltage) 20.00 15.00 V0 10.00 5.00 0. 01 6 0. 04 7 0. 07 8 0. 10 9 0. 14 1 0. 17 2 0. 20 3 0. 23 4 0. 26 6 0. 29 7 0. 32 8 0. 35 9 0. 39 1 0. 42 2 0. 45 3 0. 48 4 0.00 Iout (mA) 图 5-3:Iout 输出透过亮度调整电路与 V0 的对应曲线图 表 5-1 是图 5-1 的亮度调整电路的参数表。RA8802/8820 有 5-bit 的 DAC,因此在 Iout 的输出电流会有 25= 32 组的电流,当不同的电流输出到减法电路,可以得到 32 组不同的 V0 输出电压供给 LCD 面板,来达到亮 度调整的功能。当使用者搭配不同的 LCD 面板,所需要的电压与明亮控制范围会不同,所以在整个减法电 路的 R1,R2 和 R3 也可以依照需求来做调整,得到适合的 V0 输出电压供给 LCD 面板。 表 5-1:亮度调整电路参数 (注 2) Iout(mA) V1 R1(KΩ) R2(KΩ) R3(KΩ) VEE V0 0.016 0.12 0.68 3.9 39 20 19.883 0.031 0.23 0.68 3.9 39 20 19.766 0.047 0.35 0.68 3.9 39 20 19.649 0.063 0.47 0.68 3.9 39 20 19.533 0.078 0.58 0.68 3.9 39 20 19.416 0.094 0.70 0.68 3.9 39 20 19.299 0.109 0.82 0.68 3.9 39 20 19.182 0.125 0.94 0.68 3.9 39 20 19.065 0.141 1.05 0.68 3.9 39 20 18.948 0.156 1.17 0.68 3.9 39 20 18.831 0.172 1.29 0.68 3.9 39 20 18.714 0.188 1.40 0.68 3.9 39 20 18.598 0.203 1.52 0.68 3.9 39 20 18.481 RAiO TECHNOLOGY INC. 25/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 0.219 1.64 0.68 3.9 39 20 18.364 0.234 1.75 0.68 3.9 39 20 18.247 0.250 1.87 0.68 3.9 39 20 18.130 0.266 1.99 0.68 3.9 39 20 18.013 0.281 2.10 0.68 3.9 39 20 17.896 0.297 2.22 0.68 3.9 39 20 17.779 0.313 2.34 0.68 3.9 39 20 17.663 0.328 2.45 0.68 3.9 39 20 17.546 0.344 2.57 0.68 3.9 39 20 17.429 0.359 2.69 0.68 3.9 39 20 17.312 0.375 2.81 0.68 3.9 39 20 17.195 0.391 2.92 0.68 3.9 39 20 17.078 0.406 3.04 0.68 3.9 39 20 16.961 0.422 3.16 0.68 3.9 39 20 16.844 0.438 3.27 0.68 3.9 39 20 16.728 0.453 3.39 0.68 3.9 39 20 16.611 0.469 3.51 0.68 3.9 39 20 16.494 0.484 3.62 0.68 3.9 39 20 16.377 0.500 3.74 0.68 3.9 39 20 16.260 注 1:在上面例题中 “Write_REG[D0h]” 指令实际上是一个子程序,用来将累加器(Accumulator)数据写入到 指定的 RA8802/8820 缓存器内,因此在以后的例题中 “Write_REG[xxh]” 所代表的意义为: ; 先将累加器(Accumulator)数据存入堆栈(Stack) PHA LDA #xxh STA REG_ADDR ; 由堆栈中取出数据存入累加器 PLA STA ; 选择指定的缓存器(Register)地址 REG_ADDR ; 写入 Data 到之前指定的缓存器内 相同的在以后的例题中 “Read_REG[xxh]” 指令也是一个子程序,用来读取指定的 RA8802/8820 缓存 器数据,并存入累加器内,因此在以后的例题中 “Read_REG[xxh]” 所代表的意义为: LDA #xxh STA REG_ADDR LDA REG_ADDR ; 选择指定的缓存器(Register)地址 ; 读取之前指定的缓存器内的 Data 注 2:在表 5-1 的 R1,R2 和 R3,是以 320x240 的 LCD 面板所得到最佳参数值。 虽然 DAC 可用于控制升压电路,进行对比显示(Contrast)设定,但仍须要注意的是升压电路本身的精确度, RAiO TECHNOLOGY INC. 26/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 即使是同一批号的生压 IC,产生的 VLCD 电压准位也会不同,而且 LCD Panel 对相同 VLCD 电压产生的对 比显示效果也不同,因此如果使用 RA8802/8820 的 DAC 进行对比显示(Contrast)设定,建议仍要加上可调 电阻做为出厂设定。 RAiO TECHNOLOGY INC. 27/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 6. 触摸式面板(Touch Panel)的界面 目前触摸式面板(Touch Panel)的应用愈来愈多,然而目前市面上的 LCD Controller 或 Driver 大都无法直接 提供触摸式面板的解决方案,因此使用者必须外加许多电路与零件,造成成本上的增加,而 RA8802/8820 内建了一个 8-bit 模拟-数字转换器(Analog to Digital Converter, ADC)及数个模拟开关(Analog Switch),使用 者可以将四线电阻式触摸式面板的 XL, XR, YU, YD 接到 RA8802/8820,然后利用模拟开关切换让 ADC 读 取电阻上的电压值,再由 MCU 读取 ADC 的转换值,而得到触摸面板 Touch 的相对位置。 6.1 电阻式触摸面板 电阻式触摸面板是由两层极薄的电阻面板组成,如图 6-1 所示,两层面板之间有一个很小的间距,当有外力 在面板上的某一点压下去时,会在施力点造成两层电阻接触,也就是短路(Short),而两层电阻面板的端点都 各有电极,如图 6-2 所示 YU, YD, XL, XR,因此配合一些开关就可侦测出面板上哪一相对位置被 Touch。 YU Y Plate X Plate Electrode XL XR YD 图 6-1:触摸面板(Touch Panel) VCC SW2 YU Resistor-Y XL XR VCC SW0 SW1 Resistor-X YD SW3 GND 图 6-2:触摸面板与侦测开关 RAiO TECHNOLOGY INC. 28/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 在图 6-3 中,设定开关 SW2 与 SW3 是 OFF(Open),SW0 与 SW1 是 ON(Close),当有外力在面板上的某 一点压下去时,由 YU 点取得电压接到 ADC(Analog to Digital Converter),就可以得到被 Touch 点的 X 坐标 相对位置。 VCC SW2 OFF YU To ADC Resistor-Y XL XR VCC SW0 ON SW1 ON Resistor-X YD SW3 OFF GND 图 6-3:读取 X 坐标 VCC V+ VCC X5 X4 X3 X2 X1 P VP 0 X5 X4 X3 X2 X1 X X-axis 图 6-4:Resistor-X 的分压 在图 6-3 中,因为开关 SW2 与 SW3 是 OFF,因此 YD 点是 Floating,所以当有外力在面板上的某一点压下 去时,YU 上的电压事实上就是 X 的 Panel(也就是电阻)上的分压结果,压在面板上的不同一点,就会得到不 同的分压值,如图 6-4 所示。 同理,在图 6-5 中,设定开关 SW0 与 SW1 是 OFF(Open),SW2 与 SW3 是 ON(Close),当有外力在面板 上的某一点压下去时,由 XL 点取得电压接到 ADC(Analog to Digital Converter),就可以得到被 Touch 点的 Y 坐标相对位置。一般说来许多触摸面板都是贴在 LCD 面板上面,因此在程序设计上如果重复图 6-3 与 6-5 的读取步骤就可以顺利得知被 Touch 的点是在屏幕上的哪一位置。 RAiO TECHNOLOGY INC. 29/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 VCC SW2 ON To ADC YU Resistor-Y XL XR VCC SW0 OFF Resistor-X SW1 OFF YD SW3 ON GND 图 6-5:读取 Y 坐标 VCC VCC Y1 Y-axis V+ Y2 VP Y3 Y4 P 0 Y Y1 Y2 Y3 Y4 Y5 Y5 图 6-6:Resistor-Y 的分压 在图 6-5 中,因为开关 SW0 与 SW1 是 OFF,因此 XR 点是 Floating,所以当有外力在面板上的某一点压下 去时,XL 上的电压事实上就是 Y 的 Panel(也就是电阻)上的分压结果,压在面板上的不同一点,就会得到不 同的分压值,如图 6-6 所示。 6.2 触摸面板的应用 图 6-7 是用 RA8802/8820 的触摸式面板应用电路,因为每一种电阻式触摸面板的阻值不同,因此使用者在 开发时应配合触摸式面板规格来调整 VREF 上的电阻值,才能得到最佳的电压范围,让 ADC 得到较高的分 辨率,电路图上的电容可以少噪声。当然软件的判断流程也是重要的一关键。 图 6-9 的流程图是 RA8802/8820 触摸式面板读取的控制方式,与触摸式面板有关的缓存器为 TPCR 与 RAiO TECHNOLOGY INC. 30/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 TPDR,在使用触摸式面板时必须先将触摸式面板功能开启,缓存器 TPCR 的 Bit-7 与 Bit-6 设为 “0”,同时 TPCR 的 Bit[3..0] 设为 “1000”,然后程序可以侦测缓存器 TPCR 的 Bit-4 是否为 “0”,如果缓存器 TPCR 的 Bit-4 为 “0”,则表示触摸式面板目前被 Touch,请参考图 6-8。 RA8802 RA8820 Touch Panel X1 XL X2 XR Y1 YU Y2 YD Iref VREF 30pF 2.3K 20pF 图 6-7:RA8802/8820 的触摸式面板应用电路 VCC 500K SW2 OFF YU ADET Resistor-Y XL XR VCC SW0 ON SW1 OFF Resistor-X YD SW3 ON GND 图 6-8:RA8802/8820 的触摸式面板的侦测 RAiO TECHNOLOGY INC. 31/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 開始 開啟觸摸偵測 (設定暫存器TPCR: Bit[7:4]=0000, Bit[3:0]=1000) 觸 摸 發 生? ADET=0 No Yes 設定暫存器TPCR: Bit[3:0] =1100(SW2,3 Æ On) 讀 取 暫 存 器 TPDR 讀取Y座標(Column Data) 設定暫存器TPCR: Bit[3:0] =0011(SW0,1 Æ On) Read 讀 取 Row 暫 存Data 器 TPDR From TPDR *3 讀取X座標(Row Data) Yes 繼 續 偵 測? No 關閉觸控功能 暫存器TPCR Bit[7:4]=1111 結束 图 6-9:触摸式面板读取的控制流程图 RAiO TECHNOLOGY INC. 32/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 REG [C0h] Touch Panel Control Register (TPCR) Bit Description Default Access 1h R/W 1h R/W 1h R 图 6-2 R/W Default Access 0h R 触控屏幕功能启动 7 0:致能 1:禁能 触控屏幕数据输出 6 0:致能触控屏幕的数据输出 1:禁能触控屏幕的数据输出 触控状态指示位 4 0:触控发生 1:触控未发生 触控屏幕控制位 Bit3 = 0 Æ Switch SW3 OFF, Bit3 = 1 Æ Switch SW3 ON 3-0 Bit2 = 0 Æ Switch SW2 OFF, Bit2 = 1 Æ Switch SW2 ON Bit1 = 0 Æ Switch SW1 OFF, Bit1 = 1 Æ Switch SW1 ON Bit0 = 0 Æ Switch SW0 OFF, Bit0 = 1 Æ Switch SW0 ON REG [C8h] Touch Panel Data Register (TPDR) Bit 7-0 Description 储存触控屏幕的行、列相对位置数据 下面的程序例题是说明如何判断触摸式面板被 “Touch” 及如何读取 ADC 的 Data 值。 例 题: LDA #00101000b Write_REG[C0h] Read_REG[C0h] : : LDA #00101100b Write_REG[C0h] Read_REG[C8h] : : LDA #00100011b Write_REG[C0h] Read_REG[C8h] : : RAiO TECHNOLOGY INC. ; Touch Panel 功能开启 ; 侦测 Touch Panel 是否被 “Touch” ; 切换模拟开关,准备读取垂直数据 ; 读取垂直相对位置(Get Column Data) ; 切换模拟开关,准备读取水平数据 ; 读取水平相对位置(Get Row Data) 33/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 7. 系统时序(Clock)的选择 RA8802/8820 内部的系统时序(System Clock)可以由下面两种方式产生: 1. 由一外部的 32768Hz 石英晶体(X’tal)配合内部的一锁相回路(PLL)所产生 2. 由一外部的电阻配合内部的 RC-振荡器产生 至于使用那一种方式则是使用者依据功能、需求与成本来考虑,当然使用一外部电阻的 RC-振荡器方式是较 便宜的选择。使用者可以透过 SYS_FQ 这根脚位去选择 RA8802/8820 的系统时序产生是 X’tal 与 PLL 或者 是 RC-振荡器的方式,如果 SYS_FQ 外接一 Pull Low 电阻,则 RA8802/8820 系统时序产生将是 RC-振荡器 的方式,否则 RA8802/8820 的系统时序产生将是 X’tal 与 PLL。 图 7-1 是 RA8802/8820 的系统时序产生方式与接线图,需要注意的是如果选择 RC-振荡器的方式,则 XA, XB, LPF 这三根脚位必须浮接,如果选择 X’tal 与 PLL 振荡器的方式,则 RA, RB 这两根脚位必须浮接。 (1)使用X’tal 與PLL振盪器的方式 (2) 使用RC-振盪器的方式 RA8802 0.22u 32768Hz 0.022u 2.7K 20p RA8802 LPF RA XA Rf 20p RB XB LPF XA XB RA RB 註解:震盪頻率可以由外部電阻( Rf)來做調整。由電器特性可知兩者之關係,當電阻值 Rf 增加或者供應電源的電壓減低,則震盪頻率會下降。 图 7-1:RA8802/8820 的系统时序产生方式与接线图 由于 RC-振荡器方式会随外部电压不同而有所飘移,因此如果选择 RC-振荡器的方式,则不同的外部电阻 Rf 及 VDD 将产生不同的系统时序,请参考图 7-2。 RAiO TECHNOLOGY INC. 34/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 System clock (MHz) 10.00 8.00 6.00 Rf=4.7K Rf=3.9K 4.00 Rf=2.2K 2.00 0.00 1.92 2.1 2.4 2.7 3.0 3.3 3.6 3.9 4.2 4.5 4.8 5.1 VDD (Voltage) 图 7-2:Resister (Rf)与系统频率(System Clock)对应曲线图 如果是使用外部 X’tal(32.678KHz)与锁相回路(PLL)所产生的系统频率(System Clock),则不同电压(VDD)对 系统频率所产生的影响将非常小,RA8802/8820 的锁相回路(PLL)所产生的系统频率(System Clock)约为 8MHz 左右,如表 7-1 所示。 表 7-1:X’tal(32.678KHz)与系统频率(System Clock) VDD PLL 所产生的系统频率 2.4V 2.7V 3.0V 3.3V 3.6V 3.9V 4.2V 4.5V 4.8V 5.1V 8.02 8.02 8.02 8.03 8.02 8.02 8.02 8.03 8.04 8.03 (MHz) RAiO TECHNOLOGY INC. 35/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 8. 硬件的启始设定 8.1 重置(Reset)与系统设定 RA8802/8820 的 Driver Data Pin “LD[7..0]” 可以在系统开机(Power-On)或进行硬件重置(Hardware Reset)时 做启始化的设定,如第一章提到的 SYS_MI(也就是 LD7)这根脚位,可以由内部 Pull High 或外部 Pull Low 电阻去选择 RA8802/8820 的 MCU 接口是 8080 或者是 6800,表 8-1 将这些硬件的启始设定列出供使用者 参考。 表 8-1:硬件的启始设定 Bit 脚位名称 简 述 7 LD7/SYS_MI MCU Type Select “1” mean (Pull High) “0” mean (Pull Low) M6800 8080 SYS_MI 是用来做 MCU 形式之选择。 如果 SYS_MI 外接一 Pull Low 电阻,则 RA8802/8820 的 MCU 接口将定义成 8080。否则 RA8802/8820 的 MCU 接口将定义成 6800。 6 LD6/SYS_DB MCU Data Bus Select 8-bit 4-bit SYS_DB 是选择 MCU 的数据总线为 4 位或 8 位。 如果 SYS_DB 外接一 Pull Low 电阻,则 RA8802/8820 的 MCU Data Bus 接口将定义成 4Bit。否则 RA8802/8820 的 MCU Data Bus 界面将定为 8-Bit。 5 LD5/SYS_FQ Clock Select PLL_CLK RC OSC_CLK SYS_FQ 是选择产生系统频率为 PLL 或是 RC 电路。 如果 SYS_FQ 外接一 Pull Low 电阻,则 RA8802/8820 系统时序产生将是 RC-振荡器的方 式。否则 RA8802/8820 的系统时序产生将是 X’tal 与 PLL。 3 LD3/SYS_LD LCD Data Bus 8-bit 4-bit 如果 SYS_LD 外接一 Pull Low 电阻,则 RA8802/8820 的 LCD Driver Data Bus 接口将定义 成 4-Bit。否则 RA8802/8820 的 LCD Driver Data Bus 界面将定为 8-Bit。 2 LD2/SYS_PLR RS Polarity Select (1) (2) (1) 如果 SYS_PLR 外接一 Pull Low 电阻,则 “RS” =1 表示是缓存器 Access Cycle,“RS” =0 表示是 Data Access Cycle。 (2) 否则 “RS” =0 表示是缓存器 Access Cycle,“RS” =1 表示是 Data Access Cycle。 1 LD1/OPM1 0 LD0/OPM0 Operation Mode Set “1” OPM0 与 OPM1 是用来选择 RA8802/8820 的测试模式,一般使用者直接将 OPM0 与 OPM1 视为 NC Pin 既可。 RAiO TECHNOLOGY INC. 36/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RST# 动作时会将 LD[7:0]设成输入,并且将 LD[7:0]内部的 Pull-Hi 电阻 Enable,读取 LD[7:0] 输入值作为系 统设定,如果 LD[7:0] 相对应的 Pin 没有外接 Pull-Low 电阻,则将被视为 Pull-Hi。如果 LD[7:0] 相对应的 Pin 外接 Pull-Low 电阻则将被视为 Pull-Low 设定,Pull-Low 的电阻为 1Kohm~2.2Kohm。 VDD RA8802/8820 LD7/SYS_MI LD6/SYS_DB LD2/SYS_PLR R=10K or N/C R=1K~2.2Kohm LD5/SYS_FQ LD3/SYS_LD 图 8-1:硬件的设定范例 图 8-1 是一硬件设定范例,表示 RA8802/8820 选择 6800 series MCU 界面,MCU Data Bus 接口将定义成 8-Bit,系统时序的产生将是 RC-振荡,LCD Driver Data Bus 接口定义成 4-Bit,“RS” = 0 表示是缓存器 Access Cycle,“RS” =1 表示是 Data Access Cycle,请参考表 8-1。 图 8-1 中的 Pull-High 电阻可以不用接,因为 RST# 动作时会将 RA8802/8820 内部的 Pull-Hi 电阻 Enable。 RA8802/8820 VDD RA8802/8820 100KΩ From MCU RST# RST# 2.2uF 0.1uF (1) (2) 图 8-2:重置脚位 RST# 的接法范例 图 8-2 是一 Reset Pin – RST# 的应用范例,它可以由 MCU 来控制如图 8-2 的(1),或是由一 RC 电路来产 RAiO TECHNOLOGY INC. 37/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 生,如图 8-2 的(2)。RA8802/8820 没有完成 Reset 的动作是无法接受 MCU 的任何指令,甚至会造成起振不 正确或系统设定错误。 REG [00h] LCD Controller Register (LCR) Bit Description 软件重置 Text/Graph Default Access 所有缓存器回到初始值,但是 RAM 的内容不会被清除。 5 -- 1:重置所有缓存器 0h R/W 0:无作用 RA8802/8820 也可以由缓存器[00h]的 Bit5 来进行软件重置,缓存器[00h]的 Bit5 由 MCU 写入”1”后 RA8802/8820 会被重置,之后缓存器[00h]的 Bit5 会自动回复到”0”。 8.2 电源开启或重置(Power On/Reset)的程序 图 8-2A 为一般 RA8802/8820 重置(Reset)的时序,以 RA8803 使用 320x240 pixel 的 LCD Panel 例,tRST 必 须大于 250ms,tRSTH 必须大于 50ms,足够的重置时间才能确定 RA8802/8820 Reset 完成。 tRST RST# Internal State During Reset Reset Complete tRSTH 图 8-2A:重置脚位 RST# 的时序 下图 8-3 为一般 RA8802/8820 电源开启或重置(Power On/Reset)的程序说明,此范例也是以 RA8802 使用 320x240 pixel 的 LCD Panel 例子,说明设定方式的流程。 RAiO TECHNOLOGY INC. 38/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 Power On Hardware Reset ( RST# Active 250ms) Delay 50ms Setup Display/Active Window REG[20,28]=#27h REG[30,38]=#EFh REG[40,48]=#00h REG[50,58]=#00h Clear Screen REG[E0]=#00h REG[F0]:bit3=1 Delay 2ms Setup Active Mode and Cursor Position Setup Registers or use Default Value Write GB/BIG5 Code or Bit-Map : 图 8-3:一般 RA8802/8820 电源开启或重置的流程图 RAiO TECHNOLOGY INC. 39/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 8.3 缓存器的起始设定 RA8802/8820 的缓存器在系统电源开启或重置(Power On/Reset)时大都会产生 Default 的值,但是随系 统应用不同等因素,若干缓存器最好在电源开启或重置后进行设定,表 8-2 提供基本的缓存器设定范 例。 表 8-2:基本的缓存器设定范例 lda jsr lda jsr #11000101b Write_R00 #02h Write_R01 ; 设定显示工作模式 lda jsr lda jsr lda #01101001b Write_R10 #22h Write_R18 #39 ; 游标相关信息 jsr lda jsr lda jsr lda jsr lda jsr lda jsr lda jsr lda jsr lda jsr lda jsr lda jsr lda jsr Write_R20 #239 Write_R30 #0 Write_R40 #0 Write_R50 #39 Write_R28 #239 Write_R38 #0 Write_R48 #0 Write_R58 #0 Write_R60 #0 Write_R70 #33h Write_R80 #0Ah Write_R90 lda #C0h jsr Write_RD0 ; 设定 System Clock, 此例为 4MHz ; 设定光标高度与行距 ; 设定工作窗口(Active window)右边位置 Æ Segment-Right ; 此例为 320x240, 工作窗口与显示窗口设成一样 ; 设定工作窗口(Active window) 底边位置 Æ Common-Bottom ; 设定工作窗口(Active window)左边位置 Æ Segment-Left ; 设定工作窗口(Active window) 顶边位置 Æ Common-Top ; 设定显示窗口(Display Window)右边位置 Æ Segment-Right ; 设定显示窗口(Display Window) 底边位置 Æ Common-Bottom ; 设定显示窗口(Display Window) 左边位置 Æ Segment-Left ; 设定显示窗口(Display Window) 顶边位置 Æ Common-Top ; 设定光标 Segment 地址 ; 设定光标 Common 地址 ; 光标闪烁时间设定 ; 设定 XCK 讯号周期 ; LCD 亮度控制(DAC 功能) , 没用到可不设定 rts 注: Write_Rxx 是一写入 Data 到缓存器 xx 的子程序。 RAiO TECHNOLOGY INC. 40/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 8.4 Wakeup 的程序 RA8802/8820 进入睡眠模式(Sleep Mode)后,当使用者需要唤醒(Wakeup)RA8802/8820,可对 CS1#脚位 连续 Low Æ High 两次,或是对 CS2 脚位连续 HighÆ Low 两次,便可以 Wakeup RA8802/8820。 RAiO TECHNOLOGY INC. 41/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9. RA8802/8820 功能应用介绍 9.1 文字模式设定 9.1.1 文字显示 RA8802/8820 的文字模式可以支持全角(中文或英文)及半角(英文)的显示,全角文字是以 16x16 的点矩阵 组成,半角文字是 8x16 的点矩阵组成,如图 9-1 所示,而图 9-2 是全角(中文)及半角(英文)文字的混和显 示: 中文16x16 英文 8x16 图 9-1:全角与半角文字 图 9-2:全角与半角文字的混和显示 RA8802/8820 的中文显示方式与传统的 LCD Controller 不同,传统的 LCD Controller 是在绘图模式下, 以 Bit-Map 的方式去绘出中文,RA8802/8820 的中文显示方式则是在文字模式,直接输入中文字码(GB 或 BIG5 码) ,就可以在光标所在位置显示中文。因为中文字码占两个 Byte,所以如果 MCU 接口是 8Bit,则 MCU 必须分两次将中文字码的 High Byte & Low Byte)写入 RA8802/8820,而英文或数字码只占 一个 Byte,因此只要将内码一次写入 RA8802/8820 既可。RA8802 支持之最大显示像素范围为 320x240 RAiO TECHNOLOGY INC. 42/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 点,若以显示文字为例,全角字型(16x16)即是 20 行 x15 列,半角字型(8x16)则可以显示到 40 行 x15 列。RA8820 支持之最大显示像素范围为 240x160 点,若以显示文字为例,全角字型即是 15 行 x10 列,半角字型则可以显示到 30 行 x10 列。表 9-1 为图 9-2 所示之全角(中文)与半角文字的字型码,下面例 题程序就是说明如何显示图 9-2 的画面。 表 9-1:文字码的对照表(BIG5) 显示字型 字型码 显示字型 字型码 显示字型 字型码 瑞 B7E7 E 45 o 6F 佑 A6F6 C 43 c 63 科 ACEC H 48 m 6D 技 A7DE N 4E t 74 股 AAD1 L 4C 电 20B7 份 A5F7 G 47 话 71B8 有 A6B3 Y 59 8 38 限 ADAD . 2E 6 36 公 A4BD 网 BAF4 3 33 司 A571 页 ADB6 5 35 R 52 : 3A 7 37 A 41 w 77 传 20B6 I 49 r 72 真 C7AF O 4F a 61 T 45 i 69 例 题: ; 写入 “瑞” 的字型码 High Byte LDA #B7h STA DATA_ADDR LDA #E7h ; 写入 “瑞” 的字型码 Low Byte STA DATA_ADDR ; 在光标所在位置会显示 “瑞” LDA #A6h ; 写入 “佑” 的字型码 STA LDA STA DATA_ADDR #F6h DATA_ADDR LDA #ACh STA DATA_ADDR RAiO TECHNOLOGY INC. ; 写入“科” 的字型码 43/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 LDA STA #ECh DATA_ADDR LDA #A7h STA LDA STA DATA_ADDR #DEh DATA_ADDR LDA #AAh STA LDA STA DATA_ADDR #D1h DATA_ADDR LDA #A5h STA LDA STA ; 写入“技” 的字型码 ; 写入“股” 的字型码 ; 写入“份” 的字型码 DATA_ADDR #F7h DATA_ADDR : : : ; 其它依序写入文字内码 9.1.2 粗体字之显示功能 RA8802/8820 的中英文显示都可以秀出粗体字的显示效果,图 9-3 说明欲表现粗体字的显示效果时,缓 存器应如何设定: 1. 設定暫存器 [10h] bit4=1 2. 寫入中文字型的 Big5或 GB 碼 图 9-3:粗体字的显示 RAiO TECHNOLOGY INC. 44/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 REG [10h] Cursor Control Register (CCR) Bit Description Text/Graph Default Access 设定粗体字型(仅文字模式适用) 0:正常字型 4 Text 1h R/W 1:粗体字型 例 题: Read_REG[10h] ; 粗体字型显示 SMB4 ; 设定缓存器[10h] bit4=1 Write_REG[10h] ; 将数据存入缓存器[10h] 9.2 绘图模式设定 RA8802/8820 的绘图模式是以字符映像(bit map)方式填入图形数据在 Display RAM 上,图 9-4 说明进入绘 图模式时,缓存器要如何设定: 1. 設定 REG [00h] bit3=0 2. 使用字元映射(bit map)方式填入圖形資 料 图 9-4:绘图模式的显示 REG [00h] LCD Controller Register (LCR) Bit Description Text/Graph Default Access 选择显示工作模式 3 1:文字模式,写入的数据会被视为是 GB/BIG/ASCII 等字码。 -- 1h R/W 0:绘图模式,写入的数据会被视为是 Bit-Map 的模式。 例 题: Read_REG[00h] ; 图形模式的设定 RMB3 ; 设定缓存器[00h] bit3=0 Write_REG[00h] ; 存入数据到缓存器[00h] RAiO TECHNOLOGY INC. 45/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RA8802 支持之最大显示像素范围为 320 点 x240 点,因此需要约 9.6K Byte 的 Display Data RAM (DDRAM)来储存欲显示的每个像素点,而 RA8820 支持之最大显示像素范围为 240 点 x 160 点,因此需要 约 4.8K Byte 的 Display Data RAM 来储存欲显示的每个像素点,在 DDRAM 里,只有在显示范围内的对应 数据会被显示于 LCD 面板上,不在显示范围内的则会被忽略掉。当 RA8802/8820 在显示图形的时候,是以 字符映像(Bit Map)的方式写入 DDRAM,若 DDRAM 的某个位置被填满为 ‘1’ 时,相对于 LCD 面板的位置会 被显示出亮点,由图 9-5 可看出,在 DDRAM 上所储存之像素数据,会对应到显示屏幕(LCD)上,而构成文 字、符号或图形之显示效果。 Segment D7 D6 D5 D4 D3 D2 D1 D0 1 1 1 0 0 1 1 0 1 2 3 4 5 6 7 ….. 0 Display Data RAM Display On LCD 图 9-5:Display Data 到 LCD 显示的映像 以下程序就是以图 9-5 做例子,用绘图模式在 LCD Panel 的左上角秀出 Pattern: 例 题: LDA #00h ; 将目前光标的行与列地址写入 “00” Write_REG[60h] Write_REG[70h] LDA #E6h STA DATA_ADDR RAiO TECHNOLOGY INC. ; 在 LCD Panel 的左上角秀出 “E6” 的图形 Pattern 46/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 320 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 Æ (40Bytes) 00 01 02 03 : : : : 240 : : ; : 236 237 238 239 Display Data RAM 图 9-6:Display Data RAM 的格式(320 x 240) 在绘图模式下,若要读取 Display RAM 的数据时,如果光标的设定有自动加一的功能,数据读取方向如图 9-7 所示(以 320x240 显示器为例)。 0 1 2 3 …………….……………………….39(Byte) 00 01 02 : : : 239 320 x 240Pixel 图 9-7:图形模式时数据读取方向 RAiO TECHNOLOGY INC. 47/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.3 闪烁与反白显示 9.3.1 闪烁显示 图 9-8 说明要闪烁显示时,缓存器要如何设定: 1. 設定 REG [00h] bit1=0 2. 設定 REG [00h] bit1=1 图 9-8:屏幕闪烁 REG [00h] LCD Controller Register (LCR) Bit Description Text/Graph Default Access 闪烁模式选择 1 0:正常显示 Text/Graph 0h R/W 1:整个屏幕闪烁,闪烁时间由缓存器[80h]BTR 来设定 RAiO TECHNOLOGY INC. 48/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 例 题: READ_REG[00h] SMB1 ; 设定缓存器[00h] bit1=1 Æ 屏幕闪烁 Write_REG[00h] ; 存入数据到缓存器[00h] 9.3.2 屏幕反白 如果要将 LCD 画面全部反白只要设定缓存器[00]的 Bit0 既可,图 9-9 说明要反白显示时,缓存器要如何 设定: 图 9-9:屏幕反白 REG [00h] LCD Controller Register (LCR) Bit Description Text/Graph Default Access 屏幕反白模式选择 0 1:正常显示 Text/Graph 1h R/W 0:全屏幕反白显示,DDRAM 内的数据会被全部反相。 例 题: Read_REG[00h] RMB0 RAiO TECHNOLOGY INC. ; 设定缓存器[00h] bit0=0 Æ 屏幕反白 49/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.3.3 文字反白 如果要将 LCD 画面秀出反白的字体只要设定缓存器[10]的 Bit5 既可,图 9-10 说明要反白显示时,缓存器 要如何设定: (a) (b) (c) (d) 图 9-10:反白显示 (a) 1. 设定缓存器[10h] bit5=0 2. 写入"瑞佑科技股份有限公司"的 BIG5 码,然后可显示出"瑞佑科技股份有限公司" (b) 3. Hold on (a) 4. 设定缓存器[10h] bit5=1 5. 写 入 "RAIO TECHNOLOGY INC." 的 BIG5 码 , LCD 就 可 显 示 出 " RAIO TECHNOLOGY INC." (c) 6. Hold on (a), (b) 7. 设定缓存器[10h] bit5=0 8. 写入"网页"然后可显示出"网页"字样 (d) 9. Hold on (a), (b) and (c) 10. 设定缓存器[10h] bit5=1 RAiO TECHNOLOGY INC. 50/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 11. 写入": www.raio.com.tw"的 BIG5 码,LCD 就可显示出 ": www.raio.com.tw" REG [10h] Cursor Control Register (CCR) Bit Description Text/Graph Default Access 储存当前数据(正相/反相)于 DDRAM 5 1:直接储存数据于 DDRAM 中 Text 1h R/W 0:存入相反的数据于 DDRAM 中 例 题: Read_REG[10h] ; 设定缓存器[10h] bit5=0 Æ 区块反白 RMB5 Write_REG[10h] STA DATA_ADDR : : Read_REG[10h] ; 设定缓存器[10h] bit5=1, 恢复原来的正常显示 SMB5 Write_REG[10h] STA DATA_ADDR 9.4 中/英文文字对齐 由于英文字体与中文字体所占的宽度不一样,因此在显示中文英文都有的画面时必须考虑整体显示效果, RA8802/8820 可以设定中文英文显示时不同行的显示效果以决定文字是否对齐,图 9-11 说明要表现出中英 文文字 “对齐” 之情形时,缓存器要如何设定: 1. Set REG [10h] bit6=1 2. Write in the Big5 code of “瑞佑科技 股份有限公司RAIO中文LCD控制器” then it will show up “瑞佑科技股份有限 公司RAIO中文LCD控制器” 图 9-11:文字对齐的显示范例 RAiO TECHNOLOGY INC. 51/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 REG [10h] Cursor Control Register (CCR) Bit Description Text/Graph Default Access 中/英文字对齐 1:致能 6 Text 0:禁能 1h R/W 此功能仅在文字模式时有效,可以将全角与半角混合显示时作对 齐调整。 例 题: Read_REG[10h] ; 设定缓存器[10h] bit6=1Æ 中/英文字对齐 SMB6 Write_REG[10h] 图 9-12 说明要表现出中英文文字 “不对齐” 之情形时,缓存器要如何设定: 1. Set REG [10h] bit6=0 2. Write in the Big5 code of “瑞佑科技 股份有限公司RAIO中文LCD控制器” then it will show up “瑞佑科技股份有限 公司RAIO中文LCD控制器” 图 9-12:文字不对齐的显示范例 例 题: Read_REG[10h] RMB6 ; 设定缓存器[10h] bit6=0 Æ 中/英文字不对齐 Write_REG[10h] RAiO TECHNOLOGY INC. 52/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.5 LCD 屏幕显示 On/Off 设定 REG [00h] LCD Controller Register (LCR) Bit Description Text/Graph Default Access 设定屏幕显示为开启或关闭,此位用来控制连接到 LCD 驱动 IC 接口的 “DISP_OFF” 信号 2 1: “DISP_OFF” 信号输出 High(屏幕显示开启) Text/Graph 0h R/W 0: “DISP_OFF” 信号输出 Low(屏幕显示关闭) 例 题: Read_REG[00h] ; 设定缓存器[10h] bit2=0 Æ 屏幕显示 Off RMB2 Write_REG[00h] 9.6 光标 On/Off 设定 REG [10h] Cursor Control Register (CCR) Bit Description Text/Graph Default Access 光标显示 On/Off 设定 2 1:设定光标显示 On Text/Graph 0h R/W 0:设定光标显示 Off 例 题: Read_REG[10h] SMB2 ; 设定缓存器[10h] bit2=0 Æ 游标 On Write_REG[10h] 9.7 光标位置与移位设定 9.7.1 光标位置 缓 存 器 [60h]CPXR 的 Bit[5..0] 用 来 设 定 光 标 的 Segment 地 址 , RA8802/8820 可 以 分 别 支 持 320 (Segment) x 240 (Common) 或 240x160 的 Panel Size,但是光标的 Segment 地址是以每 8-Bit 为单位, 例如想在 Panel 的左上角秀出 “瑞” ,则必须设定光标缓存器 CPXR = 00h,CPYR = 00h,又例如想在 Panel 的左上角第三个全角位置秀出 “佑” ,则必须设定光标缓存器 CPXR = 04h,CPYR = 00h,同理, 想在 Panel 的左上角第二行第一个全角位置秀出 “科” ,则必须设定光标缓存器 CPXR = 00h,CPYR = RAiO TECHNOLOGY INC. 53/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 10h,请参考图 9-13 及如下面的例题。 00 01 02 03 04 05 . 06 ………………………………….. . .. 39 00 : : : : 10 : : : : 20 : : : : : : : : : : : 320(Segment) x 240(Common) EF 图 9-13:光标位置设定的显示范例 REG [60h] Cursor Position X Register (CPXR) Bit Description Default Access 7-6 Reserved 0h R 5-0 设定光标 Segment 地址 0h R/W Default Access 0h R/W REG [70h] Cursor Position Y Register (CPYR) Bit Description 7-0 设定光标 Common 地址 例 题: LDA #00h ; 设定光标的 Segment 地址 Write_REG[60h] LDA #10h ; 设定光标的 Common 地址 Write_REG[70h] LDA #ACh STA DATA_ADDR LDA #ECh RAiO TECHNOLOGY INC. ; 写入 “科” 的字型码 High Byte ; 写入 “科” 的字型码 Low Byte 54/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 STA DATA_ADDR ; 在光标所在位置 Æ Panel 的左上角第二行第一个全角位 ; 置会显示 “科” 不论文字或是绘图模式,都是使用缓存器[60h]CPXR 与[70h]CPYR 来设定光标的地址,如下图 9-14 所 示,在绘图模式下设定光标缓存器 CPXR = 00h,CPYR = 10h,则由 DDRAM 读到的的数值会是 “00h”,如果缓存器 CPXR = 00h,CPYR = 12h,DDRAM 读到的数值会是 “78h”,又如缓存器 CPXR = 00h,CPYR = 14h,DDRAM 读到的数值会是 “0Ah”。请参考图 9-15。 00 01 02 03 04 …………………………… ……….. .. 39 00 : : : : 10 : : : : 20 : : : : : : : : :: 320(Segment) x 240(Common) EF 图 9-14:光标位置设定与 DDRAM 的读取范例 00h Bit Bit 7654321076543210 78h 0Ah 图 9-15:将图 9-14 的 “科”字放大 RAiO TECHNOLOGY INC. 55/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.7.2 游标移位 REG [10h] Cursor Control Register (CCR) Bit Description Text/Graph Default Access 光标自动移位设定,此 Bit 用来设定当数据读出 DDRAM 时,光 标是否自动移位。 7 1:致能 Text/Graph 1h R/W Text/Graph 0h R/W 0:禁能 光标自动移位设定,此 Bit 用来设定当数据写入 DDRAM 时,光标 是否自动移位,如果此位被 Enable,则不论在文字或是绘图模 3 式,光标都会自动移位。 1:致能 0:禁能 例 题: Read_REG[10h] SMB3 ; 设定缓存器[10h] bit3=1 Æ 数据写入 DDRAM 时光标自 动移位 RMB7 ; 设定缓存器[10h] bit7=0 Æ 数据读出 DDRAM 时光标不自动移位 Write_REG[10h] 9.8 光标闪烁设定 REG [10h] Cursor Control Register (CCR) Bit Description Text/Graph Default Access 光标闪烁设定 1 1:光标闪烁,闪烁时间由缓存器[80h] BTR 决定。 Text/Graph 0h R/W 0:游标不闪烁 例 题: Read_REG[10h] RMB1 ; 设定缓存器[10h] bit1=0 Æ 游标不闪烁 Write_REG[10h] RAiO TECHNOLOGY INC. 56/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.8.1 光标闪烁时间设定 REG [80h] Blink Time Register (BTR) Bit Description Text/Graph Default Access Text/Graph 23h R/W 光标/屏幕闪烁时间设定 7-0 闪烁时间 = Bit[7..0] x (1/Frame_Rate) 如果 Frame Rate = 60Hz,则 1/Frame_Rate = 1/60Hz = 1.67ms,光标闪烁时间 = REG[80h] x 1.67ms,下面的例题中设定 REG[80h] = 35h = 53(十进制),因此光标闪烁时间 = 53 x 16.7ms = 885ms。 例 题: LDA #35h Write_REG[80h] ; 设定光标闪烁时间 = 885ms Read_REG[10h] ; 设定缓存器[10h] bit1=1 Æ 游标闪烁 SMB1 Write_REG[10h] 9.9 光标高度与宽度设定 9.9.1 游标高度 RA8802/8820 在做文字显示时,有提供光标高度的设定,在正常显示文字时,光标的高度为一个 Pixel 的 高度,但依不同使用者的需要,提供了 Pixel 的高度的设定,Pixel 的高度设定范围为(1~16)Pixel,使用者 可依需求来决定光标的高度大小。 1 Pixel 2 Pixel 3 Pixel 16 Pixel 图 9-16:光标高度之设定 RAiO TECHNOLOGY INC. 57/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 REG [18h] Cursor Size Control Register (CSCR) Bit 7-4 Description Text/Graph Default Access Text 0010h R/W 设定光标高度(默认值是 2) 例 题: LDA ;设定 REG[18h]的 MSB=0010b,游标高度为 2 个 pixel #00100010b Write_REG[18h] 9.9.2 游标宽度 RA8802/8820 在做文字显示时,有提供两种光标宽度的设定。第一种为 REG[10h] bit0=0 时,光标的宽 度将会固定为 1 个 Byte 的宽度(也就是 8 个 Pixel)。第二种为 REG[10h] bit0=1 时,光标的宽度会随着所 输入文字来做变化,例如当输入一个全角字时,文字后面的光标宽度会自动变为 2 个 Byte(也就是 16 个 Pixel)。当输入一个半角字时,文字后面的光标宽度会自动变为 1 个 Byte。 REG [10h] Cursor Control Register (CCR) Bit Description Text/Graph Default Access 设定光标宽度 1:会随着输入的数据而变动光标宽度,当数据为半型时,光标为 0 一个字节宽度(8 个 Pixel),当数据为全型时,光标为二个字节 Text 0h R/W 宽度(16 个 Pixel)。 0:光标固定为一个字节的宽度(8 个 Pixel) 例 题 1: Read_REG[10h] ; 光标宽度固定设为一个 Byte(8 个 Pixel) RMB0 ; 设定缓存器[10h] bit0=0, Write_REG[10h] 例 题 2: Read_REG[10h] ; 光标宽度可透过输入的数据来自动调整宽度 SMB0 ; 设定缓存器[10h] bit0=1 Write_REG[10h] RAiO TECHNOLOGY INC. 58/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.10 工作及显示窗口大小设定 RA8802/8820 应用在面板的显示上,供使用者有两种窗口选择。一个是显示窗口(Display Window),一个是 工 作 窗 口 (Active Window) 。 显 示 窗 口 (Display Window) 是 实 际 LCD 面 板 的 大 小 , 而 工 作 窗 口 (Active Window)是在实际的显示窗口(Display Window)内设定比显示窗口小的子窗口。 例如面板大小为 320x240,而它的显示窗口就为 320x240。在显示窗口(320x240)内可依使用者需要,来设 定工作窗口的大小,也就是子窗口的大小,子窗口也可在显示窗口内任意调整所要放置的地方。以下是相关 的缓存器说明: REG [28h] Display Window Right Register (DWRR) Bit 7-6 Description 保留 Default Access 0h R/W 0h R/W Default Access xxh R/W Default Access 0h R/W 设定显示窗口(Display Window)右边位置 Æ Segment-Right (注 1) Segment_ Right = (Segment Number / 8) – 1 RA8802: 如果 LCD Panel 为 320x240,则此缓存器的值为: 5-0 ( 320 / 8 ) – 1 = 39 = 27h RA8820: 如果 LCD Panel 为 240x160,则此缓存器的值为: ( 240 / 8 ) – 1 = 29 = 1Dh REG [38] Display Window Bottom Register (DWBR) Bit Description 设定显示窗口(Display Window) 底边位置 Æ Common-Bottom (注 1) Common_ Bottom = LCD Common Number –1 RA8802: 如果 LCD Panel 为 320x240,则此缓存器的值为: 7-0 240 – 1 = 239 = EFh RA8820: 如果 LCD Panel 为 240x160,则此缓存器的值为: 160 – 1 = 159 = 9Fh REG [48] Display Window Left Register (DWLR) Bit Description 设定显示窗口(Display Window) 左边位置 Æ Segment-Left (注 1) 7-0 通常将此缓存器的值设定为 “00h”. RAiO TECHNOLOGY INC. 59/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 REG [58] Display Window Top Register (DWTR) Bit 7-0 Description 设定显示窗口(Display Window) 顶边位置 Æ Common-Top (注 1) Default Access 0h R/W 通常将此缓存器的值设定为 “00h”. 注 1:光标地址应设定在显示窗口的范围内,因此缓存器[60h, 70h]、[B0h, B8h]与[28h, 38h, 48h, 58h]的设 定必须遵照以下的规范: 1. AWRR≧CPXR≧AWBR, AWRR≧INTX≧AWBR 2. AWLR≧CPYR≧AWTR, AWLR≧INTY≧AWTR REG [20h] Active Window Right Register (AWRR) Bit Description Default Access 7-6 保留 0h R 5-0 设定工作窗口(Active window)右边位置 Æ Segment-Right (注 2) xxh R/W Default Access xxh R/W Default Access REG [30h] Active Window Bottom Register (AWBR) Bit 7-0 Description 设定工作窗口(Active window) 底边位置Æ Common-Bottom (注 2) REG [40h] Active Window Left Register (AWLR) Bit Description 7-6 保留 0h R 5-0 设定工作窗口(Active window)左边位置 Æ Segment-Left (注 2) 0h R/W Default Access 0h R/W REG [50h] Active Window Top Register (AWTR) Bit 7-0 Description 设定工作窗口(Active window) 顶边位置 Æ Common-Top (注 2) 注 2:REG [20h, 30h, 40h, 50h] 可作为换行/换页的功能,可让使用者利用这 4 个 Register 自行设定一个区 块为工作窗口(Active Window)。当数据超过窗口的右边界 REG [20h, 30h, 40h, 50h]所设定的值,光 标会自动换行(也就是光标移到工作窗口的左边界 REG[40h]所设定的值),继续将数据写入。当数据写 入到工作窗口的右下角时(REG[20h]与[30h]所设定的值),会自动把光标移到工作窗口的的左上角 (REG[40h, 50h]所设定的值),继续的将数据填入窗口。 RAiO TECHNOLOGY INC. 60/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 REG [08h] Misc. Register (MIR) Description Bit Default Access 0h R/W 切换窗口模式 5 1:工作窗口 (Active window) 0:显示窗口 (Display window) 下面的例题 1 是以 RA8802 为例,设定 LCD Panel 的显示窗口为 320x240,工作窗口为 160x160 且位于显 示窗口的左上角,如图 9-17 所示。 320 0 1 2 ………………………….159 160 ……….…………………319 0 1 2 : : : : : : : 159 160 : : : 239 Active Window 160 x 160 240 Display Window 320 x 240 图 9-17:例题 1 的显示窗口与工作窗口 例 题 1: LDA #27h ; 设定 Display Window is 320x240 pixel Write_REG[28h] ; 设定 DWRR = (320/8) –1 = 39 = 27h LDA ; 设定 DWBR = 240 –1 = 239 = EFh #EFh Write_REG[38h] LDA #00h Write_REG[48h] ; 设定 DWLR, DWTR = 00h Write_REG[58h] LDA RAiO TECHNOLOGY INC. #13h ; 设定 Active Window is 160x160 pixel 61/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 ; 设定 AWRR = (160)/8 –1 = 19 = 13h Write_REG[20h] LDA #9Fh ; 设定 AWBR = 160 –1 = 159 = 9Fh Write_REG[30h] LDA #00h Write_REG[40h] ; Setup the AWLR, AWTR = 00h Write_REG[50h] 下面的例题 2 则是设定 LCD Panel 的显示窗口为 320x240,工作窗口为 160x160 位于显示窗口的中上角, 如图 9-18 所示。 320 0 1 2 …………79 80……………………………...239 240.………319 0 1 2 : : : : : : : 159 160 : : : 239 Active Window 160 x 160 80 80 240 Display Window 320 x 240 80 图 9-18:例题 2 的显示窗口与工作窗口 例 题 2: LDA #27h ; 设定 Display Window is 320x240 pixel Write_REG[28h] ; 设定 DWRR = (320/8) –1 = 39 = 27h LDA ; 设定 DWBR = 240 –1 = 239 = EFh #EFh Write_REG[38h] LDA #00h Write_REG[48h] ; 设定 DWLR, DWTR = 00h Write_REG[58h] LDA RAiO TECHNOLOGY INC. #1Dh ; 设定 Active Window is 160x160 pixel 62/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 Write_REG[20h] LDA #9Fh Write_REG[30h] LDA ; 设定 AWBR = 160 –1 = 159 = 9Fh #09h Write_REG[40h] LDA ; 设定 AWRR = (240/8) –1 = 29 = 1Dh ; 设定 AWLR = (80/8)-1 = 9 = 09h #00h Write_REG[50h] ; Setup the AWTR = 00h 下面的例题 3 是以 RA8820 为例,设定 LCD Panel 的显示窗口为 240x160,工作窗口为 128x128 且位于显 示窗口的左上角,如图 9-19 所示。 240 0 1 2 …………………….. 0 1 2 : : : : : : : 127 128 : : : 159 .127 128 …………. .……………….. 239 Active Window 128 x 128 160 Display Window 240 x 160 图 9-19:例题 3 的显示窗口与工作窗口 例 题 3: LDA #1Dh ; 设定 Display Window is 240x160 pixel Write_REG[28h] ; 设定 DWRR = (240/8) –1 = 29 = 1Dh LDA ; 设定 DWBR = 160 –1 = 159 = 9Fh #9Fh Write_REG[38h] LDA #00h Write_REG[48h] ; 设定 DWLR, DWTR = 00h Write_REG[58h] LDA #0Fh Write_REG[20h] RAiO TECHNOLOGY INC. ; 设定 Active Window is 128x128 pixel ; 设定 AWRR = (128)/8 –1 = 15 = 0Fh 63/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 LDA #7Fh ; 设定 AWBR = 128 –1 = 127 = 7Fh Write_REG[30h] LDA #00h Write_REG[40h] ; Setup the AWLR, AWTR = 00h Write_REG[50h] 下面的例题 4 则是设定 LCD Panel 的显示窗口为 240x160,工作窗口为 128x128 位于显示窗口的中上角, 如图 9-20 所示。 240 239 0 1 2 …………79 80……………………………. .208 …… . 0 1 2 : : : : : : : 128 129 : Active Window 128 x 128 80 32 160 Display Window 240 x 160 32 159 图 9-20:例题 4 的显示窗口与工作窗口 例 题 4: LDA #1Dh Write_REG[28h] LDA #9Fh Write_REG[38h] LDA #00h Write_REG[48h] Write_REG[58h] LDA #19h Write_REG[20h] LDA #7Fh Write_REG[30h] RAiO TECHNOLOGY INC. ; 设定 Display Window is 240x160 pixel ; 设定 DWRR = (240/8) –1 = 29 = 1Dh ; 设定 DWBR = 100 –1 = 159 = 9Fh ; 设定 DWLR, DWTR = 00h ; 设定 Active Window is 128x128 pixel ; 设定 AWRR = (208/8) –1 = 25 = 19h ; 设定 AWBR = 128 –1 = 127 = 7Fh 64/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 LDA #09h Write_REG[40h] LDA #00h Write_REG[50h] ; 设定 AWLR = (80/8)-1 = 9 = 09h ; Setup the AWTR = 00h 9.11 行距设定 RA8802/8820 在做文字显示时,提供了行距设定的功能,尤其是做中文显示时,每一行如果有适当的间隔, LCD 的显示画面看起来会比较舒适。RA8802/8820 行与行相隔的间距设定范围为 1~16 Pixel 的高度,使用 者可依需求来决定行与行间距的大小,一旦设定后,当每填完一行的中文字,跳到下一行时,其行距会依照 先前所设定的间距来显示。 REG [18h] Cursor Size Control Register (CSCR) Bit 3-0 Description Text/Graph Default Access Text 0010h R/W Text/Graph Default Access Graph 0h R/W 行距设定 例 题: LDA ; 设定 LSB=0010, #00100010b ; 行距为 2 个 pixels 的高度 Write_REG[18h] 9.12 自动填入数据到 DDRAM REG [E0h] Pattern Data Register (PDR) Bit Description 设定写入到 DDRAM 的数据 当缓存器[F0h]的 bit3 为 ‘1’,RA8802/8820 内部将自动读取 7-0 本缓存器[E0h] 的 Data,然后全部填写到 DDRAM 内,之后 缓存器[F0h]的 bit3 被清除为 ‘0’。 REG [F0h] Font Control Register (FCR) Bit Description Text/Graph Default Access 重复写入 REG [E0h]的数据到 DDRAM 3 1:开始写入 Graph 0h R/W 0:未动作 例 题: LDA #FFh ; 设定写入到 DDRAM Data = FFh, Write_REG[E0h] RAiO TECHNOLOGY INC. 65/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 Read_REG[F0h] ; 设定缓存器[F0h]的 bit3 为 ‘1’ SMB3 Write_REG[F0h] ; 将屏幕数据全部填入 “FF” Æ 硬件开始清除屏幕 9.13 屏幕更新频率设定 REG [90h] Shift Clock Control Register (SCCR) Bit Description Default Access -- R/W 设定 XCK 讯号周期 SCCR = (SCLK x DBW) / (Column x Row x FRS) SCLK:系统频率(System Clock) (单位:Hz) DBW:LCD Driver 的 Data Bus 宽度(单位:Bit) 7-0 Column:LCD 面板的 Segment 大小(单位:Pixel) Row:LCD 面板的 Common 大小 (单位:Pixel) FRS:LCD 面板的 Frame Rate(单位:Hz) 例 题: 1. 如果使用 X’tal + PLL 的方式,系统频率(SCLK) = 8MHz 2. LCD Driver 的 Data Bus 宽度(DBW) = 8Bit 3. 使用 320 x 240 Pixel 的 LCD 面板,Column = 320,Row = 240 4. LCD 面板的 Frame Rate 为 70Hz 则 SCCR = (8MHz x 8) / (320 x 240 x 70) = 11.9 所以建议设定 SCCR = 12 = 0Ch 如果设定数值太大,会造成 LCD 屏幕闪动,有时会伴随水波纹产生,除降低数值外也可以提高系统频率来 解决Æ 调整 REG[08h] 设定数值。为达到良好 LCD 显示质量,使用者必须根据 Panel、Driver 之特性与 VLCD 电压、系统频率等等进行调整。 9.14 中断(Interrupt)与忙碌(Busy)设定 RA8802/8820 提供一中断信号线(INT)用来表示有三种中断讯息可能发生: 1. 假如光标 Segment 地址缓存器(CPXR)与 Segment 中断地址缓存器(INTX)值相同,发生中断。 2. 假如光标 Common 地址缓存器(CPYR)与 Common 中断地址缓存器(INTY)值相同,发生中断。 RAiO TECHNOLOGY INC. 66/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 3. 触控屏幕侦测到被 Touch,发生中断。 这三种中断都可以单独被致能或禁能,而中断的设定与中断讯息可有由缓存器[A0h] INTR 来控制与读取。此 外 RA8802/8820 提供一忙碌(Busy)信号线,用来表示 RA8802/8820 内部 DDRAM 与 ROM 的存取状态是否 因 Busy 而暂时无法接收 MCU 来的 Command。此 BUSY Pin 通常与 MCU 的 I/O 端连接,MCU 在对 RA8802/8820 做存取前可以先判断 RA8802/8820 是否可以接受存取动作(Available)。以下是相关的缓存器 说明: REG [A0h] Interrupt Setup & Status Register (INTR) Bit Description Default Access 0h R 0h R 0h R 0h R 0h R/W 0h R/W 0h R/W 0h R/W 忙碌状况指示 7 1:RA8802/8820 为忙碌状态,MCU 需暂时等候到忙碌状态终止 0:RA8802/8820 为闲置状态,随时可接受 MCU 存取 触控屏幕中断旗标 6 1:触控屏幕有侦测到接触(Touch) 0:触控屏幕未侦测到接触未触控 光标 Column 状态 5 1:光标的 Column 等于缓存器[B0h]INTX 0:光标的 Column 不等于缓存器[B0h]INTX 光标 Row 状态 4 1:光标的 Row 等于缓存器[B8h]INTY 0:光标的 Row 不等于缓存器[B8h]INTY 忙碌中断屏蔽( Busy Interrupt Mask) 3 1:致能 BUSY 去产生中断输出 0:禁能 BUSY 去产生中断输出 触控屏幕中断屏蔽 2 1:如果触控屏幕被侦测到,则产生中断输出 0:如果触控屏幕被侦测到,则不产生中断输出 INTX 是否发生中断 1 1:致能 INTX 中断 0:禁能 INTX 中断 设定 INTY 是否发生中断 0 1:致能 INTY 中断 RAiO TECHNOLOGY INC. 67/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 0:禁能 INTY 中断 REG [B0h] Interrupt Column Setup Register (INTX) Bit Description 7-6 Reserved Default 0h Access R 27h R/W Default Access EFh R/W Default Access 0h R/W 保留 设定行 Segment 中断地址 5-0 假如光标位置 X 缓存器(CPXR)=INTX,发生中断。 REG [B8h] Interrupt Row Setup Register (INTY) Bit Description 设定列 Common 中断地址 7-0 假如光标位置 Y 缓存器(CPYR)=INTY,发生中断。 REG [08h] Misc. Register (MIR) Bit Description 设定输出脚 -- 中断(INT)和忙碌位(Busy Polarity)的准位 4 1:设定高电位动作 0:设定低电位动作 9.15 省电模式 RA8802/8820 的电源工作模式分四级:正常模式(Normal Mode),等待模式(Standby Mode),省电模式 (Sleep Mode) ,关闭模式(Off Mode),请参考下面缓存器及例题。 REG [00h] LCD Controller Register (LCR) Bit Description Text/Graph Default Access 电源模式(Power Mode) 11:正常模式(Normal Mode) RA8802/8820 的所有功能都可以使用(Available)。 10:等待模式(Standby Mode) 只有 DDRAM 与 ROM 的存取功能被禁止,其它功能都可 7-6 -- 以使用,LCD 亦照常工作。 11h R/W 01:睡眠模式(Sleep Mode) 除了允许缓存器的读写外,其它 LCD 显示与 DDRAM、 ROM 的存取将被禁止。 00:关闭模式(Off Mode) RAiO TECHNOLOGY INC. 68/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 除了唤醒(Wake-Up)电路工作外,其它功能都被禁止。当 Wake-Up 电路被触发,RA8802/8820 将进入正常模式。 例 题: Read_REG[00h] AND ; 读取缓存器[00h] #3Fh Write_REG[00h] ; 将 RA8802/8820 进入 OFF Mode : : Read_REG[00h] OR ; 读取缓存器[00h] #C0h Write_REG[00h] ; 将 RA8802/8820 进入 Normal Mode 进入 OFF Mode 后通常 RA8802/8820 的消耗电流会低于 2uA 以下,不过要注意,如果不使用外接字型 ROM,MA[7:0]与 MD[7:0] 必须接到 VDD,才能达到如此低的电源消耗。 9.16 ASCII 区块选择设定 RA8802/8820 内建四个 ASCII 区块,包含许多文字、特殊符号或图形等,可供使用者直接取用,此功能可 以由缓存器[F0h]的 bit[1..0]来设定。如果使用者需要特殊符号或图形,亦可经由调整 ROM Code 的方式来建 立。下面我们将介绍这四个区块的 Pattern(如图 9-21~9-24)、选择方式及使用范例。 9.16.1 ASCII 字形区块 0 例 题: LDA #xxxxxx00b ; 设定 选择 ASCII Code 表为 Block 0 Write_REG[F0h] LDA #00000100b ; 选择 Block0 里的 “@” STA DATA_ADDR ; 光标所指的位置就会显示 “@” LDA #10010011b ; 选择 Block0 里的 “9” STA DATA_ADDR ; “@”之后,光标所指的位置就会显示 “9” RAiO TECHNOLOGY INC. 69/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 b3-b0 b7-b4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 图 9-21:内建 ASCII 区块 Bank0 RAiO TECHNOLOGY INC. 70/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.16.2 ASCII 字形区块 1 例 题: LDA ; 设定 选择 ASCII Code 表为 Block 1 #xxxxxx01b Write_REG[F0h] LDA #00100011b ; 选择 Block 1 里的 2 STA DATA_ADDR ; 光标所指的位置就会显示 “2” b3-b0 b7-b4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 图 9-22:内建 ASCII 区块 Bank1 RAiO TECHNOLOGY INC. 71/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.16.3 ASCII 字形区块 2 区块 2 的选择方式与上面相同,只要设定缓存器[F0h]的 bit[1..0],再将选择的 Pattern 写入光标所在的位置 既可。 b3-b0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 b7-b4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 图 9-23:内建 ASCII 区块 Bank2 RAiO TECHNOLOGY INC. 72/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 9.16.4 ASCII 字形区块 3 区块 3 的选择方式与上面相同,也只要设定缓存器[F0h]的 bit[1..0],再将选择的 Pattern 写入光标所在的位 置既可。在区块 3 有许多空的 Pattern,如果使用者需要少量的特殊符号或图形,可经由调整 ROM Code 的 方式填入 Pattern 在此区块。 b3-b0 b7-b4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 图 9-24:内建 ASCII 区块 Bank3 RAiO TECHNOLOGY INC. 73/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 附录 A. 液晶显示驱动器(LCD Driver)的时序图 附录 A 是 RA8802/8820 搭配驱动器(Driver)ST8016/NT7701 在 Segment 和 Common 模式下的时序特性波形 图,及参数表。 tWLPH tLD XCK tLH tSL LP tLS tWCKH tWCKL tWCK tDS tDH LAST DATA TOP DATA tR tF DI7-DI0 tWDL DISPOFF tSD 图 A-1:Segment 模式的时序特性波形图 表 A-1:Segment 操作的 Timing 参数 Parameter Symbol Conditions Min. Shift Clock Period tWCK tR, tF≦11ns Shift Clock “H” Pulse Width Unit Note 125 ns 1 tWCKH 51 ns Shift Clock “L” Pulse Width tWCKL 51 ns Data Setup Time tDS 30 ns Data Hold Time tDH 40 ns Latch Pulse “H” Pulse Width tWLPH 51 ns Shift Clock Rise to Latch Pulse Rise Time tLD 0 ns Shift Clock Fall to Latch Pulse Fall Time tSL 21 ns Latch Pulse Rise to Shift Clock Rise Time tLS 51 ns Latch Pulse Fall to Shift Clock Fall Time tLH 51 ns Enable Setup Time tS 36 ns Input Signal Rise Time tR 50 ns 2 Input Signal Fall Time tF 50 ns 2 DISPOFF Removal Time tSD RAiO TECHNOLOGY INC. 100 74/115 Typ. Max. ns www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 DISPOFF “L” Pulse Width tWDL Output Delay Time(1) tD CL=15pF 78 ns Output Delay Time(2) tPD1, tPD2 CL=15pF 1.2 us Output Delay Time(3) tPD3 CL=15pF 1.2 us Max. Unit Note 1 1.2 ns Note: 1. Takes the cascade connection into consideration. 2. (tWCK-tWCKH-tWCKL)/2 is maximum in the case of high-speed operation. tWLP LP tR tWLPH tF t WDL tSD DISPOFF 图 A-2:Common 模式的时序特性波形图 表 A-2:Common 操作的 Timing 参数 Parameter Symbol Conditions Min. Shift Clock Period tWLP tR, tF≦20ns 125 ns Shift Clock “H” Pulse Width tWLPH VDD=5 51 ns Input Signal Rise Time tR 50 ns 2 Input Signal Fall Time tF 50 ns 2 DISPOFF Removal Time tSD 100 ns DISPOFF “L” Pulse Width tWDL 1.2 ns Output Delay Time(1) tD CL=10pF 78 ns Output Delay Time(2) tPD1, tPD2 CL=10pF 1.2 us Output Delay Time(3) tPD3 CL=10pF 1.2 us RAiO TECHNOLOGY INC. 75/115 Typ. www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 附录 B. 应用电路图 B.1 RA8802 应用电路(320x240) 图 B-1A 是 RA8802 应用在 LCM 模块(320x240)的控制电路图,也将 MCU 及 Driver 的总线接口脚位拉出, 供使用者参考。 1 2 3 4 U2 1 2 C1 3 45pF4 5 6 7 D U1 COMP INHIBIT Freq sub GND Cathode Anode VCC CUR BASE_D BASE COL NC EMIT VCC 14 13 12 11 10 9 8 1 V0 2 V2 3 V3 VSS 4 VSS 5 VCC 6 VCC 7 VCC 8 EIO1B 9 LD_D010 LD_D111 LD_D212 LD_D313 LD_D414 LD_D515 R3 10 L1 100uH TL497 DAC R1 U3 V0L D6 V12L D7 V43L XCK V5L DISPOFF VSS LP L/R EIO1 VDD FR S/C MD EIO2 TEST1 D0 TEST2 D1 VSS D2 V5R D3 V43R D4 V12R D5 V0R VCC R2 1.2K 16 LD_D6 17 LD_D7 18 XCK 19 DISPOFF 20 LP 21 VSS 22 FR 23 VCC 24 25 26 VSS 27 VSS 28 V3 29 V2 30 V0 1 2 3 4 5 6 7 8 9 LD_D010 LD_D111 LD_D212 LD_D313 LD_D414 LD_D515 V0 V2 V3 VSS VSS VCC VCC VCC V0L D6 V12L D7 V43L XCK V5L DISPOFF VSS LP L/R EIO1 VDD FR S/C MD EIO2 TEST1 D0 TEST2 D1 VSS D2 V5R D3 V43R D4 V12R D5 V0R NT7701(SEG)A R28 10K 16 LD_D6 17 LD_D7 18 XCK 19 DISPOFF 20 LP 21 EIO1B 22 FR 23 VCC 24 25 26 VSS 27 VSS 28 V3 29 V2 30 V0 C3 15P D C4 15P PLL震盪電路 LCD DRIVER(SEG) C5 R9 RA RB ROM_D1 ROM_D2 ROM_D3 ROM_D4 ROM_D5 ROM_D6 ROM_D7 ROM_A0 ROM_A1 ROM_A2 ROM_A3 VCC GND ROM_A4 ROM_A5 ROM_A6 ROM_A7 ROM_A8 ROM_A9 ROM_A10 ROM_A11 ROM_A12 ROM_A13 ROM_A14 ROM_A15 ROM_A16 ROM_A17 ROM_A18 ROM_CE GND 3.9K 升壓電路(此電路使用之分壓電阻R1,R2請依LCD PANEL特性調整) RC震盪電路(R9請依LCD PANEL特性調整) 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 C MPU_D0 MPU_D1 MPU_D2 MPU_D3 MPU_D4 MPU_D5 MPU_D6 MPU_D7 1 3 5 7 9 11 13 15 17 19 21 23 2 4 6 8 10 12 14 16 18 20 22 24 MPU_RS MPU_R/W MPU_EN MPU_CS1 MPU_CS2 BUSY INT RST HEADER 12X2 VSS VEE ROM_D0 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 VSS 100 U4 ROM_D0 NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC MD_SEL0 VDD ROM_A19 CLK_OUT ZRST# XB XA LPF RA RB LM_D7 LM_D6 LM_D5 LM_D4 LM_D3 LM_D2 LM_D1 LM_D0 LM_EN LM_RW VDD ROM_D1 ROM_D2 ROM_D3 ROM_D4 ROM_D5 ROM_D6 ROM_D7 ROM_A0 ROM_A1 ROM_A2 ROM_A3 VDD GND ROM_A4 ROM_A5 ROM_A6 ROM_A7 ROM_A8 ROM_A9 ROM_A10 ROM_A11 ROM_A12 ROM_A13 ROM_A14 ROM_A15 ROM_A16 ROM_A17 ROM_A18 ROM_ZCS GND JP1 RA8801 MD_SEL1 LD_D0 LD_D1 LD_D2 LD_D3 LD_D4 LD_D5 LD_D6 LD_D7 LD_DOF LD_XCK LD_DY LD_LP LD_FR GND VDD BU_OUT INT_OUT AGND V_REF AVDD I_OUT Y2 X2 Y1 X1 LM_CS1 LM_CS2 LM_RS GND VCC 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 VCC ROM_A19 RST Crystal1 Crystal0 LPF RA RB MPU_D7 MPU_D6 MPU_D5 MPU_D4 MPU_D3 MPU_D2 MPU_D1 MPU_D0 MPU_EN MPU_R/W VCC RA8802 LD_D7 10K R11 10K R12 R16 LD_D5 10K R17 LD_D2 LD_D0 1 2 3 VEE4 5 6 7 10 C18 105 R5 10 C19 105 C9 104 C10 104 C11 104 V0 R19 C13 104 R20 C14 104 D1 C15 104 VCC VCC S1 For VDD R8 10 C22 105 VEE V2 R23 OUT1 OUT4 -IN1 -IN4 +IN1+IN4 VCC VEE +IN2+IN3 -IN2 -IN3 OUT2 OUT3 R6 14 13 12 11 10 9 8 R27 30K V1 3K C23 105 V4 10 R7 C20 105 V3 10 C21 105 V3 R25 V4 3K R24 R26 3K 3K DIODE VCC R21 若VDD電壓>4.5V,可外加二極體降壓 10K R10¡ãR21 are Optional A 分壓電路(此電路使用之分壓電阻R23-R27請依LCD PANEL特性調整 若VDD電壓<4.5V,則VDD直接接VCC Title Size 硬體設定電路 RA8802 FOR 320240 LCD PANEL AP CIRCUIT Number Revision 5.2 B Date: File: 1 B U6 LM324D For VEE VCC 10K A R4 V1 R18 10K LD_D1 C8 104 17 GND 18 XCK 19 DISPOFF 20 LP 21 22 GND 23 VSS 24 VSS 25 26 VSS 27 28 VSS 29 V4 30 V1 31 V0 32 V0 V0L D7 V0L XCK V12LDISPOFF V43L LP V5L EIO1 VSS FR VDD L/R S/C MD EIO2 NC D0 VSS D1 NC D2 V5R D3 V43R D4 V12R D5 V0R D6 V0R NT7702(COM) V2 C7 104 R15 10K 10K C U5 LCD DRIVER(COM) VEE 10K LD_D3 R22 2.7K R14 10K 10K C17 C16 0.22uF 0.01uF 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 R13 10K LD_D6 LPF MPU_CS1 MPU_CS2 MPU_RS VCC R10 V0 V0 V1 V4 VSS VSS VCC VSS GND GND GND GND GND GND GND GND C6 104 C12 104 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 MCU INTERFACE VCC LD_D0 LD_D1 LD_D2 LD_D3 LD_D4 LD_D5 LD_D6 LD_D7 DISPOFF XCK FLM LP FR GND VCC BUSY INT GND Vref VCC DAC B Crystal0 32768 104 VEE Y1 Crystal1 NT7701(SEG)B 22K C2 100uF 6 5 2 3 4 5 7-May-2003 Sheet of D:\justin project\RA8802\160x160_LCM\RA8802_320240LCD_AP_E Drawn By: Jason Huang 6 图 B-1A:320x240 LCM 模块电路图 注: 1. 如果不使用外接字型 ROM,建议 MA[7:0]与 MD[7:0] 接到 VDD,这样可以减轻电源消耗,如所示图 B1B。 2. RA8802D 版之后的版本,LD0~LD7 的设定脚位若为 Pull-Hi,则 Pull-Hi 电阻不用接上,如果设定脚位 RAiO TECHNOLOGY INC. 76/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 为 Pull-Low,Pull-Low 电阻建议使用 1K~2.2Kohm。 3. Reset Pin – RST#,它可以由 MCU 来控制,或是由一 RC 电路来产生,请参考 8.1 节与图 8-2 的说明。 请注意,RA8802/8820 没有完成 Reset 的动作是无法接受 MCU 的任何指令,甚至会造成起振不正确或 系统设定错误。 表 B-1:320x240 LCM 模块电路图的组件窗体 No. 使用数量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 1 1 1 1 4 5 1 12 2 1 1 1 1 1 3 8 6 0.01uF 0.22uF 1.2K 2.7K 3.9K 3K 10 10 10K 15P 22K 30K 45pF 100uF 100uH 104 104 105 C17 C16 R1 R22 R9 R23, R24, R25, R26 R4, R5, R6, R7, R8 R3 R12~R21 C3, C4 R2 R27 C1 C2 L1 C7, C8, C9 C5, C6, C10~C15 C18~C23 19 1 32768 Y1 20 21 22 23 24 25 1 1 1 1 1 1 DIODE HEADER 12X2 LM324D NT7701(SEG)A NT7701(SEG)B NT7702(COM) D1 JP1 U6 U2 U3 U5 26 1 RA8802 U4 27 1 TL497 U1 RAiO TECHNOLOGY INC. 组件规格 组件序号 组件尺寸 0805C 0805C 0805 0805 0805 0805 0805 0805 0805 0805C 0805 0805C EC1 LH1 0805C 0805C 0805C CRYSTAL 3.8KHZ DIE or PQFP100 DIP14 77/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 B.2 RA8802 应用电路(320x240) 图 B-1B 是 RA8802 的 Demo 电路图,也将 MCU 及 Driver 的总线接口脚位拉出,供使用者参考。 COMP INHIBIT Freq sub GND Cathode Anode VCC CUR BASE_D BASE COL NC EMIT U2 ST8016(SEG) VCC 14 13 12 11 10 9 8 R3 10 L1 100uH TL497 R1 106 C14 15P VDD VDD FLM XCK DISPOFF LD_D1 LD_D3 100uF VEE RB 3.9K 1 V0 2 V1 3 V4 4 VSS 5 VSS 6 FR 7 FLM 8 LP 9 DISPOFF 10 VSS 11 VSS 12 VSS 13 VSS 14 VSS 15 VSS 16 VSS 17 VSS 18 VSS 19 20 VSS 21 VDD 22 VDD 23 VSS 24 V4 25 V1 26 V0 RC 震盪電路 (R10請依LCD panel特性調整) 1 3 5 7 9 11 13 15 17 19 21 23 MPU_D0 MPU_D1 MPU_D2 MPU_D3 MPU_D4 MPU_D5 MPU_D6 MPU_D7 2 4 6 8 10 12 14 16 18 20 22 24 VDD MPU_RS MPU_R/W MPU_EN MPU_CS1 MPU_CS2 BUSY INT RST CLK_OUT ROM_D0 HEADER 12X2 VEE MC U I nter f a ce VSS 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 MD0 NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC SEL0 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 VDD MA19 CK_OUT RST# XB XA LPF RA RB DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 EN RW# VDD RA8802 RA8802-(S/T) VDD ROM_A19 CLK_OUT RST XB XA LPF RA RB MPU_D7 MPU_D6 MPU_D5 MPU_D4 MPU_D3 MPU_D2 MPU_D1 MPU_D0 MPU_EN MPU_R/W VDD SE L1 L D0 L D1 L D2 L D3 L D4 L D5 L D6 L D7 DISPOFF XCK YD LP FRM GND VDD BUSY INT AGND Vref AVDD Iout Y2 X2 Y1 X1 CS1# CS2 RS GND VCC JP1 MD1 MD2 MD3 MD4 MD5 MD6 MD7 MA0 MA1 MA2 MA3 VDD GND MA4 MA5 MA6 MA7 MA8 MA9 MA10 MA11 MA12 MA13 MA14 MA15 MA16 MA17 MA18 MACS# GND U4 VCC VDD LCD2 1 3 5 7 9 11 2 4 6 8 10 12 LP LD_D0 LD_D2 VDD VEE HEADER 6X2 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 升壓電路(此電路使用之分壓電阻R 1/R2請依LCD pa nel特性調整) R10 RA ROM_D1 ROM_D2 ROM_D3 ROM_D4 ROM_D5 ROM_D6 ROM_D7 ROM_A0 ROM_A1 ROM_A2 ROM_A3 VCC GND ROM_A4 ROM_A5 ROM_A6 ROM_A7 ROM_A8 ROM_A9 ROM_A10 ROM_A11 ROM_A12 ROM_A13 ROM_A14 ROM_A15 ROM_A16 ROM_A17 ROM_A18 ROM_CE 20K C16 DV1 1N4148 C15 15P C2 104 R2 1.2K VCC P LL 震盪電路 10K R12 10K XA 32768 R9 LCD Dr iver ( S EG) R11 DAC Y1 XB V0R V12R V43R VSS MD FR E IO1 LP DISPOFF XCK DI7 DI6 DI5 DI4 DI3 DI2 DI1 DI0 E IO2 S/C VDD L /R VSS V43L V12L V0L U1 1 V0 2 V2 3 V3 4 VSS 5 VSS 6 FR 7 VSS 8 LP 9 DISPOFF 10 XCK 11 LD_D7 12 LD_D6 13 LD_D5 14 LD_D4 15 LD_D3 16 LD_D2 17 LD_D1 18 LD_D0 19 20 VDD 21 VDD 22 VDD 23 VSS 24 V3 25 V2 26 V0 1 2 C1 3 45pF 4 5 6 7 C4 104 LPF C17 0.22uF C18 0.01uF R31 2.7K U5 V0R V12R V43R VSS MD FR EIO1 LP DISPOFF XCK DI7 DI6 DI5 DI4 DI3 DI2 DI1 DI0 EIO2 S/C VDD L/R VSS V43L V12L V0L ST8016(COM) LCD Dr iver ( CO M) C9 104 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 RA8820/02 VDD 1K R19 10K LD_D6 1K R20 R25 LD_D3 R26 LD_D2 C6 104 R28 LD_D0 R29 10K R30 2K 硬體設定電路 C10 104 C11 104 C12 104 R5 R8 V0 C20 30P U6 OUT1 -IN1 +IN1 VCC +IN2 -IN2 OUT2 OUT4 -IN4 +IN4 VEE +IN3 -IN3 OUT3 14 13 12 11 10 9 8 R6 V4 10 C23 105 R7 V3 10 LM324D C24 105 C8 104 Vref VDD 10K R18∼R27 are Optional C7 104 10K LD_D1 1 2 3 VEE 4 5 6 7 10 C22 105 C19 104 For VEE R27 R4 10 C21 105 V2 C5 104 10K 1K V1 VEE 10K 1K R22 R24 10K LD_D5 1K R21 R23 MPU_CS1 MPU_CS2 MPU_RS LD_D7 VDD L D_D0 L D_D1 L D_D2 L D_D3 L D_D4 L D_D5 L D_D6 L D_D7 DISPOFF XCK FLM LP FR GND VDD BUSY INT GND Vref VDD DAC R18 C25 105 10 VEE R32 C26 105 V1 V2 3K R36 24K R33 3K V3 R34 V4 3K R35 3K For VDD 分壓電路( 此分壓電路使用之分壓電阻R 32~R 36請依LCD pa nel特性調整) 图 B-1B:320x240 Demo 电路图 注: 1. 如前一节所述,图 B-1B 的 MA[7:0]与 MD[7:0] 接到 VDD,这样可以减轻电源消耗。 2. RA8802D 版之后的版本,LD0~LD7 的设定脚位若为 Pull-Hi,则 Pull-Hi 电阻不用接上,如果设定脚位为 Pull-Low,Pull-Low 电阻建议使用 1K~2.2Kohm。 3. Reset Pin – RST#,它可以由 MCU 来控制,或是由一 RC 电路来产生,请参考 8.1 节与图 8-2 的说明。 请注意,RA8802/8820 没有完成 Reset 的动作是无法接受 MCU 的任何指令,甚至会造成起振不正确或 系统设定错误。 4. VLCD 的电压是正的,由 U1 的 TL497 产生,电压范围由 R2 来控制(≒12V~30V),也可以在 R2 上串接 RAiO TECHNOLOGY INC. 78/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 一 VR 可调电阻来调整电压范围,输出电流的限制由 R3 决定,且 R3 不能短路,如果接上 LCD Panel 让 VLCD 电压下降,表示 LCD Panel 上的 Droving 负载(Loading)较大,此时可将 R3 调小。 5. 图 B-1B 的 VLCD 电压是正的,如果须要的 VLCD 电压是负的,则必须使用别的升压电路。如图 B-1C 就 是一负压的升压电路。 6. R11 用来调整 DAC 对 VLCD 的变动范围,虽然 DAC 可用于控制升压电路,进行对比显示(Contrast)设 定,但仍须要注意的是升压电路本身的精确度,即使是同一批号的生压 IC,产生的 VLCD 电压准位也会 不同,而且不同批的 LCD Panel 对相同 VLCD 电压产生的对比显示效果也不一样,因此如果使用 RA8802/8820 的 DAC 进行对比显示(Contrast)设定,建议与 R11 串接一 VR 可调电阻做为出厂设定。 7. R18~R29 用来选择系统设定,请参考 8.1 节的说明。 8. 如果系统时序(System Clock)产生方式为 RC Clock(也就是 R20 焊上,R25 不焊),此时 Y1、C14、 C15、R9 可不用接,当然 R10 要焊上。 9. 有时候 LD[3:0]的负载较多(视 Driver IC 数量) ,走线较长,建议在 LD[3:0]上各并接一电容(20pF~30pF)到 地,减少噪声产生。 10. 如果使用触摸式面板(使用内部 ADC),则建议在 X1, X2, Y1, Y2 上各并接一电容(30pF)到地,以减少噪 声产生及增加 ADC 的稳定度,请参考图 6-7。 Vin = 2.4~7V RCL 0~10 U1 1 C1 100uF CL 8 VREF DHI 7 SHDN DLOW 6 GND 5 VIN 2 3 4 FB Q1 0.047uF R2 Vout = -12V~-40V(-10mA) D1 470~1.8K 100uH *L AIC1652 C4 9012 RB 1N4148 C2 100uF R1 1M 100K C3 10nF 图 B-1C:应用电路图-负压的升压电路 RAiO TECHNOLOGY INC. 79/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 B.3 RA8820 应用电路(160x160) 图 B-2 是 RA8820 的 160x160 Demo 用 LCM 模块电路图,图中的 LCD Driver 使用 ST8016 供使用者参考。 1 2 3 4 6 5 PLL震盪電路 Y1 升壓電路 Crystal1 LCD Driver 介面 U1 1 2 C1 3 45pF 4 5 6 7 COMP INHIBIT Freq sub GND Cathode Anode VCC CUR BASE_D BASE COL NC EMIT VCC 14 13 12 11 10 9 8 R3 10 L1 100uH 1 V0 2 V2 3 V3 4 VSS 5 VSS 6 FR 7 VSS 8 LP 9 DISPOFF 10 XCK 11 LD_D7 12 LD_D6 13 LD_D5 14 LD_D4 15 LD_D3 16 LD_D2 17 LD_D1 18 LD_D0 19 20 VCC 21 VCC 22 VCC 23 VSS 24 V3 25 V2 26 V0 TL497 C2 C4 15P RC震盪電路 R2 1.2K D C3 15P U2 ST8016(SEG) DAC R1 Crystal0 32768 V0R V12R V43R VSS MD FR EIO1 LP DISPOFF XCK DI7 DI6 DI5 DI4 DI3 DI2 DI1 DI0 EIO2 S/C VDD L/R VSS V43L V12L V0L D R9 RA 22K RB 4.7K R9請依LCD PANEL特性調整 100uF VEE VCC 此電路使用之分壓電阻R1,R2請依LCD PANEL特性調整 C5 104 ROM_D1 ROM_D2 ROM_D3 ROM_D4 ROM_D5 ROM_D6 ROM_D7 ROM_A0 ROM_A1 ROM_A2 ROM_A3 VCC GND ROM_A4 ROM_A5 ROM_A6 ROM_A7 ROM_A8 ROM_A9 ROM_A10 ROM_A11 ROM_A12 ROM_A13 ROM_A14 ROM_A15 ROM_A16 ROM_A17 ROM_A18 ROM_CE GND R28 10K LCD Driver 介面 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 C VCC JP1 MPU_D0 MPU_D1 MPU_D2 MPU_D3 MPU_D4 MPU_D5 MPU_D6 MPU_D7 1 3 5 7 9 11 13 15 17 19 21 23 2 4 6 8 10 12 14 16 18 20 22 24 MPU_RS MPU_R/W MPU_EN MPU_CS1 MPU_CS2 BUSY INT RST HEADER 12X2 VSS VSS ROM_D0 NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC NC MD_SEL0 RA8801 C13 104 VCC ROM_A19 C6 104 RST Crystal1 Crystal0 LPF RA RB MPU_D7 MPU_D6 MPU_D5 MPU_D4 MPU_D3 MPU_D2 MPU_D1 MPU_D0 MPU_EN MPU_R/W VCC LPF C16 0.22uF C15 104 C7 104 R11 LD_D7 10K R12 D1 VCC S1 DIODE 10K R13 LD_D5 R17 R18 LD_D3 若VDD電壓<4.5V,則VDD直接接VCC VCC R15 C8 104 R16 C10 104 C12 104 For VDD 10K 10K 若VDD電壓>4.5V,可外加二極體降壓 R14 10K 10K VCC C11 104 For VEE 10K LD_D6 C9 104 分壓電路 R19 10K LD_D2 10K 1 2 3 VEE 4 5 6 7 10 C20 105 R21 10K LD_D0 U5 R5 V1 R20 10K LD_D1 V0R V12R V43R VSS MD FR EIO1 LP DISPOFF XCK DI7 DI6 DI5 DI4 DI3 DI2 DI1 DI0 EIO2 S/C VDD L/R VSS V43L V12L V0L B C14 104 VCC VCC C U4 ST8016(COM) VEE 硬體設定電路 C17 0.01uF R10 2.7K 1 V0 2 V1 3 V4 4 VSS 5 VSS 6 FR 7 FLM 8 LP 9 DISPOFF 10 VSS 11 VSS 12 VSS 13 VSS 14 VSS 15 VSS 16 VSS 17 VSS 18 VSS 19 20 VSS 21 VCC 22 VCC 23 VSS 24 V4 25 V1 26 V0 MPU_CS1 MPU_CS2 MPU_RS VCC LD_D0 LD_D1 LD_D2 LD_D3 LD_D4 LD_D5 LD_D6 LD_D7 DISPOFF XCK FLM LP FR GND VCC BUSY INT GND Vref VCC DAC B 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 RA8820 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 VEE VDD ROM_A19 CLK_OUT ZRST# XB XA LPF RA RB LM_D7 LM_D6 LM_D5 LM_D4 LM_D3 LM_D2 LM_D1 LM_D0 LM_EN LM_RW VDD ROM_D1 ROM_D2 ROM_D3 ROM_D4 ROM_D5 ROM_D6 ROM_D7 ROM_A0 ROM_A1 ROM_A2 ROM_A3 VDD GND ROM_A4 ROM_A5 ROM_A6 ROM_A7 ROM_A8 ROM_A9 ROM_A10 ROM_A11 ROM_A12 ROM_A13 ROM_A14 ROM_A15 ROM_A16 ROM_A17 ROM_A18 ROM_ZCS GND MCU介面 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 MD_SEL1 LD_D0 LD_D1 LD_D2 LD_D3 LD_D4 LD_D5 LD_D6 LD_D7 LD_DOF LD_XCK LD_DY LD_LP LD_FR GND VDD BU_OUT INT_OUT AGND V_REF AVDD I_OUT Y2 X2 Y1 X1 LM_CS1 LM_CS2 LM_RS GND ROM_D0 U3 R6 V2 R22 10 C21 105 10K V2 V0 R4 10 C18 105 VEE R23 3K C19 105 R7 14 13 12 11 10 9 8 10 R8 10 LM324D R11¡ãR22 are Optional A OUT1 OUT4 -IN1 -IN4 +IN1 +IN4 VCC VEE +IN2 +IN3 -IN2 -IN3 OUT2 OUT3 R27 24K V1 R24 V4 C22 105 V3 C23 105 V3 R25 A V4 3K 3K R26 3K Title 此電路使用之分壓電阻R23-R27請依LCD PANEL特性調整 Size RA8820 FOR 160160 LCD PANEL AP CIRCUIT Number Revision C Date: File: 1 2 3 4 5.2 8-May-2003 Sheet of D:\justin project\RA8802\160x160_LCM\RA8802_160160LCD_AP_E_9205071.DDB Drawn By: Jason Huang 5 6 图 B-2:160x160 LCM 模块电路图 注: 1. 如前一节所述,图 B-2B 的 MA[7:0]与 MD[7:0] 若接到 VDD,可以减轻电源消耗。 2. 与 RA8802 相同,RA8820D 版之后的版本,LD0~LD7 的设定脚位若为 Pull-Hi,则 Pull-Hi 电阻不用接 上,如果设定脚位为 Pull-Low 不,Pull-Low 电阻建议使用 2.2Kohm。 3. Reset Pin – RST#,它可以由 MCU 来控制,或是由一 RC 电路来产生,请参考 8.1 节与图 8-2 的说明。 请注意,RA8802/8820 没有完成 Reset 的动作是无法接受 MCU 的任何指令,甚至会造成起振不正确或 系统设定错误。 RAiO TECHNOLOGY INC. 80/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 表 B-2:160x160 LCM 模块电路图的组件窗体 No. 使用数量 组件规格 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 1 1 1 4 1 5 1 12 2 1 1 1 1 1 11 6 0.01uF 0.22uF 1.2K 2.7K 3K 4.7K 10 10 10K 15p 22K 24K 45pF 100uF 100uH 104 105 C17 C16 R1 R10 R23~R25 R9 R4~R8 R3 R11~R22 C3, C4 R2 R27 C1 C2 L1 C5~C15 C18~C23 18 1 32768 Y1 19 20 21 22 23 24 25 1 1 1 1 1 1 1 DIODE HEADER 12X2 LM324D RA8820 ST8016(COM) ST800016(SEG) TL497 D1 JP1 U5 U3 U4 U2 U1 RAiO TECHNOLOGY INC. 组件序号 组件尺寸 0805C 0805C 0805 0805 0805 0805 0805 0805 0805 0805C 0805 0805 0805C EC1 LH1 0805C 0805C CRYSTAL 3.8KHZ PQFP 1OO DIP14 81/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 B.4 Power 应用电路 附录 B.4 是 RA8802/8820 的电源接法,RA8802 可工作于 3V,RA8820 可工作于 3V 或 5V,工作于 3V 可 减少电源功率消耗,如果有用到 Touch Panel(ADC)建议使用图 B-5。 RA8802 3V VDD AVDD GND 0.1uF AGND 图 B-3:RA8802 Power 应用电路图(1) RA8820 3V/5V VDD AVDD GND 0.1uF AGND 图 B-4:RA8820 Power 应用电路图(2) RAiO TECHNOLOGY INC. 82/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RA8802/8820 Power VDD AVDD 0.47uH GND 0.1uF AGND 图 B-5:使用 Touch Panel(ADC)时的 Power 应用电路图 图 B-6 与 B-7 是 RA8802/8820 用于 3V 或 5V 的系统上的电源接法。 3V MCU 3V VDD RA8802/8820 VDD AVDD MCU I/F I/O GND AGND GND 图 B-6:3V System 应用电路图 5V MCU 5V VDD RA8802/8820 VDD AVDD MCU I/F I/O GND GND AGND 图 B-7:5V System 应用电路图 RAiO TECHNOLOGY INC. 83/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 附录 C. 除错与分析流程 附录 C 是在说明 RA8802/8820 在组合成 LCM 或系统时若遇到困难所采取的几个步骤,例如 Demo Circuit 完 成或 Demo PCB 焊接完成时,必须先核对的重要项目,在接上电源后检查 Clock、Reset 等信号,一但 MCU 可以透过软件进行缓存器的读写,表示 MCU 与 RA8802/8820 间的硬件设定基本上没有问题,MCU 透过软件 进行缓存器的读写动作与 LCD Driver、Panel、或升压电路无关联。 若缓存器的读写没问题,可以透过文字或绘图模式进行显示部份的测试。若遇到困难此时就必须检查与 LCD Driver、Panel 或升压部份的电路了。 測試順序 核對項目 MCU Type Bus Width Clock Source LCD Bus Width 硬體設定 硬體量測 Clock Reset MCU I/F 軟體量測 Register Read/Write 顯示量測 升壓電路 Contrast (DAC) Loading Driver Circuit 图 C-1:除错与分析流程 RAiO TECHNOLOGY INC. 84/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 附录 D. 支援的 Driver 型号 Company HITACHI SAMSUNG Novatek Sitronix Elan Toshiba Epson Eureka Hynix Sanyo Driver Part. HD66130 S6A2067 S6B0794 S6B0086 S6B2104 NT3883 NT7701 NT7702 NT7703 NT7704 ST7063 ST7065 ST8016 ST8012 EM65160 EM65240 EM65H134 EM65H137 T6A92 T6B07 T6B08 T6B23 T6B36 T6C03 T6C13B T6C25 T6C61 T6C63 T6C72A T6J05 T6J06 S1D16501 S1D16700 S1D16702 S1D17403 S1D16006 S1D16400 S1D17503 S1D17508 EK7010 EK7011 HM11S210 HM11S220 LC79430 LC79401D Driver capacity 320-channel segment driver 80-dot segment driver 160-dot seg/com driver 80-dot seg/com driver 80-dot segment driver 80-ch driver 160-dot seg/com driver 240-dot seg/com driver 160-dot seg/com driver 240-dot seg/com driver 80-dot segment driver 40-dot seg/com driver 160-dot seg/com driver 120-dot seg/com driver 160-dot seg/com driver 240-dot seg/com driver 240-channel segment driver 240-channel common driver 80-channel segment driver 80-channel segment driver 68-dot common driver 80-channel segment driver 80-dot common driver 160-dot seg/com driver 240-dot seg/com driver 160-dot seg/com driver 160-channel segment driver 240-channel segment driver 120-dot common driver 128-dot common driver 120-dot common driver 100-dot common driver 100-dot common driver 68-dot common driver 160-dot common driver 80-channel segment driver 80-channel segment driver 120-dot common driver 160-dot segment driver 240-dot seg/com driver 160-dot seg/com driver 160-dot seg/com driver 240-dot seg/com driver 80-dot common driver 80-dot segment driver Support ▲:表示支持 ▲ ▲ ▲ ▲ -▲ ▲ ▲ ▲ --▲ ▲ ▲ ▲ ▲ ▲ -▲ --▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ ▲ 未列于表内的其它 Driver,可以将编号提供给 RAiO 判断是否有支持。 RAiO TECHNOLOGY INC. 85/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 附录 E. 指令时间 附录 E 是在说明 RA8820 在做读/写或是各种模式下写到内存所需的时间。可依使用者所设定的不同系统频率 (SYS_CLK) , 来 决 定 各 个 指 令 所 需 要 的 时 间 。 例 如 , SYS_CLK=8MHz , 每 个 Clock 的 时 间 =1/SYS_CLK=125ns,而写入缓存器所需的 Clock 为 3 个机械周期,所以对缓存器做读取或是写入时所需的时 间约为 125ns X 3 lock=375ns,用以此方式来计算指令所需的时间。 下列是说明各个指令动作所需的机械周期时间: y 写入缓存器的时间为 3 个机械周期 y 读取缓存器的时间为 3 个机械周期 y 写入内存的时间为 3 个机械周期 y 在绘图模式下写入内存的时间为 3 个机械周期 y 在中文字型下写入一个字到内存的时间为 35 个机械周期 y 在 ASCII 字型下写入一个字到内存的时间为 19 个机械周期 y 硬件清除屏幕所需的机械周期时间,公式: 3+(ComsxSegs)/8 RAiO TECHNOLOGY INC. 86/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 附录 F. C51 范例程序 /******************************************************************************* * *Filename: RA8802/8820_C51.C *Author: Jason *Company: RAiO *Case: RA8802/8820 *Device: ATMEL AT89C52 at 4MHz *Date: 2003/03/26 *Modifier: Jason *Modify Date: 2003/03/26 *Visions: 1.1 Build 0326 *Compiled Using Keil C v6.14 * ******************************************************************************** * Function ******************************************************************************** *Hardware Setup Pin: *LD7 : pull high=>6800 Interface *LD6 : pull high=>MCU Data Bus->8bit *LD5 : pull high=>Crystal *LD3 : pull low =>LCD Data bus->4bit *LD2 : pull low =>RS=1->LCD command;RS=0->LCD Data *LD0&LD1 : pull high *Pin assignment: *P3.7: RST *P3.6: INT *P3.5: BUSY *P3.4: MCU_CS2 *P3.3: MCU_CS1 *P3.2: MCU_EN *P3.1: MCU_R/W *P3.0: MCU_RS * *P1.0: LCD Data Bus Bit0 *P1.1: LCD Data Bus Bit1 *P1.2: LCD Data Bus Bit2 *P1.3: LCD Data Bus Bit3 *P1.4: LCD Data Bus Bit4 *P1.5: LCD Data Bus Bit5 *P1.6: LCD Data Bus Bit6 *P1.7: LCD Data Bus Bit7 * *Panel Size : 320X240 *******************************************************************************/ #include <stdio.h> #include <AT89X52.H> #define #define #define #define #define #define #define #define RST INT BUSY CS2 CS1 EN RW RS RAiO TECHNOLOGY INC. P3_7 3_6 3_5 P3_4 P3_3 P3_2 P3_1 P3_0 87/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 #define #define LCD_Command LCD_Data P1 P1 void printlcd(void) small; void LCD_Reset(void) small; void LCD_Initial(void) small; void LCD_Display_On(void) small; void LCD_Display_Off(void) small; void LCD_CursorX(unsigned char) small; void LCD_CursorY(unsigned char) small; void LCD_Clear(void) small; void LCD_CmdWrite(unsigned char) small; void LCD_DataWrite(unsigned char) small; unsigned char LCD_CmdRead(unsigned char) small; unsigned char LCD_DataRead(void) small; void LCD_ChkBusy(void) small; void disascii(unsigned char) small; void dispat(unsigned char) small; void DelayXms(int) small; void _nop_ (void); unsigned char data REG_READ; unsigned char data DATA_READ; /******************************************************************************/ /* Main Program Area */ /******************************************************************************/ void main(void) { while(1) { LCD_Reset(); LCD_Initial(); LCD_Clear(); LCD_CursorX(0x08); LCD_CursorY(0x30); printlcd(); DelayXms(1000); disascii(0x4b); DelayXms(1000); disascii(0x55); DelayXms(1000); dispat(0x55); DelayXms(1000); dispat(0xaa); DelayXms(1000); dispat(0xff); DelayXms(1000); } } RAiO TECHNOLOGY INC. 88/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 /******************************************************************************/ /* Sub Program Area */ /******************************************************************************/ /******************************************************************************/ /* Display Pattern Subroutine */ /******************************************************************************/ void dispat(unsigned char PATTERN) small { int i=0,j=0; LCD_CmdWrite(0x00); LCD_CmdWrite(0xc5); LCD_CursorX(0x00); LCD_CursorY(0x00); while(j < 240) { if((j%2) == 0) { while(i<40) { LCD_DataWrite(PATTERN); i++; } i=0; } else { while(i<40) { LCD_DataWrite(0x00); i++; } i=0; } j++; } } /******************************************************************************/ /* Display ASCII Subroutine */ /******************************************************************************/ void disascii(unsigned char ASCII) small { int i=0; LCD_CmdWrite(0x00); LCD_CmdWrite(0xcd); LCD_CursorX(0x00); LCD_CursorY(0x00); while(i < 600) { LCD_DataWrite(ASCII); i++; } } RAiO TECHNOLOGY INC. 89/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 /******************************************************************************/ /* LCD Print Subroutine */ /******************************************************************************/ unsigned char code text_table[4][5] = { 0xC8,0xF0,0xD3,0xD3,0xBF, 0xC6,0xBC,0xBC,0xB9,0xC9, 0xB7,0xDD,0xD3,0xD0,0xCF, 0xDE,0xB9,0xAB,0xCB,0xBE }; void printlcd(void) small { int i=0,j=0; unsigned char Data; while(j < 4) { for(i = 0; i < 5; i++) { Data = text_table[j][i]; LCD_DataWrite(Data); } j++; } } /******************************************************************************/ /* LCD Reset Subroutine */ /******************************************************************************/ void LCD_Reset(void) small { RST = 0; DelayXms(2); RST = 1; DelayXms(2); } /******************************************************************************/ /* LCD Function Initial Subroutine */ /******************************************************************************/ void LCD_Initial(void) small { LCD_CmdWrite(0x00);LCD_CmdWrite(0xCD); LCD_CmdWrite(0x08);LCD_CmdWrite(0x73); LCD_CmdWrite(0x10);LCD_CmdWrite(0x2F); LCD_CmdWrite(0x18);LCD_CmdWrite(0x20); LCD_CmdWrite(0x20);LCD_CmdWrite(0x27); LCD_CmdWrite(0x30);LCD_CmdWrite(0xEF); LCD_CmdWrite(0x40);LCD_CmdWrite(0x00); LCD_CmdWrite(0x50);LCD_CmdWrite(0x00); LCD_CmdWrite(0x28);LCD_CmdWrite(0x27); LCD_CmdWrite(0x38);LCD_CmdWrite(0xEF); LCD_CmdWrite(0x48);LCD_CmdWrite(0x00); LCD_CmdWrite(0x58);LCD_CmdWrite(0x00); LCD_CmdWrite(0x60);LCD_CmdWrite(0x00); LCD_CmdWrite(0x70);LCD_CmdWrite(0x00); LCD_CmdWrite(0x80);LCD_CmdWrite(0x33); LCD_CmdWrite(0x90);LCD_CmdWrite(0x0A); RAiO TECHNOLOGY INC. 90/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 LCD_CmdWrite(0xB0);LCD_CmdWrite(0x27); LCD_CmdWrite(0xB8);LCD_CmdWrite(0xEF); LCD_CmdWrite(0xA0);LCD_CmdWrite(0x08); LCD_CmdWrite(0xC0);LCD_CmdWrite(0xF0); LCD_CmdWrite(0xD0);LCD_CmdWrite(0x20); LCD_CmdWrite(0xE0);LCD_CmdWrite(0x00); LCD_CmdWrite(0xF0);LCD_CmdWrite(0xA0); } /******************************************************************************/ /* LCD Cursor Set Subroutine */ /******************************************************************************/ void LCD_CursorX(unsigned char Cursor) small { LCD_CmdWrite(0x60); LCD_CmdWrite(Cursor); } /******************************************************************************/ /* LCD Cursor Set Subroutine */ /******************************************************************************/ void LCD_CursorY(unsigned char Cursor) small { LCD_CmdWrite(0x70); LCD_CmdWrite(Cursor); } /******************************************************************************/ /* LCD Clear Screen Subroutine */ /******************************************************************************/ void LCD_Clear(void) small { unsigned char REG_TMP; LCD_CmdWrite(0xE0);LCD_CmdWrite(0x00); REG_TMP = LCD_CmdRead(0xF0); REG_TMP &= (0xF7); REG_TMP |= (0x08); LCD_CmdWrite(0xF0); LCD_CmdWrite(REG_TMP); DelayXms(1); } /******************************************************************************/ /* LCD Command Write Subroutine */ /******************************************************************************/ void LCD_CmdWrite(unsigned char Cmd_Data) small { LCD_ChkBusy(); //Call LCD_ChkBusy to Check Busy Bit LCD_Command = Cmd_Data; P3 = (0x91); EN = 1; _nop_(); EN = 0; P3 = (0x93); } RAiO TECHNOLOGY INC. 91/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 /******************************************************************************/ /* LCD Data Write Subroutine */ /******************************************************************************/ void LCD_DataWrite(unsigned char Data_Data) small { LCD_ChkBusy(); //Call LCD_ChkBusy to Check Busy Bit LCD_Data = Data_Data; P3 = (0x90); EN = 1; _nop_(); EN = 0; P3 = (0x93); } /******************************************************************************/ /* LCD Cmd Read Subroutine */ /******************************************************************************/ unsigned char LCD_CmdRead(unsigned char REG_Addr) small { unsigned char REG_READ; LCD_CmdWrite(REG_Addr); P3 = (0x93); EN = 1; _nop_(); REG_READ = LCD_Command; _nop_(); EN = 0; P3 = (0x93); return REG_READ; } /******************************************************************************/ /* LCD Data Read Subroutine */ /******************************************************************************/ unsigned char LCD_DataRead(void) small { unsigned char DATA_READ; LCD_ChkBusy(); P3 = (0x92); EN = 1; LCD_Data = DATA_READ; _nop_(); EN = 0; P3 = (0x93); return DATA_READ; } RAiO TECHNOLOGY INC. 92/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 /******************************************************************************/ /* LCD Check Busy Subroutine */ /******************************************************************************/ void LCD_ChkBusy(void) small { do { } while(BUSY == 1); } /******************************************************************************/ /* Delay Subroutine */ /******************************************************************************/ void DelayXms(int count) small { int i,j; for(i=0; i<count; i++) for(j=0; j<240; j++) _nop_(); } RAiO TECHNOLOGY INC. 93/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 附录 G. 字型与字码表(GB) RAiO TECHNOLOGY INC. 94/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 95/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 96/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 97/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 98/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 99/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 100/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 101/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 102/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 103/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 104/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 105/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 106/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 107/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 108/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 109/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 110/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 111/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 112/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 113/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 114/115 www.raio.com.tw RA8802/8820 中文文字/图形 LCD 控制器应用手册 Version 2.5 RAiO TECHNOLOGY INC. 115/115 www.raio.com.tw