当前位置:首页 >> 信息与通信 >>

WGM


电子工程师             计 算 机 应 用         V ol . 29

N o. 7   2003

1    引 言

在当前数字信息技术和网络技术高速发展的时 代 ,嵌入式系统已经广泛地渗透到科学研究 、 工业控 制、 军事技术 、 仪器仪表 、 通讯等方面 。嵌入式系统融 合了计算机软硬件技术 、 通讯技术和半导体微电子技 术 ,根据应用要求 ,把相应的微处理器直接嵌入到应用 系统中 。同时 ,随着嵌入式系统越来越广泛的应用 ,嵌 入式系统中人机界面的实现就显得十分重要 。点阵液 晶显示模块满足了嵌入式系统的显示要求 , 可以根据 用户需要显示汉字和字符 , 也可以显示基于点阵的图 形 ,同时还具有低压 、 微功耗等优点 , 因而被广泛应用 于嵌入式系统中 。

2  uClinux 嵌入式系统

uClinux 是针对控制领域的嵌入式 Linux 操作系 统 ,从 Linux2. 0/ 2. 4 内核派生而来 ,沿袭了主流 Linux 的绝大部分特性 , 适合不具备内存管理单元 ( MMU ) 的微处理器 。没有 MMU 支持是 uClinux 和 Linux 的 基本差异 。uClinux 采用存储器分页管理 ,系统启动时 把实际存储器分页 , 在加载应用程序时分页加载 。但 由于没有 MMU 管理 , 所以实际上 uClinux 采用了实 存储器策略 。uClinux 对内存的访问是直接的 ,所有程

序访问的地址都是实际的物理地址 。操作系统对内存 空间没有保护 , 各个进程实际上共享一个运行空间 。 一个进程在运行前 , 系统必须为进程分配足够的连续 地址空间 ,然后全部载入到主存储器连续空间中 。 最小的嵌入式 uClinux 系统仅需 3 个基本元素 : 内核引导实用程序 、 uClinux 微内核 ( 它由内存管理 、 进
Ξ 收稿日期 :2003205208

?10 ?

【摘     要】 介绍了 uClinux 嵌入式操作系统 ,并根据 W GM212864C 点阵液晶显示模块的特点 ,论 述了点阵液晶显示的编程方法 ,同时说明了在嵌入式操作系统中液晶显示模块的具体实现过程 。 关键词 :uClinux , 嵌入式操作系统 , W GM212864C , 液晶显示 【Abstract】 In t his paper , t he embedded system of uClinux is int roduced , t he programming met hod   of L CD is given according to t he characteristics of W GM212864C , and t he detailed implementation of t he L CD in embedded system is presented. Keywords : uClinux , embedded system , W GM212864C , L CD
? 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.

The Application of LCD WGM212864C in Embedded System
龚   1 ,2 , 吴   1 ,2 , 刘维亚1 , 王遵立1 彬 平 ( 1. 中国科学院长春光学精密机械与物理研究所   吉林长春 130022 ; 2. 中国科学院研究生院   北京 100039)
3  WGM212864C 液晶显示模块
http://www.cnki.net

WGM212864C 液晶显示模块 Ξ

在嵌入式系统中的应用

程管理和定时服务构成 ) 、 初始化过程 。同时根据需 要添加 : 硬件驱动程序 、 一个或多个应用进程 ( 以提供 所需功能 ) 、 一个文件系统 ( 可能是在 ROM 或者是 RAM 里 ) 、 储存半瞬态数据和提供交换空间的磁盘 、 TCP/ IP 网络栈等 。 uClinux 的内核有两种可选的运行方式 : 在 Flash 上直接运行 ,或加载到内存中运行 ( 这种做法可以减少 内存需要) 。Flash 运行方式是 : 把内核的可执行映象 烧写到 Flash 上 ,系统启动时从 Flash 的某个地址开始 逐句执行 。这是很多嵌入式系统所采用的方法 。内核 加载方式是 : 把内核的压缩文件存放在 Flash 上 , 系统 启动时读取压缩文件在内存里解压 , 然后开始执行 。 这种 方 式 相 对 复 杂 一 些 , 但 是 运 行 速 度 可 能 更 快 ( RAM 的存取速率要比 Flash 高 ) , 同时这也是标准 Linux 系统采用的启动方式 。 uClinux 的根 ( root ) 文件系统一般采用 romf s 文件 系统 ,这种文件系统相对于一般的 ext2 文件系统要求 的空间更小 。空间的节约来自于两个方面 : 首先 ,内核 支持 romf s 文件系统比支持 ext2 文件系统需要更小的 代码 ; 其次 , romf s 文件系统相对简单 , 建立文件系统 超级块 ( superblock) 需要的存储空间更小 。romf s 文件 系统不支持动态擦写保存 , 对于系统需要动态保存的 数据采用虚拟 RAM 盘的方法进行处理 ( RAM 盘将采 用 ext2 文件系统) 。

W GM212864C 是一种图形点阵液晶显示模块 , 主 要由行驱动器 、 列驱动器及 128 × 全点阵液晶显示 64 器组成 。可以点阵方式完成图形和汉字的显示 。模块

内自带 - 10 V 负压 ,用于 L CD 的驱动 。与 CPU 接口 采用了 8 位数据总线并行输入输出和 8 条控制线 。其 引脚功能见表 1 。
引脚号 1 2 3 4 5 6 7 8 9~16 17 18 19 20

其 中 , IC3 为 行 驱 动 器 , IC1 、 为 列 驱 动 器 。 IC2 IC3 、 、 包含下列主要功能器件 , 通过这些器件 IC1 IC2 就可以对 W GM212864C 液晶显示模块进行编程 。 ( 1) 指令寄存器 ( IR) IR 用来寄存指令码 ,与数据存储器寄存数据相对 应 ,当 D/ I = 0 时 , 在 E 信号下降沿的作用下 , 指令码 写入 IR 。 ( 2) 数据寄存器 ( DR) DR 用来寄存数据 。当 D/ I = 1 时 ,在 E 信号下降 沿的作用下 ,图形显示数据写入 DR ,或者在 E 信号高 电平作用下由 DR 读到 DB0~DB7 数据总线 。 ( 3) 忙标志 (B F) B F 标志提供内部工作情况 。B F = 1 表示模块在 进行内部操作 , 此时模块不接受外部指令和数据 ;B F = 0 表示模块为准备状态 , 随时可接受外部指令和数 据。

3. 1   WGM212864C 内部硬件结构简介 W GM212864C 内部硬件结构框图如图 1 所示 。

? 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.

图 1   GM212864C 内部硬件结构框图 W

表 1   GM212864C 引脚功能 W
引脚名称 CS1 CS2 VSS VDD VO D/ I R/ W E DB0~DB7 RES V EE EL + EL -

引脚功能描述 选择芯片 1 选择芯片 2 电源地 电源电压 液晶显示器驱动电压输入 数据/ 指令信号 读写信号 使能信号 数据线 复位信号 LCD 驱动负压输出 ( - 10V) EL 背光电源 ( + 5V) EL 背光电源 ( 0V)

龚   ,等 : WGM212864C 液晶显示模块在嵌入式系统中的应用 彬

( 4) 显示控制触发器 ( DFF) DFF 用来控制液晶模块屏幕显示的开和关 。DFF = 1 为开显示 ,DDRAM 的内容就显示在屏幕上 ,DFF = 0 为关显示 。 ( 5) XY 地址计数器 XY 地址计数器是一个 9 位计数器 。高 3 位为 X 地址计数器 ,低 6 位为 Y 地址计数器 , X 地址计数器 为 DDRAM 的页指针 , Y 地址计数器为 DDRAM 的列

指针 。 ( 6) 显示数据 RAM ( DDRAM) DDRAM 用来存储点阵数据 。数据 1 为选择 , 数 据 0 为非选择 。 ( 7) Z 地址计数器 Z 地址计数器是一个 6 位计数器 , 具有循环计数 功能 ,用于显示行扫描同步 。当一行扫描完成 ,此计数 器自动加 1 。RST 复位后 Z 地址计数器位 0 。 3. 2   WGM212864C 的编程指令集 ( 1) 显示开关控制 ( D ISPLA Y ON/ OFF) ( 见表 2) 表2  显示开关控制字
代码 R/ W D/ I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 内容 0 0 0 0 1 1 1 1 1 D

D = 1 : 开显示 ( D ISPLA Y ON ) 表示显示器可以进 行各种显示操作 。 D = 0 : 关显示 ( D ISPLA Y OFF) 表示不能对显示 器进行各种显示操作 。 例如如下部分 C 语言代码所示 : 其中 W GM212864C 的数据线 DB0 ~ DB7 和单片 机 A T89C52 的 P1 口相连 ,R/ W 和 A T89C52 的 P2. 0 口相连 , W GM212864C 与 A T89C52 的硬件接口电路 如图 2 所示 。 sbit wcs1 = P2^0 ; sbit wcs2 = P2^1 ; sbit di = P2^2 ; sbit rw = P2^3 ; sbit e = P2^4 ; di = 0 ; rw = 0 ; e=1; P1 = 0x3f ;/ / 开显示 ,P1 = 0x3e 为关闭显示 。 ( 2) 设置起始行 ( SET STAR T L IN E) ( 见表 3)

表3  起始行控制字

代码 R/ W D/ I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 内容 0 0 1 1 A5 A4 A3 A2 A1 A0

A5~A0 这 6 位地址自动送入 Z 地址计数器 , 起 始行的地址可以是 0~63 的任意一行 。 ( 3) 设置页地址 ( SET PA GE X ADDRESS) ( 见表 4)

?11 ?

http://www.cnki.net

电子工程师             计 算 机 应 用         V ol . 29

N o. 7   2003

图 2   GM212864C 与 Samsuang W S3C4510 硬件接口电路 所谓页地址就是 DDRAM 的行地址 ,8 行为一列 , 模块共 8 页 ,A2~A0 表示 0~7 页 。 表4  页地址控制字
代码 R/ W D/ I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 内容 0 0 1 0 1 1 1 A2 A1 A0

( 4) 设置 Y 地址 ( SET Y ADDRESS) ( 见表 5)

表 5  Y 地址控制字

代码 R/ W D/ I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 内容 0 0 0 1 A5 A4 A3 A2 A1 A0

A5~A0 这 6 位地址自动送入 Y 地址计数器 , 作 为 DDRAM 的 Y 地址指针 ,再对 DDRAM 进行操作 。 ( 5) 读状态 ( STA TU S READ) ( 见表 6)

表6  状态控制字
ON/ RST OFF

代码 R/ W D/ I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 内容
1 0 BUSY 0 0 0 0 0

当 R/ W = 1 ,D I = 0 时 ,在 E 信号为高电平的作用 下 ,状态分别输出到数据总线 ( DB0 ~ DB7 ) 的相应位 。 RST = 1 时表示内部正在进行初始化 , 此时该器件不 接受任何指令和数据 。并且 BU S Y 为高电平时也不 接受任何指令和数据 。

嵌入式系统采用 Samsuang 的 S3C4510 芯片 , 这 是一款性价比很高的 ARM core SOC ,ARM7 TDM I 内 核 ,内置 10/ 100M Et hernet 控制器 , 特别适合于网络 应用 。另外包括 2 路 HDL C , 1 个硬件 I2 C 接口 , 8 K CACHE/ SRAM ,2 个通讯串口 ,2 个 DMA 通道 ,2 个 32 位计数器 ,中断控制器 ,DRAM/ SDRAM 控制器 ,18 个可编程 I/ O 等 。同时 ,采用 A T89C52 系列单片机对 W GM212864C 液晶显示模块进行控制 , 利用 P2. 0 ~ P2. 4 作为液晶显示的控制信号 。W GM212864C 的数 据线 DB0 ~ DB7 和 单 片 机 的 P1 口 相 连 。通 过 MAX232 实现 RS2232C 和 T TL 电 平 的 转 换 。使 用 ?12 ?

4  WGM212864C 在嵌入式系统中的实现
4. 1   硬件电路设计

S3C4510 的串口 2 和单片机进行通讯 。液晶显示的内 容通过串口通讯发送到单片机 , 然后通过单片机以及 对 W GM212864C 液晶显示模块的编程控制 ,实现用户 与嵌入式系统交互信息的显示 。硬件接口电路如图 2
http://www.cnki.net

所示 。 4. 2   软件实现 软件的主要功能是为用户提供一个良好的操作环 境 ,及时响应用户的命令 。在嵌入式系统中 , 采用 C 语言在 Linux 环境下编程 。uClinux 嵌入式操作系统 需要访问的设备类型有字符设备和块设备 ,uClinux 对 所有挂在系统上的设备都使用一个设备驱动程序 , 这 个设备驱动程序同时成为内核的一部分 。设备驱动程 序是内核和机器硬件的接口 。通过使用设备驱动程序 文件 ,设备对系统而言成了一个可寻址和重定向的普 通文件 ,挂在 uClinux 系统上的每个设备都被描述为 设备驱动程序文件 , 一些与设备有关的设备参数文件 被保存在/ dev 目录下 。用户如想添加一个新的外围 设备 ,就要编写该设备的驱动程序 。由于编写设备驱 动程序比较复杂 , 同时 uClinux 不支持内核模块的动 态加载 ,不能使用命令 insmod 插入一个模块到内核中 和使用命令 rmmod 来卸载一个模块 ,只能静态加载模 块 ,因此可以通过 uClinux 内核自带的串口驱动程序 来访问串口 ,就可以不用编写相应的驱动程序 。同时 , 通过 Linux 环境下对串行口编程来实现 uClinux 嵌入 式操作系统同用户之间的信息显示 。 单片机通过使用中断来接收数据 , 通讯参数设置 为波特率 9 600 bps ,8 个数据位 ,无奇偶校验 。显示的 汉字采用 16 × 点阵 ,字母采用 8 × 点阵 ,同时 ,采 16 16 用直接固化显示字模到 EEPROM 中 。这种方法占用 空间小 ,程序实现简单 , 显示速度快 。16 ×16 点阵汉 字显示的流程图如图 3 所示 。一个 16 × 点阵汉字 16 字模数据格式是前 16 个字节为上半部 16 × 点阵字 8 模数据 ,后 16 个字节为下半部 16 × 点阵字模数据 。 8 因此在设置页地址时 , 如果显示汉字的后 16 个字节 , 需要使页地址在当前页地址的基础上加 1 。如果需要 显示的汉字列数大于 63 ,则可以通过片选信号 CS2 来 选择 IC2 控制芯片 。对它的读写操作与 IC1 控制芯片 一样 。在设置页地址和列地址时都需要判断状态字的 情况 。 4. 3   将应用程序移植到 uCl inux 下时需要注意的问 题 ( 1) uClinux 系统存在内存管理的问题 , 没有 fork () 函数 ,而用 vfork () 代替 ,即 uClinux 系统中没有真正 的 fork ,多进程实际是使用 vfork 实现的 ,每次 fork 完 一个进程必须执行 exec ,父进程等待子进程 exec 后才 继续运行 。 (2) Clinux 所用的 Libc 库不是一个全功能的库 , 而是一个适合嵌入式应用的功能有限的库 , 对于一些 不太常用的函数可能库里没有 ,需要用户自己编写 。 ( 下转第 18 页)

? 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.

电子工程师             计 算 机 应 用         V ol . 29
CAM 的性能保持稳定 。通过观察布局布线后 的时序报告可以看出 ,CAM 的深度从 16 扩展到 1 024 , 最高时钟工作频率从 171 M Hz 下降到 168 M Hz , 性 能 下 降 不 明 显 。通 过 修 改 约 束 、 floorplan 工具来控制资源分布 、 增加流水等手 段 ,性能还可以有所提升 。虽然该 CAM 能工作 在 100 M Hz 以上的较高频率 , 但进行一次查询 最多需要 16 个地址的轮寻查找 , 再加上 RAM 输入 地 址 到 输 出 数 据 1 个 时 钟 周 期 的 延 时 , 以 及 去 毛 刺 寄 存 器 产 生 Hit - reg 信 号 的 1 个时钟周期的延时 ,最坏的情况需要 18 个时钟周期来 完成一次查找 。对于某些应用 , 这样长的查询周期可 能难以接受 , 但是如果采用合适的方法提高 CAM 的 利用率 ,就可以满足大多数的需求 。比如在 A TM 应 用中 ,可以采用双队列分离 A TM header 和 Payload 的 方法对 A TM header 进行预处理来提高 CAM 的利用

N o. 7   2003

图 6   × bit CAM 的完整结构 256 28
FP GA 收到 A TM cell 时 ,将 header 和 Pay2load 分别进 入两个并列的队列 。这样 , 就可以在搬移一个 A TM Cell payload 部分的时候 ,同时完成对 header 队列中下 一个 A TM Cell header 的预处理 。假设使用这种方式 构造的 CAM 工作频率为 100 M Hz , A TM Cell 也以 100 M Hz 、 位并行总线模式进入 FP GA ,则 FP GA 对 16 A TM 处理流量能够达到 1. 6 Gbit/ s 。

率。 A TM Cell 由 5 个字节的 header 和 48 字节的 pay2 load 组成 。需要查 CAM 表的信息只存在 header 部 分 。通常的方法是从 A TM cell 队列中先取出 header 进行分析 ,查 CAM 表 ,分析完后再将数据部分向目的 端口搬移 。当对 A TM Cell 的 payload 部分进行搬移 时 ,CAM 一直处于空闲状态 。我们假设存放 payload 的队列数据宽度为 16 bit , 那么从 payload 队列取 48 字节使用的时间是 24 个时钟周期 ,也就是说 ,CAM 工 作一次后有 24 个时钟周期都是处于空闲状态 。如果 能在搬移 A TM payload 的同时进行 CAM 的查询工 作 ,无疑将大大提高 CAM 表的使用效率 。双队列分 离 A TM header 和 Payload 的方法就是在实现搬移数 据的同时进行 CAM 表查询工作的一种方法 。所谓 双 队 列 分 离 A TM header 和 Payload 的 方 法 就 是 在
( 上接第 12 页)

5  结束语

这种利用 FP GA 内部分布式小块 RAM 来构造的 CAM 表 ,具有 1 个时钟周期完成数据写入 ,18 个时钟 周期完成一次查询的特性 。通过这种方法 , 可实现在 单片 FP GA 中构造较大规模的 CAM 表 。该 CAM 表 扩展性强 、 工作时钟频率高 , 深度扩展时性能保持稳 定 。在 A TM 应 用 中 , 配 合 使 用 双 队 列 分 离 A TM header 和 Payload 的方法对 A TM header 进行预处理 , 可以有效实现对大流量 A TM cell 的处理 。 该 CAM 表 已 经 成 功 应 用 于 使 用 FP GA 实 现 IPOA ( IP Over A TM ) 的系统中 , 并获得了预期的效 果。 该设计参考了 Xilinx 公司的有关设计资料 。 ■

植应用程序与在标准 Linux 环境下的编程方法是一样 的。

5  结束语

本文应用单片机组成点阵液晶显示模块的控制操 作的设计方法实现了在嵌入式系统中实时显示用户与 嵌入式系统的交互信息 。这种方法避免了 uClinux 下 复杂驱动程序的编写 , 减轻了软件编程的负担 , 同时 , 液晶显示的低功耗特点使其在嵌入式系统中得到了广 泛应用 。
参      考 文 献

图3  汉字显示流程图

  ( 3) 除以上限制需要注意外 , 在 uClinux 编程和移 ?18 ?

? 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.

1  周思轶 . 嵌入式 Linux 的设计与应用 . 北京 : 清华大学出版 社 ,2002 2     . MCS251 系列单片机实用接口技术 . 北京 : 北京航 李 华 空航天大学出版社 ,1993 3  余华芳 ,刘   . 单片机与液晶显示模块的软硬件接口技 健 术 . 液晶显示 , 2003 , ( 3) :125~128  ■

http://www.cnki.net


相关文章:
Windchill10.1安装指导_图文
\ Catia5Builder 查找 uwgm_client.i486_nt.cv5absR19.zip 然后解压至 D:\ptc\wgm\i486_nt\obj 文件夹下面然后重试 此时我们将会在桌面上看到新生产的快捷...
(精)atmega16寄存器笔记整理
1. 定时器0 以及定时器共同相关寄存器 (1)T/C 控制寄存器TCCR0 (主要作用:确定工作模式) bit7 FOC0 bit6 WGM00 bit5 COM01 bit4 COM00 bit3 WGM01 ...
铁路工程冬季施工方案
① 混凝土拌合物的温度公式: T0=[0.9(mceTce+msaTsa+mgTg)+4.2Tw(mw-wsamsa-wgmg)+c1(wsamsaTsa+wgmgTg)-c2(wsa msa+wgmg)]÷[4.2 +0.9(mce+msa+...
实验一 LCD实验
WGM12864H 操作指令 (1) 显示开关控制。 R/W 0 D/I 0 DB7 0 DB6 0 DB5 1 DB4 1 DB3 1 DB2 1 DB1 1 DB0 D 此命令用于控制液晶显示器开关。 D...
即插即用型Wi-Fi模块解决方案
SiliconLabs 全集成 WizardGecko WGM110 模块解决方案包 括了实现可靠 IoT Wi-Fi 连接所需的所有必要元素:高性能 2.4GHz802.11 b/g/n 无线电、 内置天线、 ...
Windchill与CAD14集成步骤
⑥ 如果同时安装了 XT60,请打开\CAD14\ SUPPORT\ acad.lsp 拷贝“(arxload "D:/WGMClient/autocad/wtacad.arx")”到 \XT60\SPT\Acad.lsp 中,并保存。 PDM...
WGM答问
十分感谢 wgm 同志的热心帮助,您的意思是我的理解是: 第一.两个恒压泵都是由一个负载来决定恒定压力对吧.就是说在分别调节泵出口压力为一定值时,实际工作时...
点阵手写屏_图文
(WGM21) | _BV(WGM20); TCCR2B = _BV(WGM22) | _BV(CS20); //不分频 OCR2A = 100; OCR2B = 99; //占空比为 99% attachInterrupt(0, extern...
AVR 代码练习
(001) 模式 4:WGM[13:10]=(0100) TCCR1A = 0x50; OCR1A = 499 ; //这里是 10 进制数 } void main() { InitTct(); //不需要 while(1)的循环,...
微生物和洁净作业知识考试试题答案
网络营销部电商运营工作计划文档贡献者 wgmfy 贡献于2015-01-29 相关文档推荐 暂无相关推荐文档 ©2015 Baidu 使用百度前必读 | 文库协议 | 网站地图...
更多相关标签: