嵌入式开发板显示汉字.docxVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式开发板显示汉字

最近一直在做PXA270开发板做实验。。现将显示汉字的程序,整理一下。首先有汉字库这个东西,这个东西类似一个二维数组,有94行,94列。行号叫区号,列号叫位号。这样可以有94x94个汉字。每一个汉字可以由区号+位号来得到。因为94化成二进制数要7位,所以要表示一个汉字就得14位。这样的编码就叫做区位码。所以区位码是14位。然而大家都知道一个汉字是由两个字节表示的。是16位。多了两位。由16位表示编码方式叫内码。内码与区位码的换算方式如下:??????? 区号=内码第一个字节-A1H??????? 位号=内码第二个字节-A1H那么汉字的点阵的起始位置=(区号x94+位号)x点阵的字节数有了上面的知识,来看开发板显示汉字的实例1:下载汉字库hzk162:安装ascii.lib库3:源码如下#include unistd.h#include stdlib.h#include stdio.h#include fcntl.h#include sys/stat.h#include fcntl.h#include unistd.h#include sys/mman.h#include string.h#include linux/fb.h#include linux/kd.h#include sys/mman.h#include sys/types.h#include sys/stat.h#include termios.h#include sys/time.h#include sys/ioctl.h#include ascii.lib#define SYS_BLACK??0define SYS_WHITE??0xfffffffffile *hzkfile=null;unsigned char * chsTxt = 青梅不爱竹马;short x,y;short i;unsigned char bufferTxt[2];typedef unsigned long?ColorType;ColorType color = SYS_WHITE;void DrawCharCHS(int x, int y, unsigned char c[2], ColorType color);void fb_Text_16x16(int x, int y, unsigned char * dotCodes, ColorType color);void fb_PutPixel(short x, short y, ColorType color/*, int xorm */);void main(){?hzkFile = fopen(./hz16, rb);?x = 10, y = 40;?for (i = 0; i strlen(chsTxt); i += 2)?{??bufferTxt[0] = chsTxt[i];??bufferTxt[1] = chsTxt[i + 1];??DrawCharCHS(x, y, bufferTxt, color);??x += 16;?}?fclose(hzkFile);}void DrawCharCHS(int x, int y, unsigned char c[2], ColorType color){?unsigned char codes[32];?short i;?unsigned char ch, cl;?unsigned long offset;?if (hzkFile == NULL)?{??printf(No Chinese Character Library opened.\n);??exit(1);?}?ch = c[0];?cl = c[1];?offset = ((ch - 0xa1) * 94L + (cl - 0xa1)) * 32L;?fseek(hzkFile, offset, SEEK_SET);//通过区位号找到汉字?fread(codes, 32, 1, hzkFile);??fb_Text_16x16(x, y, codes, color);}void fb_Text_16x16(int x, int y, unsigned char * dotCodes, ColorType color){?int i, j, k;?if (x 0 || x = SCREEN_WIDTH ||??y 0 || y = SCREEN_HEIGHT)?{#ifdef ERR_DEBUG??printf(DEBUG_INFO: Pixel out of screen range.\n);??printf(DEBUG_INFO: x = %d, y = %d\n, x, y);#e

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档