计算机汉字显示原理(点阵字)

合集下载

中文点阵字库的使用方法(安富莱电子)

中文点阵字库的使用方法(安富莱电子)

中文点阵字库的使用方法安富莱电子 armfly2010-01-03在嵌入式设备LCD上显示的汉字大多数都属于点阵汉字。

常用的点阵字库来自UCDOS。

大家可以去网上下载一个UCDOS的完全安装版本,里面可以找到很多点阵字库文件。

下面几个字库文件是常用的:HZK12 : 12点阵汉字库(宽度x高度 = 12x12)ASC12 : 12点阵ASCII字库(宽度x高度 = 6x12)HZK16 : 16点阵汉字库(宽度x高度 = 16x16) 最常用的中文字库ASC16 : 16点阵ASCII字库(宽度x高度 = 8x16)最常用的ASCII字库HZK24 : 24点阵汉字库(宽度x高度 = 24x24)票据打印机用得较多UCDOS的字库排列标准符合国标一、二级字库标准,即GB2312,汉字个数为6000多个。

按照汉语拼音顺序排列,前面一部分是一级常用汉字大约2000多个,后面一部分是二级汉字大约4000多个。

大多数情况下,一二级字库就可以满足我们的需求。

但是在某些特殊应用(比如显示每个人的姓名)中可能需要用到GB18030字库,该字库除了包括一、二级字库外还包含很多不常用的汉字,总汉字个数为27538个。

安富莱STM32F103ZE-EK开发板配套的光盘上收录一个16点阵的GB18030字库(由于授权问题,这个字库不对外开放)。

下面是GB18030字库点阵的截图。

这个放大的汉字就是二级字库中最后一个汉字,这个字后面的汉字就属于GB18030特有的汉字了。

估计大多数人一个都不认识。

我们来看看GB18030字库最后区域的汉字长得啥样子。

汉字点阵在汉字库中的地址计算公式汉字库种类繁多,但都是按照区位的顺序排列的。

前一个字节为该汉字的区号,后一个字节为该字的位号。

每一个区记录94个汉字,位号则为该字在该区中的位置。

计算公式为: (94*(区号-1)+位号-1) * 一个汉字字模占用字节数对于16点阵的字库,1个汉字字模占用32字节。

点阵字库的原理

点阵字库的原理
这样,我们可以根据区位码在文件中进行殉职了,寻址公式如下:
汉字点阵数据在字库文件中的偏移= ((区码-1) * 94 +位码) *一个点阵字模占用的字节数
在寻址以后,即可读取汉字的点阵数据到缓冲区进行显示了.以下是实现代码:
/*输出一个汉字的函数*/
void _draw_hz(char hz[2], FILE *fp, int x, int y, int w, int h, int color)
在明白了以上所讲的以后,我们可以写出一个显示一个任意大小的点阵字模的函数,这个函数的功能是输出一个宽度为w,高度为h的字模到屏幕的(x,y)坐标出,文字的颜色为color,文字的点阵数据为pdata所指:
/*输出字模的函数*/
void _draw_model(char *pdata, int w, int h, int x, int y, int color)
| | | | | | | | | | | | | | | | |
可以看出这是一个"汉"字的点阵,当然文本的方式效果不是很好.根据上面的原则,我们可以写出这个点阵的点阵数据:0x40,0x08,0x37,0xfc,0x10,0x08,…,当然写这个确实很麻烦所以我不再继续下去.我这样做,也只是为了向你说明,在点阵字库中,每一个点阵的数据就是按照这种方式存放的.
在实际应用中,同一个字符有多种字体(如宋体、楷体等),每种字体又有多种大小型号,因此字库的存储空间十分庞大.为了减少存储空间,一般采用压缩技术.
矢量字符记录字符的笔画信息而不是整个位图,具有存储空间小,美观、变换方便等优点.例如:在AutoCAD中使用图形实体-形(Shape)-来定义矢量字符,其中,采用了直线和圆弧作为基本的笔画来对矢量字符进行描述.对于字符的旋转、放大、缩小等几何变换,点阵字符需要对其位图中的每个象素进行变换,而矢量字符则只需要对其几何图素进行变换就可以了,例如:对直线笔画的两个端点进行变换,对圆弧的起点、终点、半径和圆心进行变换等等.

计算机中的常用编码

计算机中的常用编码

计算机中的常用编码计算机中的常用编码字符又称为符号数据,包括字母和符号等。

计算机除处理数值信息外,大量处理的是字符信息。

例如,将高级语言编写的程序输入到计算机时,人与计算机通信时所用的语言就不再是一种纯数字语言而是字符语言。

由于计算机中只能存储二进制数,这就需要对字符进行编码,建立字符数据与二进制数据之间的对应关系,以便于计算机识别、存储和处理。

1. ASSII码目前,国际上使用的字母、数字和符号的信息、编码系统种类很多,但使用最广泛的是ASCII码(American Standard Code for Interchange)。

该码开始时是美国国家信息交换标准字符码,后来被采纳为一种国际通用的信息交换标准代码。

ASCII码总共有128个元素,其中包括32个通用控制字符,10个十进制数码,52个英文大、小写字母和34个专用符号。

因为ASCII码总共为128个元素,故用二进制编码表示需用7位。

任意一个元素由7位二进制数D7D6D5D4D3D2D1表示,从0000000到1111111共有128种编码,可用来表示128个不同的字符。

ASCII码是7位的编码,但由于字节(8位)是计算机中常用单位,故仍以1字节来存放一个ASCII字符,每个字节中多余的最高位D7取为0。

表1-3所示为7位ASCII编码表(省略了恒为0的最高位D7)。

表1-3 7位ASCII编码表要确定某个字符的ASCII码,在表中可先查到它的位置,然后确定它所在位置相应的列和行,最后根据列确定高位码(D6D5D4),根据行确定低位码(D3D2D1D0),把高位码与低位码合在一起就是该字符的ASCII码(高位码在前,低位码在后)。

例如,字母A的ASCII码是1000001,符号"+"的ASCII码是0101011。

ASCII码的特点如下。

编码值0~31(0000000~0011111)不对应任何可印刷字符,通常为控制符,用于计算机通信中的通信控制或对设备的功能控制;编码值为32(0100000)是空格字符,编码值为127(1111111)是删除控制DEL码;其余94个字符为可印刷字符。

计算机中的字是如何处理的

计算机中的字是如何处理的

字符编码一、西文字符编码:ASCII码ASCII码全称为美国标准信息交换码(American Standard Code for Information Interchange)。

它用8位二进制数来编码,第1位全部是0,因此ASCII码最多可以表示2^7=128个字符,包括字母、数字、标点符号、控制符号等西文字符。

ASCII码已经被ISO认定为国际标准。

1)控制字符:0~31、127,共33个,不可显示;2)普通字符:95个,包括10个阿拉伯数字、52个英文大小写字母、33个标点符号和运算符。

常见ASCII码的大小规则,0-9<A-Z<a-z:ASCII码表记住几个常见字母的ASCII码大小:“A”为65;“a”为97;“0”为48;在计算机系统中,用1字节来存储一个ASCII字符。

上表是标准ASCII字符,有一个特点:最高位(第八位)为0。

还有一种叫做扩充ASCII码,它是用8位二进制数给字符编码,这样可以表示256种字符。

二、汉字编码计算机处理汉字时,也必须先将汉字代码化,然后对汉字代码进行处理。

1.汉字国标码中国的文字不是拼音文字,汉字的个数有数万之多,远远超过区区256 个字符,因此我们就使用两个字节来表示一个中文。

为了与ASCII 保持兼容,与ASCII码相同的编码我们不使用。

1980年我国颁布了《信息交换用汉字编码字符集(基本集)》GB2312-80,简称国标码(或GB码),一共收集了7445个字符,其中汉字6763个。

一级汉字3755个,按汉字拼音字母顺序排列;二级汉字3008个,按部首笔画汉字排列。

两个字节编码一个国标码字符。

2.汉字的机内表示:机内码:计算机在信息处理时表示汉字的编码,称作机内码。

现在我国都用国标码(GB2312)作为机内码。

中国的台湾省也在使用中文,但是由于历史的原因,那里没有使用大陆的简体中文,还在使用着繁体的中文,并且他们自己也制定了一套表示繁体中文的字符编码,称为BIG5,不幸的是,虽然他们的也使用两个字节来表示一个汉字,但他们没有象我们兼容ASCII 一样兼容大陆的简体中文,他们使用了大致相同的编码范围来表示繁体的汉字。

点阵汉字显示市公开课获奖课件省名师示范课获奖课件

点阵汉字显示市公开课获奖课件省名师示范课获奖课件

项目十一 16×32点阵汉字显示
计算机科学系
单片机应用技术项目教程(C语言版)
8*8点阵引脚排列
外观图 引脚排列
项目十一 16×32点阵汉字显示
计算机科学系
单片机应用技术项目教程(C语言版)
构建一块16*16LED点阵
首先将四个“8*8点阵”元器件相应旳行线和列线分别进 行连接,是每一条行线引脚接一行16个LED,列线也相同。
然后接上网络标识,行和行接同一种网络标志, 列和列接在一起。
项目十一 16×32点阵汉字显示
计算机科学系
单片机应用技术项目教程(C语言版)
显示旳措施—逐列扫描方式
P1口输出列码决定哪一列能亮(相当于位码); P0口、P2口输出行码(列数据)决定列上哪些LED亮(相
当于段码); 能亮旳列从左向右扫描完16列(相当于位码循环移位16次)
即显示出一帧完整旳图像。
项目十一 16×32点阵汉字显示
计算机科学系
单片机应用技术项目教程(C语言版)
显示旳措施—逐行扫描方式
逐行扫描方式,与逐列扫描调换,即P2口输出位 码,P1口输出段码,扫描完8行显示出一帧图像。
项目十一 16×32点阵汉字显示
计算机科学系
单片机应用技术项目教程(C语言版)
16×32点阵中文显示程序设计
显示方式
动态显示
显示内容
第一屏幕“电子”和第二屏幕“学院”切换显 示;
左移显示“电子学院”; 反复第一步。
16×32点阵中文显示程序
项目十一 16×32点阵汉字显示
8*8点阵旳LED显示屏旳规则图
LED显示屏是由高亮发光二极管点阵构成旳矩阵,经过控 制这个二极管矩阵到达在显示屏上显示符号、文字等信息 旳目旳。

单片机课程设计_16×16点阵式汉字显示

单片机课程设计_16×16点阵式汉字显示

目录摘要 (1)Abstract (2)1设计原理 (3)1.1 MCS-51单片机的结构及编程方法 (3)1.2 16*16点阵LED原理 (5)1.3 3-8译码器原理 (6)2.设计方案介绍 (7)2.1 设计总体思路 (7)2.2 与题目相关的具体设计 (7)2.3程序设计流程图 (8)3.源程序,原理图和仿真图 (9)3.1程序清单(见附录) (9)3.2电路图 (9)3.2.1电路原理图 (9)3.2.2电路图分析 (9)3.3仿真图 (10)4性能分析 (11)5.总结和心得 (12)6.参考文献 (13)附录:程序代码 (14)摘要LED点阵显示屏作为一种新兴的显示器件,是由多个独立的LED发光二极管封装而成. LED点阵显示屏可以显示数字或符号, 通常用来显示时间、速度、系统状态等。

文章给出了一种基于MCS-51单片机的16×16 点阵LED显示屏的设计方案。

包括系统具体的硬件设计方案,软件流程图和部分汇编语言程序等方面。

在负载范围内, 只需通过简单的级联就可以对显示屏进行扩展,是一种成本低廉的图文显示方案。

关键词:MCS-51;LED;单片机AbstractAs a popular display device component, LED dot-matrix display board consists of several independent LED (Light Emitting Diode). The LED dot-matrix display board can display the number or sign, and it is usually used to show time, speed, the state of system etc. This paper introduces a kind of simple 16x16 LED display screen design process based on MCS-51 single chip minicomputer . The detail hardware scheme, software flow and assemble language programmer design and so on is followed. The display part can be cascaded to meet the need. The practice proves the design is low-cost and effective.Key words: MCS-51;LED;MCU1设计原理1.1 MCS-51单片机的结构及编程方法MCS-51单片机的组成: CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。

点阵字库的显示原理

点阵字库的显示原理
以12×12字库的“我”为例:“我”的编码为CED2,所以在汉字排在CEH-AOH=2EH区的D2H-A0H=32H个。所以在12×12字库的起始位置就是[{FE-A0}*2EH+32H]*24=104976开始的24个字节就是我的点阵模。
其他的类推即可。
英文点阵也是如此推理。
当然也存在着不规则的点阵,这里说的不规则,指的是点阵的宽度不是8的倍数,比如 12*12
的点阵,那么这样的点阵数据又是如何存放的呢?其实也很简单,每一行的前面8个点存放在一个字节里面,每一行的剩下的4点就使用一个字节来存放,也就是说
剩下的4个点将占用一个字节的高4位,而这个字节的低4位没有使用,全部都默认的为零.这样做当然显得有点浪费,不过却能够便于我们进行存放和寻址.对于
2、16*16点阵字库
对于16*16的矩阵来说,它所需要的位数共是16*16=256个位,每个字节为8位,因此,每个汉字都需要用256/8=32个字节来表示。
即每两个字节代表一行的16个点,共需要16行,显示汉字时,只需一次性读取32个字节,并将每两个字节为一行打印出来,即可形成一个汉字。
dos所用字库,文件头结构很简单,如默认的8*16英文字库,文件头长度为4,跳过这四个字节就是字模数据;也有没有文件头的,从第一个字节开始就是字模数据。
点阵字库结构
1、点阵字库存储
在汉字的点阵字库中,每个字节的每个位都代表一个汉字的一个点,每个汉字都是由一个矩形的点阵组成,0代表没有,1代表有点,将0和1分别用不同颜色画出,就形成了一个汉字,常用的点阵矩阵有12*12,
点阵结构如下图所示:
第一字节 第二字节
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7

3. 计算机是如何处理汉字的?

3. 计算机是如何处理汉字的?
22
其他方式的字符编码(略)
CJK统一汉字编码字符集 BIG5 GBK GB 18030/2000 ANSI Unicode
23
Unicode (略)
由统一编码组织于 20世纪90年代初制 定的一种16位字符编码标准 双字节码 理论编码空间65536个 39000个字符编码已经做出了规定 其中21000个编码用于表示汉字 Unicode编码中尚未定义的编码留待以 后使用
1980年,我国国家标准总局颁布了 《信息交换用汉字编码字符集——基 本集》(GB2312-80) 又称汉字交换码(汉字系统之间或与 通信系统之间进行信息传输时,对每 个汉字所规定的统一编码)的国家标 准,因此又称“国标码”
5
国标码(2)
国标码是一种双字节码 即表示一个汉字的编码由两个字节组 成
6
在FONTS目录下 扩展名为FON,图标为红色的“A”——点阵字 库 扩展名为TTF,图标是两个“T”——矢量字库46
补充——如何造生僻字?
参考实验02文档
47
计算机汉字处理总结
(1)通过某种汉字输入法,由输入设备输入 汉字的外码(汉字输入码); (2)由汉字输入系统将汉字外码转换为内码 并存储、处理; (3)如果要进行汉字通信,将内码转换为汉 字交换码实现不同汉字系统之间的传输; (4)将汉字内码转换为相应汉字字形码; (5)通过输出设备把汉字字形码输出为汉字。
无重码
缺点
最难记
典型编码:区位码
33
区位码(1)
国标码是以十六进制的形式来表示,共有两 个字节,高低字节的取值范围都是从21H到 7EH,共94种取值 用十进制的从1到94来表示这94种状态,就 形成了区位码。 区位码共四位十进制数字,前两位数字对应 国标码的高字节,取值为1~94,我们称之为 “区号(区码)”;后两位数字对应国标码 的低字节,取值为1~94,我们称之为“位号 (位码)”
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档