第20章  底层配置 
 
在目标系统上使用µC/GUI 之前,需要为你的应用配置软件。配置指的的是配置(头)文
件的修改,这些文件通常位于(子)目录“Config”中。我们尽可能使配置保持简单些,但
有一些配置宏(在文件 LCDConf.h 中)是需要的,这是为了使系统能正确工作。包括: 
LCD 宏,定义显示屏的尺寸及可选择功能(例如镜像等等)。 
LCD 控制宏,定义如何访问你使用的控制器。
µC/GUI 中文手册 
第 1 页 
第 20 章  低层次配置 
20.1  可用的配置宏 
下表列出了可供µC/GUI 的底层配置使用的宏: 
类型 
宏 
默认值 
说明 
通用(必需的)配置 
S 
N 
S 
N 
N 
LCD_CONTROLLER 
LCD_BITSPERPIXEL 
LCD_FIXEDPALETTE 
LCD_XSIZE 
LCD_YSIZE 
--- 
--- 
--- 
--- 
--- 
选择 LCD 控制器。 
指定每像素的位。 
定 义 颜 色 查 询 表 ( 则 必 须 定 义
LCD_PHYSCOLORS)。 
定义 LCD 的水平分辨率。 
定义 LCD 的垂直分辨率。 
初始化控制器 
F 
LCD_INIT_控制器() 
--- 
LCD 控制器初始化顺序。不适用于所有控制器。
B 
B 
B 
N 
N 
N 
N 
LCD_MIRROR_X 
LCD_MIRROR_Y 
LCD_SWAP_XY 
LCD_VXSIZE 
LCD_VYSIZE 
LCD_XORG 
LCD_YORG 
N 
LCD_MAX_LOG_COLORS 
A 
LCD_PHYSCOLORS 
B 
LCD_PHYSCOLORS_IN_RAM 
LCD_REVERSE 
LCD_SWAP_RB 
LCD_XMAG 
LCD_YMAG 
显示方向 
0 
0 
0 
激活 X 轴镜象。 
激活 Y 轴镜象。 
行转换成列,列转换成行(XY 轴交换)。 
LCD_XSIZE 虚拟显示的水平分辨率。不适用于所有驱动器。
LCD_YSIZE 虚拟显示的垂直分辨率。不适用于所有驱动器。
0 
0 
LCD controller :最左边(最小的)X 坐标。
LCD controller :最顶端(最小的)Y 坐标。 
颜色配置 
256 
--- 
0 
0 
0 
在一幅位图中驱动器能支持的逻辑颜色的最大数
量。 
定 义 颜 色 查 询 表 的 内 容 。 只 有 在
LCD_FIXEDPALETTE 被设置为 0 时才需要。 
只有定义了物理颜色的情况下才相应有效。把物
理颜色放入 RAM 中,使它们在运行时可以修改。 
激活在编译时的反转显示。 
激活红、蓝基色的交换。 
LCD 的放大 
1 
1 
LCD 的水平方向放大系数。 
LCD 的垂直方向放大系数。 
简单的总线接口配置 
B 
B 
N 
N 
F 
F 
F 
F 
F 
F 
F 
F 
LCD_READ_A0(Result) 
LCD_READ_A1(Result) 
LCD_WRITE_A0(Byte) 
LCD_WRITE_A1(Byte) 
LCD_WRITEM_A1 
--- 
--- 
--- 
--- 
--- 
址址线为低电平,从 LCD 控制器读一个字节。
址址线为高电平,从 LCD 控制器读一个字节。 
址址线为低电平,向 LCD 控制器写一个字节。 
址址线为高电平,向 LCD 控制器写一个字节。 
址址线为高电平,向 LCD 控制器写入多个字节。
完整总线接口配置 
LCD_READ_MEM(Index) 
LCD_READ_REG(Index) 
LCD_WRITE_MEM(Index, Data) 
--- 
--- 
--- 
读取控制器图像存储器的内容。 
读取控制器一个配置寄存器的内容。 
向控制器图像存储器(显示数据 RAM)写入内容。
第 2 页 
µC/GUI 中文手册 
第 20 章  低层次配置  
F 
S 
LCD_WRITE_REG(Index, Data) 
LCD_BUSWIDTH 
F 
LCD_ENABLE_REG_ACCESS 
--- 
16 
--- 
F 
LCD_ENABLE_MEM_ACCESS 
--- 
B 
LCD_SWAP_BYTE_ORDER 
0 
向控制器配置寄存器写入内容。 
选择 LCD 控制器/CPU 的接口的总线宽度(8/16)。
切换 M/R 信号进行寄存器访问。并不适用于所有
的控制器。 
切换 M/R 信号进行存储器访问。并不适用于所有
的控制器。 
在使用一个 16 位总线接口时,激活在 CPU 和
LCD 控制器之间的端模式的反转(高低字节交
换)。 
LCD 控制器配置:公共极(行)/段(列)连线 
N 
N 
N 
N 
LCD_XORG 
LCD_YORG 
LCD_FIRSTSEG 
LCD_LASTSEG 
0 
LCD controller :最左边(最小的)X 坐标 
LCD controller :最顶端(最小的)Y 坐标 
LCD controller :使用的第 1 段(列)连线。
LCD_XSIZE-1 LCD controller :使用的最后 1 段(列)连线。
0 
0 
N 
LCD_FIRSTCOM 
0 
N 
LCD_LASTCOM 
LCD_YSIZE-1
LCD controller :使用的第 1 个公共极(行)
连线。 
LCD controller :使用的最后 1 个公共极(行)
连线。 
A 
A 
LCD_LUT_COM 
LCD_LUT_SEG 
N 
LCD_NUM_CONTROLLERS 
B 
LCD_CACHE 
B 
LCD_USE_BITBLT 
COM/SEG(公共极/段) 查询表 
--- 
--- 
控制器 COM 查询表. 
控制器 SEG 查询表. 
杂项 
1 
1 
1 
使用的 LCD 控制器的数量。 
停用以禁止显示数据高速缓存使用,使驱动器的
速度慢下来。并不适用于所有的控制器。 
停用以禁止 BitBLT 引擎,如果设为 1,驱动器将
使用所有有效的硬件加速度。 
激 活 以 启 用 驱 动 器 API 函 数
B 
LCD_SUPPORT_CACHECONTROL 
0 
LCD_L0_ControlCache() 的高速缓存控制功能。
并不适用于所有的控制器。 
使用 CPU 作为控制器时,为显示 pane 0 而用于
ISR 的计时值。 
使用 CPU 作为控制器时,为显示 pane 1 而用于
ISR 的计时值。 
打开 LCD 的函数替换宏。 
切断 LCD 的函数替换宏。 
--- 
--- 
--- 
--- 
N 
LCD_TIMERINIT0 
N 
LCDTIMERINIT1 
F 
F 
LCD_ON 
LCD_OFF 
如何配置  LCD。 
我们推荐使用下面的操作步骤: 
1.  对有相似配置的配置文件进行拷贝,我们要对拷贝的文件进行编辑。在目录 Sample\ 
LCDConf\ xxx 中有几个特定 LCD 控制器的配置范例,其中“xxx”是你的 LCD 驱动
µC/GUI 中文手册 
第 3 页 
第 20 章  低层次配置 
器。 
2.  通过定义简单总线或完全总线宏来配置总线接口。 
3.  定义你的 LCD 尺寸(LCD_XSIZE, LCD_YSIZE)。 
4.  选择你的系统使用的控制器,同时选择合适的 bpp 和调色板模式(LCD_CONTROLLER,
LCD_BITSPERPIXEL,LCD_FIXEDPALETTE)。 
5.  如果需要,配置所使用的 公共极(行)/段(列)连线。lines。 
6.  测试系统。 
7.  如果有需要,进行 X/Y 轴反转(LCD_REVERSE);返回第 6 步。 
8.  如果有需要,进行 X/Y 轴镜象(LCD_MIRROR_X, LCD_MIRROR_Y);返回第 6 步。 
9.  检查所有其它配置开关。 
10. 删除配置中未使用的部分。 
20.2  通用(必需的)配置 
LCD_CONTROLLER 
描述 
定义使用的 LCD 控制器。 
类型 
选择开关。 
附加信息 
使用的 LCD 控制器通过适当的数字指定。请参阅第 22 章:“LCD 驱动”以获得更多可用
选项的信息。 
范例 
指定一个 Epson SED1565 控制器: 
#define LCD_controller 1565  
/* 选择 SED1565 LCD 控制器 */ 
LCD_BITSPERPIXEL 
描述 
第 4 页 
µC/GUI 中文手册 
第 20 章  低层次配置  
指定每像素的位的数量。 
类型 
数值。 
LCD_FIXEDPALETTE 
描述 
指定固定调色板模式。 
类型 
选择开关。 
附加信息 
将 数 值 设 置 为   0  表 示 使 用 一 个 颜 色 查 询 表 而 不 是 一 个 固 定 设 色 板 模 式 。 这 样 
LCD_PHYSCOLORS 宏必须定义。 
LCD_XSIZE; LCD_YSIZE 
描述 
(分别)定义所用显示屏水平和垂直的分辨率。 
类型 
数值。 
附加信息 
数值是逻辑尺寸;X 轴方向指定了所有 LCD 驱动函数的 X 轴方向。通常 X 轴尺寸等于段(列)
的数量。 
µC/GUI 中文手册 
第 5 页 
第 20 章  低层次配置 
20.3  初始化控制器 
LCD_INIT_CONTROLLER() 
描述 
初始化 LCD 控制器。 
类型 
函数替换。 
附加信息 
该 宏 必 须 被 用 户 定 义 以 初 始 化 一 些 控 制 器 。 它 在 驱 动 函 数 LCD_L0_Init()  和 
LCD_L0_Reinit()之间执行。请参考你的控制器的资料手册以获得如何初始化你的硬件设备的
更多信息。 
范例 
下面的范例测试一个 Epson SED1565 控制器,它使用一个内部电源调整器。 
#define LCD_INIT_CONTROLLER()  
\LCD_WRITE_A0(0xe2);   /* 内部复位 */  
\LCD_WRITE_A0(0xae);   /* 显示开/关:关 */  
\LCD_WRITE_A0(0xac);   /* Power save 开始:static indicator off */  
\LCD_WRITE_A0(0xa2);   /* LCD 偏置选择:1/9 */  
\LCD_WRITE_A0(0xa0); 
/* ADC 选择:正常 */  
\LCD_WRITE_A0(0xc0);   /* 公共模式:正常 */  
\LCD_WRITE_A0(0x27);   /* 5V 电压调节器:中 */  
\LCD_WRITE_A0(0x81);   /* 进入电子音量模式 */  
\LCD_WRITE_A0(0x13);   /* 电子音量:中 */  
\LCD_WRITE_A0(0xad);   /* Power save 结束:static indicator on */  
\LCD_WRITE_A0(0x03);   /* static indicator 寄存器设置:开(常开)*/  
\LCD_WRITE_A0(0x2F);   /* 电源控制设置:升压器,调节器及跟随器关闭 */  
\LCD_WRITE_A0(0x40);   /* 显示开始行 */  
\LCD_WRITE_A0(0xB0);   /* 显示地址 0 页 */  
\LCD_WRITE_A0(0x10);   /* 显示列地址 MSB */  
第 6 页 
µC/GUI 中文手册 
第 20 章  低层次配置  
\LCD_WRITE_A0(0x00);   /* 显示列地址 LSB */  
\LCD_WRITE_A0(0xaf);   /* 显示 开/关:开 */  
\LCD_WRITE_A0(0xe3);   /* 空命令 
20.4  显示方向 
LCD_MIRROR_X   
描述 
反转显示屏的 X 方向(水平)。 
类型 
二进制开关 
0:禁止,X 轴方向未镜像(默认);1:激活,X 轴方向镜像。 
附加信息 
如果激活:X -> LCD_XSIZE-1-X。 
该宏与 LCD_MIRROR_Y 和 LCD_SWAP_XY 结合,能用于对显示屏任何方向的支持。在改变
这个配置开关之前,确认 LCD_SWAP_XY 设为你的应用所需要的值。 
LCD_MIRROR_Y   
描述 
反转显示屏的 Y 方向(垂直)。 
类型 
二进制开关 
0:禁止,Y 轴方向未镜像(默认);1:激活,Y 轴方向镜像。 
附加信息 
µC/GUI 中文手册 
第 7 页 
第 20 章  低层次配置 
如果激活:Y -> LCD_YSIZE-1-Y。 
该宏与 LCD_MIRROR_X 和 LCD_SWAP_XY 结合,能用于对显示屏任何方向的支持。在改变
这个配置开关之前,确认 LCD_SWAP_XY 设为你的应用所需要的值。 
LCD_SWAP_XY   
描述 
交换显示屏水平和垂直的方向。 
类型 
二进制开关 
0:禁止,X-Y 未交换(默认);1:激活,X-Y 交换。 
附加信息 
如果设为 0(没有交换),SEG 连线作为列,COM 连线作为行。如果激活:X -> Y。 
修改这个开关时,你也必须交换显示屏分辨率 X-Y 设置(使用 LCD_XSIZE 和 LCD_YSIZE)。 
LCD_VXSIZE; LCD_VYSIZE 
描述 
定义虚拟显示的水平和垂直分辨率。 
类型 
数值。 
附加信息 
数值是逻辑尺寸;X 方向指定所有 LCD 驱动函数使用的 X 方向。 
如果没有使用虚拟显示器,这些数值应该与 LCD_XSIZE,LCD_YSIZE(这些默认设置)一
样。 
第 8 页 
µC/GUI 中文手册