新手入门
- 积分
- 18
- 金钱
- 18
- 注册时间
- 2018-1-27
- 在线时间
- 1 小时
|

楼主 |
发表于 2018-1-30 21:40:30
|
显示全部楼层
[mw_shl_code=c,true]void display_GB2312_string(unsigned char page,unsigned char column,unsigned char *text)
{
u16 i= 0;
while((text>0x00))
{
if(((text>=0xb0) &&(text<=0xf7))&&(text[i+1]>=0xa1))
{
//国标简体(GB2312)汉字在晶联讯字库IC 中的地址由以下公式来计算:
//Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd;BaseAdd=0
//由于担心8 位单片机有乘法溢出问题,所以分三部取地址
fontaddr = (text- 0xb0)*94;
fontaddr += (text[i+1]-0xa1)+846;
fontaddr = (u32)(fontaddr*32);
get_and_write_16x16(fontaddr,page,column); //从指定地址读出数据写到液晶屏指定(page,column)座标中
i+=2;
column+=16;
}
else if(((text>=0xa1) &&(text<=0xa3))&&(text[i+1]>=0xa1))
{
//国标简体(GB2312)15x16 点的字符在晶联讯字库IC 中的地址由以下公式来计算:
//Address = ((MSB - 0xa1) * 94 + (LSB - 0xA1))*32+ BaseAdd;BaseAdd=0
//由于担心8 位单片机有乘法溢出问题,所以分三部取地址
fontaddr = (text- 0xa1)*94;
fontaddr += (text[i+1]-0xa1);
fontaddr = (u32)(fontaddr*32);
get_and_write_16x16(fontaddr,page,column); //从指定地址读出数据写到液晶屏指定(page,column)座标中
i+=2;
column+=16;
}
else if((text>=0x20) &&(text<=0x7e))
{
fontaddr = (text- 0x20);
fontaddr = (unsigned long)(fontaddr*16);
fontaddr = (unsigned long)(fontaddr+0x3cf80);
get_and_write_8x16(fontaddr,page,column); //从指定地址读出数据写到液晶屏指定(page,column)座标中
i+=1;
column+=8;
}
else
i++;
}
}[/mw_shl_code] |
|