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

📄 c语言嵌入式系统编程修炼之屏幕操作-开发者网络-c-天极screen2yesky.htm

📁 最全的介绍C语言结构体的使用方法和使用技巧!
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>C语言嵌入式系统编程修炼之屏幕操作-开发者网络-C-天极Yesky</title>
<meta name="description" content="C语言嵌入式系统编程修炼之屏幕操作," />
<meta name="keywords" content="C语言嵌入式系统编程修炼之屏幕操作," />
<meta name="author" content="天极Yesky | 全球中文IT第一门户" />
<meta name="Copyright" content="天极Yesky | 全球中文IT第一门户" />
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Content-Language" content="zh-CN" />
<link rel="stylesheet" href="http://image.yesky.com/TLimages/css/y_mobile_content.css" type="text/css" media="all" />
<script src="http://image.yesky.com/TLimages/newmobile/showlay.js"></script>
<base target="_blank">
</head>

<body>
<!--页面头部-->

<!--头部-->
<div id="topmenu"><a href="http://www.yesky.com">Yesky首页</a>| <a href="http://product.yesky.com/">产品报价</a>| <a href="http://cseek.yesky.com/">行情</a>| <a href="http://mobile.yesky.com/">手机</a> | <a href="http://digital.yesky.com/">数码</a> | <a href="http://notebook.yesky.com/">笔记本</a> | <a href="http://pc.yesky.com/">台式机</a> | <a href="http://diy.yesky.com/">DIY硬件</a> | <a href="http://oa.yesky.com/">外设</a> | <a href="http://net.yesky.com/">网络</a> | <a href="http://dh.yesky.com/">数字家庭</a> | <a href="http://lab.yesky.com/">评测</a> | <a href="http://soft.yesky.com/">软件</a> | <a href="http://e.yesky.com/">e时代</a> | <a href="http://game.yesky.com/">游戏</a> | <a href="http://pic.yesky.com/">图片</a> | <a href="http://desktop.yesky.com/">壁纸</a> | <a href="http://q.yesky.com">群乐</a> | <a href="http://my.yesky.com">社区</a> | <a href="http://blog.yesky.com/">博客</a> | <a href="http://www.mydown.com/">下载</a></div><div id="topbox"><div class="tleft"><a href="http://www.yesky.com"><img src="http://image.yesky.com/TLimages/img/head/logo.gif" border="0" alt ="天极Yesky_全球中文IT第一门户"/></a></div><div class="tad"><span id="ad1"></span></div><div id="search"><div><form name="searchform" method="get" action="http://search.chinabyte.com/search" target="_blank"><input id="searchzz" name="q" onmouseover="this.focus()" onfocus="this.select()" type="text"/><input value="GB2312" name="encoding" type="hidden"/><input value="connect" name="dir" type="hidden"/><input value="20002" name="cid" type="hidden"/><input id="search_btn" type="submit" value="天极搜索"/></form></div><div class="tdq"><div class="rightarea"><a href="http://bj.yesky.com/">北京</a>    <a href="http://hd.yesky.com/">上海</a>    <a href="http://gd.yesky.com/">广东</a>  <a href="http://xa.yesky.com/">西安</a><br /><a href="http://cq.yesky.com/">重庆</a>    <a href="http://cd.yesky.com/">成都</a>    <a href="http://sy.yesky.com/">沈阳</a>   <a href="http://js.yesky.com/">江苏</a></div><div class="rightarea_right"><a  href="http://my.yesky.com/">用户<br/>登录</a></div></div></div><div class="tright">	<div class="box1">		<script type="text/javascript" src="http://www.yesky.com/TLimages/include/content_text_ad.js"></script> 	</div></div></div><script type="text/javascript" src="http://image.yesky.com/TLimages/include/flash.js"></script>
<DIV id=childmenu><A href="http://soft.yesky.com/">软件频道&gt;</A><A href="http://dev.yesky.com/">程序开发&gt;</A><A href="http://dev.yesky.com/devjava/">Java</A><A href="http://dev.yesky.com/ysdevvb">VB</A><A href="http://dev.yesky.com/ysdevvc">VC</A><A href="http://dev.yesky.com/ysdevdelphi">Delphi</A><A href="http://dev.yesky.com/ysdevc">C/C++</A><A href="http://dev.yesky.com/web/">Web开发</A><A href="http://dev.yesky.com/msdn/">微软专栏</A><A href="http://dev.yesky.com/devydkf/">移动</A><A href="http://dev.yesky.com/devsjk/">数据库</A><A href="http://dev.yesky.com/ysdevcxrs">程序人生</A><A href="http://dev.yesky.com/ysdevrjgc">软件工程</A>|<A href="http://soft.yesky.com/lesson/">软件频道产品中心</A><A href="http://soft.yesky.com/120/3327120.shtml">群乐</A><A href="http://www.mydown.com/soft/develop/news.shtml">下载</A></DIV>
<!--导航条-->
<div id="location">
  <div class="loleft">您现在的位置: <a href="http://www.yesky.com">天极Yesky</a> &gt; <a href="http://soft.yesky.com">软件频道</a> &gt; <a href="http://dev.yesky.com">开发者网络</a> > C语言嵌入式系统编程修炼之屏幕操作</div>
  <div class="adright"><span id="ad2"></span></div></div>


<!--内容块开始-->
<div id="conbox">
<!--左边开始-->
<div id="conleft">
<div id="contopla1"><div id="__001"><div class="qkong"></div><div class="qw1">全文</div><div class="zkong"><div class="kl"></div><div class="bj"><a href="#pls" target="_self">评论</a></div><div class="kr"></div><!-- Error --><script type="text/javascript">
var titiepic ="#";
if (titiepic!="#")
{
document.write("<div class=\"kl\"></div><div class=\"bj\"><a href=\"#\" target=\"_blank\">图片</a></div><div class=\"kr\"></div>");
}
</script>
      <!-- Error --></div></div></div>
	  <div class="topadbg"><span id="ad10"></span></div>
<a name="top"></a><div id="contitle"><h1>C语言嵌入式系统编程修炼之屏幕操作</h1></div>
    <div id="conauthor"><span>
      2005-06-20 15:54
      </span><span>作者:
      宋宝华
      </span><span>出处:
      天极网
      </span><span>责任编辑:<a href="http://comments.yesky.com/t/%B7%BD%D6%DB/6,324/2018509.shtml" title="向本编辑提问" target="_blank">方舟</a> </span></div>
<div class="topadbg"><span id="ad9"></span></div>
<div id="conneirong"><span id="ad3"></span>
<div class="guanggao"><span id="contentAdv"></span></div>  <B>汉字处理</B><BR><BR>  现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能。例如,一个微波炉的LCD上没有必要提供显示"电子邮件"的功能;一个提供汉字显示功能的空调的LCD上不需要显示一条"短消息",诸如此类。但是一部手机、小灵通则通常需要包括较完整的汉字库。<BR><BR>  如果包括的汉字库较完整,那么,由内码计算出汉字字模在库中的偏移是十分简单的:汉字库是按照区位的顺序排列的,前一个字节为该汉字的区号,后一个字节为该字的位号。每一个区记录94个汉字,位号则为该字在该区中的位置。因此,汉字在汉字库中的具体位置计算公式为:94*(区号-1)+位号-1。减1是因为数组是以0为开始而区号位号是以1为开始的。只需乘上一个汉字字模占用的字节数即可,即:(94*(区号-1)+位号-1)*一个汉字字模占用字节数,以16*16点阵字库为例,计算公式则为:(94*(区号-1)+(位号-1))*32。汉字库中从该位置起的32字节信息记录了该字的字模信息。<BR><BR>  对于包含较完整汉字库的系统而言,我们可以以上述规则计算字模的位置。但是如果仅仅是提供少量汉字呢?譬如几十至几百个?最好的做法是:<BR><BR>  定义宏:<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD># define EX_FONT_CHAR(value) <BR># define EX_FONT_UNICODE_VAL(value) (value),<BR># define EX_FONT_ANSI_VAL(value) (value),</TD></TR></TBODY></TABLE><BR>  定义结构体:<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>typedef struct _wide_unicode_font16x16 <BR>{<BR> WORD value; /* 内码 */<BR> BYTE data[32]; /* 字模点阵 */<BR>}Unicode;<BR>#define CHINESE_CHAR_NUM … /* 汉字数量 */</TD></TR></TBODY></TABLE><BR>  字模的存储用数组:<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Unicode chinese[CHINESE_CHAR_NUM] =<BR>{<BR>{<BR>EX_FONT_CHAR("业")<BR>EX_FONT_UNICODE_VAL(0x4e1a)<BR>{0x04, 0x40, 0x04, 0x40, 0x04, 0x40, 0x04, 0x44, 0x44, 0x46, 0x24, 0x4c, 0x24, 0x48, 0x14, 0x50, 0x1c, 0x50, 0x14, 0x60, 0x04, 0x40, 0x04, 0x40, 0x04, 0x44, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00}<BR>},<BR>{<BR>EX_FONT_CHAR("中")<BR>EX_FONT_UNICODE_VAL(0x4e2d)<BR>{0x01, 0x00, 0x01, 0x00, 0x21, 0x08, 0x3f, 0xfc, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, <BR>0x3f, 0xf8, 0x21, 0x08, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00}<BR>},<BR>{<BR>EX_FONT_CHAR("云")<BR>EX_FONT_UNICODE_VAL(0x4e91)<BR>{0x00, 0x00, 0x00, 0x30, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xff, 0xfe, 0x03, 0x00, 0x07, 0x00, <BR><BR>0x06, 0x40, 0x0c, 0x20, 0x18, 0x10, 0x31, 0xf8, 0x7f, 0x0c, 0x20, 0x08, 0x00, 0x00}<BR>},<BR>{<BR>EX_FONT_CHAR("件")<BR>EX_FONT_UNICODE_VAL(0x4ef6)<BR>{0x10, 0x40, 0x1a, 0x40, 0x13, 0x40, 0x32, 0x40, 0x23, 0xfc, 0x64, 0x40, 0xa4, 0x40, 0x28, 0x40, 0x2f, 0xfe, <BR><BR>0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40}<BR>}<BR>}</TD></TR></TBODY></TABLE><BR>  要显示特定汉字的时候,只需要从数组中查找内码与要求汉字内码相同的即可获得字模。如果前面的汉字在数组中以内码大小顺序排列,那么可以以二分查找法更高效的查找到汉字的字模。<BR><BR>  这是一种很有效的组织小汉字库的方法,它可以保证程序有很好的结构。<BR><BR>  <B>系统时间显示</B><BR><BR>  从NVRAM中可以读取系统的时间,系统一般借助NVRAM产生的秒中断每秒读取一次当前时间并在LCD上显示。关于时间的显示,有一个效率问题。因为时间有其特殊性,那就是60秒才有一次分钟的变化,60分钟才有一次小时变化,如果我们每次都将读取的时间在屏幕上完全重新刷新一次,则浪费了大量的系统时间。<BR><BR>  一个较好的办法是我们在时间显示函数中以静态变量分别存储小时、分钟、秒,只有在其内容发生变化的时候才更新其显示。<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>extern void DisplayTime(…)<BR>{<BR> static BYTE byHour,byMinute,bySecond;<BR> BYTE byNewHour, byNewMinute, byNewSecond;<BR> byNewHour = GetSysHour();<BR> byNewMinute = GetSysMinute();<BR> byNewSecond = GetSysSecond();<BR> <BR> if(byNewHour!= byHour)<BR> {<BR>  … /* 显示小时 */<BR>  byHour = byNewHour;<BR> }<BR> if(byNewMinute!= byMinute)<BR> {<BR>  … /* 显示分钟 */<BR>  byMinute = byNewMinute;<BR> }<BR> if(byNewSecond!= bySecond)<BR> {<BR>  … /* 显示秒钟 */<BR>  bySecond = byNewSecond;<BR> }<BR>}</TD></TR></TBODY></TABLE><BR>  这个例子也可以顺便作为C语言中static关键字强大威力的证明。当然,在C++语言里,static具有了更加强大的威力,它使得某些数据和函数脱离"对象"而成为"类"的一部分,正是它的这一特点,成就了软件的无数优秀设计。<BR><BR><div class="right">共3页。 <a class="page" href="2018509.shtml" target="_self"><font color="#666666"><b>1</b></font></a> <a class="page" href="2018509_1.shtml" target="_self"><b>2</b></a> <a class="page" href="2018509_2.shtml" target="_self"><b>3</b></a> <a class="page" href="2018509_1.shtml" target="_self"><font face="Webdings">8</font></a> <a class="page" href="2018509_2.shtml" target="_self"><font face="Webdings">:</font></a></div>

</div>

<!--广告代码开始-->
  <script>
var ad_cid;
if (window.location.search.substring(1) != "")
{
ad_cid = window.location.search.substring(1);
} else {
ad_cid = 412;
}
</script>
<!--小通栏:c-scolumn顶部500*90-->
<span id="span_ad1"> 
  <script language="JavaScript">
document.write("<script src=\"http://vd.yesky.com/html/"+ad_cid+"/"+ad_cid+"_c-scolumn.js\"><\/script>");</script>
</span> 
  <script language="JavaScript">
document.getElementById("ad1").innerHTML=document.getElementById("span_ad1").innerHTML;
document.getElementById("span_ad1").innerHTML="";
</script> 
<!--c-pip文章正文中间240*200-->
<span id="span_ad3"> 
  <script language="JavaScript">
document.write("<script src=\"http://vd.yesky.com/html/"+ad_cid+"/"+ad_cid+"_c-pip.js\"><\/script>");</script>
</span> 
<script>
if(document.getElementById("contentAdv")) {
document.getElementById("contentAdv").innerHTML=document.getElementById("span_ad3").innerHTML;
document.getElementById("span_ad3").innerHTML="";
} else {
document.getElementById("ad3").innerHTML=document.getElementById("span_ad3").innerHTML;
document.getElementById("span_ad3").innerHTML="";
}</script>
<!--c-text-1“您现在的位置”右侧文字-->
<span id="span_ad2"> 
  <script language="JavaScript">
document.write("<script src=\"http://vd.yesky.com/html/"+ad_cid+"/"+ad_cid+"_c-text-1.js\"><\/script>");</script>
</span> 
  <script language="JavaScript">
document.getElementById("ad2").innerHTML=document.getElementById("span_ad2").innerHTML;
document.getElementById("span_ad2").innerHTML="";
</script> 
<!--c-column-2“标题”上面的广告-->
<span id="span_ad10"> 
  <script language="JavaScript">
document.write("<script src=\"http://vd.yesky.com/html/"+ad_cid+"/"+ad_cid+"_c-column-2.js\"><\/script>");</script>
</span> 
  <script language="JavaScript">

⌨️ 快捷键说明

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