嵌入式系统开发基础——基于8位单片机的C语言程序设计(第二版) 教学课件 ppt 作者 侯殿有 葛海淼 编著 第十四章

上传人:E**** 文档编号:89375632 上传时间:2019-05-24 格式:PPT 页数:79 大小:2.74MB
返回 下载 相关 举报
嵌入式系统开发基础——基于8位单片机的C语言程序设计(第二版) 教学课件 ppt 作者 侯殿有 葛海淼 编著 第十四章_第1页
第1页 / 共79页
嵌入式系统开发基础——基于8位单片机的C语言程序设计(第二版) 教学课件 ppt 作者 侯殿有 葛海淼 编著 第十四章_第2页
第2页 / 共79页
嵌入式系统开发基础——基于8位单片机的C语言程序设计(第二版) 教学课件 ppt 作者 侯殿有 葛海淼 编著 第十四章_第3页
第3页 / 共79页
嵌入式系统开发基础——基于8位单片机的C语言程序设计(第二版) 教学课件 ppt 作者 侯殿有 葛海淼 编著 第十四章_第4页
第4页 / 共79页
嵌入式系统开发基础——基于8位单片机的C语言程序设计(第二版) 教学课件 ppt 作者 侯殿有 葛海淼 编著 第十四章_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《嵌入式系统开发基础——基于8位单片机的C语言程序设计(第二版) 教学课件 ppt 作者 侯殿有 葛海淼 编著 第十四章》由会员分享,可在线阅读,更多相关《嵌入式系统开发基础——基于8位单片机的C语言程序设计(第二版) 教学课件 ppt 作者 侯殿有 葛海淼 编著 第十四章(79页珍藏版)》请在金锄头文库上搜索。

1、第十四章 汉字和西文字符显示原理,【本章知识架构】,【本章教学目标和要求】 学会汉字、曲线和西文字符存储和显示原理 了解在嵌入式系统人机界面设计中提取字模和建立小字库的必要性 熟练掌握通用字模提取程序MinFonBase的使用 掌握两种形式字模的转换,15.1 英文字符在计算机中的表示,15.1.1 ASCII码 英文字符、数字和控制符号在计算机中是用ASCII码来表示的。ASCII码(American Standard Code for Information Interchange)是美国国家信息交换标准码,现已成为国际通用的信息交换标准代码。 ASCII码共有128个元素,其中通用字符3

2、2个、十进制数字10个、52个英文大小写字母和34个专用符号。具体见表15-1。 通用字符主要是指、(、)、等一些数学符号。,专用符号主要是指一些控制字符,如串行通信中SOH(0X01)是表头开始符,表示每个文件名开始,而后才是文件的开始;STX(0X02),表头结束,信息数据开始;ETX(0X03),文本结束;ACK(0X06),握手信号,认可;LF(0X0A),换行;CR(0X0D),回车等。 还有一些控制字符是C语言中按格式显示时做转义字符使用,如%表示输出格式等。,15.1.2 英文字符的显示 15.1.1节已经介绍,英文字符在计算机中是以ASCII码形式存储的,那么它是如何显示的呢?

3、 众所周知,无论CRT显示器,还是液晶显示器(LCD),它们的分辨率都是以像素为单位的,一个像素就是屏幕上的一个可以显示的最小单位,也就是常说的“点”。因此要在屏幕上显示一个英文字符也必须用点来表式,这些表示某种图形或英文字符的点的集合就是人们所说的点阵。,常用的英文字符有88点阵和816点阵,如大写“A”88点阵如图15-1所示。 88点阵共有8行,每行8个点;每行的8个点组成二进制的一个字节,字节的最高位D7在最左,最低位D0在最右。字节中打点的位(bit)值等于1,没有点的位bit值等于0。这样,每行的一个字节都有一个16进制数的值,例如第一行的值是0x30,第二行的值是0x78,8行8

4、个字节数据是:,人们把这8个字节数据叫字符“A”的88点阵字模。存储全部英文字符88点阵字模的存储单元叫英文字符88点阵字库。字库是按ASCII码顺序存放,显示时,按存放规律将要显示的字符的字模取出,按图15-1所示顺序把字节数据输出到屏上即可,bit值等于1的点显示时在屏上该bit 位置“打”点,bit值等于0的点显示时在屏上该bit 位置不打点。,816点阵显示原理同88点阵,88点阵一个字模占8个字节,816点阵一个字模占16个字节。大写“A”816点阵如图15-2所示。,15.1.3 其他西文字符在计算机中的存储和显示 人们在工作中除英文字符和汉字外,还会遇到拉丁文数字,一般符号,序号

5、,日文平假名,希腊字母,俄罗斯文,汉语拼音符号,汉语注音字母等,这些符号在计算机中是如何存储和显示的呢? 我国在1981年公布的信息交换用汉字编码字符集(基本集)GB2312-80中,所有编码分94个区存储,每个区又分94个位。区中除6763个汉字外,第37区给这些符号留下了位置,如第3区为英文大小写符号、第4区为日文平假名、第5区为日文片假名、第6区为大小写希腊字母、第7区为大小写俄罗斯文字母。,每一个字符在字库中都有固定的区和位(叫区位码)。当用某种输入法输入一个西文字符时,计算出区位码,找到该字符字模进行显示。其中英文字符比较特殊,在西文操作系统中,如上所述,它是以ASCII码存储的,而

6、在汉字操作系统中,它是做为一个汉字,以区位码方式存储。 如希腊字母“” 它 的区位码是0634,它在 字库中位于6区34位,它 的显示效果如图15-3所 示。,15.1.4 屏幕上“打点” 从上面叙述可知,无论使用CRT还是LCD做显示设备,能在屏幕上“打点”是显示英文字符和汉字的最基本的要求。假如使用IBM_PC机或兼容机,CRT做显示设备,在系统软件中就有一个厂家提供的“打点”子程序(也叫“打点”系统调用),用户只要把显示坐标、显示颜色做为参数输入程序,调用“打点”子程序就可以在屏幕上打点。 如果使用LCD做显示设备,每种LCD都有一套指令系统,该指令系统一般都有在屏上打点的指令,使用该指

7、令也可以实现在LCD屏上“打点”。但也有型号的LCD其指令系统没有在屏上打点的指令,我们就要用软件编写1个在屏上打点的程序,实现在LCD屏上“打点”。,在后面3章我们会详细讨论典型LCD显示程序的编写,并解决在LCD屏上“打点”问题。,小知识: 点的颜色是由BPP(bit/每像素)值来描述的,屏幕上1个点在显示内存中用 1个bit来描述,该点颜色值就是1BPP,这也是我们所说的单色;8BPP=256色; 16BPP=65536高彩色;24BPP=16777216真彩色),15.1.5 汉字显示概述 进行嵌入式系统设计,大多首先从人机界面设计开始,由于许多系统使用各种液晶显示器(LCD)做系统显

8、示设备,所以要想快速的完成嵌入式系统设计必需学会如何在LCD上显示汉字和曲线的程序设计。 前面讲过,无论是CRT显示器,还是单片机系统常用的LCD,它们的分辨率都是以像素为单位的,一个像素就是屏幕上的一个可以显示的最小单位,也就是常说的“点”。因此要在屏幕上显示一个汉字或图形就必须将汉字或图形用点来表式,这些表示某种图形或汉字的点的集合就是我们所说的点阵,实际上我们把汉字也做为一种图形来处理。,嵌入式控制系统中最常用的汉字是1616点阵,它是由行、列各16个点,共256个点组成的点阵图案,每行的16个点在内存中占二个字节,一个1616点阵汉字共16行,在内存中占32个字节。 根据这些字节在显示

9、时排列位置,第一行的第一个字节我们称“0”号字节,第二个字节我们称“1”号字节;第二行的第一个字节我们称“2”号字节,第二个字节我们称“3”号字节。 以此类推,最后一行的第一个字节我们称“30”号字节,第二个字节我们称“31”号字节,每个字节高位在前,低位在后,即D7在一个字节的最左侧,D0在最右侧。32个字节在字库中按0号字节、1号字节、2号字节、31号字节顺序存放。1616点阵汉字显示时排列位置如图15-4所示:,不同的汉字各字节数据不同,图15-5是仿宋体”哈”字的1616点阵字模,在点阵中,每一个小方格代表字节中的一位(也叫一个bit),黑色的点bit值等于1。,仿宋体“哈”字的161

10、6点阵字模的32个字节(即16个字)数据是: 如我们要在屏幕的行列位置显示上面的“哈”字,则可以从点(,)开始将0号字节和1号字节的内容输出到屏幕上;然后行加1,列再回到,输出2号字节和3号字节,依此类推16个循环即可完成一个汉字的显示。 输出一个字节数据时,该字节中“位”(bit)为1时在该“位”位置打点,为0时该“位”位置打空白。,此外常用的汉字还有2424点阵,它是由行列各24个点组成的点阵图案,它每列的24个点在内存中占三个字节,一个2424点阵汉字共24列,在内存中占72个字节;4848点阵,行列为4848,一个汉字占内存288个字节。1212点阵(为方便编程把列12点扩展为16点,

11、既二个字节)行列为1216,一个汉字占内存24个字节。 由于常用的24针打印机的打印头是24针纵向排列的,一次垂直打印24点,即三个字节,然后再打印下一列24点,依次打24次,就完成了一个2424点阵汉字的打引,所以在汉字库中为方便打印机使用,2424点阵汉字的显示排列是与1616不同的,具体如图15-6示。,0号、1号、2号三个字节排在第1列;3号、4号、5号三个字节排在第2列;依此类推最后一列是69号、70号、71号字节,所有的字节都是高位在上,低位在下,这样打字机从左到右扫描24列,不用换行就可完成一个2424点阵汉字打印。 72个字节在字库中按0号字节、1号字节、2号字节、71号字节顺

12、序存放。 图15-6 2424点阵汉字在内存中排列 由于2424点阵汉字和1616点阵汉字显示时字摸排列不同,两者显示程序有所不同,这一点下面讲到汉字显示时会详述。,15.2 汉字字符集介绍,我国1981年公布了信息交换用汉字编码字符集(基本集)GB2312-80方案,把高频字、常用字和次常用字集合成汉字基本字符(共6763个),在该集中按汉字使用的频度,又将其分成一级汉字3755个(按拼音排序)、二级汉字3008个(按部首排序),再加上西文字母、数字、图形符号等700个。 国家标准的汉字字符集(GB2312-80)是以汉字库的形式提供的。汉字库结构作了统一规定,即将字库分成94个区,每个区有

13、94个汉字(以位做区别),每一个汉字在汉字库中有确定的区和位编号(用两个字节),就是所谓的区位码(区位码的第一个字节表示区号,第二个字节表示位号),因而只要知道了区位码,就可知道该汉字在字库中的地址。,每个汉字在字库中是以点阵字模形式存储的,如一般采用1616点阵形式,每个点用一个二进制bit位表示,bit=1的点,当显示时,就可以在屏上显示一个亮点,bit=0的点,则在屏上不显示,这样把存某字的1616点阵信息直接用来在显示器上按上述原则显示,则将出现对应的汉字。如“哈”的区位码为2594,它表示该字字模在字符集的第25个区的第94个位置。,15.3 汉字的内码,在计算机内英文字符是用一个字

14、节的ASCII码表示,该字节最高位一般不用或做奇偶校验,故实际是用7位码来代表128个字符的。但对于众多的汉字,只有用两个字节才能代表,这样用两个字节代表一个汉字的代码体制,国家制定了统一标准,称为国标码。 国标码规定,组成两字节代码的最高位为0,即每个字节仅只使用7位,这样在机器内使用时,由于英文的ASCII码也在使用,可能将国标码看成两个ASCII码,因而规定用国标码在机内表示汉字时,将每个字节的最高位置1,以表示该码表示的是汉字,这种国标码两字节最高位加1后的代码称为机器内的汉字代码,简称内码。 以“哈”字为例:其国标码为0x3974,其内码为0xB9F4,即国标码与内码存在一种简单转换

15、关系,将16进制的国标码,两个字节各加0x80后,即成内码。,15.4 内码转换为区位码,当我们用某种输入设备例如键盘将汉字输入计算机时,则管理模块将自动的把键盘输入的汉字转换为内码,再由内码转换成区位码,在汉字库找到该汉字,进行显示。 由于区位码和内码存在着固定的对应关系,因而知道了某汉字的内码,即可确定出对应的区位码,知道了区位码,就可找出该汉字字模在字库中存放的地址,由此地址调出该汉字的字节内容(字模)进行显示。 即若汉字内码为十六进制数0xaaff,则区号qh和位号wh分别为:,因而该汉字在汉字库中离起点的偏移位置(以字节为单位),1616点阵可计算为: 2424点阵因为有点特殊,其偏

16、移位置可计算为: 4848点阵同2424点阵,其偏移位置可计算为:,15.5 字模提取与小字库建立,15.5.1 用C语言提取1616点阵字膜 从15.1.5节叙述可知,汉字占用内存量是非常大的。 一般嵌入式系统界面可能会有几种不同字体的汉字,可能还有西文字符,不可能将所涉及的字库都引入程序。最现实的办法就是将系统中用到各种汉字从所在的大字库中提取出来,重新建立一个小字库,这样就解决了使用数量不多,字体各异的汉字显示问题。,根据上一节的叙述我们已经知道了汉字显示原理,现在我们可以用任何一种编程语言来提取字模与建立小字库。现在我们仅介绍用C语言提取1616点阵字膜,建立小字库程序。该程序在IBM-PC或兼容机上运行,程序在Borland C+环境下调试通过。 它的汉字输入是采用区位码,把我们要提汉字的区位码放在头文件中,同时生成的小字库是C语言数据形式,可直接考入程序运行。可以在屏上显示小字库内容。 例15-1用C语言提取1616点阵字膜,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号