请教关于LCM汉字码送显的问题。

[复制链接]
 楼主| cpu51 发表于 2008-10-14 18:54 | 显示全部楼层 |阅读模式
<br />近段时间搞LCM显示,看了一些例题,但有部分程序看不懂,汉字码送显的问题。如下:<br /><br />主程序中:<br />uchar&nbsp;STR2[]={0x01,0x02,0x03,0x01,0x02,0x03,0x01,0x02,0x03,0x01,0x02,0x03};<br /><br />Lcminit();<br />/*液晶模块初始化,包括全屏幕清屏*/<br /><br />Putstr(STR2,24);<br />/*第一行字符输出,24字节&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字符*/<br />但看了Putstr(STR2,24),里面是调用的putedot(12),这个里面才调用EZK[];<br />我的理解是Putstr(STR2,24),就调用了STR2的里面数据,怎么又能调到EZK里面呢?不理解。<br /><br />/****************************************/<br />/*<br />一个字串的输出<br />*/<br />/****************************************/<br />void&nbsp;Putstr(Uchar&nbsp;*puts,Uchar&nbsp;i)<br /><br />{<br /><br />Uchar&nbsp;j,X;<br /><br />for&nbsp;(j=0;j&lti;j++)<br /><br />{<br /><br />X&nbsp;=&nbsp;puts[j];<br /><br />if&nbsp;(X&0x80)<br /><br />{<br /><br />Putcdot(X&0x7f);<br />/*只保留低7位*/<br /><br />}<br /><br />else&nbsp;Putedot(X-0x20);<br />/*ascii码表从0x20开始*/<br /><br />}<br /><br />}<br /><br />/****************************************/<br />/*<br />半角字符点阵码数据输出<br />*/<br />/****************************************/<br />void&nbsp;Putedot(Uchar&nbsp;Order)<br /><br />{<br /><br />Uchar&nbsp;i,bakerx,bakery;<br />/*共定义4个局部变量<br />*/<br /><br />int&nbsp;x;<br />/*偏移量,字符量少的可以定义为UCHAR<br />*/<br /><br />bakerx&nbsp;=&nbsp;col;<br />/*暂存x,y坐标,已备下半个字符使用<br />*/<br /><br />bakery&nbsp;=&nbsp;row;<br /><br />x=Order&nbsp;*&nbsp;0x10;<br />/*半角字符,每个字符16字节<br />*/<br />/*上半个字符输出,8列<br />*/<br /><br />for(i=0;i&lt8;i++)<br /><br />{<br /><br />cbyte&nbsp;=&nbsp;Ezk[x];<br />/*取点阵码,rom数组<br />*/<br /><br />Wrdata(cbyte);<br />/*写输出一字节<br />*/<br /><br />x++;<br /><br />col++;<br /><br />if&nbsp;(col==LCMLIMIT){col=0;row++;row++;};<br />/*下一列,如果列越界换行*/<br /><br />if&nbsp;(row&gt7)&nbsp;row=0;<br />/*如果行越界,返回首行<br />*/<br /><br />}<br />/*上半个字符输出结束<br />*/<br /><br /><br />col&nbsp;=&nbsp;bakerx;<br />/*列对齐<br />*/<br /><br />row&nbsp;=&nbsp;bakery+1;<br />/*指向下半个字符行<br />*/<br />/*下半个字符输出,8列<br />*/<br /><br />for(i=0;i&lt8;i++)<br /><br />{<br /><br />cbyte&nbsp;=&nbsp;Ezk[x];<br />/*取点阵码<br />*/<br /><br />Wrdata(cbyte);<br />/*写输出一字节<br />*/<br /><br />x++;<br /><br />col++;<br /><br />if&nbsp;(col==LCMLIMIT){col=0;row=row+2;};<br />/*下一列,如果列越界换行*/<br /><br />if&nbsp;(row&gt7)&nbsp;row=1;<br />/*如果行越界,返回首行<br />*/<br /><br />}<br />/*下半个字符输出结束<br />*/<br /><br />row=bakery;<br /><br />}<br />/*整个字符输出结束<br />*/<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

98

主题

458

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

98

主题

458

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部