LCD320240如何显示一个数组变量

2019-03-24 18:06发布

Uchar PutStr(Uchar x,Uchar y, char code *ptr)
{
Uchar c1,c2;
Uchar i,j,uLen,uRow,uCol,temp;
Uint k;
uCol = x;
uRow = y;
uLen=0;
LcmWrCmd( CsrDirD ); // 光标移动方向定义:自动下移
LcmLocateXY(uCol,uRow); //起点定位
while ( (Uchar)ptr[uLen] >= 0x10 ){uLen++;}; //探测字串长度
i=0;
while(i<uLen)
{
c1 = ptr[i];
c2 = ptr[i+1];
//ASCII 字符与汉字内码的区别在于128 做分界,大于界线的为汉字码
if(c1 <=128) //ASCII
{
if (c1 >= 0x10)
{
                LcmWrCmd( mWrite );
for(j=0;j<16;j++)//16
LcmWrDat( ASCII_Lib[(c1-0x20)*16+j]);
}
uCol++; //列数加1
}
else //中文
{
if(uCol==(LcmXPixel/8-1)) //中文占2 个字节位置,所以如果在最后一个字节
{ //位置显示中文不能显示完整的,干脆切换到下一行
uRow += 16;//16
uCol = 0;
if( (uRow+16) >= LcmYPixel ) uRow = 0;
}
for(j=0;j<sizeof(GB_16)/sizeof(GB_16[0]);j++) // 查找定位
{
if((c1 == GB_16[j].Index[0]) && (c2 == GB_16[j].Index[1]))
break;
}
for(k=0;k<2;k++) //分16 行输出
{
LcmLocateXY(uCol+k,uRow);
LcmWrCmd( mWrite ); //写数据(命令)
for(temp=0;temp<16;temp++)
LcmWrDat( GB_16[j].Msk[temp*2+k]); //汉字横向取模
}
uCol +=2; //光标右移一大格
i++;
}
if(uCol >= (LcmXPixel/8)) // 光标后移
{
uRow += 16;//16
uCol = 0;
if( (uRow+16) >= LcmYPixel ) uRow = 0;
}
LcmLocateXY(uCol,uRow);
i++;
}
return uLen; //返回字串长度,汉字按2 字节计算
}
此函数只能像putchar(0,0,“电子工程世界”)这样显示,但实际我想使用让第三个为一个变量t,通过其他函数t的变化来显示相应的文字(现在只需显示数字就行)比如:
void DemoHZ1( Uchar sum,char code *ptr )
{
        Uchar tm[1];
        tm2[0]=sum;(sum是个求和的量)
          PutStr(11,180,tm2);第三个变量无论我用tm2[0],tm2.或者*tm2什么的都不行啊,指针掌握的不是很好,求指教啊谢谢

} 此帖出自小平头技术问答
0条回答

一周热门 更多>