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