📄 ra8835.#2
字号:
{
uCol += 16; // Y坐标
uRow = 0; // X坐标
if( uCol >= 240 ) uCol = 0;
}
Locatexy(uRow,uCol,att);
i++;
}
return uLen; //返回字串长度,汉字按2字节计算
}
/*============================================================================
** 函数名称: hprintf
** 功能描述:汉字(24*16) 混合字符串显示
** 输入参数: Uchar x 显示字符串的横坐标 8点一字节位置
Uchar y 显示字符串的纵坐标 一条扫描线定位
**
** 输出参数: Uchar 字符串的长度(汉字为两个字节)
**
** 全局变量: 无
** 调用模块:
说明:调用时汉字必须在字库数组中已经存在,否则将输出不正确的结果
**---------------------------------------------------------------------------
** 作 者: wjf
** 日 期: 2008/08/08
============================================================================*/
Uchar hprintf(Uchar x,Uchar y, char code *ptr, Uchar att)
{
Uchar c1,c2;
Uchar i,j,uLen,uRow,uCol,temp;
Uint k;
uRow = x;
uCol = y;
uLen=0;
WriteCommand( CsrDirD ); // 光标移动方向定义:自动下移
Locatexy(uRow,uCol,att); //起点定位
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) {
WriteCommand( mWrite ); // 写数据(命令)
for(j=0;j<16;j++) WriteData( ASC_MSK[(c1-0x20)*16 +j ]);
}
uRow++; // 列数加1
}
else // 中文
{
for(j=0;j<sizeof(Cdotlib24)/sizeof(Cdotlib24[0]);j++) // 查找定位
{
if((c1 == Cdotlib24[j].Index[0]) && (c2 == Cdotlib24[j].Index[1]))
break;
}
for(k=0;k<3;k++) // 分16行输出
{
Locatexy(uRow+k,uCol,att);
WriteCommand( mWrite ); // 写数据(命令)
for(temp=0;temp<16;temp++) WriteData( Cdotlib24[j].Msk[temp*3 + k]);
}
uRow +=3; // 光标右移一大格
i++;
}
if(uRow >= 40) // 光标后移
{
uCol += 16; // Y坐标
uRow = 0; // X坐标
if( uCol >= 240 ) uCol = 0;
}
Locatexy(uRow,uCol,att);
i++;
}
return uLen; //返回字串长度,汉字按2字节计算
}
/*============================================================================
** 函数名称: printfUpDown
** 功能描述:显示 (8*16)的上下箭头
** 输入参数: Uchar x 显示横坐标 8点一字节位置
Uchar y 显示纵坐标 一条扫描线定位
Uchar flag 0——上箭头 1——下箭头
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:
**---------------------------------------------------------------------------
** 作 者: wjf
** 日 期: 2008/08/09
============================================================================*/
void printfUpDown(Uchar x,Uchar y, Uchar flag, Uchar att)
{
Uchar i;
WriteCommand( CsrDirD );
Locatexy(x,y,att);
WriteCommand( mWrite );
for(i=0;i<16;i++) WriteData( up_down[flag*16 +i ]);
}
/*============================================================================
** 函数名称: printfLeftRight
** 功能描述:显示 (16*16)的上下箭头
** 输入参数: Uchar x 显示横坐标 8点一字节位置
Uchar y 显示纵坐标 一条扫描线定位
Uchar flag 0——左箭头 1——右箭头 2——℃ 3----λ
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:
**---------------------------------------------------------------------------
** 作 者: wjf
** 日 期: 2008/08/09
============================================================================*/
void printfLeftRight(Uchar x,Uchar y, Uchar flag, Uchar att)
{
Uchar i,j;
WriteCommand( CsrDirD );
Locatexy(x,y,att);
for(i=0;i<2;i++)
{
Locatexy(x+i,y,att);
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData( Left_Right[flag][j*2 + i]);
}
}
/*======================================================
** 函数名称: printlcd_single
** 功能描述: 显示一个车牌号位
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块: 车牌输入时使用
**----------------------------------------------------
** 作 者: wjf
** 日 期: 2008/08/08
======================================================*/
void printlcd_single(void)//显示一个车牌号位
{
unsigned char i=0,j=0,temp=0;
WriteCommand( CsrDirD );
Locatexy(18,0x30,0);
switch (yuyan_sel)
{
case 0:
{
for(i=0;i<2;i++) // 汉字
{
Locatexy(18+i,0x30,0);
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData( Cdotlib[byte_sel+106].Msk[j*2 + i]);
}
break;
}
case 1: //字母
{
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData(ASC_MSK[(byte_sel+33)*16 +j ]);
break;
}
default: //数字
{
if(byte_sel==10) temp=0;
else temp=byte_sel;
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData(ASC_MSK[(temp+16)*16 +j ]);
break;
}
}
}
/*======================================================
** 函数名称: printlcd_car_show
** 功能描述: 显示一个车牌号
** 输入参数: Uchar x 显示字符串的横坐标 8点一字节位置
Uchar y 显示字符串的纵坐标 一条扫描线定位
Uchar * pcar 车牌号存储数字 大小为7
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块: 车牌显示时使用
**----------------------------------------------------
** 作 者: wjf
** 日 期: 2008/08/11
======================================================*/
void printlcd_car_show(Uchar x,Uchar y, Uchar * pcar, Uchar att)//显示一个车牌号位
{
Uchar i,j,k,uRow,uCol,c1;
uRow=x;
uCol=y;
WriteCommand( CsrDirD );
Locatexy(uRow,uCol,att);
/*for(i=0;i<7;i++)
{
// WriteCommand( CsrDirD );
if(pcar[i]<55) //汉字
{
for(k=0;k<2;k++)
{
// WriteCommand( CsrDirD );
Locatexy(uRow+k,uCol,att);
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData( Cdotlib[pcar[i]+106].Msk[j*2 + k]);
}
uRow=+2;
}
else
{
if(pcar[i]<81)
{
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData(ASC_MSK[(pcar[i]-55+33)*16 +j ]);
}
else
{
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData(ASC_MSK[(pcar[i]-81+16)*16 +j ]);
}
uRow=+1;
}
Locatexy(uRow,uCol,att);
}*/
while(i<7)
{
c1 = pcar[i];
if(c1 <55)
{
for(k=0;k<2;k++)
{
Locatexy(uRow+k,uCol,att);
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData( Cdotlib[pcar[i]+106].Msk[j*3 + k]);
}
uRow +=2;
i++;
}
else
{
if(pcar[i]<81)
{
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData(ASC_MSK[(pcar[i]-55+33)*16 +j ]);
uRow=+1;
i++;
}
else
{
WriteCommand( mWrite );
for(j=0;j<16;j++) WriteData(ASC_MSK[(pcar[i]-81+16)*16 +j ]);
uRow=+1;
i++;
}
}
if(uRow >= 40)
{
uCol += 16;
uRow = 0;
if( uCol >= 240 ) uCol = 0;
}
Locatexy(uRow,uCol,att);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -