EM78P468 Application Notes ELAN MICROELECTRONICS CORP. Doc. # AN468 First Edition November 2005 EM78P468 应用笔记 1 Trademark Acknowledgments IBM is a registered trademark and PS/2 is a trademark of IBM. Microsoft, MS, MS-DOS, and Windows are registered trademarks of Microsoft Corporation. Document Number: AN468 © 2001-2003 ELAN Microelectronics Corporation All Rights Reserved Printed in Taiwan, ROC, 11/2003 The contents of in this document is subject to change without notice. ELAN Microelectronics assumes no responsibility for errors that may appear in this manual. ELAN Microelectronics makes no commitment to update, or to keep current, the information contained in this manual. The software described herein is furnished under a license or nondisclosure agreement, and may be used or copied only in accordance with the terms of the agreement. ELAN Microelectronics products are not intended for use in life support appliances, devices, or systems. Use of ELAN Microelectronics products in such applications are not supported and are prohibited. ELAN MICROELECTRONICS CORPORATION Headquarters: Hong Kong Office: No. 12, Innovation Road 1 Science-based Industrial Park Hsinchu, Taiwan, R.O.C. 30077 Tel: +886 3 563-9977 Fax: +886 3 563-9966 http://www.emc.com.tw Elan (HK) Microelectronics Elan Information Technology Corporation, Ltd. Group Elan Microelectronics (Europe) Rm. 1005B, 10/F Empire Centre 68 Mody Road, Tsimshatsui Kowloon , HONG KONG Tel: +852 2723-3376 Fax: +852 2723-7780 http://www.elanhk.com.hk Corp.Shenzhen Office: P.O. BOX 601, CUPERTINO, CA. 95015, USA Tel: +1 048 366-8225 Fax: +1 048 366-8225 Shanghai Office: Elan (Shenzhen) Microelectronics Elan Electronics Corporation, Ltd. Corporation, Ltd. Siewerdtstrasse 105,8050 Zurich SSMEC Bldg. 3F, Gaoxin S. Ave. Tel: 41-43-2994060 1st, South Area, Shenzhen Fax: 41-43-2994079 High-tech Industrial Park., http://www.elan-europe.com Shenzhen Tel: +86 755 26010565 Fax: +86 755 26010500 EM78P468 应用笔记 USA Office: (Shanghai) 23/Bldg. 115, Lane 572, Bibo Road Zhangliang Hi-Tech Park Shanghai, CHINA Tel: +86 021 5080-3866 Fax: +86 021 5080-4600 2 目 录 一、液晶工作参数设置………………………………………………………………………… 1 二、编程注意事项……..………………………………………………………………………… 1 三、LCD 显示 demo 程序和使用说明…………………………………………………………… 1 LCD 显示 一、液晶工作参数设置 在用液晶显示前,首先要对 LCD 进行初始化设置。液晶初始化的各个参数控制主要通过 LCD 控制寄存器 R9 来设置,它的相关位定义如下: LCD 控制寄存器 R9 BIT 7 6 5 4 3 2 1 0 SYMBOL BS DS1 DS0 LCDEN -- LCDTYPE LCDF1 LCDF0 BIT1、BIT 0(LCDF1、LCDF0):LCD 帧频率控制位,一般设置为 “1 1” BIT2(LCDTYPE):LCD 驱动波形选择 0:A 类波形 1:B 类波形 一般设置为 0,即 A 类波形 BIT4(LCDEN): LCD 使能控制位 0:LCD 禁止 1:LCD 使能 BIT6、BIT5(DS1、DS0) :duty 选择位 DS1 DS0 duty 0 0 1/2 0 1 1/3 1 x 1/4 BIT7(BS):bias 选择位 0:1/2 bias 1:1/3 bias 二、编程注意事项 在编写液晶显示模块程序时,还要注意以下事项: 1) duty 和 bias 根据液晶的实际参数来设置,显示的地址和数据分别通过寄存器 RA 和 RB 来控制,还要特别注意液晶的工作电压,以免造成鬼影等不正常现象。 2) 在编写显示部分程序时,应做到整屏刷新,以避免干扰。 三、LCD 显示 demo 程序和使用说明 1.demo 程序 Lcd 的 demo 程序分为 2 部分:lcd 初始化部分和 lcd 显示部分。 ;================================================ EM78P468 应用笔记 1 ;=========== lcd init sub ====================== lcd_init: mov a,@0x00 ;p7.0-p7.3 as seg16-seg19 iow ioc50 mov a,@0x00 ;ra=0 mov lcd_address,a bc lcd_control,lcden ;disable lcd bs lcd_control,lcdf1 ;frame frequency=70.6hz bs lcd_control,lcdf0 bc lcd_control,lcd_type ;a type bs lcd_control,bias_select ;1/3bias bc clock_control,bf0 bc clock_control,bf1 bs lcd_control,ds0 ;1/4duty bs lcd_control,ds1 ret ;================================================ ;=========== lcd display macro =================== ;================================================ lcd_display macro bank_lcd,lcd_data_head,lcd_data_num bank bank_lcd mov a,@lcd_data_num mov lcd_data_head,a mov a,@0 mov lcd_address,a mov a,@lcd_data_head+1 mov r4,a bank bank_lcd $display_next: mov a,r0 ;get data mov lcd_data,a inc lcd_address swapa r0 mov lcd_data,a inc lcd_address inc r4 djz lcd_data_head jmp $display_next EM78P468 应用笔记 2 bs nop endm lcd_control,lcden ;enable lcd 2.使用说明 由于 lcd 有各种各样的规格,所以对初始化部分不便于写成宏定义,以子程序方式 给出。用户在使用时,只要按照这个流程对 lcd 的参数进行设置即可。Lcd 显示部分用 宏定义的方式给出。 宏定义的相关参数说明如下: bank_lcd:lcd 显示缓冲区数据所在寄存器区,即所在 bank 区 lcd_data_head:临时寄存器,暂存 lcd 显示缓冲区字节个数 lcd_data_head+1:lcd 显示缓冲区首地址(递增顺序),高低半字节均有效 lcd_data_num:lcd 显示缓冲区字节个数 在使用时要注意以下几点 1) 使用 lcd 初始化程序时,要注意该子程序所在页,如果调用位置和它不是同一页, 要加 page 指令进行页选。 2) lcd 显示宏定义程序可以放在程序的任何部分,也可以放在和主程序的同一目录 下,在主程序中用 include 指令包含进来。 3) lcd 显示宏定义程序可以直接调用,但要注意显示缓冲区数据的存放地址是 lcd_data_head+1,而不是 lcd_data_head,这点在对显示缓冲区数值进行更新时 要特别注意,否则显示会出错。 以下为 lcd 初始化子程序和 lcd 显示宏定义程序在程序中的使用,lcd 初始化子程序和 主程序在同一页面内,宏定义程序放在主程序中。 ;================================================ ;=========== 主程序 ============================ ;================================================ start: ; . ; . ; . call lcd_init ; . ; . ; . main: ; . ; . ; . EM78P468 应用笔记 3 lcd_display ; ; ; ;use lcd display macro . . . jmp main end EM78P468 应用笔记 4