1
基于串行基于串行基于串行基于串行 FlashFlashFlashFlash 存储器的点阵字库的设计存储器的点阵字库的设计存储器的点阵字库的设计存储器的点阵字库的设计
作者:常国权,魏胜利,沈晓伟
计算机科学与信息工程系
安阳工学院
摘要摘要摘要摘要:本文介绍了一种以串行 DataFlash 存储器 W25X80 来设计嵌入式系统中硬件点阵
字库的方法,把用到的汉字点阵库写在串行存储器中。该方法简便易行、操作灵活、成
本低廉,可以为嵌入式系统中没有字库的 LCD 提供一种有效而灵活的解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
。
关键词关键词关键词关键词:W25X80 点阵字库 LCD 模块
中图分类号中图分类号中图分类号中图分类号:TP 368.2 文献标识码:B
DotDotDotDot----matrix font design based on tmatrix font design based on tmatrix font design based on tmatrix font design based on the serialhe serialhe serialhe serial Flash memoryFlash memoryFlash memoryFlash memory
(Department of Computer Engineering, Anyang Institute of Technology, Anyang
455000)
ChanGguoquan,WeiShengli,ShenXiaowei
AbstractAbstractAbstractAbstract: This paper introduces a method to design hardware character dot-matrix
font in the embedded systems based on the serial DataFlash memory W25X80, the
Chinese characters dot-matrix library can be written into the serial Flash memory
for use. This method is simple, flexible and low-cost, which can be provided
an effective and flexible solution for the LCD without font in the embedded
systems.
KeywordsKeywordsKeywordsKeywords: W25X80 dot-matrix font LCD module
1111、、、、引言引言引言引言
液晶 LCD 具有功耗低、体积小、重量轻、超薄等许多优点,现已被广泛应用到智能仪器、
仪
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
、自动控制等嵌入式系统中,作为人机交互时信息输出的重要手段。常用的液晶 LCD
可分为点阵字符、数字液晶 LCD 和点阵图形液晶 LCD,尤其是图形点阵式 LCD 不仅可以
显示字符、数字,还可以显示各种图形、曲线及汉字等,操作界面显示直观、友好,越
来越成为嵌入式设计中的首选。图形点阵式 LCD 显示的点阵信息一般存储在字库或图形
库中,但是自带点阵字库的 LCD 显示模块一般价格较高,而且不带点阵字库的 LCD 显示
模块应用又比较广泛,基于以上原因,本文采用低价位的串行存储器 W25X80 来自行设
计嵌入式系统中点阵字库、图形库。
2222、、、、系统设计系统设计系统设计系统设计
汉字点阵字库可以使用现成的字库文件(该字库文件很容易找到,如 UCDOS 软件包中有
www.eetchina.com
2
一个名字为 HZKl6 的文件,即为 16×16 的国标汉字点阵文件)也可以用字库生成软件
自行设计,本设计采用了后一种方法,该方法使用起来比较灵活。有了字库文件之后,
下一步就是按照顺序把字库文件写入到串行存储器 W25X80 的地址单元中。为了把字库
文件写入到存储器中,本设计采用 STC89C52 单片机作为主控制器,主要进行 DataFlash
的擦除、控制、点阵字库的写入、读出和测试等操作;用不带字库的液晶模块 OCM12864
作为测试和显示结果的模块;串行 DataFlash 存储器采用的是 WINBOND 公司生产的
W25X80,并外扩了 MAX232 作为系统和 PC 机通信的通道。汉字库系统设计的原理图如图
1 所示。
1
2
3
J3
POWER IN
TTL_TX
TTL_RX
C10 1uF
C7
1uF
C9 1uF
C11 1uF
C1+ 1
V+2
C1- 3C2+4
C2-5
V-6
T2out7
R2in8 R2out 9
T2in 10
T1in 11
R1out 12R1in13
T1out14
GND 15
VCC 16
U3 MAX232
P1.01
P1.12
P1.23
P1.34
P1.45
P1.56
RST9
P3.0/RXD10
P3.1/TXD11
P3.2/INT012
P3.3/INT13
P3.4/T014
P3.5/T115
P3.6/WR16
P3.7/RD17
XTAL119
P2.0/A8 21
P2.1/A9 22
P2.2/A10 23
P2.3/A11 24
P2.4/A12 25
P2.5/A13 26
P2.6/A14 27
P2.7/A15 28
PSEN 29
ALE 30
EA 31
P0.7/AD7 32
P0.6/AD6 33
P0.5/AD5 34
P0.4/AD4 35
P0.3/AD3 36
P0.2/AD2 37
P0.1/AD1 38
P0.0/AD0 39
XTAL218
VCC 40
VSS20
P1.67
P1.78
U1
STC89C52
C1
4.7uF
R1
10K
VCC
Y1
11.0592MHz
C3
22pF
C4
22pF
S1
VCC
VCC
5
9
4
8
3
7
2
6
1
J1
DB9
TTL_TX
TTL_RX
L1
2.2uH
R3
330
VCC
D2
1N4007
C5
100uF
C6
0.1uF
C8
10uF
VCC
C2
10uF
RS232TX
RS232RX
D0
LED
VCCVCC
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.1
P2.2
P2.3
P2.4
P2.5
CS
P2.0
V
SS
1
V
D
D
2
V
O
3
D
/I
4
R
/W
5
E
6
D
B0
7
D
B1
8
D
B2
9
D
B3
10
D
B4
11
D
B5
12
D
B6
13
D
B7
14
C
S1
15
C
S2
16
R
ET
17
V
EE
18
L
ED
+
19
L
ED
-
20
J2 LCD
P2
.
1
P2
.
2
P2
.
5
P2
.
4
P2
.
3
P1
.
7
P1
.
6
P1
.
5
P1
.
4
P1
.
3
P1
.
2
P1
.
1
P1
.
0
P2
.
0
VOUT2 VIN 3
G
N
D
1
U4 REG-1117
C5
10uF
C6
10uF
VCC
R2 10K
CS1
DO2
WP3
GND4
VCC 8
HOLD 7
CLK 6
DIO 5
U2
W25X80A
DO
WP
HOLD
CLK
DIO
CS
WP
HOLD
CLK
DO
DIO
图 1 系统设计的原理图
3333、、、、点阵点阵点阵点阵汉字的显示原理汉字的显示原理汉字的显示原理汉字的显示原理
在国标 GB2312 中规定,所有的国标汉字及符号分配在一个 94 行、94 列的方阵中,方阵
的每一行称为一个“区”,编号为 01 区到 94 区,每一列称为一个“位”,编号为 01 位
到 94 位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯
数字就是它们的“区位码”。区位码的前两位是它的区号,后两位是它的位号。用区位
码就可以唯一地确定一个汉字或符号。
汉字一般是以点阵式存储的,如 16×16、24×24 点阵,汉字的字模其实是汉字字形的
图形化,所谓 16 点阵字模,就是把汉字写在一个 16×16 的网格内,汉字的笔划通过某
网格时该网格就对应 1,否则该网络对应 0,这样,每一网络均对应 1 或 0,并且规定其
点阵中二进制位 0 为白点,1 为黑点,把对应 1 的网格连起来看,就是这个汉字。这样
一个16×16点阵的汉字需要用2×16即 32个字节来存放,构成它在字库中的字模信息。
如“啊”字的字模构成如图 2 所示。
www.eetchina.com
3
图 2 字模构成示意图
汉字就是这样通过字节表示其点阵存储在字符字库中的,为了方便查找所需汉字的点
阵,每个汉字都与一个双字节的内码一一对应,通过汉字的内码可以计算出它的点阵起
始字节。现以 16 点阵为例来进行说明,首先,可由内码计算出它在汉字库中的区位码,
其计算公式为:
区码=bn1-160
位码=bn2-160
式中,bn1 和 bn2 则分别表示汉字机内码的第一字节和第二字节。当这些区位码被计算
出来之后,就可以用区位码得到它在汉字库中字模第一个字节的位置,即:
偏移地址 = (94×(区码 - 1)+(位码 - 1))×32
需要注意的是由于汉字区位码无论是区码还是位码均从 1 开始,而计算偏移地址从 0 开
始,所以公式中区码和位码都要减去 1,即可通过机内码直接寻址要显示汉字在汉字库
中的偏移地址。这样,接下来就可以连续读出由 32 个字节组成的该字的点阵数据。
4444、、、、串串串串行存储器行存储器行存储器行存储器 W25X80W25X80W25X80W25X80
串行 Flash 存储器以其体积小、密度高、功耗低、价位低、操作简单而备受青睐,Winbond
公司生产的 Flash 存储器 W25X80 为 8Mbit 串行 Flash,大小为 1MB,分为 4096 页,每
页为 256 字节的存储单元,且带有 256 个字节的缓冲区;SPI 的接口方式,芯片供电电
压为 2.7V—3.6V,器件的忙判断可以由内部的状态寄存器来判断。W25X8 有严格的时序
和规定的命令格式,操作时可以通过其特有缓冲区(256 字节)对其内部进行读或写,
操作结束时,应清除新指令标志以免重复响应。
可以说,该 Flash 不仅操作十分简单,并且可以灵活地适用于多个
设计方案
关于薪酬设计方案通用技术作品设计方案停车场设计方案多媒体教室设计方案农贸市场设计方案
,如果每个
汉字是 16×16 的点阵,按每个汉字占 32 个字节算,能存储 3 万个多汉字编码,而常用
的汉字库一般不超过 1 万个汉字,因此,除了存储足够的汉字库外,还可以存储其他图
www.eetchina.com
4
片编码等字库。串行 FLASH 需要通过 SPI 总线和单片机进行通讯,而 STC89C52 单片没
有 SPI 通讯模块,通过软件模拟端口来实现和 FLASH 之间的通讯。其实软件模拟端口是
一种更通用的方法,通过软件模拟可以减少开发成本,并不影响芯片的功能。
4.1 4.1 4.1 4.1 W25X80W25X80W25X80W25X80 的读操作的读操作的读操作的读操作
W25X80 读取数据指令允许一次读取一个字节或者多个字节。读数据时首先要把 CS 引脚
拉低,然后通过 DIO 引脚给 W25X80 发送读指令“03h”和 24 位地址(A23-A0)。指令和
地址在时钟引脚的上升沿被锁存,在发送完指令和地址后,数据就会从 DO 引脚顺序移
出,最高有效位在先。只要时钟继续,W25X80 就会连续不断地从下一个地址读取数据,
这就意味着一条指令就可以读取整个 Flash 中的数据。要想结束数据的读取,可以把 CS
引脚拉高。W25X80 的读取数据时序图如图 3 所示。
图 3 W25X80 的读取数据时序图
需要显示某个汉字时,先根据汉字的内码算出它的区位码,然后再根据区位码算出它在
字库中的偏移量,即汉字点阵的起始位置,接着从 Flash 中顺序读出该字的 32 个字节
点阵数据并存在缓冲区里,最后依次送往 LCD 显示,就可以描出该字。
4.2 4.2 4.2 4.2 W25X80W25X80W25X80W25X80 的写操作的写操作的写操作的写操作
W25X80 的写操作即页面编程指令一次可以编程 1-256 字节的数据,在编程之前要对内存
进行擦除。编程时要把 CS 引脚拉低,然后通过 DIO 引脚给 W25X80 发送编程指令“02h”
和 24 位编程地址(A23-A0)。代码和地址在时钟引脚的上升沿被锁存。然后在时钟的作
用下,编程数据依次从 DIO 引脚送入 Flash。在整个编程过程中 CS 引脚必须保持低电平。
W25X80 的页面编程时序图如图 4 所示。
www.eetchina.com
5
图 4 W25X80 的页面编程时序图
5555、、、、字库字库字库字库的的的的写入写入写入写入
为了方便字库的写入,我们使用 VC++编写了 PC 机字库写入软件,通过该软件可以把字
库文件通过串口以握手的方式一个字节一个字节地发给下位机。在传送开始,上位机软
件首先发送的是每次批量编程字节长度 length,下位机采用中断接收方式,每接收够
length个字节,下位机就进行一次编程写入Flash。实际的测试表明写完256KB的GB2312
汉字库仅需要 3 分钟左右,当然写入的快慢和 Flash 芯片的编程速度有关。注意:写入
字节的长度一般是 256 个字节,除非到了字库文件的末尾不足 256 字节,这时也能正常
接收和写入。图 5 是字库写入 W25X80 存储器流程图。
开始
length = SBUF
读入要接收的字节数
等待接收1个字节
counter++
counter ==
length?
编程写入Flash
Y
N
图 5 字库写入 W25X80 存储器流程图
6
6666、、、、结论结论结论结论
本文采用串行存储器 W25X80 来设计嵌入式系统中的硬件点阵字库,给出了具体的实现
方法并对设计结果进行了测试,验证了字库正确性。该方法使用简单、操作灵活、成本
低廉,可以为嵌入式系统没有字库的液晶 LCD 提供一种有效而灵活的解决方案。投入嵌
入式系统使用将会产生较好的经济效益。
参考文献参考文献参考文献参考文献
[1] 华邦公司.W25X80A串行存储器
说明书
房屋状态说明书下载罗氏说明书下载焊机说明书下载罗氏说明书下载GGD说明书下载
[DB/OL].http://www.winbond.com.
[2] 宏晶公司.STC89C52RC说明书[DB/OL].http://www.mcu-memory.com.
[3] 龚建伟,熊光明.Visual C++/Turbo C串口通信编程实践[M].北京:电子工业出版社.
作者简介作者简介作者简介作者简介::::
姓名:常国权(1973.11),男,汉族,安阳工学院计算机科学与信息工程系讲师,毕业
于东北电力大学信息工程学院,硕士研究生,研究方向为嵌入式系统技术应用与开发。
通信地址:河南省安阳市黄河路安阳工学院计算机科学与信息工程系
邮编:455000
E-mail:changguoquan@126.com