打印

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

[复制链接]
1587|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cpu51|  楼主 | 2008-10-14 18:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

近段时间搞LCM显示,看了一些例题,但有部分程序看不懂,汉字码送显的问题。如下:

主程序中:
uchar STR2[]={0x01,0x02,0x03,0x01,0x02,0x03,0x01,0x02,0x03,0x01,0x02,0x03};

Lcminit();
/*液晶模块初始化,包括全屏幕清屏*/

Putstr(STR2,24);
/*第一行字符输出,24字节       字符*/
但看了Putstr(STR2,24),里面是调用的putedot(12),这个里面才调用EZK[];
我的理解是Putstr(STR2,24),就调用了STR2的里面数据,怎么又能调到EZK里面呢?不理解。

/****************************************/
/*
一个字串的输出
*/
/****************************************/
void Putstr(Uchar *puts,Uchar i)

{

Uchar j,X;

for (j=0;j<i;j++)

{

X = puts[j];

if (X&0x80)

{

Putcdot(X&0x7f);
/*只保留低7位*/

}

else Putedot(X-0x20);
/*ascii码表从0x20开始*/

}

}

/****************************************/
/*
半角字符点阵码数据输出
*/
/****************************************/
void Putedot(Uchar Order)

{

Uchar i,bakerx,bakery;
/*共定义4个局部变量
*/

int x;
/*偏移量,字符量少的可以定义为UCHAR
*/

bakerx = col;
/*暂存x,y坐标,已备下半个字符使用
*/

bakery = row;

x=Order * 0x10;
/*半角字符,每个字符16字节
*/
/*上半个字符输出,8列
*/

for(i=0;i<8;i++)

{

cbyte = Ezk[x];
/*取点阵码,rom数组
*/

Wrdata(cbyte);
/*写输出一字节
*/

x++;

col++;

if (col==LCMLIMIT){col=0;row++;row++;};
/*下一列,如果列越界换行*/

if (row>7) row=0;
/*如果行越界,返回首行
*/

}
/*上半个字符输出结束
*/


col = bakerx;
/*列对齐
*/

row = bakery+1;
/*指向下半个字符行
*/
/*下半个字符输出,8列
*/

for(i=0;i<8;i++)

{

cbyte = Ezk[x];
/*取点阵码
*/

Wrdata(cbyte);
/*写输出一字节
*/

x++;

col++;

if (col==LCMLIMIT){col=0;row=row+2;};
/*下一列,如果列越界换行*/

if (row>7) row=1;
/*如果行越界,返回首行
*/

}
/*下半个字符输出结束
*/

row=bakery;

}
/*整个字符输出结束
*/

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

98

主题

458

帖子

0

粉丝